예제 #1
0
    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
예제 #2
0
    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;
예제 #4
0
 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,)),
                  ]
        ];
예제 #6
0
    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 [];