VirtualBox

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

Last change on this file since 61592 was 61592, checked in by vboxsync, 9 years ago

testmanager: attempt to fix broken testbox list actions. unfortuantely, the scheduling group migration had to go since it's now ambigious wrt multiple scheduling group participation of testboxes.

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