VirtualBox

source: vbox/trunk/src/VBox/ValidationKit/testmanager/webui/wuiadmin.py@ 83390

最後變更 在這個檔案從83390是 83360,由 vboxsync 提交於 5 年 前

TestManager/wui: More flexible time navigation input. Items-per-page for admin pages too. Currently making results and admin pages share time + page-count stuff via wuicontentbase.py, should probably find a better place long term though.

  • 屬性 svn:eol-style 設為 native
  • 屬性 svn:keywords 設為 Author Date Id Revision
檔案大小: 61.4 KB
 
1# -*- coding: utf-8 -*-
2# $Id: wuiadmin.py 83360 2020-03-21 13:43:17Z vboxsync $
3
4"""
5Test Manager Core - WUI - Admin Main page.
6"""
7
8__copyright__ = \
9"""
10Copyright (C) 2012-2020 Oracle Corporation
11
12This file is part of VirtualBox Open Source Edition (OSE), as
13available from http://www.alldomusa.eu.org. This file is free software;
14you can redistribute it and/or modify it under the terms of the GNU
15General Public License (GPL) as published by the Free Software
16Foundation, in version 2 as it comes in the "COPYING" file of the
17VirtualBox OSE distribution. VirtualBox OSE is distributed in the
18hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
19
20The contents of this file may alternatively be used under the terms
21of the Common Development and Distribution License Version 1.0
22(CDDL) only, as it comes in the "COPYING.CDDL" file of the
23VirtualBox OSE distribution, in which case the provisions of the
24CDDL are applicable instead of those of the GPL.
25
26You may elect to license modified versions of this file under the
27terms and conditions of either the GPL or the CDDL or both.
28"""
29__version__ = "$Revision: 83360 $"
30
31
32# Standard python imports.
33import cgitb;
34import sys;
35
36# Validation Kit imports.
37from common import webutils
38from testmanager import config;
39from testmanager.webui.wuibase import WuiDispatcherBase, WuiException
40
41
42class WuiAdmin(WuiDispatcherBase):
43 """
44 WUI Admin main page.
45 """
46
47 ## The name of the script.
48 ksScriptName = 'admin.py'
49
50 ## Number of days back.
51 ksParamDaysBack = 'cDaysBack';
52
53 ## @name Actions
54 ## @{
55 ksActionSystemLogList = 'SystemLogList'
56 ksActionSystemChangelogList = 'SystemChangelogList'
57
58 ksActionUserList = 'UserList'
59 ksActionUserAdd = 'UserAdd'
60 ksActionUserAddPost = 'UserAddPost'
61 ksActionUserEdit = 'UserEdit'
62 ksActionUserEditPost = 'UserEditPost'
63 ksActionUserDelPost = 'UserDelPost'
64 ksActionUserDetails = 'UserDetails'
65
66 ksActionTestBoxList = 'TestBoxList'
67 ksActionTestBoxListPost = 'TestBoxListPost'
68 ksActionTestBoxAdd = 'TestBoxAdd'
69 ksActionTestBoxAddPost = 'TestBoxAddPost'
70 ksActionTestBoxEdit = 'TestBoxEdit'
71 ksActionTestBoxEditPost = 'TestBoxEditPost'
72 ksActionTestBoxDetails = 'TestBoxDetails'
73 ksActionTestBoxRemovePost = 'TestBoxRemove'
74 ksActionTestBoxesRegenQueues = 'TestBoxesRegenQueues';
75
76 ksActionTestCaseList = 'TestCaseList'
77 ksActionTestCaseAdd = 'TestCaseAdd'
78 ksActionTestCaseAddPost = 'TestCaseAddPost'
79 ksActionTestCaseClone = 'TestCaseClone'
80 ksActionTestCaseDetails = 'TestCaseDetails'
81 ksActionTestCaseEdit = 'TestCaseEdit'
82 ksActionTestCaseEditPost = 'TestCaseEditPost'
83 ksActionTestCaseDoRemove = 'TestCaseDoRemove'
84
85 ksActionGlobalRsrcShowAll = 'GlobalRsrcShowAll'
86 ksActionGlobalRsrcShowAdd = 'GlobalRsrcShowAdd'
87 ksActionGlobalRsrcShowEdit = 'GlobalRsrcShowEdit'
88 ksActionGlobalRsrcAdd = 'GlobalRsrcAddPost'
89 ksActionGlobalRsrcEdit = 'GlobalRsrcEditPost'
90 ksActionGlobalRsrcDel = 'GlobalRsrcDelPost'
91
92 ksActionBuildList = 'BuildList'
93 ksActionBuildAdd = 'BuildAdd'
94 ksActionBuildAddPost = 'BuildAddPost'
95 ksActionBuildClone = 'BuildClone'
96 ksActionBuildDetails = 'BuildDetails'
97 ksActionBuildDoRemove = 'BuildDoRemove'
98 ksActionBuildEdit = 'BuildEdit'
99 ksActionBuildEditPost = 'BuildEditPost'
100
101 ksActionBuildBlacklist = 'BuildBlacklist';
102 ksActionBuildBlacklistAdd = 'BuildBlacklistAdd';
103 ksActionBuildBlacklistAddPost = 'BuildBlacklistAddPost';
104 ksActionBuildBlacklistClone = 'BuildBlacklistClone';
105 ksActionBuildBlacklistDetails = 'BuildBlacklistDetails';
106 ksActionBuildBlacklistDoRemove = 'BuildBlacklistDoRemove';
107 ksActionBuildBlacklistEdit = 'BuildBlacklistEdit';
108 ksActionBuildBlacklistEditPost = 'BuildBlacklistEditPost';
109
110 ksActionFailureCategoryList = 'FailureCategoryList';
111 ksActionFailureCategoryAdd = 'FailureCategoryAdd';
112 ksActionFailureCategoryAddPost = 'FailureCategoryAddPost';
113 ksActionFailureCategoryDetails = 'FailureCategoryDetails';
114 ksActionFailureCategoryDoRemove = 'FailureCategoryDoRemove';
115 ksActionFailureCategoryEdit = 'FailureCategoryEdit';
116 ksActionFailureCategoryEditPost = 'FailureCategoryEditPost';
117
118 ksActionFailureReasonList = 'FailureReasonList'
119 ksActionFailureReasonAdd = 'FailureReasonAdd'
120 ksActionFailureReasonAddPost = 'FailureReasonAddPost'
121 ksActionFailureReasonDetails = 'FailureReasonDetails'
122 ksActionFailureReasonDoRemove = 'FailureReasonDoRemove'
123 ksActionFailureReasonEdit = 'FailureReasonEdit'
124 ksActionFailureReasonEditPost = 'FailureReasonEditPost'
125
126 ksActionBuildSrcList = 'BuildSrcList'
127 ksActionBuildSrcAdd = 'BuildSrcAdd'
128 ksActionBuildSrcAddPost = 'BuildSrcAddPost'
129 ksActionBuildSrcClone = 'BuildSrcClone'
130 ksActionBuildSrcDetails = 'BuildSrcDetails'
131 ksActionBuildSrcEdit = 'BuildSrcEdit'
132 ksActionBuildSrcEditPost = 'BuildSrcEditPost'
133 ksActionBuildSrcDoRemove = 'BuildSrcDoRemove'
134
135 ksActionBuildCategoryList = 'BuildCategoryList'
136 ksActionBuildCategoryAdd = 'BuildCategoryAdd'
137 ksActionBuildCategoryAddPost = 'BuildCategoryAddPost'
138 ksActionBuildCategoryClone = 'BuildCategoryClone';
139 ksActionBuildCategoryDetails = 'BuildCategoryDetails';
140 ksActionBuildCategoryDoRemove = 'BuildCategoryDoRemove';
141
142 ksActionTestGroupList = 'TestGroupList'
143 ksActionTestGroupAdd = 'TestGroupAdd'
144 ksActionTestGroupAddPost = 'TestGroupAddPost'
145 ksActionTestGroupClone = 'TestGroupClone'
146 ksActionTestGroupDetails = 'TestGroupDetails'
147 ksActionTestGroupDoRemove = 'TestGroupDoRemove'
148 ksActionTestGroupEdit = 'TestGroupEdit'
149 ksActionTestGroupEditPost = 'TestGroupEditPost'
150 ksActionTestCfgRegenQueues = 'TestCfgRegenQueues'
151
152 ksActionSchedGroupList = 'SchedGroupList'
153 ksActionSchedGroupAdd = 'SchedGroupAdd';
154 ksActionSchedGroupAddPost = 'SchedGroupAddPost';
155 ksActionSchedGroupClone = 'SchedGroupClone';
156 ksActionSchedGroupDetails = 'SchedGroupDetails';
157 ksActionSchedGroupDoRemove = 'SchedGroupDel';
158 ksActionSchedGroupEdit = 'SchedGroupEdit';
159 ksActionSchedGroupEditPost = 'SchedGroupEditPost';
160 ksActionSchedQueueList = 'SchedQueueList';
161 ## @}
162
163 def __init__(self, oSrvGlue): # pylint: disable=too-many-locals,too-many-statements
164 WuiDispatcherBase.__init__(self, oSrvGlue, self.ksScriptName);
165 self._sTemplate = 'template.html';
166
167
168 #
169 # System Log actions.
170 #
171 self._dDispatch[self.ksActionSystemChangelogList] = self._actionSystemChangelogList;
172 self._dDispatch[self.ksActionSystemLogList] = self._actionSystemLogList;
173
174 #
175 # User Account actions.
176 #
177 self._dDispatch[self.ksActionUserList] = self._actionUserList;
178 self._dDispatch[self.ksActionUserAdd] = self._actionUserAdd;
179 self._dDispatch[self.ksActionUserEdit] = self._actionUserEdit;
180 self._dDispatch[self.ksActionUserAddPost] = self._actionUserAddPost;
181 self._dDispatch[self.ksActionUserEditPost] = self._actionUserEditPost;
182 self._dDispatch[self.ksActionUserDetails] = self._actionUserDetails;
183 self._dDispatch[self.ksActionUserDelPost] = self._actionUserDelPost;
184
185 #
186 # TestBox actions.
187 #
188 self._dDispatch[self.ksActionTestBoxList] = self._actionTestBoxList;
189 self._dDispatch[self.ksActionTestBoxListPost] = self._actionTestBoxListPost;
190 self._dDispatch[self.ksActionTestBoxAdd] = self._actionTestBoxAdd;
191 self._dDispatch[self.ksActionTestBoxAddPost] = self._actionTestBoxAddPost;
192 self._dDispatch[self.ksActionTestBoxDetails] = self._actionTestBoxDetails;
193 self._dDispatch[self.ksActionTestBoxEdit] = self._actionTestBoxEdit;
194 self._dDispatch[self.ksActionTestBoxEditPost] = self._actionTestBoxEditPost;
195 self._dDispatch[self.ksActionTestBoxRemovePost] = self._actionTestBoxRemovePost;
196 self._dDispatch[self.ksActionTestBoxesRegenQueues] = self._actionRegenQueuesCommon;
197
198 #
199 # Test Case actions.
200 #
201 self._dDispatch[self.ksActionTestCaseList] = self._actionTestCaseList;
202 self._dDispatch[self.ksActionTestCaseAdd] = self._actionTestCaseAdd;
203 self._dDispatch[self.ksActionTestCaseAddPost] = self._actionTestCaseAddPost;
204 self._dDispatch[self.ksActionTestCaseClone] = self._actionTestCaseClone;
205 self._dDispatch[self.ksActionTestCaseDetails] = self._actionTestCaseDetails;
206 self._dDispatch[self.ksActionTestCaseEdit] = self._actionTestCaseEdit;
207 self._dDispatch[self.ksActionTestCaseEditPost] = self._actionTestCaseEditPost;
208 self._dDispatch[self.ksActionTestCaseDoRemove] = self._actionTestCaseDoRemove;
209
210 #
211 # Global Resource actions
212 #
213 self._dDispatch[self.ksActionGlobalRsrcShowAll] = self._actionGlobalRsrcShowAll;
214 self._dDispatch[self.ksActionGlobalRsrcShowAdd] = self._actionGlobalRsrcShowAdd;
215 self._dDispatch[self.ksActionGlobalRsrcShowEdit] = self._actionGlobalRsrcShowEdit;
216 self._dDispatch[self.ksActionGlobalRsrcAdd] = self._actionGlobalRsrcAdd;
217 self._dDispatch[self.ksActionGlobalRsrcEdit] = self._actionGlobalRsrcEdit;
218 self._dDispatch[self.ksActionGlobalRsrcDel] = self._actionGlobalRsrcDel;
219
220 #
221 # Build Source actions
222 #
223 self._dDispatch[self.ksActionBuildSrcList] = self._actionBuildSrcList;
224 self._dDispatch[self.ksActionBuildSrcAdd] = self._actionBuildSrcAdd;
225 self._dDispatch[self.ksActionBuildSrcAddPost] = self._actionBuildSrcAddPost;
226 self._dDispatch[self.ksActionBuildSrcClone] = self._actionBuildSrcClone;
227 self._dDispatch[self.ksActionBuildSrcDetails] = self._actionBuildSrcDetails;
228 self._dDispatch[self.ksActionBuildSrcDoRemove] = self._actionBuildSrcDoRemove;
229 self._dDispatch[self.ksActionBuildSrcEdit] = self._actionBuildSrcEdit;
230 self._dDispatch[self.ksActionBuildSrcEditPost] = self._actionBuildSrcEditPost;
231
232 #
233 # Build actions
234 #
235 self._dDispatch[self.ksActionBuildList] = self._actionBuildList;
236 self._dDispatch[self.ksActionBuildAdd] = self._actionBuildAdd;
237 self._dDispatch[self.ksActionBuildAddPost] = self._actionBuildAddPost;
238 self._dDispatch[self.ksActionBuildClone] = self._actionBuildClone;
239 self._dDispatch[self.ksActionBuildDetails] = self._actionBuildDetails;
240 self._dDispatch[self.ksActionBuildDoRemove] = self._actionBuildDoRemove;
241 self._dDispatch[self.ksActionBuildEdit] = self._actionBuildEdit;
242 self._dDispatch[self.ksActionBuildEditPost] = self._actionBuildEditPost;
243
244 #
245 # Build Black List actions
246 #
247 self._dDispatch[self.ksActionBuildBlacklist] = self._actionBuildBlacklist;
248 self._dDispatch[self.ksActionBuildBlacklistAdd] = self._actionBuildBlacklistAdd;
249 self._dDispatch[self.ksActionBuildBlacklistAddPost] = self._actionBuildBlacklistAddPost;
250 self._dDispatch[self.ksActionBuildBlacklistClone] = self._actionBuildBlacklistClone;
251 self._dDispatch[self.ksActionBuildBlacklistDetails] = self._actionBuildBlacklistDetails;
252 self._dDispatch[self.ksActionBuildBlacklistDoRemove] = self._actionBuildBlacklistDoRemove;
253 self._dDispatch[self.ksActionBuildBlacklistEdit] = self._actionBuildBlacklistEdit;
254 self._dDispatch[self.ksActionBuildBlacklistEditPost] = self._actionBuildBlacklistEditPost;
255
256 #
257 # Failure Category actions
258 #
259 self._dDispatch[self.ksActionFailureCategoryList] = self._actionFailureCategoryList;
260 self._dDispatch[self.ksActionFailureCategoryAdd] = self._actionFailureCategoryAdd;
261 self._dDispatch[self.ksActionFailureCategoryAddPost] = self._actionFailureCategoryAddPost;
262 self._dDispatch[self.ksActionFailureCategoryDetails] = self._actionFailureCategoryDetails;
263 self._dDispatch[self.ksActionFailureCategoryDoRemove] = self._actionFailureCategoryDoRemove;
264 self._dDispatch[self.ksActionFailureCategoryEdit] = self._actionFailureCategoryEdit;
265 self._dDispatch[self.ksActionFailureCategoryEditPost] = self._actionFailureCategoryEditPost;
266
267 #
268 # Failure Reason actions
269 #
270 self._dDispatch[self.ksActionFailureReasonList] = self._actionFailureReasonList;
271 self._dDispatch[self.ksActionFailureReasonAdd] = self._actionFailureReasonAdd;
272 self._dDispatch[self.ksActionFailureReasonAddPost] = self._actionFailureReasonAddPost;
273 self._dDispatch[self.ksActionFailureReasonDetails] = self._actionFailureReasonDetails;
274 self._dDispatch[self.ksActionFailureReasonDoRemove] = self._actionFailureReasonDoRemove;
275 self._dDispatch[self.ksActionFailureReasonEdit] = self._actionFailureReasonEdit;
276 self._dDispatch[self.ksActionFailureReasonEditPost] = self._actionFailureReasonEditPost;
277
278 #
279 # Build Category actions
280 #
281 self._dDispatch[self.ksActionBuildCategoryList] = self._actionBuildCategoryList;
282 self._dDispatch[self.ksActionBuildCategoryAdd] = self._actionBuildCategoryAdd;
283 self._dDispatch[self.ksActionBuildCategoryAddPost] = self._actionBuildCategoryAddPost;
284 self._dDispatch[self.ksActionBuildCategoryClone] = self._actionBuildCategoryClone;
285 self._dDispatch[self.ksActionBuildCategoryDetails] = self._actionBuildCategoryDetails;
286 self._dDispatch[self.ksActionBuildCategoryDoRemove] = self._actionBuildCategoryDoRemove;
287
288 #
289 # Test Group actions
290 #
291 self._dDispatch[self.ksActionTestGroupList] = self._actionTestGroupList;
292 self._dDispatch[self.ksActionTestGroupAdd] = self._actionTestGroupAdd;
293 self._dDispatch[self.ksActionTestGroupAddPost] = self._actionTestGroupAddPost;
294 self._dDispatch[self.ksActionTestGroupClone] = self._actionTestGroupClone;
295 self._dDispatch[self.ksActionTestGroupDetails] = self._actionTestGroupDetails;
296 self._dDispatch[self.ksActionTestGroupEdit] = self._actionTestGroupEdit;
297 self._dDispatch[self.ksActionTestGroupEditPost] = self._actionTestGroupEditPost;
298 self._dDispatch[self.ksActionTestGroupDoRemove] = self._actionTestGroupDoRemove;
299 self._dDispatch[self.ksActionTestCfgRegenQueues] = self._actionRegenQueuesCommon;
300
301 #
302 # Scheduling Group and Queue actions
303 #
304 self._dDispatch[self.ksActionSchedGroupList] = self._actionSchedGroupList;
305 self._dDispatch[self.ksActionSchedGroupAdd] = self._actionSchedGroupAdd;
306 self._dDispatch[self.ksActionSchedGroupClone] = self._actionSchedGroupClone;
307 self._dDispatch[self.ksActionSchedGroupDetails] = self._actionSchedGroupDetails;
308 self._dDispatch[self.ksActionSchedGroupEdit] = self._actionSchedGroupEdit;
309 self._dDispatch[self.ksActionSchedGroupAddPost] = self._actionSchedGroupAddPost;
310 self._dDispatch[self.ksActionSchedGroupEditPost] = self._actionSchedGroupEditPost;
311 self._dDispatch[self.ksActionSchedGroupDoRemove] = self._actionSchedGroupDoRemove;
312 self._dDispatch[self.ksActionSchedQueueList] = self._actionSchedQueueList;
313
314
315 #
316 # Menus
317 #
318 self._aaoMenus = \
319 [
320 [
321 'Builds', self._sActionUrlBase + self.ksActionBuildList,
322 [
323 [ 'Builds', self._sActionUrlBase + self.ksActionBuildList, False ],
324 [ 'Blacklist', self._sActionUrlBase + self.ksActionBuildBlacklist, False ],
325 [ 'Build sources', self._sActionUrlBase + self.ksActionBuildSrcList, False ],
326 [ 'Build categories', self._sActionUrlBase + self.ksActionBuildCategoryList, False ],
327 [ 'New build', self._sActionUrlBase + self.ksActionBuildAdd, True ],
328 [ 'New blacklisting', self._sActionUrlBase + self.ksActionBuildBlacklistAdd, True ],
329 [ 'New build source', self._sActionUrlBase + self.ksActionBuildSrcAdd, True ],
330 [ 'New build category', self._sActionUrlBase + self.ksActionBuildCategoryAdd, True ],
331 ]
332 ],
333 [
334 'Failure Reasons', self._sActionUrlBase + self.ksActionFailureReasonList,
335 [
336 [ 'Failure categories', self._sActionUrlBase + self.ksActionFailureCategoryList, False ],
337 [ 'Failure reasons', self._sActionUrlBase + self.ksActionFailureReasonList, False ],
338 [ 'New failure category', self._sActionUrlBase + self.ksActionFailureCategoryAdd, True ],
339 [ 'New failure reason', self._sActionUrlBase + self.ksActionFailureReasonAdd, True ],
340 ]
341 ],
342 [
343 'System', self._sActionUrlBase + self.ksActionSystemChangelogList,
344 [
345 [ 'Changelog', self._sActionUrlBase + self.ksActionSystemChangelogList, False ],
346 [ 'System log', self._sActionUrlBase + self.ksActionSystemLogList, False ],
347 [ 'User accounts', self._sActionUrlBase + self.ksActionUserList, False ],
348 [ 'New user', self._sActionUrlBase + self.ksActionUserAdd, True ],
349 ]
350 ],
351 [
352 'Testboxes', self._sActionUrlBase + self.ksActionTestBoxList,
353 [
354 [ 'Testboxes', self._sActionUrlBase + self.ksActionTestBoxList, False ],
355 [ 'Scheduling groups', self._sActionUrlBase + self.ksActionSchedGroupList, False ],
356 [ 'New testbox', self._sActionUrlBase + self.ksActionTestBoxAdd, True ],
357 [ 'New scheduling group', self._sActionUrlBase + self.ksActionSchedGroupAdd, True ],
358 [ 'View scheduling queues', self._sActionUrlBase + self.ksActionSchedQueueList, False ],
359 [ 'Regenerate all scheduling queues', self._sActionUrlBase + self.ksActionTestBoxesRegenQueues, True ],
360 ]
361 ],
362 [
363 'Test Config', self._sActionUrlBase + self.ksActionTestGroupList,
364 [
365 [ 'Test cases', self._sActionUrlBase + self.ksActionTestCaseList, False ],
366 [ 'Test groups', self._sActionUrlBase + self.ksActionTestGroupList, False ],
367 [ 'Global resources', self._sActionUrlBase + self.ksActionGlobalRsrcShowAll, False ],
368 [ 'New test case', self._sActionUrlBase + self.ksActionTestCaseAdd, True ],
369 [ 'New test group', self._sActionUrlBase + self.ksActionTestGroupAdd, True ],
370 [ 'New global resource', self._sActionUrlBase + self.ksActionGlobalRsrcShowAdd, True ],
371 [ 'Regenerate all scheduling queues', self._sActionUrlBase + self.ksActionTestCfgRegenQueues, True ],
372 ]
373 ],
374 [
375 '> Test Results', 'index.py?' + webutils.encodeUrlParams(self._dDbgParams), []
376 ],
377 ];
378
379
380 def _actionDefault(self):
381 """Show the default admin page."""
382 self._sAction = self.ksActionTestBoxList;
383 from testmanager.core.testbox import TestBoxLogic;
384 from testmanager.webui.wuiadmintestbox import WuiTestBoxList;
385 return self._actionGenericListing(TestBoxLogic, WuiTestBoxList);
386
387 def _actionGenericDoDelOld(self, oCoreObjectLogic, sCoreObjectIdFieldName, sRedirectAction):
388 """
389 Delete entry (using oLogicType.remove).
390
391 @param oCoreObjectLogic A *Logic class
392
393 @param sCoreObjectIdFieldName Name of HTTP POST variable that
394 contains object ID information
395
396 @param sRedirectAction An action for redirect user to
397 in case of operation success
398 """
399 iCoreDataObjectId = self.getStringParam(sCoreObjectIdFieldName) # STRING?!?!
400 self._checkForUnknownParameters()
401
402 try:
403 self._sPageTitle = None
404 self._sPageBody = None
405 self._sRedirectTo = self._sActionUrlBase + sRedirectAction
406 return oCoreObjectLogic(self._oDb).remove(self._oCurUser.uid, iCoreDataObjectId)
407 except Exception as oXcpt:
408 self._oDb.rollback();
409 self._sPageTitle = 'Unable to delete record'
410 self._sPageBody = str(oXcpt);
411 if config.g_kfDebugDbXcpt:
412 self._sPageBody += cgitb.html(sys.exc_info());
413 self._sRedirectTo = None
414
415 return False
416
417
418 #
419 # System Category.
420 #
421
422 # System wide changelog actions.
423
424 def _actionSystemChangelogList(self):
425 """ Action wrapper. """
426 from testmanager.core.systemchangelog import SystemChangelogLogic;
427 from testmanager.webui.wuiadminsystemchangelog import WuiAdminSystemChangelogList;
428
429 tsEffective = self.getEffectiveDateParam();
430 cItemsPerPage = self.getIntParam(self.ksParamItemsPerPage, iMin = 2, iMax = 9999, iDefault = 384);
431 iPage = self.getIntParam(self.ksParamPageNo, iMin = 0, iMax = 999999, iDefault = 0);
432 cDaysBack = self.getIntParam(self.ksParamDaysBack, iMin = 1, iMax = 366, iDefault = 14);
433 self._checkForUnknownParameters();
434
435 aoEntries = SystemChangelogLogic(self._oDb).fetchForListingEx(iPage * cItemsPerPage, cItemsPerPage + 1,
436 tsEffective, cDaysBack);
437 oContent = WuiAdminSystemChangelogList(aoEntries, iPage, cItemsPerPage, tsEffective,
438 cDaysBack = cDaysBack, fnDPrint = self._oSrvGlue.dprint, oDisp = self);
439 (self._sPageTitle, self._sPageBody) = oContent.show();
440 return True;
441
442 # System Log actions.
443
444 def _actionSystemLogList(self):
445 """ Action wrapper. """
446 from testmanager.core.systemlog import SystemLogLogic;
447 from testmanager.webui.wuiadminsystemlog import WuiAdminSystemLogList;
448 return self._actionGenericListing(SystemLogLogic, WuiAdminSystemLogList)
449
450 # User Account actions.
451
452 def _actionUserList(self):
453 """ Action wrapper. """
454 from testmanager.core.useraccount import UserAccountLogic;
455 from testmanager.webui.wuiadminuseraccount import WuiUserAccountList;
456 return self._actionGenericListing(UserAccountLogic, WuiUserAccountList)
457
458 def _actionUserAdd(self):
459 """ Action wrapper. """
460 from testmanager.core.useraccount import UserAccountData;
461 from testmanager.webui.wuiadminuseraccount import WuiUserAccount;
462 return self._actionGenericFormAdd(UserAccountData, WuiUserAccount)
463
464 def _actionUserDetails(self):
465 """ Action wrapper. """
466 from testmanager.core.useraccount import UserAccountData, UserAccountLogic;
467 from testmanager.webui.wuiadminuseraccount import WuiUserAccount;
468 return self._actionGenericFormDetails(UserAccountData, UserAccountLogic, WuiUserAccount, 'uid');
469
470 def _actionUserEdit(self):
471 """ Action wrapper. """
472 from testmanager.core.useraccount import UserAccountData;
473 from testmanager.webui.wuiadminuseraccount import WuiUserAccount;
474 return self._actionGenericFormEdit(UserAccountData, WuiUserAccount, UserAccountData.ksParam_uid);
475
476 def _actionUserAddPost(self):
477 """ Action wrapper. """
478 from testmanager.core.useraccount import UserAccountData, UserAccountLogic;
479 from testmanager.webui.wuiadminuseraccount import WuiUserAccount;
480 return self._actionGenericFormAddPost(UserAccountData, UserAccountLogic, WuiUserAccount, self.ksActionUserList)
481
482 def _actionUserEditPost(self):
483 """ Action wrapper. """
484 from testmanager.core.useraccount import UserAccountData, UserAccountLogic;
485 from testmanager.webui.wuiadminuseraccount import WuiUserAccount;
486 return self._actionGenericFormEditPost(UserAccountData, UserAccountLogic, WuiUserAccount, self.ksActionUserList)
487
488 def _actionUserDelPost(self):
489 """ Action wrapper. """
490 from testmanager.core.useraccount import UserAccountData, UserAccountLogic;
491 return self._actionGenericDoRemove(UserAccountLogic, UserAccountData.ksParam_uid, self.ksActionUserList)
492
493
494 #
495 # TestBox & Scheduling Category.
496 #
497
498 def _actionTestBoxList(self):
499 """ Action wrapper. """
500 from testmanager.core.testbox import TestBoxLogic
501 from testmanager.webui.wuiadmintestbox import WuiTestBoxList;
502 return self._actionGenericListing(TestBoxLogic, WuiTestBoxList);
503
504 def _actionTestBoxListPost(self):
505 """Actions on a list of testboxes."""
506 from testmanager.core.testbox import TestBoxData, TestBoxLogic
507 from testmanager.webui.wuiadmintestbox import WuiTestBoxList;
508
509 # Parameters.
510 aidTestBoxes = self.getListOfIntParams(TestBoxData.ksParam_idTestBox, iMin = 1, aiDefaults = []);
511 sListAction = self.getStringParam(self.ksParamListAction);
512 if sListAction in [asDesc[0] for asDesc in WuiTestBoxList.kasTestBoxActionDescs]:
513 idAction = None;
514 else:
515 asActionPrefixes = [ 'setgroup-', ];
516 i = 0;
517 while i < len(asActionPrefixes) and not sListAction.startswith(asActionPrefixes[i]):
518 i += 1;
519 if i >= len(asActionPrefixes):
520 raise WuiException('Parameter "%s" has an invalid value: "%s"' % (self.ksParamListAction, sListAction,));
521 idAction = sListAction[len(asActionPrefixes[i]):];
522 if not idAction.isdigit():
523 raise WuiException('Parameter "%s" has an invalid value: "%s"' % (self.ksParamListAction, sListAction,));
524 idAction = int(idAction);
525 sListAction = sListAction[:len(asActionPrefixes[i]) - 1];
526 self._checkForUnknownParameters();
527
528
529 # Take action.
530 if sListAction == 'none':
531 pass;
532 else:
533 oLogic = TestBoxLogic(self._oDb);
534 aoTestBoxes = []
535 for idTestBox in aidTestBoxes:
536 aoTestBoxes.append(TestBoxData().initFromDbWithId(self._oDb, idTestBox));
537
538 if sListAction in [ 'enable', 'disable' ]:
539 fEnable = sListAction == 'enable';
540 for oTestBox in aoTestBoxes:
541 if oTestBox.fEnabled != fEnable:
542 oTestBox.fEnabled = fEnable;
543 oLogic.editEntry(oTestBox, self._oCurUser.uid, fCommit = False);
544 else:
545 for oTestBox in aoTestBoxes:
546 if oTestBox.enmPendingCmd != sListAction:
547 oLogic.setCommand(oTestBox.idTestBox, oTestBox.enmPendingCmd, sListAction, self._oCurUser.uid,
548 fCommit = False);
549 self._oDb.commit();
550
551 # Re-display the list.
552 self._sPageTitle = None;
553 self._sPageBody = None;
554 self._sRedirectTo = self._sActionUrlBase + self.ksActionTestBoxList;
555 return True;
556
557 def _actionTestBoxAdd(self):
558 """ Action wrapper. """
559 from testmanager.core.testbox import TestBoxDataEx;
560 from testmanager.webui.wuiadmintestbox import WuiTestBox;
561 return self._actionGenericFormAdd(TestBoxDataEx, WuiTestBox);
562
563 def _actionTestBoxAddPost(self):
564 """ Action wrapper. """
565 from testmanager.core.testbox import TestBoxDataEx, TestBoxLogic;
566 from testmanager.webui.wuiadmintestbox import WuiTestBox;
567 return self._actionGenericFormAddPost(TestBoxDataEx, TestBoxLogic, WuiTestBox, self.ksActionTestBoxList);
568
569 def _actionTestBoxDetails(self):
570 """ Action wrapper. """
571 from testmanager.core.testbox import TestBoxDataEx, TestBoxLogic;
572 from testmanager.webui.wuiadmintestbox import WuiTestBox;
573 return self._actionGenericFormDetails(TestBoxDataEx, TestBoxLogic, WuiTestBox, 'idTestBox', 'idGenTestBox');
574
575 def _actionTestBoxEdit(self):
576 """ Action wrapper. """
577 from testmanager.core.testbox import TestBoxDataEx;
578 from testmanager.webui.wuiadmintestbox import WuiTestBox;
579 return self._actionGenericFormEdit(TestBoxDataEx, WuiTestBox, TestBoxDataEx.ksParam_idTestBox);
580
581 def _actionTestBoxEditPost(self):
582 """ Action wrapper. """
583 from testmanager.core.testbox import TestBoxDataEx, TestBoxLogic;
584 from testmanager.webui.wuiadmintestbox import WuiTestBox;
585 return self._actionGenericFormEditPost(TestBoxDataEx, TestBoxLogic,WuiTestBox, self.ksActionTestBoxList);
586
587 def _actionTestBoxRemovePost(self):
588 """ Action wrapper. """
589 from testmanager.core.testbox import TestBoxData, TestBoxLogic;
590 return self._actionGenericDoRemove(TestBoxLogic, TestBoxData.ksParam_idTestBox, self.ksActionTestBoxList);
591
592
593 # Scheduling Group actions
594
595 def _actionSchedGroupList(self):
596 """ Action wrapper. """
597 from testmanager.core.schedgroup import SchedGroupLogic;
598 from testmanager.webui.wuiadminschedgroup import WuiAdminSchedGroupList;
599 return self._actionGenericListing(SchedGroupLogic, WuiAdminSchedGroupList);
600
601 def _actionSchedGroupAdd(self):
602 """ Action wrapper. """
603 from testmanager.core.schedgroup import SchedGroupDataEx;
604 from testmanager.webui.wuiadminschedgroup import WuiSchedGroup;
605 return self._actionGenericFormAdd(SchedGroupDataEx, WuiSchedGroup);
606
607 def _actionSchedGroupClone(self):
608 """ Action wrapper. """
609 from testmanager.core.schedgroup import SchedGroupDataEx;
610 from testmanager.webui.wuiadminschedgroup import WuiSchedGroup;
611 return self._actionGenericFormClone( SchedGroupDataEx, WuiSchedGroup, 'idSchedGroup');
612
613 def _actionSchedGroupDetails(self):
614 """ Action wrapper. """
615 from testmanager.core.schedgroup import SchedGroupDataEx, SchedGroupLogic;
616 from testmanager.webui.wuiadminschedgroup import WuiSchedGroup;
617 return self._actionGenericFormDetails(SchedGroupDataEx, SchedGroupLogic, WuiSchedGroup, 'idSchedGroup');
618
619 def _actionSchedGroupEdit(self):
620 """ Action wrapper. """
621 from testmanager.core.schedgroup import SchedGroupDataEx;
622 from testmanager.webui.wuiadminschedgroup import WuiSchedGroup;
623 return self._actionGenericFormEdit(SchedGroupDataEx, WuiSchedGroup, SchedGroupDataEx.ksParam_idSchedGroup);
624
625 def _actionSchedGroupAddPost(self):
626 """ Action wrapper. """
627 from testmanager.core.schedgroup import SchedGroupDataEx, SchedGroupLogic;
628 from testmanager.webui.wuiadminschedgroup import WuiSchedGroup;
629 return self._actionGenericFormAddPost(SchedGroupDataEx, SchedGroupLogic, WuiSchedGroup, self.ksActionSchedGroupList);
630
631 def _actionSchedGroupEditPost(self):
632 """ Action wrapper. """
633 from testmanager.core.schedgroup import SchedGroupDataEx, SchedGroupLogic;
634 from testmanager.webui.wuiadminschedgroup import WuiSchedGroup;
635 return self._actionGenericFormEditPost(SchedGroupDataEx, SchedGroupLogic, WuiSchedGroup, self.ksActionSchedGroupList);
636
637 def _actionSchedGroupDoRemove(self):
638 """ Action wrapper. """
639 from testmanager.core.schedgroup import SchedGroupData, SchedGroupLogic;
640 return self._actionGenericDoRemove(SchedGroupLogic, SchedGroupData.ksParam_idSchedGroup, self.ksActionSchedGroupList)
641
642 def _actionSchedQueueList(self):
643 """ Action wrapper. """
644 from testmanager.core.schedqueue import SchedQueueLogic;
645 from testmanager.webui.wuiadminschedqueue import WuiAdminSchedQueueList;
646 return self._actionGenericListing(SchedQueueLogic, WuiAdminSchedQueueList);
647
648 def _actionRegenQueuesCommon(self):
649 """
650 Common code for ksActionTestBoxesRegenQueues and ksActionTestCfgRegenQueues.
651
652 Too lazy to put this in some separate place right now.
653 """
654 from testmanager.core.schedgroup import SchedGroupLogic;
655 from testmanager.core.schedulerbase import SchedulerBase;
656
657 self._checkForUnknownParameters();
658 ## @todo should also be changed to a POST with a confirmation dialog preceeding it.
659
660 self._sPageTitle = 'Regenerate All Scheduling Queues';
661 if not self.isReadOnlyUser():
662 self._sPageBody = '';
663 aoGroups = SchedGroupLogic(self._oDb).getAll();
664 for oGroup in aoGroups:
665 self._sPageBody += '<h3>%s (ID %#d)</h3>' % (webutils.escapeElem(oGroup.sName), oGroup.idSchedGroup);
666 try:
667 (aoErrors, asMessages) = SchedulerBase.recreateQueue(self._oDb, self._oCurUser.uid, oGroup.idSchedGroup, 2);
668 except Exception as oXcpt:
669 self._oDb.rollback();
670 self._sPageBody += '<p>SchedulerBase.recreateQueue threw an exception: %s</p>' \
671 % (webutils.escapeElem(str(oXcpt)),);
672 self._sPageBody += cgitb.html(sys.exc_info());
673 else:
674 if not aoErrors:
675 self._sPageBody += '<p>Successfully regenerated.</p>';
676 else:
677 for oError in aoErrors:
678 if oError[1] is None:
679 self._sPageBody += '<p>%s.</p>' % (webutils.escapeElem(oError[0]),);
680 ## @todo links.
681 #elif isinstance(oError[1], TestGroupData):
682 # self._sPageBody += '<p>%s.</p>' % (webutils.escapeElem(oError[0]),);
683 #elif isinstance(oError[1], TestGroupCase):
684 # self._sPageBody += '<p>%s.</p>' % (webutils.escapeElem(oError[0]),);
685 else:
686 self._sPageBody += '<p>%s. [Cannot link to %s]</p>' \
687 % (webutils.escapeElem(oError[0]), webutils.escapeElem(str(oError[1])),);
688 for sMsg in asMessages:
689 self._sPageBody += '<p>%s<p>\n' % (webutils.escapeElem(sMsg),);
690
691 # Remove leftovers from deleted scheduling groups.
692 self._sPageBody += '<h3>Cleanups</h3>\n';
693 cOrphans = SchedulerBase.cleanUpOrphanedQueues(self._oDb);
694 self._sPageBody += '<p>Removed %s orphaned (deleted) queue%s.<p>\n' % (cOrphans, '' if cOrphans == 1 else 's', );
695 else:
696 self._sPageBody = webutils.escapeElem('%s is a read only user and may not regenerate the scheduling queues!'
697 % (self._oCurUser.sUsername,));
698 return True;
699
700
701
702 #
703 # Test Config Category.
704 #
705
706 # Test Cases
707
708 def _actionTestCaseList(self):
709 """ Action wrapper. """
710 from testmanager.core.testcase import TestCaseLogic;
711 from testmanager.webui.wuiadmintestcase import WuiTestCaseList;
712 return self._actionGenericListing(TestCaseLogic, WuiTestCaseList);
713
714 def _actionTestCaseAdd(self):
715 """ Action wrapper. """
716 from testmanager.core.testcase import TestCaseDataEx;
717 from testmanager.webui.wuiadmintestcase import WuiTestCase;
718 return self._actionGenericFormAdd(TestCaseDataEx, WuiTestCase);
719
720 def _actionTestCaseAddPost(self):
721 """ Action wrapper. """
722 from testmanager.core.testcase import TestCaseDataEx, TestCaseLogic;
723 from testmanager.webui.wuiadmintestcase import WuiTestCase;
724 return self._actionGenericFormAddPost(TestCaseDataEx, TestCaseLogic, WuiTestCase, self.ksActionTestCaseList);
725
726 def _actionTestCaseClone(self):
727 """ Action wrapper. """
728 from testmanager.core.testcase import TestCaseDataEx;
729 from testmanager.webui.wuiadmintestcase import WuiTestCase;
730 return self._actionGenericFormClone( TestCaseDataEx, WuiTestCase, 'idTestCase', 'idGenTestCase');
731
732 def _actionTestCaseDetails(self):
733 """ Action wrapper. """
734 from testmanager.core.testcase import TestCaseDataEx, TestCaseLogic;
735 from testmanager.webui.wuiadmintestcase import WuiTestCase;
736 return self._actionGenericFormDetails(TestCaseDataEx, TestCaseLogic, WuiTestCase, 'idTestCase', 'idGenTestCase');
737
738 def _actionTestCaseEdit(self):
739 """ Action wrapper. """
740 from testmanager.core.testcase import TestCaseDataEx;
741 from testmanager.webui.wuiadmintestcase import WuiTestCase;
742 return self._actionGenericFormEdit(TestCaseDataEx, WuiTestCase, TestCaseDataEx.ksParam_idTestCase);
743
744 def _actionTestCaseEditPost(self):
745 """ Action wrapper. """
746 from testmanager.core.testcase import TestCaseDataEx, TestCaseLogic;
747 from testmanager.webui.wuiadmintestcase import WuiTestCase;
748 return self._actionGenericFormEditPost(TestCaseDataEx, TestCaseLogic, WuiTestCase, self.ksActionTestCaseList);
749
750 def _actionTestCaseDoRemove(self):
751 """ Action wrapper. """
752 from testmanager.core.testcase import TestCaseData, TestCaseLogic;
753 return self._actionGenericDoRemove(TestCaseLogic, TestCaseData.ksParam_idTestCase, self.ksActionTestCaseList);
754
755 # Test Group actions
756
757 def _actionTestGroupList(self):
758 """ Action wrapper. """
759 from testmanager.core.testgroup import TestGroupLogic;
760 from testmanager.webui.wuiadmintestgroup import WuiTestGroupList;
761 return self._actionGenericListing(TestGroupLogic, WuiTestGroupList);
762 def _actionTestGroupAdd(self):
763 """ Action wrapper. """
764 from testmanager.core.testgroup import TestGroupDataEx;
765 from testmanager.webui.wuiadmintestgroup import WuiTestGroup;
766 return self._actionGenericFormAdd(TestGroupDataEx, WuiTestGroup);
767 def _actionTestGroupAddPost(self):
768 """ Action wrapper. """
769 from testmanager.core.testgroup import TestGroupDataEx, TestGroupLogic;
770 from testmanager.webui.wuiadmintestgroup import WuiTestGroup;
771 return self._actionGenericFormAddPost(TestGroupDataEx, TestGroupLogic, WuiTestGroup, self.ksActionTestGroupList);
772 def _actionTestGroupClone(self):
773 """ Action wrapper. """
774 from testmanager.core.testgroup import TestGroupDataEx;
775 from testmanager.webui.wuiadmintestgroup import WuiTestGroup;
776 return self._actionGenericFormClone(TestGroupDataEx, WuiTestGroup, 'idTestGroup');
777 def _actionTestGroupDetails(self):
778 """ Action wrapper. """
779 from testmanager.core.testgroup import TestGroupDataEx, TestGroupLogic;
780 from testmanager.webui.wuiadmintestgroup import WuiTestGroup;
781 return self._actionGenericFormDetails(TestGroupDataEx, TestGroupLogic, WuiTestGroup, 'idTestGroup');
782 def _actionTestGroupEdit(self):
783 """ Action wrapper. """
784 from testmanager.core.testgroup import TestGroupDataEx;
785 from testmanager.webui.wuiadmintestgroup import WuiTestGroup;
786 return self._actionGenericFormEdit(TestGroupDataEx, WuiTestGroup, TestGroupDataEx.ksParam_idTestGroup);
787 def _actionTestGroupEditPost(self):
788 """ Action wrapper. """
789 from testmanager.core.testgroup import TestGroupDataEx, TestGroupLogic;
790 from testmanager.webui.wuiadmintestgroup import WuiTestGroup;
791 return self._actionGenericFormEditPost(TestGroupDataEx, TestGroupLogic, WuiTestGroup, self.ksActionTestGroupList);
792 def _actionTestGroupDoRemove(self):
793 """ Action wrapper. """
794 from testmanager.core.testgroup import TestGroupDataEx, TestGroupLogic;
795 return self._actionGenericDoRemove(TestGroupLogic, TestGroupDataEx.ksParam_idTestGroup, self.ksActionTestGroupList)
796
797
798 # Global Resources
799
800 def _actionGlobalRsrcShowAll(self):
801 """ Action wrapper. """
802 from testmanager.core.globalresource import GlobalResourceLogic;
803 from testmanager.webui.wuiadminglobalrsrc import WuiGlobalResourceList;
804 return self._actionGenericListing(GlobalResourceLogic, WuiGlobalResourceList);
805
806 def _actionGlobalRsrcShowAdd(self):
807 """ Action wrapper. """
808 return self._actionGlobalRsrcShowAddEdit(WuiAdmin.ksActionGlobalRsrcAdd);
809
810 def _actionGlobalRsrcShowEdit(self):
811 """ Action wrapper. """
812 return self._actionGlobalRsrcShowAddEdit(WuiAdmin.ksActionGlobalRsrcEdit);
813
814 def _actionGlobalRsrcAdd(self):
815 """ Action wrapper. """
816 return self._actionGlobalRsrcAddEdit(WuiAdmin.ksActionGlobalRsrcAdd);
817
818 def _actionGlobalRsrcEdit(self):
819 """ Action wrapper. """
820 return self._actionGlobalRsrcAddEdit(WuiAdmin.ksActionGlobalRsrcEdit);
821
822 def _actionGlobalRsrcDel(self):
823 """ Action wrapper. """
824 from testmanager.core.globalresource import GlobalResourceData, GlobalResourceLogic;
825 return self._actionGenericDoDelOld(GlobalResourceLogic, GlobalResourceData.ksParam_idGlobalRsrc,
826 self.ksActionGlobalRsrcShowAll);
827
828 def _actionGlobalRsrcShowAddEdit(self, sAction): # pylint: disable=invalid-name
829 """Show Global Resource creation or edit dialog"""
830 from testmanager.core.globalresource import GlobalResourceLogic, GlobalResourceData;
831 from testmanager.webui.wuiadminglobalrsrc import WuiGlobalResource;
832
833 oGlobalResourceLogic = GlobalResourceLogic(self._oDb)
834 if sAction == WuiAdmin.ksActionGlobalRsrcEdit:
835 idGlobalRsrc = self.getIntParam(GlobalResourceData.ksParam_idGlobalRsrc, iDefault = -1)
836 oData = oGlobalResourceLogic.getById(idGlobalRsrc)
837 else:
838 oData = GlobalResourceData()
839 oData.convertToParamNull()
840
841 self._checkForUnknownParameters()
842
843 oContent = WuiGlobalResource(oData)
844 (self._sPageTitle, self._sPageBody) = oContent.showAddModifyPage(sAction)
845
846 return True
847
848 def _actionGlobalRsrcAddEdit(self, sAction):
849 """Add or modify Global Resource record"""
850 from testmanager.core.globalresource import GlobalResourceLogic, GlobalResourceData;
851 from testmanager.webui.wuiadminglobalrsrc import WuiGlobalResource;
852
853 oData = GlobalResourceData()
854 oData.initFromParams(self, fStrict=True)
855
856 self._checkForUnknownParameters()
857
858 if self._oSrvGlue.getMethod() != 'POST':
859 raise WuiException('Expected "POST" request, got "%s"' % (self._oSrvGlue.getMethod(),))
860
861 oGlobalResourceLogic = GlobalResourceLogic(self._oDb)
862 dErrors = oData.validateAndConvert(self._oDb);
863 if not dErrors:
864 if sAction == WuiAdmin.ksActionGlobalRsrcAdd:
865 oGlobalResourceLogic.addGlobalResource(self._oCurUser.uid, oData)
866 elif sAction == WuiAdmin.ksActionGlobalRsrcEdit:
867 idGlobalRsrc = self.getStringParam(GlobalResourceData.ksParam_idGlobalRsrc)
868 oGlobalResourceLogic.editGlobalResource(self._oCurUser.uid, idGlobalRsrc, oData)
869 else:
870 raise WuiException('Invalid parameter.')
871 self._sPageTitle = None;
872 self._sPageBody = None;
873 self._sRedirectTo = self._sActionUrlBase + self.ksActionGlobalRsrcShowAll;
874 else:
875 oContent = WuiGlobalResource(oData)
876 (self._sPageTitle, self._sPageBody) = oContent.showAddModifyPage(sAction, dErrors=dErrors)
877
878 return True
879
880
881 #
882 # Build Source actions
883 #
884
885 def _actionBuildSrcList(self):
886 """ Action wrapper. """
887 from testmanager.core.buildsource import BuildSourceLogic;
888 from testmanager.webui.wuiadminbuildsource import WuiAdminBuildSrcList;
889 return self._actionGenericListing(BuildSourceLogic, WuiAdminBuildSrcList);
890
891 def _actionBuildSrcAdd(self):
892 """ Action wrapper. """
893 from testmanager.core.buildsource import BuildSourceData;
894 from testmanager.webui.wuiadminbuildsource import WuiAdminBuildSrc;
895 return self._actionGenericFormAdd(BuildSourceData, WuiAdminBuildSrc);
896
897 def _actionBuildSrcAddPost(self):
898 """ Action wrapper. """
899 from testmanager.core.buildsource import BuildSourceData, BuildSourceLogic;
900 from testmanager.webui.wuiadminbuildsource import WuiAdminBuildSrc;
901 return self._actionGenericFormAddPost(BuildSourceData, BuildSourceLogic, WuiAdminBuildSrc, self.ksActionBuildSrcList);
902
903 def _actionBuildSrcClone(self):
904 """ Action wrapper. """
905 from testmanager.core.buildsource import BuildSourceData;
906 from testmanager.webui.wuiadminbuildsource import WuiAdminBuildSrc;
907 return self._actionGenericFormClone( BuildSourceData, WuiAdminBuildSrc, 'idBuildSrc');
908
909 def _actionBuildSrcDetails(self):
910 """ Action wrapper. """
911 from testmanager.core.buildsource import BuildSourceData, BuildSourceLogic;
912 from testmanager.webui.wuiadminbuildsource import WuiAdminBuildSrc;
913 return self._actionGenericFormDetails(BuildSourceData, BuildSourceLogic, WuiAdminBuildSrc, 'idBuildSrc');
914
915 def _actionBuildSrcDoRemove(self):
916 """ Action wrapper. """
917 from testmanager.core.buildsource import BuildSourceData, BuildSourceLogic;
918 return self._actionGenericDoRemove(BuildSourceLogic, BuildSourceData.ksParam_idBuildSrc, self.ksActionBuildSrcList);
919
920 def _actionBuildSrcEdit(self):
921 """ Action wrapper. """
922 from testmanager.core.buildsource import BuildSourceData;
923 from testmanager.webui.wuiadminbuildsource import WuiAdminBuildSrc;
924 return self._actionGenericFormEdit(BuildSourceData, WuiAdminBuildSrc, BuildSourceData.ksParam_idBuildSrc);
925
926 def _actionBuildSrcEditPost(self):
927 """ Action wrapper. """
928 from testmanager.core.buildsource import BuildSourceData, BuildSourceLogic;
929 from testmanager.webui.wuiadminbuildsource import WuiAdminBuildSrc;
930 return self._actionGenericFormEditPost(BuildSourceData, BuildSourceLogic, WuiAdminBuildSrc, self.ksActionBuildSrcList);
931
932
933 #
934 # Build actions
935 #
936 def _actionBuildList(self):
937 """ Action wrapper. """
938 from testmanager.core.build import BuildLogic;
939 from testmanager.webui.wuiadminbuild import WuiAdminBuildList;
940 return self._actionGenericListing(BuildLogic, WuiAdminBuildList);
941
942 def _actionBuildAdd(self):
943 """ Action wrapper. """
944 from testmanager.core.build import BuildData;
945 from testmanager.webui.wuiadminbuild import WuiAdminBuild;
946 return self._actionGenericFormAdd(BuildData, WuiAdminBuild);
947
948 def _actionBuildAddPost(self):
949 """ Action wrapper. """
950 from testmanager.core.build import BuildData, BuildLogic;
951 from testmanager.webui.wuiadminbuild import WuiAdminBuild;
952 return self._actionGenericFormAddPost(BuildData, BuildLogic, WuiAdminBuild, self.ksActionBuildList);
953
954 def _actionBuildClone(self):
955 """ Action wrapper. """
956 from testmanager.core.build import BuildData;
957 from testmanager.webui.wuiadminbuild import WuiAdminBuild;
958 return self._actionGenericFormClone( BuildData, WuiAdminBuild, 'idBuild');
959
960 def _actionBuildDetails(self):
961 """ Action wrapper. """
962 from testmanager.core.build import BuildData, BuildLogic;
963 from testmanager.webui.wuiadminbuild import WuiAdminBuild;
964 return self._actionGenericFormDetails(BuildData, BuildLogic, WuiAdminBuild, 'idBuild');
965
966 def _actionBuildDoRemove(self):
967 """ Action wrapper. """
968 from testmanager.core.build import BuildData, BuildLogic;
969 return self._actionGenericDoRemove(BuildLogic, BuildData.ksParam_idBuild, self.ksActionBuildList);
970
971 def _actionBuildEdit(self):
972 """ Action wrapper. """
973 from testmanager.core.build import BuildData;
974 from testmanager.webui.wuiadminbuild import WuiAdminBuild;
975 return self._actionGenericFormEdit(BuildData, WuiAdminBuild, BuildData.ksParam_idBuild);
976
977 def _actionBuildEditPost(self):
978 """ Action wrapper. """
979 from testmanager.core.build import BuildData, BuildLogic;
980 from testmanager.webui.wuiadminbuild import WuiAdminBuild;
981 return self._actionGenericFormEditPost(BuildData, BuildLogic, WuiAdminBuild, self.ksActionBuildList)
982
983
984 #
985 # Build Category actions
986 #
987 def _actionBuildCategoryList(self):
988 """ Action wrapper. """
989 from testmanager.core.build import BuildCategoryLogic;
990 from testmanager.webui.wuiadminbuildcategory import WuiAdminBuildCatList;
991 return self._actionGenericListing(BuildCategoryLogic, WuiAdminBuildCatList);
992
993 def _actionBuildCategoryAdd(self):
994 """ Action wrapper. """
995 from testmanager.core.build import BuildCategoryData;
996 from testmanager.webui.wuiadminbuildcategory import WuiAdminBuildCat;
997 return self._actionGenericFormAdd(BuildCategoryData, WuiAdminBuildCat);
998
999 def _actionBuildCategoryAddPost(self):
1000 """ Action wrapper. """
1001 from testmanager.core.build import BuildCategoryData, BuildCategoryLogic;
1002 from testmanager.webui.wuiadminbuildcategory import WuiAdminBuildCat;
1003 return self._actionGenericFormAddPost(BuildCategoryData, BuildCategoryLogic, WuiAdminBuildCat,
1004 self.ksActionBuildCategoryList);
1005
1006 def _actionBuildCategoryClone(self):
1007 """ Action wrapper. """
1008 from testmanager.core.build import BuildCategoryData;
1009 from testmanager.webui.wuiadminbuildcategory import WuiAdminBuildCat;
1010 return self._actionGenericFormClone(BuildCategoryData, WuiAdminBuildCat, 'idBuildCategory');
1011
1012 def _actionBuildCategoryDetails(self):
1013 """ Action wrapper. """
1014 from testmanager.core.build import BuildCategoryData, BuildCategoryLogic;
1015 from testmanager.webui.wuiadminbuildcategory import WuiAdminBuildCat;
1016 return self._actionGenericFormDetails(BuildCategoryData, BuildCategoryLogic, WuiAdminBuildCat, 'idBuildCategory');
1017
1018 def _actionBuildCategoryDoRemove(self):
1019 """ Action wrapper. """
1020 from testmanager.core.build import BuildCategoryData, BuildCategoryLogic;
1021 return self._actionGenericDoRemove(BuildCategoryLogic, BuildCategoryData.ksParam_idBuildCategory,
1022 self.ksActionBuildCategoryList)
1023
1024
1025 #
1026 # Build Black List actions
1027 #
1028 def _actionBuildBlacklist(self):
1029 """ Action wrapper. """
1030 from testmanager.core.buildblacklist import BuildBlacklistLogic;
1031 from testmanager.webui.wuiadminbuildblacklist import WuiAdminListOfBlacklistItems;
1032 return self._actionGenericListing(BuildBlacklistLogic, WuiAdminListOfBlacklistItems);
1033
1034 def _actionBuildBlacklistAdd(self):
1035 """ Action wrapper. """
1036 from testmanager.core.buildblacklist import BuildBlacklistData;
1037 from testmanager.webui.wuiadminbuildblacklist import WuiAdminBuildBlacklist;
1038 return self._actionGenericFormAdd(BuildBlacklistData, WuiAdminBuildBlacklist);
1039
1040 def _actionBuildBlacklistAddPost(self):
1041 """ Action wrapper. """
1042 from testmanager.core.buildblacklist import BuildBlacklistData, BuildBlacklistLogic;
1043 from testmanager.webui.wuiadminbuildblacklist import WuiAdminBuildBlacklist;
1044 return self._actionGenericFormAddPost(BuildBlacklistData, BuildBlacklistLogic,
1045 WuiAdminBuildBlacklist, self.ksActionBuildBlacklist);
1046
1047 def _actionBuildBlacklistClone(self):
1048 """ Action wrapper. """
1049 from testmanager.core.buildblacklist import BuildBlacklistData;
1050 from testmanager.webui.wuiadminbuildblacklist import WuiAdminBuildBlacklist;
1051 return self._actionGenericFormClone(BuildBlacklistData, WuiAdminBuildBlacklist, 'idBlacklisting');
1052
1053 def _actionBuildBlacklistDetails(self):
1054 """ Action wrapper. """
1055 from testmanager.core.buildblacklist import BuildBlacklistData, BuildBlacklistLogic;
1056 from testmanager.webui.wuiadminbuildblacklist import WuiAdminBuildBlacklist;
1057 return self._actionGenericFormDetails(BuildBlacklistData, BuildBlacklistLogic, WuiAdminBuildBlacklist, 'idBlacklisting');
1058
1059 def _actionBuildBlacklistDoRemove(self):
1060 """ Action wrapper. """
1061 from testmanager.core.buildblacklist import BuildBlacklistData, BuildBlacklistLogic;
1062 return self._actionGenericDoRemove(BuildBlacklistLogic, BuildBlacklistData.ksParam_idBlacklisting,
1063 self.ksActionBuildBlacklist);
1064
1065 def _actionBuildBlacklistEdit(self):
1066 """ Action wrapper. """
1067 from testmanager.core.buildblacklist import BuildBlacklistData;
1068 from testmanager.webui.wuiadminbuildblacklist import WuiAdminBuildBlacklist;
1069 return self._actionGenericFormEdit(BuildBlacklistData, WuiAdminBuildBlacklist, BuildBlacklistData.ksParam_idBlacklisting);
1070
1071 def _actionBuildBlacklistEditPost(self):
1072 """ Action wrapper. """
1073 from testmanager.core.buildblacklist import BuildBlacklistData, BuildBlacklistLogic;
1074 from testmanager.webui.wuiadminbuildblacklist import WuiAdminBuildBlacklist;
1075 return self._actionGenericFormEditPost(BuildBlacklistData, BuildBlacklistLogic, WuiAdminBuildBlacklist,
1076 self.ksActionBuildBlacklist)
1077
1078
1079 #
1080 # Failure Category actions
1081 #
1082 def _actionFailureCategoryList(self):
1083 """ Action wrapper. """
1084 from testmanager.core.failurecategory import FailureCategoryLogic;
1085 from testmanager.webui.wuiadminfailurecategory import WuiFailureCategoryList;
1086 return self._actionGenericListing(FailureCategoryLogic, WuiFailureCategoryList);
1087
1088 def _actionFailureCategoryAdd(self):
1089 """ Action wrapper. """
1090 from testmanager.core.failurecategory import FailureCategoryData;
1091 from testmanager.webui.wuiadminfailurecategory import WuiFailureCategory;
1092 return self._actionGenericFormAdd(FailureCategoryData, WuiFailureCategory);
1093
1094 def _actionFailureCategoryAddPost(self):
1095 """ Action wrapper. """
1096 from testmanager.core.failurecategory import FailureCategoryData, FailureCategoryLogic;
1097 from testmanager.webui.wuiadminfailurecategory import WuiFailureCategory;
1098 return self._actionGenericFormAddPost(FailureCategoryData, FailureCategoryLogic, WuiFailureCategory,
1099 self.ksActionFailureCategoryList)
1100
1101 def _actionFailureCategoryDetails(self):
1102 """ Action wrapper. """
1103 from testmanager.core.failurecategory import FailureCategoryData, FailureCategoryLogic;
1104 from testmanager.webui.wuiadminfailurecategory import WuiFailureCategory;
1105 return self._actionGenericFormDetails(FailureCategoryData, FailureCategoryLogic, WuiFailureCategory);
1106
1107
1108 def _actionFailureCategoryDoRemove(self):
1109 """ Action wrapper. """
1110 from testmanager.core.failurecategory import FailureCategoryData, FailureCategoryLogic;
1111 return self._actionGenericDoRemove(FailureCategoryLogic, FailureCategoryData.ksParam_idFailureCategory,
1112 self.ksActionFailureCategoryList);
1113
1114 def _actionFailureCategoryEdit(self):
1115 """ Action wrapper. """
1116 from testmanager.core.failurecategory import FailureCategoryData;
1117 from testmanager.webui.wuiadminfailurecategory import WuiFailureCategory;
1118 return self._actionGenericFormEdit(FailureCategoryData, WuiFailureCategory,
1119 FailureCategoryData.ksParam_idFailureCategory);
1120
1121 def _actionFailureCategoryEditPost(self):
1122 """ Action wrapper. """
1123 from testmanager.core.failurecategory import FailureCategoryData, FailureCategoryLogic;
1124 from testmanager.webui.wuiadminfailurecategory import WuiFailureCategory;
1125 return self._actionGenericFormEditPost(FailureCategoryData, FailureCategoryLogic, WuiFailureCategory,
1126 self.ksActionFailureCategoryList);
1127
1128 #
1129 # Failure Reason actions
1130 #
1131 def _actionFailureReasonList(self):
1132 """ Action wrapper. """
1133 from testmanager.core.failurereason import FailureReasonLogic;
1134 from testmanager.webui.wuiadminfailurereason import WuiAdminFailureReasonList;
1135 return self._actionGenericListing(FailureReasonLogic, WuiAdminFailureReasonList)
1136
1137 def _actionFailureReasonAdd(self):
1138 """ Action wrapper. """
1139 from testmanager.core.failurereason import FailureReasonData;
1140 from testmanager.webui.wuiadminfailurereason import WuiAdminFailureReason;
1141 return self._actionGenericFormAdd(FailureReasonData, WuiAdminFailureReason);
1142
1143 def _actionFailureReasonAddPost(self):
1144 """ Action wrapper. """
1145 from testmanager.core.failurereason import FailureReasonData, FailureReasonLogic;
1146 from testmanager.webui.wuiadminfailurereason import WuiAdminFailureReason;
1147 return self._actionGenericFormAddPost(FailureReasonData, FailureReasonLogic, WuiAdminFailureReason,
1148 self.ksActionFailureReasonList);
1149
1150 def _actionFailureReasonDetails(self):
1151 """ Action wrapper. """
1152 from testmanager.core.failurereason import FailureReasonData, FailureReasonLogic;
1153 from testmanager.webui.wuiadminfailurereason import WuiAdminFailureReason;
1154 return self._actionGenericFormDetails(FailureReasonData, FailureReasonLogic, WuiAdminFailureReason);
1155
1156 def _actionFailureReasonDoRemove(self):
1157 """ Action wrapper. """
1158 from testmanager.core.failurereason import FailureReasonData, FailureReasonLogic;
1159 return self._actionGenericDoRemove(FailureReasonLogic, FailureReasonData.ksParam_idFailureReason,
1160 self.ksActionFailureReasonList);
1161
1162 def _actionFailureReasonEdit(self):
1163 """ Action wrapper. """
1164 from testmanager.core.failurereason import FailureReasonData;
1165 from testmanager.webui.wuiadminfailurereason import WuiAdminFailureReason;
1166 return self._actionGenericFormEdit(FailureReasonData, WuiAdminFailureReason);
1167
1168
1169 def _actionFailureReasonEditPost(self):
1170 """ Action wrapper. """
1171 from testmanager.core.failurereason import FailureReasonData, FailureReasonLogic;
1172 from testmanager.webui.wuiadminfailurereason import WuiAdminFailureReason;
1173 return self._actionGenericFormEditPost(FailureReasonData, FailureReasonLogic, WuiAdminFailureReason,
1174 self.ksActionFailureReasonList)
1175
1176
1177 #
1178 # Overrides.
1179 #
1180
1181 def _generatePage(self):
1182 """Override parent handler in order to change page titte"""
1183 if self._sPageTitle is not None:
1184 self._sPageTitle = 'Test Manager Admin - ' + self._sPageTitle
1185
1186 return WuiDispatcherBase._generatePage(self)
注意: 瀏覽 TracBrowser 來幫助您使用儲存庫瀏覽器

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette