def remove(self, uidAuthor, idFailureCategory, fNeedCommit=True): """ Historize record """ # Historize Failure Reasons records first self._oDb.execute( 'SELECT idFailureReason\n' 'FROM FailureReasons\n' 'WHERE idFailureCategory = %s\n' ' AND tsExpire = \'infinity\'::TIMESTAMP\n', (idFailureCategory, )) for iFailureReasonId in self._oDb.fetchAll(): FailureReasonLogic(self._oDb).remove(uidAuthor, iFailureReasonId, fNeedCommit=False) self._oDb.execute( 'UPDATE FailureCategories\n' 'SET tsExpire = CURRENT_TIMESTAMP,\n' ' uidAuthor = %s\n' 'WHERE idFailureCategory = %s\n' ' AND tsExpire = \'infinity\'::TIMESTAMP\n', (uidAuthor, idFailureCategory)) if fNeedCommit: self._oDb.commit() return True
def _populateForm(self, oForm, oData): aoFailureReasons = FailureReasonLogic( self._oDisp.getDb()).fetchForCombo('Todo: Figure out why') sPostHtml = '' if oData.idFailureReason is not None and oData.idFailureReason >= 0: sPostHtml += u' ' + WuiFailureReasonDetailsLink( oData.idFailureReason).toHtml() sPostHtml += u' ' + WuiFailureReasonAddLink('New', fBracketed=False).toHtml() oForm.addComboBox(TestResultFailureData.ksParam_idFailureReason, oData.idFailureReason, 'Reason', aoFailureReasons, sPostHtml=sPostHtml) oForm.addMultilineText(TestResultFailureData.ksParam_sComment, oData.sComment, 'Comment') oForm.addIntRO(TestResultFailureData.ksParam_idTestResult, oData.idTestResult, 'Test Result ID') oForm.addIntRO(TestResultFailureData.ksParam_idTestSet, oData.idTestSet, 'Test Set ID') oForm.addTimestampRO(TestResultFailureData.ksParam_tsEffective, oData.tsEffective, 'Effective Date') oForm.addTimestampRO(TestResultFailureData.ksParam_tsExpire, oData.tsExpire, 'Expire (excl)') oForm.addIntRO(TestResultFailureData.ksParam_uidAuthor, oData.uidAuthor, 'Changed by UID') if self._sMode != WuiFormContentBase.ksMode_Show: oForm.addSubmit('Add' if self._sMode == WuiFormContentBase.ksMode_Add else 'Modify') return True
def _populateForm(self, oForm, oData): """ Construct an HTML form """ aoFailureReasons = FailureReasonLogic(self._oDisp.getDb()).fetchForCombo() if not aoFailureReasons: from testmanager.webui.wuiadmin import WuiAdmin raise WuiException('Please <a href="%s?%s=%s">add</a> some Failure Reasons first.' % (WuiAdmin.ksScriptName, WuiAdmin.ksParamAction, WuiAdmin.ksActionFailureReasonAdd)); asTypes = self.getListOfItems(self.asTypes, oData.asTypes) asOsArches = self.getListOfItems(self.asOsArches, oData.asOsArches) oForm.addIntRO (BuildBlacklistData.ksParam_idBlacklisting, oData.idBlacklisting, 'Blacklist item ID') oForm.addTimestampRO(BuildBlacklistData.ksParam_tsEffective, oData.tsEffective, 'Last changed') oForm.addTimestampRO(BuildBlacklistData.ksParam_tsExpire, oData.tsExpire, 'Expires (excl)') oForm.addIntRO (BuildBlacklistData.ksParam_uidAuthor, oData.uidAuthor, 'Changed by UID') oForm.addComboBox (BuildBlacklistData.ksParam_idFailureReason, oData.idFailureReason, 'Failure Reason', aoFailureReasons) oForm.addText (BuildBlacklistData.ksParam_sProduct, oData.sProduct, 'Product') oForm.addText (BuildBlacklistData.ksParam_sBranch, oData.sBranch, 'Branch') oForm.addListOfTypes(BuildBlacklistData.ksParam_asTypes, asTypes, 'Build types') oForm.addListOfOsArches(BuildBlacklistData.ksParam_asOsArches, asOsArches, 'Target architectures') oForm.addInt (BuildBlacklistData.ksParam_iFirstRevision, oData.iFirstRevision, 'First revision') oForm.addInt (BuildBlacklistData.ksParam_iLastRevision, oData.iLastRevision, 'Last revision (incl)') oForm.addSubmit(); return True;
def __init__(self, aoEntries, iPage, cItemsPerPage, tsEffective, fnDPrint, oDisp, cDaysBack, aiSelectedSortColumns=None): WuiListContentBase.__init__( self, aoEntries, iPage, cItemsPerPage, tsEffective, 'System Changelog', fnDPrint=fnDPrint, oDisp=oDisp, aiSelectedSortColumns=aiSelectedSortColumns) self._asColumnHeaders = ['When', 'User', 'Event', 'Details'] self._asColumnAttribs = ['align="center"', 'align="center"', '', ''] self._oBuildBlacklistLogic = BuildBlacklistLogic(oDisp.getDb()) self._oBuildLogic = BuildLogic(oDisp.getDb()) self._oBuildSourceLogic = BuildSourceLogic(oDisp.getDb()) self._oFailureCategoryLogic = FailureCategoryLogic(oDisp.getDb()) self._oFailureReasonLogic = FailureReasonLogic(oDisp.getDb()) self._oGlobalResourceLogic = GlobalResourceLogic(oDisp.getDb()) self._oSchedGroupLogic = SchedGroupLogic(oDisp.getDb()) self._oTestBoxLogic = TestBoxLogic(oDisp.getDb()) self._oTestCaseLogic = TestCaseLogic(oDisp.getDb()) self._oTestGroupLogic = TestGroupLogic(oDisp.getDb()) self._oUserAccountLogic = UserAccountLogic(oDisp.getDb()) self._sPrevDate = '' _ = cDaysBack
def _formatListEntry(self, iEntry): from testmanager.webui.wuiadmin import WuiAdmin oEntry = self._aoEntries[iEntry] sShortFailReason = \ FailureReasonLogic(TMDatabaseConnection()).getById(oEntry.idFailureReason).sShort return [ oEntry.idBlacklisting, sShortFailReason, oEntry.sProduct, oEntry.sBranch, oEntry.asTypes, oEntry.asOsArches, oEntry.iFirstRevision, oEntry.iLastRevision, [ WuiTmLink('Details', WuiAdmin.ksScriptName, { WuiAdmin.ksParamAction: WuiAdmin.ksActionBuildBlacklistDetails, BuildBlacklistData.ksParam_idBlacklisting: oEntry.idBlacklisting }), WuiTmLink('Edit', WuiAdmin.ksScriptName, { WuiAdmin.ksParamAction: WuiAdmin.ksActionBuildBlacklistEdit, BuildBlacklistData.ksParam_idBlacklisting: oEntry.idBlacklisting }), WuiTmLink('Clone', WuiAdmin.ksScriptName, { WuiAdmin.ksParamAction: WuiAdmin.ksActionBuildBlacklistClone, BuildBlacklistData.ksParam_idBlacklisting: oEntry.idBlacklisting, WuiAdmin.ksParamEffectiveDate: oEntry.tsEffective, }), WuiTmLink('Remove', WuiAdmin.ksScriptName, { WuiAdmin.ksParamAction: WuiAdmin.ksActionBuildBlacklistDoRemove, BuildBlacklistData.ksParam_idBlacklisting: oEntry.idBlacklisting }, sConfirm = 'Are you sure you want to remove black list entry #%d?' % (oEntry.idBlacklisting,)), ] ];
def _generateMainReason(self, oTestResultTree, oTestSet): """ Generates the form for displaying and updating the main failure reason. oTestResultTree is an instance TestResultDataEx. oTestSet is an instance of TestSetData. """ _ = oTestSet; sHtml = ' '; if oTestResultTree.isFailure() or oTestResultTree.cErrors > 0: sHtml += ' <h2>Failure Reason:</h2>\n'; oData = oTestResultTree.oReason; # We need the failure reasons for the combobox. aoFailureReasons = FailureReasonLogic(self._oDisp.getDb()).fetchForCombo('Test Sheriff, you figure out why!'); assert aoFailureReasons; # For now we'll use the standard form helper. sFormActionUrl = '%s?%s=%s' % ( self._oDisp.ksScriptName, self._oDisp.ksParamAction, WuiMain.ksActionTestResultFailureAddPost if oData is None else WuiMain.ksActionTestResultFailureEditPost ) fReadOnly = not self._oDisp or self._oDisp.isReadOnlyUser(); oForm = WuiHlpForm('failure-reason', sFormActionUrl, sOnSubmit = WuiHlpForm.ksOnSubmit_AddReturnToFieldWithCurrentUrl, fReadOnly = fReadOnly); oForm.addTextHidden(TestResultFailureData.ksParam_idTestResult, oTestResultTree.idTestResult); oForm.addTextHidden(TestResultFailureData.ksParam_idTestSet, oTestSet.idTestSet); if oData is not None: oForm.addComboBox(TestResultFailureData.ksParam_idFailureReason, oData.idFailureReason, 'Reason', aoFailureReasons, sPostHtml = u' ' + WuiFailureReasonDetailsLink(oData.idFailureReason).toHtml() + (u' ' + WuiFailureReasonAddLink('New', fBracketed = False).toHtml() if not fReadOnly else u'')); oForm.addMultilineText(TestResultFailureData.ksParam_sComment, oData.sComment, 'Comment') oForm.addNonText(u'%s (%s), %s' % ( oData.oAuthor.sUsername, oData.oAuthor.sUsername, self.formatTsShort(oData.tsEffective),), 'Sheriff', sPostHtml = ' ' + WuiTestResultFailureDetailsLink(oData.idTestResult, "Show Details").toHtml() ) oForm.addTextHidden(TestResultFailureData.ksParam_tsEffective, oData.tsEffective); oForm.addTextHidden(TestResultFailureData.ksParam_tsExpire, oData.tsExpire); oForm.addTextHidden(TestResultFailureData.ksParam_uidAuthor, oData.uidAuthor); oForm.addSubmit('Change Reason'); else: oForm.addComboBox(TestResultFailureData.ksParam_idFailureReason, -1, 'Reason', aoFailureReasons, sPostHtml = ' ' + WuiFailureReasonAddLink('New').toHtml() if not fReadOnly else ''); oForm.addMultilineText(TestResultFailureData.ksParam_sComment, '', 'Comment'); oForm.addTextHidden(TestResultFailureData.ksParam_tsEffective, ''); oForm.addTextHidden(TestResultFailureData.ksParam_tsExpire, ''); oForm.addTextHidden(TestResultFailureData.ksParam_uidAuthor, ''); oForm.addSubmit('Add Reason'); sHtml += oForm.finalize(); return sHtml;
def _generatePostFormContent(self, oData): """ Adds a table with the category members below the form. """ if oData.idFailureCategory is not None and oData.idFailureCategory >= 0: oLogic = FailureReasonLogic(self._oDisp.getDb()); tsNow = self._oDisp.getNow(); cMax = 4096; aoEntries = oLogic.fetchForListingInCategory(0, cMax, tsNow, oData.idFailureCategory) if aoEntries: oList = WuiAdminFailureReasonList(aoEntries, 0, cMax, tsNow, fnDPrint = None, oDisp = self._oDisp); return [ [ 'Members', oList.show(fShowNavigation = False)[1]], ]; return [];