# -*- coding: utf-8 -*-
# $Id$
"""
Test Manager Core - WUI - Admin Main page.
"""
__copyright__ = \
"""
Copyright (C) 2012-2014 Oracle Corporation
This file is part of VirtualBox Open Source Edition (OSE), as
available from http://www.virtualbox.org. This file is free software;
General Public License (GPL) as published by the Free Software
Foundation, in version 2 as it comes in the "COPYING" file of the
VirtualBox OSE distribution. VirtualBox OSE is distributed in the
hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
The contents of this file may alternatively be used under the terms
of the Common Development and Distribution License Version 1.0
(CDDL) only, as it comes in the "COPYING.CDDL" file of the
VirtualBox OSE distribution, in which case the provisions of the
CDDL are applicable instead of those of the GPL.
You may elect to license modified versions of this file under the
terms and conditions of either the GPL or the CDDL or both.
"""
# Standard python imports.
import cgitb;
import sys;
# Validation Kit imports.
from testmanager.webui.wuiadminbuildblacklist import WuiAdminBuildBlacklist, WuiAdminListOfBlacklistItems
from testmanager.webui.wuiadminfailurereason import WuiAdminFailureReason, WuiAdminFailureReasonList
"""
WUI Admin main page.
"""
## The name of the script.
## @name Actions
## @{
## @}
# Use short form to avoid hitting the right margin (130) when using lambda.
#
# System Log actions.
#
d[self.ksActionSystemLogList] = lambda: self._actionGenericListing(SystemLogLogic, WuiAdminSystemLogList)
#
# User Account actions.
#
d[self.ksActionUserAddPost] = lambda: self._actionGenericFormAddPost(UserAccountData, UserAccountLogic,
d[self.ksActionUserEditPost] = lambda: self._actionGenericFormEditPost(UserAccountData, UserAccountLogic,
#
# TestBox actions.
#
d[self.ksActionTestBoxDetails] = lambda: self._actionGenericFormDetails(TestBoxData, TestBoxLogic, WuiTestBox,
'idTestBox', 'idGenTestBox');
d[self.ksActionTestBoxEditPost] = lambda: self._actionGenericFormEditPost(TestBoxData, TestBoxLogic,
#
# Test Case actions.
#
d[self.ksActionTestCaseAddPost] = lambda: self._actionGenericFormAddPost(TestCaseDataEx, TestCaseLogic,
'idTestCase', 'idGenTestCase');
d[self.ksActionTestCaseDetails] = lambda: self._actionGenericFormDetails(TestCaseDataEx, TestCaseLogic,
WuiTestCase, 'idTestCase',
'idGenTestCase');
d[self.ksActionTestCaseEditPost] = lambda: self._actionGenericFormEditPost(TestCaseDataEx, TestCaseLogic,
#
# Global Resource actions
#
d[self.ksActionGlobalRsrcShowAll] = lambda: self._actionGenericListing(GlobalResourceLogic, WuiGlobalResourceList)
d[self.ksActionGlobalRsrcShowAdd] = lambda: self._actionGlobalRsrcShowAddEdit(WuiAdmin.ksActionGlobalRsrcAdd)
d[self.ksActionGlobalRsrcShowEdit] = lambda: self._actionGlobalRsrcShowAddEdit(WuiAdmin.ksActionGlobalRsrcEdit)
d[self.ksActionGlobalRsrcAdd] = lambda: self._actionGlobalRsrcAddEdit(WuiAdmin.ksActionGlobalRsrcAdd)
d[self.ksActionGlobalRsrcEdit] = lambda: self._actionGlobalRsrcAddEdit(WuiAdmin.ksActionGlobalRsrcEdit)
#
# Build Source actions
#
d[self.ksActionBuildSrcList] = lambda: self._actionGenericListing(BuildSourceLogic, WuiAdminBuildSrcList)
d[self.ksActionBuildSrcAdd] = lambda: self._actionGenericFormAdd(BuildSourceData, WuiAdminBuildSrc);
d[self.ksActionBuildSrcAddPost] = lambda: self._actionGenericFormAddPost(BuildSourceData, BuildSourceLogic,
d[self.ksActionBuildSrcClone] = lambda: self._actionGenericFormClone( BuildSourceData, WuiAdminBuildSrc,
'idBuildSrc');
d[self.ksActionBuildSrcDetails] = lambda: self._actionGenericFormDetails(BuildSourceData, BuildSourceLogic,
WuiAdminBuildSrc, 'idBuildSrc');
d[self.ksActionBuildSrcEdit] = lambda: self._actionGenericFormEdit(BuildSourceData, WuiAdminBuildSrc,
d[self.ksActionBuildSrcEditPost] = lambda: self._actionGenericFormEditPost(BuildSourceData, BuildSourceLogic,
#
# Build actions
#
d[self.ksActionBuildAddPost] = lambda: self._actionGenericFormAddPost(BuildData, BuildLogic, WuiAdminBuild,
d[self.ksActionBuildClone] = lambda: self._actionGenericFormClone( BuildData, WuiAdminBuild, 'idBuild');
WuiAdminBuild, 'idBuild');
d[self.ksActionBuildDoRemove] = lambda: self._actionGenericDoRemove(BuildLogic, BuildData.ksParam_idBuild,
d[self.ksActionBuildEditPost] = lambda: self._actionGenericFormEditPost(BuildData, BuildLogic, WuiAdminBuild,
#
# Build Black List actions
#
d[self.ksActionBuildBlacklistAdd] = lambda: self._actionGenericFormAdd(BuildBlacklistData, WuiAdminBuildBlacklist);
d[self.ksActionBuildBlacklistAddPost] = lambda: self._actionGenericFormAddPost(BuildBlacklistData, BuildBlacklistLogic,
'idBlacklisting');
'idBlacklisting');
d[self.ksActionBuildBlacklistEditPost] = lambda: self._actionGenericFormEditPost(BuildBlacklistData,
#
# Failure Category actions
#
#
# Failure Reason actions
#
#
# Build Category actions
#
d[self.ksActionBuildCategoryList] = lambda: self._actionGenericListing(BuildCategoryLogic, WuiAdminBuildCatList);
d[self.ksActionBuildCategoryAdd] = lambda: self._actionGenericFormAdd(BuildCategoryData, WuiAdminBuildCat);
d[self.ksActionBuildCategoryAddPost] = lambda: self._actionGenericFormAddPost(BuildCategoryData, BuildCategoryLogic,
d[self.ksActionBuildCategoryClone] = lambda: self._actionGenericFormClone( BuildCategoryData, WuiAdminBuildCat,
'idBuildCategory');
d[self.ksActionBuildCategoryDetails] = lambda: self._actionGenericFormDetails(BuildCategoryData, BuildCategoryLogic,
WuiAdminBuildCat, 'idBuildCategory');
#
# Test Group actions
#
d[self.ksActionTestGroupList] = lambda: self._actionGenericListing(TestGroupLogic, WuiTestGroupList);
d[self.ksActionTestGroupAddPost] = lambda: self._actionGenericFormAddPost(TestGroupDataEx, TestGroupLogic,
d[self.ksActionTestGroupClone] = lambda: self._actionGenericFormClone( TestGroupDataEx, WuiTestGroup,
'idTestGroup');
d[self.ksActionTestGroupDetails] = lambda: self._actionGenericFormDetails(TestGroupDataEx, TestGroupLogic,
WuiTestGroup, 'idTestGroup');
d[self.ksActionTestGroupEditPost] = lambda: self._actionGenericFormEditPost(TestGroupDataEx, TestGroupLogic,
#
# Scheduling Group actions
#
d[self.ksActionSchedGroupList] = lambda: self._actionGenericListing(SchedGroupLogic, WuiAdminSchedGroupList)
d[self.ksActionSchedGroupAdd] = lambda: self._actionGenericFormAdd(SchedGroupDataEx, WuiSchedGroup);
d[self.ksActionSchedGroupClone] = lambda: self._actionGenericFormClone( SchedGroupDataEx, WuiSchedGroup,
'idSchedGroup');
d[self.ksActionSchedGroupDetails] = lambda: self._actionGenericFormDetails(SchedGroupDataEx, SchedGroupLogic,
WuiSchedGroup, 'idSchedGroup');
d[self.ksActionSchedGroupEdit] = lambda: self._actionGenericFormEdit(SchedGroupDataEx, WuiSchedGroup,
d[self.ksActionSchedGroupAddPost] = lambda: self._actionGenericFormAddPost(SchedGroupDataEx, SchedGroupLogic,
d[self.ksActionSchedGroupEditPost] = lambda: self._actionGenericFormEditPost(SchedGroupDataEx, SchedGroupLogic,
[
[
[
]
],
[
[
]
],
[
[
]
],
[
[
]
],
[
[
]
],
[
],
];
"""Show the default admin page."""
"""
Delete entry (using oLogicType.remove).
@param oCoreObjectLogic A *Logic class
@param sCoreObjectIdFieldName Name of HTTP POST variable that
contains object ID information
@param sRedirectAction An action for redirect user to
in case of operation success
"""
try:
self._sPageTitle = None
self._sPageBody = None
self._sRedirectTo = None
return False
"""
Delete entry (using oLogicType.removeEntry).
oLogicType is a class that implements addEntry.
sParamId is the name (ksParam_...) of the HTTP variable hold the ID of
the database entry to delete.
sRedirAction is what action to redirect to on success.
"""
try:
self._sPageTitle = None
self._sPageBody = None
return oLogicType(self._oDb).removeEntry(self._oCurUser.uid, idEntry, fCascade = fCascade, fCommit = True);
self._sRedirectTo = None;
return False;
#
# System Category.
#
# (all generic)
#
# TestBox & Scheduling Category.
#
"""Actions on a list of testboxes."""
# Parameters.
idAction = None;
else:
asActionPrefixes = [ 'setgroup-', ];
i = 0;
i += 1;
if i >= len(asActionPrefixes):
raise WuiException('Parameter "%s" has an invalid value: "%s"' % (self.ksParamListAction, sListAction,));
raise WuiException('Parameter "%s" has an invalid value: "%s"' % (self.ksParamListAction, sListAction,));
# Take action.
if sListAction is 'none':
pass;
else:
aoTestBoxes = []
for idTestBox in aidTestBoxes:
for oTestBox in aoTestBoxes:
elif sListAction == 'setgroup':
for oTestBox in aoTestBoxes:
else:
for oTestBox in aoTestBoxes:
# Re-display the list.
self._sPageTitle = None;
self._sPageBody = None;
return True;
## @todo scheduling groups code goes here...
"""
Common code for ksActionTestBoxesRegenQueues and ksActionTestCfgRegenQueues.
Too lazy to put this in some separate place right now.
"""
## @todo should also be changed to a POST with a confirmation dialog preceeding it.
self._sPageBody += '<h3>%s (ID %#d)</h3>' % (webutils.escapeElem(oGroup.sName), oGroup.idSchedGroup);
try:
(aoErrors, asMessages) = SchedulerBase.recreateQueue(self._oDb, self._oCurUser.uid, oGroup.idSchedGroup, 2);
else:
else:
if oError[1] is None:
## @todo links.
#elif isinstance(oError[1], TestGroupData):
# self._sPageBody += '<p>%s.</p>' % (webutils.escapeElem(oError[0]),);
#elif isinstance(oError[1], TestGroupCase):
# self._sPageBody += '<p>%s.</p>' % (webutils.escapeElem(oError[0]),);
else:
for sMsg in asMessages:
return True;
#
# Test Config Category.
#
"""Show Global Resource creation or edit dialog"""
else:
return True
"""Add or modify Global Resource record"""
else:
raise WuiException('Invalid parameter.')
self._sPageTitle = None;
self._sPageBody = None;
else:
return True
"""Override parent handler in order to change page titte"""
if self._sPageTitle is not None: