VirtualBox

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

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

testmanager: Testboxes can now be members of more than one scheduling group.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 58.0 KB
Line 
1# -*- coding: utf-8 -*-
2# $Id: wuiadmin.py 61502 2016-06-06 17:53:01Z 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: 61502 $"
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 elif sListAction == 'setgroup':
509 for oTestBox in aoTestBoxes:
510 if oTestBox.idSchedGroup != idAction:
511 oTestBox.idSchedGroup = idAction;
512 oLogic.editEntry(oTestBox, self._oCurUser.uid, fCommit = False);
513 else:
514 for oTestBox in aoTestBoxes:
515 if oTestBox.enmPendingCmd != sListAction:
516 oTestBox.enmPendingCmd = sListAction;
517 oLogic.editEntry(oTestBox, self._oCurUser.uid, fCommit = False);
518 self._oDb.commit();
519
520 # Re-display the list.
521 self._sPageTitle = None;
522 self._sPageBody = None;
523 self._sRedirectTo = self._sActionUrlBase + self.ksActionTestBoxList;
524 return True;
525
526 def _actionTestBoxAdd(self):
527 """ Action wrapper. """
528 from testmanager.core.testbox import TestBoxDataEx;
529 from testmanager.webui.wuiadmintestbox import WuiTestBox;
530 return self._actionGenericFormAdd(TestBoxDataEx, WuiTestBox);
531
532 def _actionTestBoxAddPost(self):
533 """ Action wrapper. """
534 from testmanager.core.testbox import TestBoxDataEx, TestBoxLogic;
535 from testmanager.webui.wuiadmintestbox import WuiTestBox;
536 return self._actionGenericFormAddPost(TestBoxDataEx, TestBoxLogic, WuiTestBox, self.ksActionTestBoxList);
537
538 def _actionTestBoxDetails(self):
539 """ Action wrapper. """
540 from testmanager.core.testbox import TestBoxDataEx, TestBoxLogic;
541 from testmanager.webui.wuiadmintestbox import WuiTestBox;
542 return self._actionGenericFormDetails(TestBoxDataEx, TestBoxLogic, WuiTestBox, 'idTestBox', 'idGenTestBox');
543
544 def _actionTestBoxEdit(self):
545 """ Action wrapper. """
546 from testmanager.core.testbox import TestBoxDataEx;
547 from testmanager.webui.wuiadmintestbox import WuiTestBox;
548 return self._actionGenericFormEdit(TestBoxDataEx, WuiTestBox, TestBoxDataEx.ksParam_idTestBox);
549
550 def _actionTestBoxEditPost(self):
551 """ Action wrapper. """
552 from testmanager.core.testbox import TestBoxDataEx, TestBoxLogic;
553 from testmanager.webui.wuiadmintestbox import WuiTestBox;
554 return self._actionGenericFormEditPost(TestBoxDataEx, TestBoxLogic,WuiTestBox, self.ksActionTestBoxList);
555
556 def _actionTestBoxRemovePost(self):
557 """ Action wrapper. """
558 from testmanager.core.testbox import TestBoxData, TestBoxLogic;
559 return self._actionGenericDoRemove(TestBoxLogic, TestBoxData.ksParam_idTestBox, self.ksActionTestBoxList);
560
561
562 # Scheduling Group actions
563
564 def _actionSchedGroupList(self):
565 """ Action wrapper. """
566 from testmanager.core.schedgroup import SchedGroupLogic;
567 from testmanager.webui.wuiadminschedgroup import WuiAdminSchedGroupList;
568 return self._actionGenericListing(SchedGroupLogic, WuiAdminSchedGroupList);
569
570 def _actionSchedGroupAdd(self):
571 """ Action wrapper. """
572 from testmanager.core.schedgroup import SchedGroupDataEx;
573 from testmanager.webui.wuiadminschedgroup import WuiSchedGroup;
574 return self._actionGenericFormAdd(SchedGroupDataEx, WuiSchedGroup);
575
576 def _actionSchedGroupClone(self):
577 """ Action wrapper. """
578 from testmanager.core.schedgroup import SchedGroupDataEx;
579 from testmanager.webui.wuiadminschedgroup import WuiSchedGroup;
580 return self._actionGenericFormClone( SchedGroupDataEx, WuiSchedGroup, 'idSchedGroup');
581
582 def _actionSchedGroupDetails(self):
583 """ Action wrapper. """
584 from testmanager.core.schedgroup import SchedGroupDataEx, SchedGroupLogic;
585 from testmanager.webui.wuiadminschedgroup import WuiSchedGroup;
586 return self._actionGenericFormDetails(SchedGroupDataEx, SchedGroupLogic, WuiSchedGroup, 'idSchedGroup');
587
588 def _actionSchedGroupEdit(self):
589 """ Action wrapper. """
590 from testmanager.core.schedgroup import SchedGroupDataEx;
591 from testmanager.webui.wuiadminschedgroup import WuiSchedGroup;
592 return self._actionGenericFormEdit(SchedGroupDataEx, WuiSchedGroup, SchedGroupDataEx.ksParam_idSchedGroup);
593
594 def _actionSchedGroupAddPost(self):
595 """ Action wrapper. """
596 from testmanager.core.schedgroup import SchedGroupDataEx, SchedGroupLogic;
597 from testmanager.webui.wuiadminschedgroup import WuiSchedGroup;
598 return self._actionGenericFormAddPost(SchedGroupDataEx, SchedGroupLogic, WuiSchedGroup, self.ksActionSchedGroupList);
599
600 def _actionSchedGroupEditPost(self):
601 """ Action wrapper. """
602 from testmanager.core.schedgroup import SchedGroupDataEx, SchedGroupLogic;
603 from testmanager.webui.wuiadminschedgroup import WuiSchedGroup;
604 return self._actionGenericFormEditPost(SchedGroupDataEx, SchedGroupLogic, WuiSchedGroup, self.ksActionSchedGroupList);
605
606 def _actionSchedGroupDoRemove(self):
607 """ Action wrapper. """
608 from testmanager.core.schedgroup import SchedGroupData, SchedGroupLogic;
609 return self._actionGenericDoRemove(SchedGroupLogic, SchedGroupData.ksParam_idSchedGroup, self.ksActionSchedGroupList)
610
611
612 def _actionRegenQueuesCommon(self):
613 """
614 Common code for ksActionTestBoxesRegenQueues and ksActionTestCfgRegenQueues.
615
616 Too lazy to put this in some separate place right now.
617 """
618 from testmanager.core.schedgroup import SchedGroupLogic;
619 from testmanager.core.schedulerbase import SchedulerBase;
620
621 self._checkForUnknownParameters();
622 ## @todo should also be changed to a POST with a confirmation dialog preceeding it.
623
624 self._sPageTitle = 'Regenerate All Scheduling Queues';
625 self._sPageBody = '';
626 aoGroups = SchedGroupLogic(self._oDb).getAll();
627 for oGroup in aoGroups:
628 self._sPageBody += '<h3>%s (ID %#d)</h3>' % (webutils.escapeElem(oGroup.sName), oGroup.idSchedGroup);
629 try:
630 (aoErrors, asMessages) = SchedulerBase.recreateQueue(self._oDb, self._oCurUser.uid, oGroup.idSchedGroup, 2);
631 except Exception as oXcpt:
632 self._oDb.rollback();
633 self._sPageBody += '<p>SchedulerBase.recreateQueue threw an exception: %s</p>' \
634 % (webutils.escapeElem(str(oXcpt)),);
635 self._sPageBody += cgitb.html(sys.exc_info());
636 else:
637 if len(aoErrors) == 0:
638 self._sPageBody += '<p>Successfully regenerated.</p>';
639 else:
640 for oError in aoErrors:
641 if oError[1] is None:
642 self._sPageBody += '<p>%s.</p>' % (webutils.escapeElem(oError[0]),);
643 ## @todo links.
644 #elif isinstance(oError[1], TestGroupData):
645 # self._sPageBody += '<p>%s.</p>' % (webutils.escapeElem(oError[0]),);
646 #elif isinstance(oError[1], TestGroupCase):
647 # self._sPageBody += '<p>%s.</p>' % (webutils.escapeElem(oError[0]),);
648 else:
649 self._sPageBody += '<p>%s. [Cannot link to %s]</p>' \
650 % (webutils.escapeElem(oError[0]), webutils.escapeElem(str(oError[1])));
651 for sMsg in asMessages:
652 self._sPageBody += '<p>%s<p>\n' % (webutils.escapeElem(sMsg),);
653 return True;
654
655
656
657 #
658 # Test Config Category.
659 #
660
661 # Test Cases
662
663 def _actionTestCaseList(self):
664 """ Action wrapper. """
665 from testmanager.core.testcase import TestCaseLogic;
666 from testmanager.webui.wuiadmintestcase import WuiTestCaseList;
667 return self._actionGenericListing(TestCaseLogic, WuiTestCaseList);
668
669 def _actionTestCaseAdd(self):
670 """ Action wrapper. """
671 from testmanager.core.testcase import TestCaseDataEx;
672 from testmanager.webui.wuiadmintestcase import WuiTestCase;
673 return self._actionGenericFormAdd(TestCaseDataEx, WuiTestCase);
674
675 def _actionTestCaseAddPost(self):
676 """ Action wrapper. """
677 from testmanager.core.testcase import TestCaseDataEx, TestCaseLogic;
678 from testmanager.webui.wuiadmintestcase import WuiTestCase;
679 return self._actionGenericFormAddPost(TestCaseDataEx, TestCaseLogic, WuiTestCase, self.ksActionTestCaseList);
680
681 def _actionTestCaseClone(self):
682 """ Action wrapper. """
683 from testmanager.core.testcase import TestCaseDataEx;
684 from testmanager.webui.wuiadmintestcase import WuiTestCase;
685 return self._actionGenericFormClone( TestCaseDataEx, WuiTestCase, 'idTestCase', 'idGenTestCase');
686
687 def _actionTestCaseDetails(self):
688 """ Action wrapper. """
689 from testmanager.core.testcase import TestCaseDataEx, TestCaseLogic;
690 from testmanager.webui.wuiadmintestcase import WuiTestCase;
691 return self._actionGenericFormDetails(TestCaseDataEx, TestCaseLogic, WuiTestCase, 'idTestCase', 'idGenTestCase');
692
693 def _actionTestCaseEdit(self):
694 """ Action wrapper. """
695 from testmanager.core.testcase import TestCaseDataEx;
696 from testmanager.webui.wuiadmintestcase import WuiTestCase;
697 return self._actionGenericFormEdit(TestCaseDataEx, WuiTestCase, TestCaseDataEx.ksParam_idTestCase);
698
699 def _actionTestCaseEditPost(self):
700 """ Action wrapper. """
701 from testmanager.core.testcase import TestCaseDataEx, TestCaseLogic;
702 from testmanager.webui.wuiadmintestcase import WuiTestCase;
703 return self._actionGenericFormEditPost(TestCaseDataEx, TestCaseLogic, WuiTestCase, self.ksActionTestCaseList);
704
705 def _actionTestCaseDoRemove(self):
706 """ Action wrapper. """
707 from testmanager.core.testcase import TestCaseData, TestCaseLogic;
708 return self._actionGenericDoRemove(TestCaseLogic, TestCaseData.ksParam_idTestCase, self.ksActionTestCaseList);
709
710 # Test Group actions
711 def _actionTestGroupList(self):
712 """ Action wrapper. """
713 from testmanager.core.testgroup import TestGroupLogic;
714 from testmanager.webui.wuiadmintestgroup import WuiTestGroupList;
715 return self._actionGenericListing(TestGroupLogic, WuiTestGroupList);
716 def _actionTestGroupAdd(self):
717 """ Action wrapper. """
718 from testmanager.core.testgroup import TestGroupDataEx;
719 from testmanager.webui.wuiadmintestgroup import WuiTestGroup;
720 return self._actionGenericFormAdd(TestGroupDataEx, WuiTestGroup);
721 def _actionTestGroupAddPost(self):
722 """ Action wrapper. """
723 from testmanager.core.testgroup import TestGroupDataEx, TestGroupLogic;
724 from testmanager.webui.wuiadmintestgroup import WuiTestGroup;
725 return self._actionGenericFormAddPost(TestGroupDataEx, TestGroupLogic, WuiTestGroup, self.ksActionTestGroupList);
726 def _actionTestGroupClone(self):
727 """ Action wrapper. """
728 from testmanager.core.testgroup import TestGroupDataEx;
729 from testmanager.webui.wuiadmintestgroup import WuiTestGroup;
730 return self._actionGenericFormClone(TestGroupDataEx, WuiTestGroup, 'idTestGroup');
731 def _actionTestGroupDetails(self):
732 """ Action wrapper. """
733 from testmanager.core.testgroup import TestGroupDataEx, TestGroupLogic;
734 from testmanager.webui.wuiadmintestgroup import WuiTestGroup;
735 return self._actionGenericFormDetails(TestGroupDataEx, TestGroupLogic, WuiTestGroup, 'idTestGroup');
736 def _actionTestGroupEdit(self):
737 """ Action wrapper. """
738 from testmanager.core.testgroup import TestGroupDataEx;
739 from testmanager.webui.wuiadmintestgroup import WuiTestGroup;
740 return self._actionGenericFormEdit(TestGroupDataEx, WuiTestGroup, TestGroupDataEx.ksParam_idTestGroup);
741 def _actionTestGroupEditPost(self):
742 """ Action wrapper. """
743 from testmanager.core.testgroup import TestGroupDataEx, TestGroupLogic;
744 from testmanager.webui.wuiadmintestgroup import WuiTestGroup;
745 return self._actionGenericFormEditPost(TestGroupDataEx, TestGroupLogic, WuiTestGroup, self.ksActionTestGroupList);
746 def _actionTestGroupDoRemove(self):
747 """ Action wrapper. """
748 from testmanager.core.testgroup import TestGroupDataEx, TestGroupLogic;
749 return self._actionGenericDoRemove(TestGroupLogic, TestGroupDataEx.ksParam_idTestGroup, self.ksActionTestGroupList)
750
751
752 # Global Resources
753
754 def _actionGlobalRsrcShowAll(self):
755 """ Action wrapper. """
756 from testmanager.core.globalresource import GlobalResourceLogic;
757 from testmanager.webui.wuiadminglobalrsrc import WuiGlobalResourceList;
758 return self._actionGenericListing(GlobalResourceLogic, WuiGlobalResourceList);
759
760 def _actionGlobalRsrcShowAdd(self):
761 """ Action wrapper. """
762 return self._actionGlobalRsrcShowAddEdit(WuiAdmin.ksActionGlobalRsrcAdd);
763
764 def _actionGlobalRsrcShowEdit(self):
765 """ Action wrapper. """
766 return self._actionGlobalRsrcShowAddEdit(WuiAdmin.ksActionGlobalRsrcEdit);
767
768 def _actionGlobalRsrcAdd(self):
769 """ Action wrapper. """
770 return self._actionGlobalRsrcAddEdit(WuiAdmin.ksActionGlobalRsrcAdd);
771
772 def _actionGlobalRsrcEdit(self):
773 """ Action wrapper. """
774 return self._actionGlobalRsrcAddEdit(WuiAdmin.ksActionGlobalRsrcEdit);
775
776 def _actionGlobalRsrcDel(self):
777 """ Action wrapper. """
778 from testmanager.core.globalresource import GlobalResourceData, GlobalResourceLogic;
779 return self._actionGenericDoDelOld(GlobalResourceLogic, GlobalResourceData.ksParam_idGlobalRsrc,
780 self.ksActionGlobalRsrcShowAll);
781
782 def _actionGlobalRsrcShowAddEdit(self, sAction): # pylint: disable=C0103
783 """Show Global Resource creation or edit dialog"""
784 from testmanager.core.globalresource import GlobalResourceLogic, GlobalResourceData;
785 from testmanager.webui.wuiadminglobalrsrc import WuiGlobalResource;
786
787 oGlobalResourceLogic = GlobalResourceLogic(self._oDb)
788 if sAction == WuiAdmin.ksActionGlobalRsrcEdit:
789 idGlobalRsrc = self.getIntParam(GlobalResourceData.ksParam_idGlobalRsrc, iDefault = -1)
790 oData = oGlobalResourceLogic.getById(idGlobalRsrc)
791 else:
792 oData = GlobalResourceData()
793 oData.convertToParamNull()
794
795 self._checkForUnknownParameters()
796
797 oContent = WuiGlobalResource(oData)
798 (self._sPageTitle, self._sPageBody) = oContent.showAddModifyPage(sAction)
799
800 return True
801
802 def _actionGlobalRsrcAddEdit(self, sAction):
803 """Add or modify Global Resource record"""
804 from testmanager.core.globalresource import GlobalResourceLogic, GlobalResourceData;
805 from testmanager.webui.wuiadminglobalrsrc import WuiGlobalResource;
806
807 oData = GlobalResourceData()
808 oData.initFromParams(self, fStrict=True)
809
810 self._checkForUnknownParameters()
811
812 if self._oSrvGlue.getMethod() != 'POST':
813 raise WuiException('Expected "POST" request, got "%s"' % (self._oSrvGlue.getMethod(),))
814
815 oGlobalResourceLogic = GlobalResourceLogic(self._oDb)
816 dErrors = oData.validateAndConvert(self._oDb);
817 if len(dErrors) == 0:
818 if sAction == WuiAdmin.ksActionGlobalRsrcAdd:
819 oGlobalResourceLogic.addGlobalResource(self._oCurUser.uid, oData)
820 elif sAction == WuiAdmin.ksActionGlobalRsrcEdit:
821 idGlobalRsrc = self.getStringParam(GlobalResourceData.ksParam_idGlobalRsrc)
822 oGlobalResourceLogic.editGlobalResource(self._oCurUser.uid, idGlobalRsrc, oData)
823 else:
824 raise WuiException('Invalid parameter.')
825 self._sPageTitle = None;
826 self._sPageBody = None;
827 self._sRedirectTo = self._sActionUrlBase + self.ksActionGlobalRsrcShowAll;
828 else:
829 oContent = WuiGlobalResource(oData)
830 (self._sPageTitle, self._sPageBody) = oContent.showAddModifyPage(sAction, dErrors=dErrors)
831
832 return True
833
834
835 #
836 # Build Source actions
837 #
838
839 def _actionBuildSrcList(self):
840 """ Action wrapper. """
841 from testmanager.core.buildsource import BuildSourceLogic;
842 from testmanager.webui.wuiadminbuildsource import WuiAdminBuildSrcList;
843 return self._actionGenericListing(BuildSourceLogic, WuiAdminBuildSrcList);
844
845 def _actionBuildSrcAdd(self):
846 """ Action wrapper. """
847 from testmanager.core.buildsource import BuildSourceData;
848 from testmanager.webui.wuiadminbuildsource import WuiAdminBuildSrc;
849 return self._actionGenericFormAdd(BuildSourceData, WuiAdminBuildSrc);
850
851 def _actionBuildSrcAddPost(self):
852 """ Action wrapper. """
853 from testmanager.core.buildsource import BuildSourceData, BuildSourceLogic;
854 from testmanager.webui.wuiadminbuildsource import WuiAdminBuildSrc;
855 return self._actionGenericFormAddPost(BuildSourceData, BuildSourceLogic, WuiAdminBuildSrc, self.ksActionBuildSrcList);
856
857 def _actionBuildSrcClone(self):
858 """ Action wrapper. """
859 from testmanager.core.buildsource import BuildSourceData;
860 from testmanager.webui.wuiadminbuildsource import WuiAdminBuildSrc;
861 return self._actionGenericFormClone( BuildSourceData, WuiAdminBuildSrc, 'idBuildSrc');
862
863 def _actionBuildSrcDetails(self):
864 """ Action wrapper. """
865 from testmanager.core.buildsource import BuildSourceData, BuildSourceLogic;
866 from testmanager.webui.wuiadminbuildsource import WuiAdminBuildSrc;
867 return self._actionGenericFormDetails(BuildSourceData, BuildSourceLogic, WuiAdminBuildSrc, 'idBuildSrc');
868
869 def _actionBuildSrcDoRemove(self):
870 """ Action wrapper. """
871 from testmanager.core.buildsource import BuildSourceData, BuildSourceLogic;
872 return self._actionGenericDoRemove(BuildSourceLogic, BuildSourceData.ksParam_idBuildSrc, self.ksActionBuildSrcList);
873
874 def _actionBuildSrcEdit(self):
875 """ Action wrapper. """
876 from testmanager.core.buildsource import BuildSourceData;
877 from testmanager.webui.wuiadminbuildsource import WuiAdminBuildSrc;
878 return self._actionGenericFormEdit(BuildSourceData, WuiAdminBuildSrc, BuildSourceData.ksParam_idBuildSrc);
879
880 def _actionBuildSrcEditPost(self):
881 """ Action wrapper. """
882 from testmanager.core.buildsource import BuildSourceData, BuildSourceLogic;
883 from testmanager.webui.wuiadminbuildsource import WuiAdminBuildSrc;
884 return self._actionGenericFormEditPost(BuildSourceData, BuildSourceLogic, WuiAdminBuildSrc, self.ksActionBuildSrcList);
885
886
887 #
888 # Build actions
889 #
890 def _actionBuildList(self):
891 """ Action wrapper. """
892 from testmanager.core.build import BuildLogic;
893 from testmanager.webui.wuiadminbuild import WuiAdminBuildList;
894 return self._actionGenericListing(BuildLogic, WuiAdminBuildList);
895
896 def _actionBuildAdd(self):
897 """ Action wrapper. """
898 from testmanager.core.build import BuildData;
899 from testmanager.webui.wuiadminbuild import WuiAdminBuild;
900 return self._actionGenericFormAdd(BuildData, WuiAdminBuild);
901
902 def _actionBuildAddPost(self):
903 """ Action wrapper. """
904 from testmanager.core.build import BuildData, BuildLogic;
905 from testmanager.webui.wuiadminbuild import WuiAdminBuild;
906 return self._actionGenericFormAddPost(BuildData, BuildLogic, WuiAdminBuild, self.ksActionBuildList);
907
908 def _actionBuildClone(self):
909 """ Action wrapper. """
910 from testmanager.core.build import BuildData;
911 from testmanager.webui.wuiadminbuild import WuiAdminBuild;
912 return self._actionGenericFormClone( BuildData, WuiAdminBuild, 'idBuild');
913
914 def _actionBuildDetails(self):
915 """ Action wrapper. """
916 from testmanager.core.build import BuildData, BuildLogic;
917 from testmanager.webui.wuiadminbuild import WuiAdminBuild;
918 return self._actionGenericFormDetails(BuildData, BuildLogic, WuiAdminBuild, 'idBuild');
919
920 def _actionBuildDoRemove(self):
921 """ Action wrapper. """
922 from testmanager.core.build import BuildData, BuildLogic;
923 return self._actionGenericDoRemove(BuildLogic, BuildData.ksParam_idBuild, self.ksActionBuildList);
924
925 def _actionBuildEdit(self):
926 """ Action wrapper. """
927 from testmanager.core.build import BuildData;
928 from testmanager.webui.wuiadminbuild import WuiAdminBuild;
929 return self._actionGenericFormEdit(BuildData, WuiAdminBuild, BuildData.ksParam_idBuild);
930
931 def _actionBuildEditPost(self):
932 """ Action wrapper. """
933 from testmanager.core.build import BuildData, BuildLogic;
934 from testmanager.webui.wuiadminbuild import WuiAdminBuild;
935 return self._actionGenericFormEditPost(BuildData, BuildLogic, WuiAdminBuild, self.ksActionBuildList)
936
937
938 #
939 # Build Category actions
940 #
941 def _actionBuildCategoryList(self):
942 """ Action wrapper. """
943 from testmanager.core.build import BuildCategoryLogic;
944 from testmanager.webui.wuiadminbuildcategory import WuiAdminBuildCatList;
945 return self._actionGenericListing(BuildCategoryLogic, WuiAdminBuildCatList);
946
947 def _actionBuildCategoryAdd(self):
948 """ Action wrapper. """
949 from testmanager.core.build import BuildCategoryData;
950 from testmanager.webui.wuiadminbuildcategory import WuiAdminBuildCat;
951 return self._actionGenericFormAdd(BuildCategoryData, WuiAdminBuildCat);
952
953 def _actionBuildCategoryAddPost(self):
954 """ Action wrapper. """
955 from testmanager.core.build import BuildCategoryData, BuildCategoryLogic;
956 from testmanager.webui.wuiadminbuildcategory import WuiAdminBuildCat;
957 return self._actionGenericFormAddPost(BuildCategoryData, BuildCategoryLogic, WuiAdminBuildCat,
958 self.ksActionBuildCategoryList);
959
960 def _actionBuildCategoryClone(self):
961 """ Action wrapper. """
962 from testmanager.core.build import BuildCategoryData;
963 from testmanager.webui.wuiadminbuildcategory import WuiAdminBuildCat;
964 return self._actionGenericFormClone(BuildCategoryData, WuiAdminBuildCat, 'idBuildCategory');
965
966 def _actionBuildCategoryDetails(self):
967 """ Action wrapper. """
968 from testmanager.core.build import BuildCategoryData, BuildCategoryLogic;
969 from testmanager.webui.wuiadminbuildcategory import WuiAdminBuildCat;
970 return self._actionGenericFormDetails(BuildCategoryData, BuildCategoryLogic, WuiAdminBuildCat, 'idBuildCategory');
971
972 def _actionBuildCategoryDoRemove(self):
973 """ Action wrapper. """
974 from testmanager.core.build import BuildCategoryData, BuildCategoryLogic;
975 return self._actionGenericDoRemove(BuildCategoryLogic, BuildCategoryData.ksParam_idBuildCategory,
976 self.ksActionBuildCategoryList)
977
978
979 #
980 # Build Black List actions
981 #
982 def _actionBuildBlacklist(self):
983 """ Action wrapper. """
984 from testmanager.core.buildblacklist import BuildBlacklistLogic;
985 from testmanager.webui.wuiadminbuildblacklist import WuiAdminListOfBlacklistItems;
986 return self._actionGenericListing(BuildBlacklistLogic, WuiAdminListOfBlacklistItems);
987
988 def _actionBuildBlacklistAdd(self):
989 """ Action wrapper. """
990 from testmanager.core.buildblacklist import BuildBlacklistData;
991 from testmanager.webui.wuiadminbuildblacklist import WuiAdminBuildBlacklist;
992 return self._actionGenericFormAdd(BuildBlacklistData, WuiAdminBuildBlacklist);
993
994 def _actionBuildBlacklistAddPost(self):
995 """ Action wrapper. """
996 from testmanager.core.buildblacklist import BuildBlacklistData, BuildBlacklistLogic;
997 from testmanager.webui.wuiadminbuildblacklist import WuiAdminBuildBlacklist;
998 return self._actionGenericFormAddPost(BuildBlacklistData, BuildBlacklistLogic,
999 WuiAdminBuildBlacklist, self.ksActionBuildBlacklist);
1000
1001 def _actionBuildBlacklistClone(self):
1002 """ Action wrapper. """
1003 from testmanager.core.buildblacklist import BuildBlacklistData;
1004 from testmanager.webui.wuiadminbuildblacklist import WuiAdminBuildBlacklist;
1005 return self._actionGenericFormClone(BuildBlacklistData, WuiAdminBuildBlacklist, 'idBlacklisting');
1006
1007 def _actionBuildBlacklistDetails(self):
1008 """ Action wrapper. """
1009 from testmanager.core.buildblacklist import BuildBlacklistData, BuildBlacklistLogic;
1010 from testmanager.webui.wuiadminbuildblacklist import WuiAdminBuildBlacklist;
1011 return self._actionGenericFormDetails(BuildBlacklistData, BuildBlacklistLogic, WuiAdminBuildBlacklist, 'idBlacklisting');
1012
1013 def _actionBuildBlacklistDoRemove(self):
1014 """ Action wrapper. """
1015 from testmanager.core.buildblacklist import BuildBlacklistData, BuildBlacklistLogic;
1016 return self._actionGenericDoRemove(BuildBlacklistLogic, BuildBlacklistData.ksParam_idBlacklisting,
1017 self.ksActionBuildBlacklist);
1018
1019 def _actionBuildBlacklistEdit(self):
1020 """ Action wrapper. """
1021 from testmanager.core.buildblacklist import BuildBlacklistData;
1022 from testmanager.webui.wuiadminbuildblacklist import WuiAdminBuildBlacklist;
1023 return self._actionGenericFormEdit(BuildBlacklistData, WuiAdminBuildBlacklist, BuildBlacklistData.ksParam_idBlacklisting);
1024
1025 def _actionBuildBlacklistEditPost(self):
1026 """ Action wrapper. """
1027 from testmanager.core.buildblacklist import BuildBlacklistData, BuildBlacklistLogic;
1028 from testmanager.webui.wuiadminbuildblacklist import WuiAdminBuildBlacklist;
1029 return self._actionGenericFormEditPost(BuildBlacklistData, BuildBlacklistLogic, WuiAdminBuildBlacklist,
1030 self.ksActionBuildBlacklist)
1031
1032
1033 #
1034 # Failure Category actions
1035 #
1036 def _actionFailureCategoryList(self):
1037 """ Action wrapper. """
1038 from testmanager.core.failurecategory import FailureCategoryLogic;
1039 from testmanager.webui.wuiadminfailurecategory import WuiFailureCategoryList;
1040 return self._actionGenericListing(FailureCategoryLogic, WuiFailureCategoryList);
1041
1042 def _actionFailureCategoryAdd(self):
1043 """ Action wrapper. """
1044 from testmanager.core.failurecategory import FailureCategoryData;
1045 from testmanager.webui.wuiadminfailurecategory import WuiFailureCategory;
1046 return self._actionGenericFormAdd(FailureCategoryData, WuiFailureCategory);
1047
1048 def _actionFailureCategoryAddPost(self):
1049 """ Action wrapper. """
1050 from testmanager.core.failurecategory import FailureCategoryData, FailureCategoryLogic;
1051 from testmanager.webui.wuiadminfailurecategory import WuiFailureCategory;
1052 return self._actionGenericFormAddPost(FailureCategoryData, FailureCategoryLogic, WuiFailureCategory,
1053 self.ksActionFailureCategoryList)
1054
1055 def _actionFailureCategoryDetails(self):
1056 """ Action wrapper. """
1057 from testmanager.core.failurecategory import FailureCategoryData, FailureCategoryLogic;
1058 from testmanager.webui.wuiadminfailurecategory import WuiFailureCategory;
1059 return self._actionGenericFormDetails(FailureCategoryData, FailureCategoryLogic, WuiFailureCategory);
1060
1061
1062 def _actionFailureCategoryDoRemove(self):
1063 """ Action wrapper. """
1064 from testmanager.core.failurecategory import FailureCategoryData, FailureCategoryLogic;
1065 return self._actionGenericDoRemove(FailureCategoryLogic, FailureCategoryData.ksParam_idFailureCategory,
1066 self.ksActionFailureCategoryList);
1067
1068 def _actionFailureCategoryEdit(self):
1069 """ Action wrapper. """
1070 from testmanager.core.failurecategory import FailureCategoryData;
1071 from testmanager.webui.wuiadminfailurecategory import WuiFailureCategory;
1072 return self._actionGenericFormEdit(FailureCategoryData, WuiFailureCategory,
1073 FailureCategoryData.ksParam_idFailureCategory);
1074
1075 def _actionFailureCategoryEditPost(self):
1076 """ Action wrapper. """
1077 from testmanager.core.failurecategory import FailureCategoryData, FailureCategoryLogic;
1078 from testmanager.webui.wuiadminfailurecategory import WuiFailureCategory;
1079 return self._actionGenericFormEditPost(FailureCategoryData, FailureCategoryLogic, WuiFailureCategory,
1080 self.ksActionFailureCategoryList);
1081
1082 #
1083 # Failure Reason actions
1084 #
1085 def _actionFailureReasonList(self):
1086 """ Action wrapper. """
1087 from testmanager.core.failurereason import FailureReasonLogic;
1088 from testmanager.webui.wuiadminfailurereason import WuiAdminFailureReasonList;
1089 return self._actionGenericListing(FailureReasonLogic, WuiAdminFailureReasonList)
1090
1091 def _actionFailureReasonAdd(self):
1092 """ Action wrapper. """
1093 from testmanager.core.failurereason import FailureReasonData;
1094 from testmanager.webui.wuiadminfailurereason import WuiAdminFailureReason;
1095 return self._actionGenericFormAdd(FailureReasonData, WuiAdminFailureReason);
1096
1097 def _actionFailureReasonAddPost(self):
1098 """ Action wrapper. """
1099 from testmanager.core.failurereason import FailureReasonData, FailureReasonLogic;
1100 from testmanager.webui.wuiadminfailurereason import WuiAdminFailureReason;
1101 return self._actionGenericFormAddPost(FailureReasonData, FailureReasonLogic, WuiAdminFailureReason,
1102 self.ksActionFailureReasonList);
1103
1104 def _actionFailureReasonDetails(self):
1105 """ Action wrapper. """
1106 from testmanager.core.failurereason import FailureReasonData, FailureReasonLogic;
1107 from testmanager.webui.wuiadminfailurereason import WuiAdminFailureReason;
1108 return self._actionGenericFormDetails(FailureReasonData, FailureReasonLogic, WuiAdminFailureReason);
1109
1110 def _actionFailureReasonDoRemove(self):
1111 """ Action wrapper. """
1112 from testmanager.core.failurereason import FailureReasonData, FailureReasonLogic;
1113 return self._actionGenericDoRemove(FailureReasonLogic, FailureReasonData.ksParam_idFailureReason,
1114 self.ksActionFailureReasonList);
1115
1116 def _actionFailureReasonEdit(self):
1117 """ Action wrapper. """
1118 from testmanager.core.failurereason import FailureReasonData;
1119 from testmanager.webui.wuiadminfailurereason import WuiAdminFailureReason;
1120 return self._actionGenericFormEdit(FailureReasonData, WuiAdminFailureReason);
1121
1122
1123 def _actionFailureReasonEditPost(self):
1124 """ Action wrapper. """
1125 from testmanager.core.failurereason import FailureReasonData, FailureReasonLogic;
1126 from testmanager.webui.wuiadminfailurereason import WuiAdminFailureReason;
1127 return self._actionGenericFormEditPost(FailureReasonData, FailureReasonLogic, WuiAdminFailureReason,
1128 self.ksActionFailureReasonList)
1129
1130
1131 #
1132 # Overrides.
1133 #
1134
1135 def _generatePage(self):
1136 """Override parent handler in order to change page titte"""
1137 if self._sPageTitle is not None:
1138 self._sPageTitle = 'Test Manager Admin - ' + self._sPageTitle
1139
1140 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