VirtualBox

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

Last change on this file since 83338 was 83338, checked in by vboxsync, 5 years ago

TestManager: Scheduling queue patch #4 with fEnable sorting adjustment. bugref:9657

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 61.1 KB
Line 
1# -*- coding: utf-8 -*-
2# $Id: wuiadmin.py 83338 2020-03-19 17:51:47Z 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.virtualbox.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: 83338 $"
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 = 300);
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 else:
691 self._sPageBody = webutils.escapeElem('%s is a read only user and may not regenerate the scheduling queues!'
692 % (self._oCurUser.sUsername,));
693 return True;
694
695
696
697 #
698 # Test Config Category.
699 #
700
701 # Test Cases
702
703 def _actionTestCaseList(self):
704 """ Action wrapper. """
705 from testmanager.core.testcase import TestCaseLogic;
706 from testmanager.webui.wuiadmintestcase import WuiTestCaseList;
707 return self._actionGenericListing(TestCaseLogic, WuiTestCaseList);
708
709 def _actionTestCaseAdd(self):
710 """ Action wrapper. """
711 from testmanager.core.testcase import TestCaseDataEx;
712 from testmanager.webui.wuiadmintestcase import WuiTestCase;
713 return self._actionGenericFormAdd(TestCaseDataEx, WuiTestCase);
714
715 def _actionTestCaseAddPost(self):
716 """ Action wrapper. """
717 from testmanager.core.testcase import TestCaseDataEx, TestCaseLogic;
718 from testmanager.webui.wuiadmintestcase import WuiTestCase;
719 return self._actionGenericFormAddPost(TestCaseDataEx, TestCaseLogic, WuiTestCase, self.ksActionTestCaseList);
720
721 def _actionTestCaseClone(self):
722 """ Action wrapper. """
723 from testmanager.core.testcase import TestCaseDataEx;
724 from testmanager.webui.wuiadmintestcase import WuiTestCase;
725 return self._actionGenericFormClone( TestCaseDataEx, WuiTestCase, 'idTestCase', 'idGenTestCase');
726
727 def _actionTestCaseDetails(self):
728 """ Action wrapper. """
729 from testmanager.core.testcase import TestCaseDataEx, TestCaseLogic;
730 from testmanager.webui.wuiadmintestcase import WuiTestCase;
731 return self._actionGenericFormDetails(TestCaseDataEx, TestCaseLogic, WuiTestCase, 'idTestCase', 'idGenTestCase');
732
733 def _actionTestCaseEdit(self):
734 """ Action wrapper. """
735 from testmanager.core.testcase import TestCaseDataEx;
736 from testmanager.webui.wuiadmintestcase import WuiTestCase;
737 return self._actionGenericFormEdit(TestCaseDataEx, WuiTestCase, TestCaseDataEx.ksParam_idTestCase);
738
739 def _actionTestCaseEditPost(self):
740 """ Action wrapper. """
741 from testmanager.core.testcase import TestCaseDataEx, TestCaseLogic;
742 from testmanager.webui.wuiadmintestcase import WuiTestCase;
743 return self._actionGenericFormEditPost(TestCaseDataEx, TestCaseLogic, WuiTestCase, self.ksActionTestCaseList);
744
745 def _actionTestCaseDoRemove(self):
746 """ Action wrapper. """
747 from testmanager.core.testcase import TestCaseData, TestCaseLogic;
748 return self._actionGenericDoRemove(TestCaseLogic, TestCaseData.ksParam_idTestCase, self.ksActionTestCaseList);
749
750 # Test Group actions
751
752 def _actionTestGroupList(self):
753 """ Action wrapper. """
754 from testmanager.core.testgroup import TestGroupLogic;
755 from testmanager.webui.wuiadmintestgroup import WuiTestGroupList;
756 return self._actionGenericListing(TestGroupLogic, WuiTestGroupList);
757 def _actionTestGroupAdd(self):
758 """ Action wrapper. """
759 from testmanager.core.testgroup import TestGroupDataEx;
760 from testmanager.webui.wuiadmintestgroup import WuiTestGroup;
761 return self._actionGenericFormAdd(TestGroupDataEx, WuiTestGroup);
762 def _actionTestGroupAddPost(self):
763 """ Action wrapper. """
764 from testmanager.core.testgroup import TestGroupDataEx, TestGroupLogic;
765 from testmanager.webui.wuiadmintestgroup import WuiTestGroup;
766 return self._actionGenericFormAddPost(TestGroupDataEx, TestGroupLogic, WuiTestGroup, self.ksActionTestGroupList);
767 def _actionTestGroupClone(self):
768 """ Action wrapper. """
769 from testmanager.core.testgroup import TestGroupDataEx;
770 from testmanager.webui.wuiadmintestgroup import WuiTestGroup;
771 return self._actionGenericFormClone(TestGroupDataEx, WuiTestGroup, 'idTestGroup');
772 def _actionTestGroupDetails(self):
773 """ Action wrapper. """
774 from testmanager.core.testgroup import TestGroupDataEx, TestGroupLogic;
775 from testmanager.webui.wuiadmintestgroup import WuiTestGroup;
776 return self._actionGenericFormDetails(TestGroupDataEx, TestGroupLogic, WuiTestGroup, 'idTestGroup');
777 def _actionTestGroupEdit(self):
778 """ Action wrapper. """
779 from testmanager.core.testgroup import TestGroupDataEx;
780 from testmanager.webui.wuiadmintestgroup import WuiTestGroup;
781 return self._actionGenericFormEdit(TestGroupDataEx, WuiTestGroup, TestGroupDataEx.ksParam_idTestGroup);
782 def _actionTestGroupEditPost(self):
783 """ Action wrapper. """
784 from testmanager.core.testgroup import TestGroupDataEx, TestGroupLogic;
785 from testmanager.webui.wuiadmintestgroup import WuiTestGroup;
786 return self._actionGenericFormEditPost(TestGroupDataEx, TestGroupLogic, WuiTestGroup, self.ksActionTestGroupList);
787 def _actionTestGroupDoRemove(self):
788 """ Action wrapper. """
789 from testmanager.core.testgroup import TestGroupDataEx, TestGroupLogic;
790 return self._actionGenericDoRemove(TestGroupLogic, TestGroupDataEx.ksParam_idTestGroup, self.ksActionTestGroupList)
791
792
793 # Global Resources
794
795 def _actionGlobalRsrcShowAll(self):
796 """ Action wrapper. """
797 from testmanager.core.globalresource import GlobalResourceLogic;
798 from testmanager.webui.wuiadminglobalrsrc import WuiGlobalResourceList;
799 return self._actionGenericListing(GlobalResourceLogic, WuiGlobalResourceList);
800
801 def _actionGlobalRsrcShowAdd(self):
802 """ Action wrapper. """
803 return self._actionGlobalRsrcShowAddEdit(WuiAdmin.ksActionGlobalRsrcAdd);
804
805 def _actionGlobalRsrcShowEdit(self):
806 """ Action wrapper. """
807 return self._actionGlobalRsrcShowAddEdit(WuiAdmin.ksActionGlobalRsrcEdit);
808
809 def _actionGlobalRsrcAdd(self):
810 """ Action wrapper. """
811 return self._actionGlobalRsrcAddEdit(WuiAdmin.ksActionGlobalRsrcAdd);
812
813 def _actionGlobalRsrcEdit(self):
814 """ Action wrapper. """
815 return self._actionGlobalRsrcAddEdit(WuiAdmin.ksActionGlobalRsrcEdit);
816
817 def _actionGlobalRsrcDel(self):
818 """ Action wrapper. """
819 from testmanager.core.globalresource import GlobalResourceData, GlobalResourceLogic;
820 return self._actionGenericDoDelOld(GlobalResourceLogic, GlobalResourceData.ksParam_idGlobalRsrc,
821 self.ksActionGlobalRsrcShowAll);
822
823 def _actionGlobalRsrcShowAddEdit(self, sAction): # pylint: disable=invalid-name
824 """Show Global Resource creation or edit dialog"""
825 from testmanager.core.globalresource import GlobalResourceLogic, GlobalResourceData;
826 from testmanager.webui.wuiadminglobalrsrc import WuiGlobalResource;
827
828 oGlobalResourceLogic = GlobalResourceLogic(self._oDb)
829 if sAction == WuiAdmin.ksActionGlobalRsrcEdit:
830 idGlobalRsrc = self.getIntParam(GlobalResourceData.ksParam_idGlobalRsrc, iDefault = -1)
831 oData = oGlobalResourceLogic.getById(idGlobalRsrc)
832 else:
833 oData = GlobalResourceData()
834 oData.convertToParamNull()
835
836 self._checkForUnknownParameters()
837
838 oContent = WuiGlobalResource(oData)
839 (self._sPageTitle, self._sPageBody) = oContent.showAddModifyPage(sAction)
840
841 return True
842
843 def _actionGlobalRsrcAddEdit(self, sAction):
844 """Add or modify Global Resource record"""
845 from testmanager.core.globalresource import GlobalResourceLogic, GlobalResourceData;
846 from testmanager.webui.wuiadminglobalrsrc import WuiGlobalResource;
847
848 oData = GlobalResourceData()
849 oData.initFromParams(self, fStrict=True)
850
851 self._checkForUnknownParameters()
852
853 if self._oSrvGlue.getMethod() != 'POST':
854 raise WuiException('Expected "POST" request, got "%s"' % (self._oSrvGlue.getMethod(),))
855
856 oGlobalResourceLogic = GlobalResourceLogic(self._oDb)
857 dErrors = oData.validateAndConvert(self._oDb);
858 if not dErrors:
859 if sAction == WuiAdmin.ksActionGlobalRsrcAdd:
860 oGlobalResourceLogic.addGlobalResource(self._oCurUser.uid, oData)
861 elif sAction == WuiAdmin.ksActionGlobalRsrcEdit:
862 idGlobalRsrc = self.getStringParam(GlobalResourceData.ksParam_idGlobalRsrc)
863 oGlobalResourceLogic.editGlobalResource(self._oCurUser.uid, idGlobalRsrc, oData)
864 else:
865 raise WuiException('Invalid parameter.')
866 self._sPageTitle = None;
867 self._sPageBody = None;
868 self._sRedirectTo = self._sActionUrlBase + self.ksActionGlobalRsrcShowAll;
869 else:
870 oContent = WuiGlobalResource(oData)
871 (self._sPageTitle, self._sPageBody) = oContent.showAddModifyPage(sAction, dErrors=dErrors)
872
873 return True
874
875
876 #
877 # Build Source actions
878 #
879
880 def _actionBuildSrcList(self):
881 """ Action wrapper. """
882 from testmanager.core.buildsource import BuildSourceLogic;
883 from testmanager.webui.wuiadminbuildsource import WuiAdminBuildSrcList;
884 return self._actionGenericListing(BuildSourceLogic, WuiAdminBuildSrcList);
885
886 def _actionBuildSrcAdd(self):
887 """ Action wrapper. """
888 from testmanager.core.buildsource import BuildSourceData;
889 from testmanager.webui.wuiadminbuildsource import WuiAdminBuildSrc;
890 return self._actionGenericFormAdd(BuildSourceData, WuiAdminBuildSrc);
891
892 def _actionBuildSrcAddPost(self):
893 """ Action wrapper. """
894 from testmanager.core.buildsource import BuildSourceData, BuildSourceLogic;
895 from testmanager.webui.wuiadminbuildsource import WuiAdminBuildSrc;
896 return self._actionGenericFormAddPost(BuildSourceData, BuildSourceLogic, WuiAdminBuildSrc, self.ksActionBuildSrcList);
897
898 def _actionBuildSrcClone(self):
899 """ Action wrapper. """
900 from testmanager.core.buildsource import BuildSourceData;
901 from testmanager.webui.wuiadminbuildsource import WuiAdminBuildSrc;
902 return self._actionGenericFormClone( BuildSourceData, WuiAdminBuildSrc, 'idBuildSrc');
903
904 def _actionBuildSrcDetails(self):
905 """ Action wrapper. """
906 from testmanager.core.buildsource import BuildSourceData, BuildSourceLogic;
907 from testmanager.webui.wuiadminbuildsource import WuiAdminBuildSrc;
908 return self._actionGenericFormDetails(BuildSourceData, BuildSourceLogic, WuiAdminBuildSrc, 'idBuildSrc');
909
910 def _actionBuildSrcDoRemove(self):
911 """ Action wrapper. """
912 from testmanager.core.buildsource import BuildSourceData, BuildSourceLogic;
913 return self._actionGenericDoRemove(BuildSourceLogic, BuildSourceData.ksParam_idBuildSrc, self.ksActionBuildSrcList);
914
915 def _actionBuildSrcEdit(self):
916 """ Action wrapper. """
917 from testmanager.core.buildsource import BuildSourceData;
918 from testmanager.webui.wuiadminbuildsource import WuiAdminBuildSrc;
919 return self._actionGenericFormEdit(BuildSourceData, WuiAdminBuildSrc, BuildSourceData.ksParam_idBuildSrc);
920
921 def _actionBuildSrcEditPost(self):
922 """ Action wrapper. """
923 from testmanager.core.buildsource import BuildSourceData, BuildSourceLogic;
924 from testmanager.webui.wuiadminbuildsource import WuiAdminBuildSrc;
925 return self._actionGenericFormEditPost(BuildSourceData, BuildSourceLogic, WuiAdminBuildSrc, self.ksActionBuildSrcList);
926
927
928 #
929 # Build actions
930 #
931 def _actionBuildList(self):
932 """ Action wrapper. """
933 from testmanager.core.build import BuildLogic;
934 from testmanager.webui.wuiadminbuild import WuiAdminBuildList;
935 return self._actionGenericListing(BuildLogic, WuiAdminBuildList);
936
937 def _actionBuildAdd(self):
938 """ Action wrapper. """
939 from testmanager.core.build import BuildData;
940 from testmanager.webui.wuiadminbuild import WuiAdminBuild;
941 return self._actionGenericFormAdd(BuildData, WuiAdminBuild);
942
943 def _actionBuildAddPost(self):
944 """ Action wrapper. """
945 from testmanager.core.build import BuildData, BuildLogic;
946 from testmanager.webui.wuiadminbuild import WuiAdminBuild;
947 return self._actionGenericFormAddPost(BuildData, BuildLogic, WuiAdminBuild, self.ksActionBuildList);
948
949 def _actionBuildClone(self):
950 """ Action wrapper. """
951 from testmanager.core.build import BuildData;
952 from testmanager.webui.wuiadminbuild import WuiAdminBuild;
953 return self._actionGenericFormClone( BuildData, WuiAdminBuild, 'idBuild');
954
955 def _actionBuildDetails(self):
956 """ Action wrapper. """
957 from testmanager.core.build import BuildData, BuildLogic;
958 from testmanager.webui.wuiadminbuild import WuiAdminBuild;
959 return self._actionGenericFormDetails(BuildData, BuildLogic, WuiAdminBuild, 'idBuild');
960
961 def _actionBuildDoRemove(self):
962 """ Action wrapper. """
963 from testmanager.core.build import BuildData, BuildLogic;
964 return self._actionGenericDoRemove(BuildLogic, BuildData.ksParam_idBuild, self.ksActionBuildList);
965
966 def _actionBuildEdit(self):
967 """ Action wrapper. """
968 from testmanager.core.build import BuildData;
969 from testmanager.webui.wuiadminbuild import WuiAdminBuild;
970 return self._actionGenericFormEdit(BuildData, WuiAdminBuild, BuildData.ksParam_idBuild);
971
972 def _actionBuildEditPost(self):
973 """ Action wrapper. """
974 from testmanager.core.build import BuildData, BuildLogic;
975 from testmanager.webui.wuiadminbuild import WuiAdminBuild;
976 return self._actionGenericFormEditPost(BuildData, BuildLogic, WuiAdminBuild, self.ksActionBuildList)
977
978
979 #
980 # Build Category actions
981 #
982 def _actionBuildCategoryList(self):
983 """ Action wrapper. """
984 from testmanager.core.build import BuildCategoryLogic;
985 from testmanager.webui.wuiadminbuildcategory import WuiAdminBuildCatList;
986 return self._actionGenericListing(BuildCategoryLogic, WuiAdminBuildCatList);
987
988 def _actionBuildCategoryAdd(self):
989 """ Action wrapper. """
990 from testmanager.core.build import BuildCategoryData;
991 from testmanager.webui.wuiadminbuildcategory import WuiAdminBuildCat;
992 return self._actionGenericFormAdd(BuildCategoryData, WuiAdminBuildCat);
993
994 def _actionBuildCategoryAddPost(self):
995 """ Action wrapper. """
996 from testmanager.core.build import BuildCategoryData, BuildCategoryLogic;
997 from testmanager.webui.wuiadminbuildcategory import WuiAdminBuildCat;
998 return self._actionGenericFormAddPost(BuildCategoryData, BuildCategoryLogic, WuiAdminBuildCat,
999 self.ksActionBuildCategoryList);
1000
1001 def _actionBuildCategoryClone(self):
1002 """ Action wrapper. """
1003 from testmanager.core.build import BuildCategoryData;
1004 from testmanager.webui.wuiadminbuildcategory import WuiAdminBuildCat;
1005 return self._actionGenericFormClone(BuildCategoryData, WuiAdminBuildCat, 'idBuildCategory');
1006
1007 def _actionBuildCategoryDetails(self):
1008 """ Action wrapper. """
1009 from testmanager.core.build import BuildCategoryData, BuildCategoryLogic;
1010 from testmanager.webui.wuiadminbuildcategory import WuiAdminBuildCat;
1011 return self._actionGenericFormDetails(BuildCategoryData, BuildCategoryLogic, WuiAdminBuildCat, 'idBuildCategory');
1012
1013 def _actionBuildCategoryDoRemove(self):
1014 """ Action wrapper. """
1015 from testmanager.core.build import BuildCategoryData, BuildCategoryLogic;
1016 return self._actionGenericDoRemove(BuildCategoryLogic, BuildCategoryData.ksParam_idBuildCategory,
1017 self.ksActionBuildCategoryList)
1018
1019
1020 #
1021 # Build Black List actions
1022 #
1023 def _actionBuildBlacklist(self):
1024 """ Action wrapper. """
1025 from testmanager.core.buildblacklist import BuildBlacklistLogic;
1026 from testmanager.webui.wuiadminbuildblacklist import WuiAdminListOfBlacklistItems;
1027 return self._actionGenericListing(BuildBlacklistLogic, WuiAdminListOfBlacklistItems);
1028
1029 def _actionBuildBlacklistAdd(self):
1030 """ Action wrapper. """
1031 from testmanager.core.buildblacklist import BuildBlacklistData;
1032 from testmanager.webui.wuiadminbuildblacklist import WuiAdminBuildBlacklist;
1033 return self._actionGenericFormAdd(BuildBlacklistData, WuiAdminBuildBlacklist);
1034
1035 def _actionBuildBlacklistAddPost(self):
1036 """ Action wrapper. """
1037 from testmanager.core.buildblacklist import BuildBlacklistData, BuildBlacklistLogic;
1038 from testmanager.webui.wuiadminbuildblacklist import WuiAdminBuildBlacklist;
1039 return self._actionGenericFormAddPost(BuildBlacklistData, BuildBlacklistLogic,
1040 WuiAdminBuildBlacklist, self.ksActionBuildBlacklist);
1041
1042 def _actionBuildBlacklistClone(self):
1043 """ Action wrapper. """
1044 from testmanager.core.buildblacklist import BuildBlacklistData;
1045 from testmanager.webui.wuiadminbuildblacklist import WuiAdminBuildBlacklist;
1046 return self._actionGenericFormClone(BuildBlacklistData, WuiAdminBuildBlacklist, 'idBlacklisting');
1047
1048 def _actionBuildBlacklistDetails(self):
1049 """ Action wrapper. """
1050 from testmanager.core.buildblacklist import BuildBlacklistData, BuildBlacklistLogic;
1051 from testmanager.webui.wuiadminbuildblacklist import WuiAdminBuildBlacklist;
1052 return self._actionGenericFormDetails(BuildBlacklistData, BuildBlacklistLogic, WuiAdminBuildBlacklist, 'idBlacklisting');
1053
1054 def _actionBuildBlacklistDoRemove(self):
1055 """ Action wrapper. """
1056 from testmanager.core.buildblacklist import BuildBlacklistData, BuildBlacklistLogic;
1057 return self._actionGenericDoRemove(BuildBlacklistLogic, BuildBlacklistData.ksParam_idBlacklisting,
1058 self.ksActionBuildBlacklist);
1059
1060 def _actionBuildBlacklistEdit(self):
1061 """ Action wrapper. """
1062 from testmanager.core.buildblacklist import BuildBlacklistData;
1063 from testmanager.webui.wuiadminbuildblacklist import WuiAdminBuildBlacklist;
1064 return self._actionGenericFormEdit(BuildBlacklistData, WuiAdminBuildBlacklist, BuildBlacklistData.ksParam_idBlacklisting);
1065
1066 def _actionBuildBlacklistEditPost(self):
1067 """ Action wrapper. """
1068 from testmanager.core.buildblacklist import BuildBlacklistData, BuildBlacklistLogic;
1069 from testmanager.webui.wuiadminbuildblacklist import WuiAdminBuildBlacklist;
1070 return self._actionGenericFormEditPost(BuildBlacklistData, BuildBlacklistLogic, WuiAdminBuildBlacklist,
1071 self.ksActionBuildBlacklist)
1072
1073
1074 #
1075 # Failure Category actions
1076 #
1077 def _actionFailureCategoryList(self):
1078 """ Action wrapper. """
1079 from testmanager.core.failurecategory import FailureCategoryLogic;
1080 from testmanager.webui.wuiadminfailurecategory import WuiFailureCategoryList;
1081 return self._actionGenericListing(FailureCategoryLogic, WuiFailureCategoryList);
1082
1083 def _actionFailureCategoryAdd(self):
1084 """ Action wrapper. """
1085 from testmanager.core.failurecategory import FailureCategoryData;
1086 from testmanager.webui.wuiadminfailurecategory import WuiFailureCategory;
1087 return self._actionGenericFormAdd(FailureCategoryData, WuiFailureCategory);
1088
1089 def _actionFailureCategoryAddPost(self):
1090 """ Action wrapper. """
1091 from testmanager.core.failurecategory import FailureCategoryData, FailureCategoryLogic;
1092 from testmanager.webui.wuiadminfailurecategory import WuiFailureCategory;
1093 return self._actionGenericFormAddPost(FailureCategoryData, FailureCategoryLogic, WuiFailureCategory,
1094 self.ksActionFailureCategoryList)
1095
1096 def _actionFailureCategoryDetails(self):
1097 """ Action wrapper. """
1098 from testmanager.core.failurecategory import FailureCategoryData, FailureCategoryLogic;
1099 from testmanager.webui.wuiadminfailurecategory import WuiFailureCategory;
1100 return self._actionGenericFormDetails(FailureCategoryData, FailureCategoryLogic, WuiFailureCategory);
1101
1102
1103 def _actionFailureCategoryDoRemove(self):
1104 """ Action wrapper. """
1105 from testmanager.core.failurecategory import FailureCategoryData, FailureCategoryLogic;
1106 return self._actionGenericDoRemove(FailureCategoryLogic, FailureCategoryData.ksParam_idFailureCategory,
1107 self.ksActionFailureCategoryList);
1108
1109 def _actionFailureCategoryEdit(self):
1110 """ Action wrapper. """
1111 from testmanager.core.failurecategory import FailureCategoryData;
1112 from testmanager.webui.wuiadminfailurecategory import WuiFailureCategory;
1113 return self._actionGenericFormEdit(FailureCategoryData, WuiFailureCategory,
1114 FailureCategoryData.ksParam_idFailureCategory);
1115
1116 def _actionFailureCategoryEditPost(self):
1117 """ Action wrapper. """
1118 from testmanager.core.failurecategory import FailureCategoryData, FailureCategoryLogic;
1119 from testmanager.webui.wuiadminfailurecategory import WuiFailureCategory;
1120 return self._actionGenericFormEditPost(FailureCategoryData, FailureCategoryLogic, WuiFailureCategory,
1121 self.ksActionFailureCategoryList);
1122
1123 #
1124 # Failure Reason actions
1125 #
1126 def _actionFailureReasonList(self):
1127 """ Action wrapper. """
1128 from testmanager.core.failurereason import FailureReasonLogic;
1129 from testmanager.webui.wuiadminfailurereason import WuiAdminFailureReasonList;
1130 return self._actionGenericListing(FailureReasonLogic, WuiAdminFailureReasonList)
1131
1132 def _actionFailureReasonAdd(self):
1133 """ Action wrapper. """
1134 from testmanager.core.failurereason import FailureReasonData;
1135 from testmanager.webui.wuiadminfailurereason import WuiAdminFailureReason;
1136 return self._actionGenericFormAdd(FailureReasonData, WuiAdminFailureReason);
1137
1138 def _actionFailureReasonAddPost(self):
1139 """ Action wrapper. """
1140 from testmanager.core.failurereason import FailureReasonData, FailureReasonLogic;
1141 from testmanager.webui.wuiadminfailurereason import WuiAdminFailureReason;
1142 return self._actionGenericFormAddPost(FailureReasonData, FailureReasonLogic, WuiAdminFailureReason,
1143 self.ksActionFailureReasonList);
1144
1145 def _actionFailureReasonDetails(self):
1146 """ Action wrapper. """
1147 from testmanager.core.failurereason import FailureReasonData, FailureReasonLogic;
1148 from testmanager.webui.wuiadminfailurereason import WuiAdminFailureReason;
1149 return self._actionGenericFormDetails(FailureReasonData, FailureReasonLogic, WuiAdminFailureReason);
1150
1151 def _actionFailureReasonDoRemove(self):
1152 """ Action wrapper. """
1153 from testmanager.core.failurereason import FailureReasonData, FailureReasonLogic;
1154 return self._actionGenericDoRemove(FailureReasonLogic, FailureReasonData.ksParam_idFailureReason,
1155 self.ksActionFailureReasonList);
1156
1157 def _actionFailureReasonEdit(self):
1158 """ Action wrapper. """
1159 from testmanager.core.failurereason import FailureReasonData;
1160 from testmanager.webui.wuiadminfailurereason import WuiAdminFailureReason;
1161 return self._actionGenericFormEdit(FailureReasonData, WuiAdminFailureReason);
1162
1163
1164 def _actionFailureReasonEditPost(self):
1165 """ Action wrapper. """
1166 from testmanager.core.failurereason import FailureReasonData, FailureReasonLogic;
1167 from testmanager.webui.wuiadminfailurereason import WuiAdminFailureReason;
1168 return self._actionGenericFormEditPost(FailureReasonData, FailureReasonLogic, WuiAdminFailureReason,
1169 self.ksActionFailureReasonList)
1170
1171
1172 #
1173 # Overrides.
1174 #
1175
1176 def _generatePage(self):
1177 """Override parent handler in order to change page titte"""
1178 if self._sPageTitle is not None:
1179 self._sPageTitle = 'Test Manager Admin - ' + self._sPageTitle
1180
1181 return WuiDispatcherBase._generatePage(self)
Note: See TracBrowser for help on using the repository browser.

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