cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync# -*- coding: utf-8 -*-
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync# $Id$
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync"""
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncTest Manager WUI - Build Blacklist.
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync"""
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync__copyright__ = \
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync"""
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncCopyright (C) 2012-2014 Oracle Corporation
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncThis file is part of VirtualBox Open Source Edition (OSE), as
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncavailable from http://www.virtualbox.org. This file is free software;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncyou can redistribute it and/or modify it under the terms of the GNU
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncGeneral Public License (GPL) as published by the Free Software
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncFoundation, in version 2 as it comes in the "COPYING" file of the
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncVirtualBox OSE distribution. VirtualBox OSE is distributed in the
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsynchope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncThe contents of this file may alternatively be used under the terms
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncof the Common Development and Distribution License Version 1.0
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync(CDDL) only, as it comes in the "COPYING.CDDL" file of the
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncVirtualBox OSE distribution, in which case the provisions of the
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncCDDL are applicable instead of those of the GPL.
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncYou may elect to license modified versions of this file under the
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncterms and conditions of either the GPL or the CDDL or both.
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync"""
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync__version__ = "$Revision$"
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync# Validation Kit imports.
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncfrom testmanager.webui.wuibase import WuiException
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncfrom testmanager.webui.wuicontentbase import WuiFormContentBase, WuiListContentBase, WuiTmLink
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncfrom testmanager.core.buildblacklist import BuildBlacklistData
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncfrom testmanager.core.failurereason import FailureReasonLogic
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncfrom testmanager.core.db import TMDatabaseConnection
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncfrom testmanager.core import coreconsts
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncclass WuiAdminBuildBlacklist(WuiFormContentBase):
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync """
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync WUI Build Black List Form.
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync """
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync def __init__(self, oData, sMode, oDisp):
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync """
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync Prepare & initialize parent
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync """
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync if sMode == WuiFormContentBase.ksMode_Add:
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync sTitle = 'Add Build Blacklist Entry'
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync elif sMode == WuiFormContentBase.ksMode_Edit:
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync sTitle = 'Edit Build Blacklist Entry'
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync else:
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync assert sMode == WuiFormContentBase.ksMode_Show;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync sTitle = 'Build Black';
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync WuiFormContentBase.__init__(self, oData, sMode, 'BuildBlacklist', oDisp, sTitle);
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync #
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync # Additional data.
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync #
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync self.asTypes = coreconsts.g_kasBuildTypesAll
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync self.asOsArches = coreconsts.g_kasOsDotCpusAll
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync def _populateForm(self, oForm, oData):
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync """
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync Construct an HTML form
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync """
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync aoFailureReasons = FailureReasonLogic(self._oDisp.getDb()).fetchForCombo()
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync if len(aoFailureReasons) == 0:
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync from testmanager.webui.wuiadmin import WuiAdmin
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync raise WuiException('Please <a href="%s?%s=%s">add</a> some Failure Reasons first.'
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync % (WuiAdmin.ksScriptName, WuiAdmin.ksParamAction, WuiAdmin.ksActionFailureReasonShowAdd));
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync asTypes = self.getListOfItems(self.asTypes, oData.asTypes)
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync asOsArches = self.getListOfItems(self.asOsArches, oData.asOsArches)
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync oForm.addIntRO (BuildBlacklistData.ksParam_idBlacklisting, oData.idBlacklisting, 'Blacklist item ID')
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync oForm.addTimestampRO(BuildBlacklistData.ksParam_tsEffective, oData.tsEffective, 'Last changed')
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync oForm.addTimestampRO(BuildBlacklistData.ksParam_tsExpire, oData.tsExpire, 'Expires (excl)')
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync oForm.addIntRO (BuildBlacklistData.ksParam_uidAuthor, oData.uidAuthor, 'Changed by UID')
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync oForm.addComboBox (BuildBlacklistData.ksParam_idFailureReason, oData.idFailureReason, 'Failure Reason',
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync aoFailureReasons)
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync oForm.addText (BuildBlacklistData.ksParam_sProduct, oData.sProduct, 'Product')
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync oForm.addText (BuildBlacklistData.ksParam_sBranch, oData.sBranch, 'Branch')
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync oForm.addListOfTypes(BuildBlacklistData.ksParam_asTypes, asTypes, 'Build types')
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync oForm.addListOfOsArches(BuildBlacklistData.ksParam_asOsArches, asOsArches, 'Target architectures')
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync oForm.addInt (BuildBlacklistData.ksParam_iFirstRevision, oData.iFirstRevision, 'First revision')
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync oForm.addInt (BuildBlacklistData.ksParam_iLastRevision, oData.iLastRevision, 'Last revision (incl)')
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync oForm.addSubmit();
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync return True;
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsyncclass WuiAdminListOfBlacklistItems(WuiListContentBase):
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync """
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync WUI Admin Build Blacklist Content Generator.
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync """
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync def __init__(self, aoEntries, iPage, cItemsPerPage, tsEffective, fnDPrint, oDisp):
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync WuiListContentBase.__init__(self, aoEntries, iPage, cItemsPerPage, tsEffective,
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync sTitle = 'Build Blacklist', sId = 'buildsBlacklist',
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync fnDPrint = fnDPrint, oDisp = oDisp);
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync self._asColumnHeaders = ['ID', 'Failure Reason',
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync 'Product', 'Branch', 'Type',
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync 'OS(es)', 'First Revision', 'Last Revision',
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync 'Actions' ]
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync self._asColumnAttribs = ['align="right"', 'align="center"', 'align="center"', 'align="center"',
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync 'align="center"', 'align="center"', 'align="center"', 'align="center"',
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync 'align="center"', 'align="center"', 'align="center"', 'align="center"',
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync 'align="center"' ]
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync def _formatListEntry(self, iEntry):
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync from testmanager.webui.wuiadmin import WuiAdmin
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync oEntry = self._aoEntries[iEntry]
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync sShortFailReason = \
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync FailureReasonLogic(TMDatabaseConnection()).getById(oEntry.idFailureReason).sShort
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync return [ oEntry.idBlacklisting,
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync sShortFailReason,
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync oEntry.sProduct,
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync oEntry.sBranch,
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync oEntry.asTypes,
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync oEntry.asOsArches,
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync oEntry.iFirstRevision,
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync oEntry.iLastRevision,
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync [ WuiTmLink('Details', WuiAdmin.ksScriptName,
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync { WuiAdmin.ksParamAction: WuiAdmin.ksActionBuildBlacklistDetails,
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync BuildBlacklistData.ksParam_idBlacklisting: oEntry.idBlacklisting }),
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync WuiTmLink('Edit', WuiAdmin.ksScriptName,
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync { WuiAdmin.ksParamAction: WuiAdmin.ksActionBuildBlacklistEdit,
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync BuildBlacklistData.ksParam_idBlacklisting: oEntry.idBlacklisting }),
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync WuiTmLink('Clone', WuiAdmin.ksScriptName,
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync { WuiAdmin.ksParamAction: WuiAdmin.ksActionBuildBlacklistClone,
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync BuildBlacklistData.ksParam_idBlacklisting: oEntry.idBlacklisting,
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync WuiAdmin.ksParamEffectiveDate: oEntry.tsEffective, }),
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync WuiTmLink('Remove', WuiAdmin.ksScriptName,
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync { WuiAdmin.ksParamAction: WuiAdmin.ksActionBuildBlacklistDoRemove,
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync BuildBlacklistData.ksParam_idBlacklisting: oEntry.idBlacklisting },
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync sConfirm = 'Are you sure you want to remove black list entry #%d?' % (oEntry.idBlacklisting,)),
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync ]
cf22150eaeeb72431bf1cf65c309a431454fb22bvboxsync ];