VirtualBox

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

Last change on this file since 78352 was 76553, checked in by vboxsync, 6 years ago

scm --update-copyright-year

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

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