wuiadmin.py revision cf22150eaeeb72431bf1cf65c309a431454fb22b
d7097a142464c500766b2cb3d564986e0a072799vboxsync# -*- coding: utf-8 -*-
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsyncTest Manager Core - WUI - Admin Main page.
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsyncCopyright (C) 2012-2014 Oracle Corporation
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsyncThis file is part of VirtualBox Open Source Edition (OSE), as
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsyncavailable from http://www.virtualbox.org. This file is free software;
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsyncyou can redistribute it and/or modify it under the terms of the GNU
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsyncGeneral Public License (GPL) as published by the Free Software
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsyncFoundation, in version 2 as it comes in the "COPYING" file of the
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsyncVirtualBox OSE distribution. VirtualBox OSE is distributed in the
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsynchope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsyncThe contents of this file may alternatively be used under the terms
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsyncof the Common Development and Distribution License Version 1.0
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync(CDDL) only, as it comes in the "COPYING.CDDL" file of the
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsyncVirtualBox OSE distribution, in which case the provisions of the
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsyncCDDL are applicable instead of those of the GPL.
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsyncYou may elect to license modified versions of this file under the
43747b1f0bc8302a238fb35e55857a5e9aa1933dvboxsyncterms and conditions of either the GPL or the CDDL or both.
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync# Standard python imports.
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync# Validation Kit imports.
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsyncfrom testmanager.core.buildsource import BuildSourceLogic, BuildSourceData
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsyncfrom testmanager.core.build import BuildCategoryLogic, BuildCategoryData, BuildLogic, BuildData;
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsyncfrom testmanager.core.globalresource import GlobalResourceLogic, GlobalResourceData
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsyncfrom testmanager.core.schedulerbase import SchedulerBase
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsyncfrom testmanager.core.schedgroup import SchedGroupLogic, SchedGroupData, SchedGroupDataEx
dcc035155cdf232a3d79024f475c2d4448981e85vboxsyncfrom testmanager.core.systemlog import SystemLogLogic
dcc035155cdf232a3d79024f475c2d4448981e85vboxsyncfrom testmanager.core.testbox import TestBoxData, TestBoxLogic
dcc035155cdf232a3d79024f475c2d4448981e85vboxsyncfrom testmanager.core.testcase import TestCaseLogic, TestCaseData, TestCaseDataEx
dcc035155cdf232a3d79024f475c2d4448981e85vboxsyncfrom testmanager.core.useraccount import UserAccountLogic, UserAccountData
dcc035155cdf232a3d79024f475c2d4448981e85vboxsyncfrom testmanager.core.testgroup import TestGroupLogic, TestGroupDataEx;
dcc035155cdf232a3d79024f475c2d4448981e85vboxsyncfrom testmanager.core.failurecategory import FailureCategoryLogic, FailureCategoryData
dcc035155cdf232a3d79024f475c2d4448981e85vboxsyncfrom testmanager.core.failurereason import FailureReasonLogic, FailureReasonData
dcc035155cdf232a3d79024f475c2d4448981e85vboxsyncfrom testmanager.core.buildblacklist import BuildBlacklistLogic, BuildBlacklistData
dcc035155cdf232a3d79024f475c2d4448981e85vboxsyncfrom testmanager.webui.wuibase import WuiDispatcherBase, WuiException
dcc035155cdf232a3d79024f475c2d4448981e85vboxsyncfrom testmanager.webui.wuiadminbuild import WuiAdminBuild, WuiAdminBuildList
dcc035155cdf232a3d79024f475c2d4448981e85vboxsyncfrom testmanager.webui.wuiadminsystemlog import WuiAdminSystemLogList
dcc035155cdf232a3d79024f475c2d4448981e85vboxsyncfrom testmanager.webui.wuiadminbuildsource import WuiAdminBuildSrc, WuiAdminBuildSrcList;
dcc035155cdf232a3d79024f475c2d4448981e85vboxsyncfrom testmanager.webui.wuiadminbuildcategory import WuiAdminBuildCat, WuiAdminBuildCatList;
dcc035155cdf232a3d79024f475c2d4448981e85vboxsyncfrom testmanager.webui.wuiadminglobalrsrc import WuiGlobalResource, WuiGlobalResourceList
dcc035155cdf232a3d79024f475c2d4448981e85vboxsyncfrom testmanager.webui.wuiadmintestbox import WuiTestBoxList, WuiTestBox
dcc035155cdf232a3d79024f475c2d4448981e85vboxsyncfrom testmanager.webui.wuiadmintestcase import WuiTestCase, WuiTestCaseList
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsyncfrom testmanager.webui.wuiadminuseraccount import WuiUserAccountList, WuiUserAccount
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsyncfrom testmanager.webui.wuiadmintestgroup import WuiTestGroup, WuiTestGroupList;
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsyncfrom testmanager.webui.wuiadminschedgroup import WuiSchedGroup, WuiAdminSchedGroupList;
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsyncfrom testmanager.webui.wuiadminbuildblacklist import WuiAdminBuildBlacklist, WuiAdminListOfBlacklistItems
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsyncfrom testmanager.webui.wuifailurecategory import WuiFailureCategory, WuiFailureCategoryList
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsyncfrom testmanager.webui.wuiadminfailurereason import WuiAdminFailureReason, WuiAdminFailureReasonList
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync WUI Admin main page.
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync ## The name of the script.
dcc035155cdf232a3d79024f475c2d4448981e85vboxsync ## @name Actions
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync ksActionTestBoxesRegenQueues = 'TestBoxesRegenQueues';
dcc035155cdf232a3d79024f475c2d4448981e85vboxsync ksActionBuildBlacklistAddPost = 'BuildBlacklistAddPost';
dcc035155cdf232a3d79024f475c2d4448981e85vboxsync ksActionBuildBlacklistClone = 'BuildBlacklistClone';
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync ksActionBuildBlacklistDetails = 'BuildBlacklistDetails';
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync ksActionBuildBlacklistDoRemove = 'BuildBlacklistDoRemove';
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync ksActionBuildBlacklistEditPost = 'BuildBlacklistEditPost';
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync ksActionFailureCategoryList = 'FailureCategoryList'
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync ksActionFailureCategoryShowAdd = 'FailureCategoryShowAdd'
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync ksActionFailureCategoryShowEdit = 'FailureCategoryShowEdit'
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync ksActionFailureCategoryEdit = 'FailureCategoryEdit'
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync ksActionFailureReasonShowAdd = 'FailureReasonShowAdd'
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync ksActionFailureReasonShowEdit = 'FailureReasonShowEdit'
dcc035155cdf232a3d79024f475c2d4448981e85vboxsync ksActionBuildCategoryAddPost = 'BuildCategoryAddPost'
dcc035155cdf232a3d79024f475c2d4448981e85vboxsync ksActionBuildCategoryDetails = 'BuildCategoryDetails';
dcc035155cdf232a3d79024f475c2d4448981e85vboxsync ksActionBuildCategoryDoRemove = 'BuildCategoryDoRemove';
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync WuiDispatcherBase.__init__(self, oSrvGlue, self.ksScriptName);
dcc035155cdf232a3d79024f475c2d4448981e85vboxsync # Use short form to avoid hitting the right margin (130) when using lambda.
dcc035155cdf232a3d79024f475c2d4448981e85vboxsync # System Log actions.
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync d[self.ksActionSystemLogList] = lambda: self._actionGenericListing(SystemLogLogic, WuiAdminSystemLogList)
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync # User Account actions.
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync d[self.ksActionUserList] = lambda: self._actionGenericListing(UserAccountLogic, WuiUserAccountList)
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync d[self.ksActionUserAdd] = lambda: self._actionGenericFormAdd(UserAccountData, WuiUserAccount)
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync d[self.ksActionUserEdit] = lambda: self._actionGenericFormEdit(UserAccountData, WuiUserAccount,
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync d[self.ksActionUserAddPost] = lambda: self._actionGenericFormAddPost(UserAccountData, UserAccountLogic,
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync d[self.ksActionUserEditPost] = lambda: self._actionGenericFormEditPost(UserAccountData, UserAccountLogic,
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync d[self.ksActionUserDelPost] = lambda: self._actionGenericDoRemove(UserAccountLogic,
98502a585f6eda30527b54f7df18dd3de3d3d7c6vboxsync # TestBox actions.
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync d[self.ksActionTestBoxList] = lambda: self._actionGenericListing(TestBoxLogic, WuiTestBoxList);
98502a585f6eda30527b54f7df18dd3de3d3d7c6vboxsync d[self.ksActionTestBoxListPost] = self._actionTestBoxListPost;
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync d[self.ksActionTestBoxAdd] = lambda: self._actionGenericFormAdd(TestBoxData, WuiTestBox);
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync d[self.ksActionTestBoxAddPost] = lambda: self._actionGenericFormAddPost(TestBoxData, TestBoxLogic,
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync d[self.ksActionTestBoxDetails] = lambda: self._actionGenericFormDetails(TestBoxData, TestBoxLogic, WuiTestBox,
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync d[self.ksActionTestBoxEdit] = lambda: self._actionGenericFormEdit(TestBoxData, WuiTestBox,
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync d[self.ksActionTestBoxEditPost] = lambda: self._actionGenericFormEditPost(TestBoxData, TestBoxLogic,
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync d[self.ksActionTestBoxRemovePost] = lambda: self._actionGenericDoRemove(TestBoxLogic,
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync d[self.ksActionTestBoxesRegenQueues] = self._actionRegenQueuesCommon;
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync # Test Case actions.
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync d[self.ksActionTestCaseList] = lambda: self._actionGenericListing(TestCaseLogic, WuiTestCaseList);
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync d[self.ksActionTestCaseAdd] = lambda: self._actionGenericFormAdd(TestCaseDataEx, WuiTestCase);
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync d[self.ksActionTestCaseAddPost] = lambda: self._actionGenericFormAddPost(TestCaseDataEx, TestCaseLogic,
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync d[self.ksActionTestCaseClone] = lambda: self._actionGenericFormClone( TestCaseDataEx, WuiTestCase,
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync d[self.ksActionTestCaseDetails] = lambda: self._actionGenericFormDetails(TestCaseDataEx, TestCaseLogic,
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync 'idGenTestCase');
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync d[self.ksActionTestCaseEdit] = lambda: self._actionGenericFormEdit(TestCaseDataEx, WuiTestCase,
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync d[self.ksActionTestCaseEditPost] = lambda: self._actionGenericFormEditPost(TestCaseDataEx, TestCaseLogic,
9d4c9e0a3e2dcc3bd19303d7b4e2d96d12c11814vboxsync d[self.ksActionTestCaseDoRemove] = lambda: self._actionGenericDoRemove(TestCaseLogic,
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync # Global Resource actions
13f7948dbc7ae32c3e30086604ad6ade2ead3671vboxsync d[self.ksActionGlobalRsrcShowAll] = lambda: self._actionGenericListing(GlobalResourceLogic, WuiGlobalResourceList)
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync d[self.ksActionGlobalRsrcShowAdd] = lambda: self._actionGlobalRsrcShowAddEdit(WuiAdmin.ksActionGlobalRsrcAdd)
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync d[self.ksActionGlobalRsrcShowEdit] = lambda: self._actionGlobalRsrcShowAddEdit(WuiAdmin.ksActionGlobalRsrcEdit)
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync d[self.ksActionGlobalRsrcAdd] = lambda: self._actionGlobalRsrcAddEdit(WuiAdmin.ksActionGlobalRsrcAdd)
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync d[self.ksActionGlobalRsrcEdit] = lambda: self._actionGlobalRsrcAddEdit(WuiAdmin.ksActionGlobalRsrcEdit)
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync d[self.ksActionGlobalRsrcDel] = lambda: self._actionGenericDoDelOld(GlobalResourceLogic,
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync # Build Source actions
0dcab00efb68dbd44bd653d4cb18aaaef7448898vboxsync d[self.ksActionBuildSrcList] = lambda: self._actionGenericListing(BuildSourceLogic, WuiAdminBuildSrcList)
0dcab00efb68dbd44bd653d4cb18aaaef7448898vboxsync d[self.ksActionBuildSrcAdd] = lambda: self._actionGenericFormAdd(BuildSourceData, WuiAdminBuildSrc);
0dcab00efb68dbd44bd653d4cb18aaaef7448898vboxsync d[self.ksActionBuildSrcAddPost] = lambda: self._actionGenericFormAddPost(BuildSourceData, BuildSourceLogic,
dcc035155cdf232a3d79024f475c2d4448981e85vboxsync d[self.ksActionBuildSrcClone] = lambda: self._actionGenericFormClone( BuildSourceData, WuiAdminBuildSrc,
dcc035155cdf232a3d79024f475c2d4448981e85vboxsync 'idBuildSrc');
dcc035155cdf232a3d79024f475c2d4448981e85vboxsync d[self.ksActionBuildSrcDetails] = lambda: self._actionGenericFormDetails(BuildSourceData, BuildSourceLogic,
dcc035155cdf232a3d79024f475c2d4448981e85vboxsync d[self.ksActionBuildSrcDoRemove] = lambda: self._actionGenericDoRemove(BuildSourceLogic,
0dcab00efb68dbd44bd653d4cb18aaaef7448898vboxsync d[self.ksActionBuildSrcEdit] = lambda: self._actionGenericFormEdit(BuildSourceData, WuiAdminBuildSrc,
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync d[self.ksActionBuildSrcEditPost] = lambda: self._actionGenericFormEditPost(BuildSourceData, BuildSourceLogic,
0dcab00efb68dbd44bd653d4cb18aaaef7448898vboxsync # Build actions
dcc035155cdf232a3d79024f475c2d4448981e85vboxsync d[self.ksActionBuildList] = lambda: self._actionGenericListing(BuildLogic, WuiAdminBuildList)
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync d[self.ksActionBuildAdd] = lambda: self._actionGenericFormAdd(BuildData, WuiAdminBuild)
dcc035155cdf232a3d79024f475c2d4448981e85vboxsync d[self.ksActionBuildAddPost] = lambda: self._actionGenericFormAddPost(BuildData, BuildLogic, WuiAdminBuild,
dcc035155cdf232a3d79024f475c2d4448981e85vboxsync d[self.ksActionBuildClone] = lambda: self._actionGenericFormClone( BuildData, WuiAdminBuild, 'idBuild');
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync d[self.ksActionBuildDetails] = lambda: self._actionGenericFormDetails(BuildData, BuildLogic,
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync d[self.ksActionBuildDoRemove] = lambda: self._actionGenericDoRemove(BuildLogic, BuildData.ksParam_idBuild,
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync d[self.ksActionBuildEdit] = lambda: self._actionGenericFormEdit(BuildData, WuiAdminBuild,
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync d[self.ksActionBuildEditPost] = lambda: self._actionGenericFormEditPost(BuildData, BuildLogic, WuiAdminBuild,
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync # Build Black List actions
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync d[self.ksActionBuildBlacklist] = lambda: self._actionGenericListing(BuildBlacklistLogic,
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync d[self.ksActionBuildBlacklistAdd] = lambda: self._actionGenericFormAdd(BuildBlacklistData, WuiAdminBuildBlacklist);
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync d[self.ksActionBuildBlacklistAddPost] = lambda: self._actionGenericFormAddPost(BuildBlacklistData, BuildBlacklistLogic,
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync d[self.ksActionBuildBlacklistClone] = lambda: self._actionGenericFormClone(BuildBlacklistData,
e9a584ee0777ab2612e206eeec264ccb1a8ce333vboxsync 'idBlacklisting');
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync d[self.ksActionBuildBlacklistDetails] = lambda: self._actionGenericFormDetails(BuildBlacklistData,
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync 'idBlacklisting');
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync d[self.ksActionBuildBlacklistDoRemove] = lambda: self._actionGenericDoRemove(BuildBlacklistLogic,
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync d[self.ksActionBuildBlacklistEdit] = lambda: self._actionGenericFormEdit(BuildBlacklistData,
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync d[self.ksActionBuildBlacklistEditPost] = lambda: self._actionGenericFormEditPost(BuildBlacklistData,
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync # Failure Category actions
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync d[self.ksActionFailureCategoryList] = lambda: self._actionGenericListing(
e9a584ee0777ab2612e206eeec264ccb1a8ce333vboxsync d[self.ksActionFailureCategoryShowAdd] = lambda: self._actionGenericFormAdd(
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync d[self.ksActionFailureCategoryShowEdit] = lambda: self._actionGenericFormEditL(
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync d[self.ksActionFailureCategoryAdd] = lambda: self._actionGenericFormAddPost(
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync d[self.ksActionFailureCategoryEdit] = lambda: self._actionGenericFormEditPost(
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync d[self.ksActionFailureCategoryDel] = lambda: self._actionGenericDoDelOld(
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync # Failure Reason actions
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync d[self.ksActionFailureReasonList] = lambda: self._actionGenericListing(
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync d[self.ksActionFailureReasonShowAdd] = lambda: self._actionGenericFormAdd(
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync d[self.ksActionFailureReasonShowEdit] = lambda: self._actionGenericFormEditL(
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync d[self.ksActionFailureReasonAdd] = lambda: self._actionGenericFormAddPost(
e9a584ee0777ab2612e206eeec264ccb1a8ce333vboxsync d[self.ksActionFailureReasonEdit] = lambda: self._actionGenericFormEditPost(
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync d[self.ksActionFailureReasonDel] = lambda: self._actionGenericDoDelOld(FailureReasonLogic,
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync # Build Category actions
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync d[self.ksActionBuildCategoryList] = lambda: self._actionGenericListing(BuildCategoryLogic, WuiAdminBuildCatList);
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync d[self.ksActionBuildCategoryAdd] = lambda: self._actionGenericFormAdd(BuildCategoryData, WuiAdminBuildCat);
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync d[self.ksActionBuildCategoryAddPost] = lambda: self._actionGenericFormAddPost(BuildCategoryData, BuildCategoryLogic,
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync d[self.ksActionBuildCategoryClone] = lambda: self._actionGenericFormClone( BuildCategoryData, WuiAdminBuildCat,
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync 'idBuildCategory');
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync d[self.ksActionBuildCategoryDetails] = lambda: self._actionGenericFormDetails(BuildCategoryData, BuildCategoryLogic,
dcc035155cdf232a3d79024f475c2d4448981e85vboxsync d[self.ksActionBuildCategoryDoRemove] = lambda: self._actionGenericDoRemove(BuildCategoryLogic,
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync # Test Group actions
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync d[self.ksActionTestGroupList] = lambda: self._actionGenericListing(TestGroupLogic, WuiTestGroupList);
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync d[self.ksActionTestGroupAdd] = lambda: self._actionGenericFormAdd(TestGroupDataEx, WuiTestGroup);
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync d[self.ksActionTestGroupAddPost] = lambda: self._actionGenericFormAddPost(TestGroupDataEx, TestGroupLogic,
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync d[self.ksActionTestGroupClone] = lambda: self._actionGenericFormClone( TestGroupDataEx, WuiTestGroup,
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync 'idTestGroup');
dcc035155cdf232a3d79024f475c2d4448981e85vboxsync d[self.ksActionTestGroupDetails] = lambda: self._actionGenericFormDetails(TestGroupDataEx, TestGroupLogic,
e9a584ee0777ab2612e206eeec264ccb1a8ce333vboxsync d[self.ksActionTestGroupEdit] = lambda: self._actionGenericFormEdit(TestGroupDataEx, WuiTestGroup,
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync d[self.ksActionTestGroupEditPost] = lambda: self._actionGenericFormEditPost(TestGroupDataEx, TestGroupLogic,
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync d[self.ksActionTestGroupDoRemove] = lambda: self._actionGenericDoRemove(TestGroupLogic,
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync d[self.ksActionTestCfgRegenQueues] = self._actionRegenQueuesCommon;
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync # Scheduling Group actions
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync d[self.ksActionSchedGroupList] = lambda: self._actionGenericListing(SchedGroupLogic, WuiAdminSchedGroupList)
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync d[self.ksActionSchedGroupAdd] = lambda: self._actionGenericFormAdd(SchedGroupDataEx, WuiSchedGroup);
e9a584ee0777ab2612e206eeec264ccb1a8ce333vboxsync d[self.ksActionSchedGroupClone] = lambda: self._actionGenericFormClone( SchedGroupDataEx, WuiSchedGroup,
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync 'idSchedGroup');
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync d[self.ksActionSchedGroupDetails] = lambda: self._actionGenericFormDetails(SchedGroupDataEx, SchedGroupLogic,
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync d[self.ksActionSchedGroupEdit] = lambda: self._actionGenericFormEdit(SchedGroupDataEx, WuiSchedGroup,
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync d[self.ksActionSchedGroupAddPost] = lambda: self._actionGenericFormAddPost(SchedGroupDataEx, SchedGroupLogic,
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync d[self.ksActionSchedGroupEditPost] = lambda: self._actionGenericFormEditPost(SchedGroupDataEx, SchedGroupLogic,
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync d[self.ksActionSchedGroupDoRemove] = lambda: self._actionGenericDoRemove(SchedGroupLogic,
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync 'Builds', self._sActionUrlBase + self.ksActionBuildList,
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync [ 'Builds', self._sActionUrlBase + self.ksActionBuildList ],
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync [ 'Blacklist', self._sActionUrlBase + self.ksActionBuildBlacklist ],
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync [ 'Build Sources', self._sActionUrlBase + self.ksActionBuildSrcList ],
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync [ 'Build Categories', self._sActionUrlBase + self.ksActionBuildCategoryList ],
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync [ 'New Build', self._sActionUrlBase + self.ksActionBuildAdd ],
e9a584ee0777ab2612e206eeec264ccb1a8ce333vboxsync [ 'New Blacklisting', self._sActionUrlBase + self.ksActionBuildBlacklistAdd ],
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync [ 'New Build Source', self._sActionUrlBase + self.ksActionBuildSrcAdd],
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync [ 'New Build Category', self._sActionUrlBase + self.ksActionBuildCategoryAdd ],
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync 'Failure Reasons', self._sActionUrlBase + self.ksActionFailureReasonList,
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync [ 'Failure Categories', self._sActionUrlBase + self.ksActionFailureCategoryList ],
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync [ 'Failure Reasons', self._sActionUrlBase + self.ksActionFailureReasonList ],
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync [ 'New Failure Category', self._sActionUrlBase + self.ksActionFailureCategoryShowAdd ],
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync [ 'New Failure Reason', self._sActionUrlBase + self.ksActionFailureReasonShowAdd ],
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync 'System', self._sActionUrlBase + self.ksActionSystemLogList,
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync [ 'System Log', self._sActionUrlBase + self.ksActionSystemLogList ],
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync [ 'User Accounts', self._sActionUrlBase + self.ksActionUserList ],
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync [ 'New User', self._sActionUrlBase + self.ksActionUserAdd ],
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync 'TestBoxes', self._sActionUrlBase + self.ksActionTestBoxList,
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync [ 'TestBoxes', self._sActionUrlBase + self.ksActionTestBoxList ],
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync [ 'Scheduling Groups', self._sActionUrlBase + self.ksActionSchedGroupList ],
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync [ 'New TestBox', self._sActionUrlBase + self.ksActionTestBoxAdd ],
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync [ 'New Scheduling Group', self._sActionUrlBase + self.ksActionSchedGroupAdd ],
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync [ 'Regenerate All Scheduling Queues', self._sActionUrlBase + self.ksActionTestBoxesRegenQueues ],
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync 'Test Config', self._sActionUrlBase + self.ksActionTestGroupList,
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync [ 'Test Cases', self._sActionUrlBase + self.ksActionTestCaseList ],
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync [ 'Test Groups', self._sActionUrlBase + self.ksActionTestGroupList ],
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync [ 'Global Resources', self._sActionUrlBase + self.ksActionGlobalRsrcShowAll ],
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync [ 'New Test Case', self._sActionUrlBase + self.ksActionTestCaseAdd ],
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync [ 'New Test Group', self._sActionUrlBase + self.ksActionTestGroupAdd ],
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync [ 'New Global Resource', self._sActionUrlBase + self.ksActionGlobalRsrcShowAdd ],
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync [ 'Regenerate All Scheduling Queues', self._sActionUrlBase + self.ksActionTestCfgRegenQueues ],
0aa1ba1d1ea27baa7762e4fe891824df38697189vboxsync '> Test Results', 'index.py?' + webutils.encodeUrlParams(self._dDbgParams), []
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync """Show the default admin page."""
13f7948dbc7ae32c3e30086604ad6ade2ead3671vboxsync return self._actionGenericListing(TestBoxLogic, WuiTestBoxList);
8e2451f7a9a8e6e722d2065fe0eeb5df93799c7avboxsync def _actionGenericDoDelOld(self, oCoreObjectLogic, sCoreObjectIdFieldName, sRedirectAction):
8e2451f7a9a8e6e722d2065fe0eeb5df93799c7avboxsync Delete entry (using oLogicType.remove).
0aa1ba1d1ea27baa7762e4fe891824df38697189vboxsync @param oCoreObjectLogic A *Logic class
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync @param sCoreObjectIdFieldName Name of HTTP POST variable that
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync contains object ID information
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync @param sRedirectAction An action for redirect user to
0aa1ba1d1ea27baa7762e4fe891824df38697189vboxsync in case of operation success
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync iCoreDataObjectId = self.getStringParam(sCoreObjectIdFieldName) # STRING?!?!
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync self._sRedirectTo = self._sActionUrlBase + sRedirectAction
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync return oCoreObjectLogic(self._oDb).remove(self._oCurUser.uid, iCoreDataObjectId)
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync def _actionGenericDoRemove(self, oLogicType, sParamId, sRedirAction):
8e2451f7a9a8e6e722d2065fe0eeb5df93799c7avboxsync Delete entry (using oLogicType.removeEntry).
8e2451f7a9a8e6e722d2065fe0eeb5df93799c7avboxsync oLogicType is a class that implements addEntry.
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync sParamId is the name (ksParam_...) of the HTTP variable hold the ID of
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync the database entry to delete.
240f7d7012a5f64bcde850bcf048531a710d81cfvboxsync sRedirAction is what action to redirect to on success.
8e2451f7a9a8e6e722d2065fe0eeb5df93799c7avboxsync idEntry = self.getIntParam(sParamId, iMin = 1, iMax = 0x7fffffe)
240f7d7012a5f64bcde850bcf048531a710d81cfvboxsync fCascade = self.getBoolParam('fCascadeDelete', False);
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync self._sRedirectTo = self._sActionUrlBase + sRedirAction;
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync return oLogicType(self._oDb).removeEntry(self._oCurUser.uid, idEntry, fCascade = fCascade, fCommit = True);
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync # System Category.
240f7d7012a5f64bcde850bcf048531a710d81cfvboxsync # (all generic)
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync # TestBox & Scheduling Category.
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync """Actions on a list of testboxes."""
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync # Parameters.
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync aidTestBoxes = self.getListOfIntParams(TestBoxData.ksParam_idTestBox, iMin = 1, aiDefaults = []);
8e2451f7a9a8e6e722d2065fe0eeb5df93799c7avboxsync sListAction = self.getStringParam(self.ksParamListAction);
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync if sListAction in [asDesc[0] for asDesc in WuiTestBoxList.kasTestBoxActionDescs]:
a0892a0a33b8ffaa8ff2f252411176f63e8d9f18vboxsync while i < len(asActionPrefixes) and not sListAction.startswith(asActionPrefixes[i]):
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync raise WuiException('Parameter "%s" has an invalid value: "%s"' % (self.ksParamListAction, sListAction,));
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync raise WuiException('Parameter "%s" has an invalid value: "%s"' % (self.ksParamListAction, sListAction,));
a0892a0a33b8ffaa8ff2f252411176f63e8d9f18vboxsync sListAction = sListAction[:len(asActionPrefixes[i]) - 1];
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync # Take action.
a0892a0a33b8ffaa8ff2f252411176f63e8d9f18vboxsync aoTestBoxes.append(TestBoxData().initFromDbWithId(self._oDb, idTestBox));
638f27fb9be4828305a85ea82a50b735b3bddee0vboxsync oLogic.editEntry(oTestBox, self._oCurUser.uid, fCommit = False);
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync oLogic.editEntry(oTestBox, self._oCurUser.uid, fCommit = False);
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync oLogic.editEntry(oTestBox, self._oCurUser.uid, fCommit = False);
8e2451f7a9a8e6e722d2065fe0eeb5df93799c7avboxsync # Re-display the list.
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync self._sRedirectTo = self._sActionUrlBase + self.ksActionTestBoxList;
13f7948dbc7ae32c3e30086604ad6ade2ead3671vboxsync ## @todo scheduling groups code goes here...
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync Common code for ksActionTestBoxesRegenQueues and ksActionTestCfgRegenQueues.
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync Too lazy to put this in some separate place right now.
0aa1ba1d1ea27baa7762e4fe891824df38697189vboxsync ## @todo should also be changed to a POST with a confirmation dialog preceeding it.
240f7d7012a5f64bcde850bcf048531a710d81cfvboxsync self._sPageTitle = 'Regenerate All Scheduling Queues';
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync self._sPageBody += '<h3>%s (ID %#d)</h3>' % (webutils.escapeElem(oGroup.sName), oGroup.idSchedGroup);
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync (aoErrors, asMessages) = SchedulerBase.recreateQueue(self._oDb, self._oCurUser.uid, oGroup.idSchedGroup, 2);
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync self._sPageBody += '<p>SchedulerBase.recreateQueue threw an exception: %s</p>' \
240f7d7012a5f64bcde850bcf048531a710d81cfvboxsync self._sPageBody += '<p>Successfully regenerated.</p>';
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync self._sPageBody += '<p>%s.</p>' % (webutils.escapeElem(oError[0]),);
0aa1ba1d1ea27baa7762e4fe891824df38697189vboxsync ## @todo links.
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync #elif isinstance(oError[1], TestGroupData):
240f7d7012a5f64bcde850bcf048531a710d81cfvboxsync # self._sPageBody += '<p>%s.</p>' % (webutils.escapeElem(oError[0]),);
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync #elif isinstance(oError[1], TestGroupCase):
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync # self._sPageBody += '<p>%s.</p>' % (webutils.escapeElem(oError[0]),);
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync self._sPageBody += '<p>%s. [Cannot link to %s]</p>' \
0aa1ba1d1ea27baa7762e4fe891824df38697189vboxsync % (webutils.escapeElem(oError[0]), webutils.escapeElem(str(oError[1])));
8e2451f7a9a8e6e722d2065fe0eeb5df93799c7avboxsync self._sPageBody += '<p>%s<p>\n' % (webutils.escapeElem(sMsg),);
0aa1ba1d1ea27baa7762e4fe891824df38697189vboxsync # Test Config Category.
0aa1ba1d1ea27baa7762e4fe891824df38697189vboxsync def _actionGlobalRsrcShowAddEdit(self, sAction): # pylint: disable=C0103
13f7948dbc7ae32c3e30086604ad6ade2ead3671vboxsync """Show Global Resource creation or edit dialog"""
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync oGlobalResourceLogic = GlobalResourceLogic(self._oDb)
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync idGlobalRsrc = self.getIntParam(GlobalResourceData.ksParam_idGlobalRsrc, iDefault = -1)
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync (self._sPageTitle, self._sPageBody) = oContent.showAddModifyPage(sAction)
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync """Add or modify Global Resource record"""
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync raise WuiException('Expected "POST" request, got "%s"' % (self._oSrvGlue.getMethod(),))
8e2451f7a9a8e6e722d2065fe0eeb5df93799c7avboxsync oGlobalResourceLogic = GlobalResourceLogic(self._oDb)
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync oGlobalResourceLogic.addGlobalResource(self._oCurUser.uid, oData)
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync idGlobalRsrc = self.getStringParam(GlobalResourceData.ksParam_idGlobalRsrc)
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync oGlobalResourceLogic.editGlobalResource(self._oCurUser.uid, idGlobalRsrc, oData)
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync self._sRedirectTo = self._sActionUrlBase + self.ksActionGlobalRsrcShowAll;
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync (self._sPageTitle, self._sPageBody) = oContent.showAddModifyPage(sAction, dErrors=dErrors)
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync """Override parent handler in order to change page titte"""
b4aee06a140a74517eedd6e55625cb88bd7b3d87vboxsync self._sPageTitle = 'Test Manager Admin - ' + self._sPageTitle