儲存庫 vbox 的更動 65984
- 時間撮記:
- 2017-3-7 下午04:00:25 (8 年 以前)
- 位置:
- trunk/src/VBox/ValidationKit/testmanager/webui
- 檔案:
-
- 修改 16 筆資料
圖例:
- 未更動
- 新增
- 刪除
-
trunk/src/VBox/ValidationKit/testmanager/webui/wuiadmin.py
r65917 r65984 525 525 526 526 # Take action. 527 if sListAction is'none':527 if sListAction == 'none': 528 528 pass; 529 529 else: … … 664 664 self._sPageBody += cgitb.html(sys.exc_info()); 665 665 else: 666 if len(aoErrors) == 0:666 if not aoErrors: 667 667 self._sPageBody += '<p>Successfully regenerated.</p>'; 668 668 else: … … 847 847 oGlobalResourceLogic = GlobalResourceLogic(self._oDb) 848 848 dErrors = oData.validateAndConvert(self._oDb); 849 if len(dErrors) == 0:849 if not dErrors: 850 850 if sAction == WuiAdmin.ksActionGlobalRsrcAdd: 851 851 oGlobalResourceLogic.addGlobalResource(self._oCurUser.uid, oData) -
trunk/src/VBox/ValidationKit/testmanager/webui/wuiadminbuildblacklist.py
r65914 r65984 70 70 71 71 aoFailureReasons = FailureReasonLogic(self._oDisp.getDb()).fetchForCombo() 72 if len(aoFailureReasons) == 0:72 if not aoFailureReasons: 73 73 from testmanager.webui.wuiadmin import WuiAdmin 74 74 raise WuiException('Please <a href="%s?%s=%s">add</a> some Failure Reasons first.' -
trunk/src/VBox/ValidationKit/testmanager/webui/wuiadminfailurecategory.py
r65914 r65984 97 97 cMax = 4096; 98 98 aoEntries = oLogic.fetchForListingInCategory(0, cMax, tsNow, oData.idFailureCategory) 99 if len(aoEntries) > 0:99 if aoEntries: 100 100 oList = WuiAdminFailureReasonList(aoEntries, 0, cMax, tsNow, fnDPrint = None, oDisp = self._oDisp); 101 101 return [ [ 'Members', oList.show(fShowNavigation = False)[1]], ]; -
trunk/src/VBox/ValidationKit/testmanager/webui/wuiadminfailurereason.py
r65914 r65984 93 93 94 94 aoFailureCategories = FailureCategoryLogic(TMDatabaseConnection()).getFailureCategoriesForCombo() 95 if len(aoFailureCategories) == 0:95 if not aoFailureCategories: 96 96 from testmanager.webui.wuiadmin import WuiAdmin 97 97 sExceptionMsg = 'Please <a href="%s?%s=%s">add</a> Failure Category first.' % \ -
trunk/src/VBox/ValidationKit/testmanager/webui/wuiadminsystemchangelog.py
r65350 r65984 354 354 # 355 355 356 if aoChanges is not None and len(aoChanges) > 0:356 if aoChanges: 357 357 oChangeEntry = aoChanges[0]; 358 358 cAttribsChanged = len(oChangeEntry.aoChanges) + 1; -
trunk/src/VBox/ValidationKit/testmanager/webui/wuiadmintestbox.py
r65914 r65984 220 220 221 221 # Count boxes in interesting states. 222 if len(self._aoEntries) > 0:222 if self._aoEntries: 223 223 cActive = 0; 224 224 cDead = 0; … … 347 347 if oEntry.fCpu64BitGuest is True: asFeatures.append(u'64\u2011bit\u2011Guest'); 348 348 if oEntry.fChipsetIoMmu is True: asFeatures.append(u'I/O\u2011MMU'); 349 sFeatures = u' '.join(asFeatures) if len(asFeatures) > 0else u'';349 sFeatures = u' '.join(asFeatures) if asFeatures else u''; 350 350 351 351 # Collection applicable actions. -
trunk/src/VBox/ValidationKit/testmanager/webui/wuiadmintestcase.py
r65914 r65984 89 89 fAllDefaultTimeouts = True; 90 90 for oVar in oEntry.aoTestCaseArgs: 91 if fNoSubName and oVar.sSubName is not None and len(oVar.sSubName.strip()) > 0:91 if fNoSubName and oVar.sSubName is not None and oVar.sSubName.strip(): 92 92 fNoSubName = False; 93 93 if oVar.cGangMembers > 1: … … 117 117 % (utils.formatIntervalSeconds(oTmp.cSecTimeout) if oTmp.cSecTimeout is not None else 'Default',) 118 118 sHtml += u'<td>%s</td></tr>' \ 119 % ( webutils.escapeElem(oTmp.sArgs.replace('-', u'\u2011')) if len(oTmp.sArgs) > 0else u'\u2011',);119 % ( webutils.escapeElem(oTmp.sArgs.replace('-', u'\u2011')) if oTmp.sArgs else u'\u2011',); 120 120 sHtml += '</tr>\n'; 121 121 sHtml += ' </table>' -
trunk/src/VBox/ValidationKit/testmanager/webui/wuiadmintestgroup.py
r65914 r65984 85 85 86 86 def __init__(self, aoEntries, iPage, cItemsPerPage, tsEffective, fnDPrint, oDisp, aiSelectedSortColumns = None): 87 assert len(aoEntries) == 0or isinstance(aoEntries[0], TestGroupDataEx)87 assert not aoEntries or isinstance(aoEntries[0], TestGroupDataEx) 88 88 89 89 WuiListContentBase.__init__(self, aoEntries, iPage, cItemsPerPage, tsEffective, sTitle = 'Test Groups', … … 101 101 # 102 102 sHtml = ''; 103 if len(oEntry.aoMembers) > 0:103 if oEntry.aoMembers: 104 104 for oMember in oEntry.aoMembers: 105 105 sHtml += '<dl>\n' \ -
trunk/src/VBox/ValidationKit/testmanager/webui/wuibase.py
r65917 r65984 132 132 if sKey in self.kasDbgParams: 133 133 self._dDbgParams[sKey] = sValue; 134 if len(self._dDbgParams) > 0:134 if self._dDbgParams: 135 135 from testmanager.webui.wuicontentbase import WuiTmLink; 136 136 WuiTmLink.kdDbgParams = self._dDbgParams; … … 141 141 # Calc a couple of URL base strings for this dispatcher. 142 142 self._sUrlBase = sScriptName + '?'; 143 if len(self._dDbgParams) > 0:143 if self._dDbgParams: 144 144 self._sUrlBase += webutils.encodeUrlParams(self._dDbgParams) + '&'; 145 145 self._sActionUrlBase = self._sUrlBase + self.ksParamAction + '='; … … 150 150 Redirects the page to the URL given in self._sRedirectTo. 151 151 """ 152 assert self._sRedirectTo is not None; 153 assert len(self._sRedirectTo) > 0; 152 assert self._sRedirectTo; 154 153 assert self._sPageBody is None; 155 154 assert self._sPageTitle is None; … … 279 278 280 279 # Side menu form attributes. 281 if len(self._dSideMenuFormAttrs) > 0:280 if self._dSideMenuFormAttrs: 282 281 dReplacements['@@SIDE_MENU_FORM_ATTRS@@'] = ' '.join(['%s="%s"' % (sKey, webutils.escapeAttr(sValue)) 283 282 for sKey, sValue in self._dSideMenuFormAttrs.iteritems()]); … … 1066 1065 sErrorMsg = 'User %s is not allowed to modify anything!' % (self._oCurUser.sUsername,) 1067 1066 1068 if len(dErrors) == 0 and sErrorMsg is None:1067 if not dErrors and not sErrorMsg: 1069 1068 oData.convertFromParamNull(); 1070 1069 -
trunk/src/VBox/ValidationKit/testmanager/webui/wuicontentbase.py
r65914 r65984 79 79 self.sExtraAttrs = sExtraAttrs; 80 80 81 if dParams is not None and len(dParams) > 0:81 if dParams: 82 82 # Do some massaging of None arguments. 83 83 dParams = dict(dParams); … … 104 104 if self.sTitle is not None: 105 105 sExtraAttrs += 'title="%s" ' % (webutils.escapeAttr(self.sTitle),); 106 if len(sExtraAttrs) > 0and sExtraAttrs[-1] != ' ':106 if sExtraAttrs and sExtraAttrs[-1] != ' ': 107 107 sExtraAttrs += ' '; 108 108 … … 122 122 123 123 # Add debug parameters if necessary. 124 if self.kdDbgParams is not None and len(self.kdDbgParams) > 0:125 if dParams is None or len(dParams) == 0:124 if self.kdDbgParams: 125 if not dParams: 126 126 dParams = dict(self.kdDbgParams); 127 127 else: … … 140 140 sFragmentId = None, fBracketed = True): 141 141 from testmanager.webui.wuiadmin import WuiAdmin; 142 if dParams is None or len(dParams) == 0:142 if not dParams: 143 143 dParams = dict(); 144 144 else: … … 155 155 156 156 def __init__(self, sName, sAction, dParams = None, sConfirm = None, sTitle = None, sFragmentId = None, fBracketed = True): 157 if dParams is None or len(dParams) == 0:157 if not dParams: 158 158 dParams = dict(); 159 159 else: … … 189 189 """ 190 190 def __init__(self, sUrl, sName = None, fBracketed = True): 191 assert sUrl is not None; assert len(sUrl) > 0;191 assert not sUrl; 192 192 if sName is None: 193 193 sName = 'Build log'; … … 408 408 assert sMode in [self.ksMode_Add, self.ksMode_Edit, self.ksMode_Show]; 409 409 assert len(sTitle) > 1; 410 assert sId is None or len(sId) > 0;410 assert sId is None or sId; 411 411 412 412 self._sMode = sMode; … … 698 698 # Add any post form content. 699 699 atPostFormContent = self._generatePostFormContent(self._oData); 700 if atPostFormContent is not None and len(atPostFormContent) > 0:700 if atPostFormContent: 701 701 for iSection, tSection in enumerate(atPostFormContent): 702 702 (sSectionTitle, sSectionContent) = tSection; 703 703 sContent += u'<div id="postform-%d" class="tmformpostsection">\n' % (iSection,); 704 if sSectionTitle is not None and len(sSectionTitle) > 0:704 if sSectionTitle: 705 705 sContent += '<h3 class="tmformpostheader">%s</h3>\n' % (webutils.escapeElem(sSectionTitle),); 706 706 sContent += u' <div id="postform-%d-content" class="tmformpostcontent">\n' % (iSection,); … … 711 711 # Add action to the top. 712 712 aoActions = self._generateTopRowFormActions(self._oData); 713 if len(aoActions) > 0:713 if aoActions: 714 714 sActionLinks = '<p>%s</p>' % (' '.join(unicode(oLink) for oLink in aoActions)); 715 715 sContent = sActionLinks + sContent; … … 747 747 if sId is None: 748 748 sId = sTitle.strip().replace(' ', '').lower(); 749 assert len(sId.strip()) > 0;749 assert sId.strip(); 750 750 self._sId = sId; 751 751 self._asColumnHeaders = []; … … 763 763 return None; 764 764 sComment = sComment.strip(); 765 if len(sComment) == 0:765 if not sComment: 766 766 return None; 767 767 … … 813 813 814 814 for i, _ in enumerate(aoValues): 815 if i < len(self._asColumnAttribs) and len(self._asColumnAttribs[i]) > 0:815 if i < len(self._asColumnAttribs) and self._asColumnAttribs[i]: 816 816 sRow += u' <td ' + self._asColumnAttribs[i] + '>'; 817 817 else: … … 821 821 sRow += aoValues[i].toHtml(); 822 822 elif isinstance(aoValues[i], list): 823 if len(aoValues[i]) > 0:823 if aoValues[i]: 824 824 for oElement in aoValues[i]: 825 825 if isinstance(oElement, WuiHtmlBase): … … 1003 1003 sPageBody = '<table class="tmtable" id="' + self._sId + '" cellspacing="0">\n'; 1004 1004 1005 if len(self._asColumnHeaders) == 0:1005 if not self._asColumnHeaders: 1006 1006 self._asColumnHeaders = self._aoEntries[0].getDataAttributes(); 1007 1007 … … 1038 1038 sPageBody += self._generateNavigation('top'); 1039 1039 1040 if len(self._aoEntries):1040 if self._aoEntries: 1041 1041 sPageBody += self._generateTable(); 1042 1042 if fShowNavigation: … … 1091 1091 if fShowNavigation: 1092 1092 sPageBody += self._generateNavigation('top'); 1093 if len(self._aoEntries) > 0:1093 if self._aoEntries: 1094 1094 1095 1095 sPageBody += '<form action="?%s" method="post" class="tmlistactionform">\n' \ -
trunk/src/VBox/ValidationKit/testmanager/webui/wuigraphwiz.py
r62484 r65984 129 129 130 130 if fBits & WuiGraphWiz.kfSeriesName_Product: 131 if len(sName) > 0: sName += ' / ';131 if sName: sName += ' / '; 132 132 sName += oSeries.oBuildCategory.sProduct; 133 133 134 134 if fBits & WuiGraphWiz.kfSeriesName_Branch: 135 if len(sName) > 0: sName += ' / ';135 if sName: sName += ' / '; 136 136 sName += oSeries.oBuildCategory.sBranch; 137 137 138 138 if fBits & WuiGraphWiz.kfSeriesName_BuildType: 139 if len(sName) > 0: sName += ' / ';139 if sName: sName += ' / '; 140 140 sName += oSeries.oBuildCategory.sType; 141 141 142 142 if fBits & WuiGraphWiz.kfSeriesName_OsArchs: 143 if len(sName) > 0: sName += ' / ';143 if sName: sName += ' / '; 144 144 sName += ' & '.join(oSeries.oBuildCategory.asOsArches); 145 145 146 146 if fBits & WuiGraphWiz.kfSeriesName_TestCaseArgs: 147 if len(sName) > 0: sName += ' / ';147 if sName: sName += ' / '; 148 148 if oSeries.idTestCaseArgs is not None: 149 149 sName += oSeries.oTestCase.sName + ':#' + str(oSeries.idTestCaseArgs); … … 151 151 sName += oSeries.oTestCase.sName; 152 152 elif fBits & WuiGraphWiz.kfSeriesName_TestCase: 153 if len(sName) > 0: sName += ' / ';153 if sName: sName += ' / '; 154 154 sName += oSeries.oTestCase.sName; 155 155 156 156 if fBits & WuiGraphWiz.kfSeriesName_TestBox: 157 if len(sName) > 0: sName += ' / ';157 if sName: sName += ' / '; 158 158 sName += oSeries.oTestBox.sName; 159 159 … … 168 168 ); 169 169 sName = self._getSeriesNameFromBits(oSeries, fGraphName); 170 if len(sName) > 0: sName += ' - ';170 if sName: sName += ' - '; 171 171 sName += sSampleName; 172 172 return sName; … … 183 183 return 'Invalid collection type: "%s"' % (oCollection.sType,); 184 184 185 sTestName = ', '.join(oCollection.asTests if len(oCollection.asTests[0])else oCollection.asTests[1:]);185 sTestName = ', '.join(oCollection.asTests if oCollection.asTests[0] else oCollection.asTests[1:]); 186 186 if sTestName == '': 187 187 # Use the testcase name if there is only one for all series. 188 if len(oCollection.aoSeries) == 0:188 if not oCollection.aoSeries: 189 189 return asSampleName[0]; 190 190 if len(oCollection.aoSeries) > 1: … … 243 243 aaoRet.append(aoUnitSeries[:cMaxPerGraph]); 244 244 aoUnitSeries = aoUnitSeries[cMaxPerGraph:]; 245 if len(aoUnitSeries) > 0:245 if aoUnitSeries: 246 246 aaoRet.append(aoUnitSeries); 247 247 … … 462 462 oBuildCat.idBuildCategory, 463 463 oBuildCat.sProduct, oBuildCat.sBranch, oBuildCat.sType, ' & '.join(oBuildCat.asOsArches) ); 464 assert len(aidBuildCategories) == 0; # SQL should return all currently selected.464 assert not aidBuildCategories; # SQL should return all currently selected. 465 465 466 466 sEnd += ' </ol>\n' \ … … 542 542 WuiMain.ksParamReportSubjectIds, sSampleName ); 543 543 544 if len(oCollection.aoSeries) > 0:544 if oCollection.aoSeries: 545 545 # 546 546 # Split the series into sub-graphs as needed and produce SVGs. -
trunk/src/VBox/ValidationKit/testmanager/webui/wuihlpform.py
r63842 r65984 341 341 342 342 self._addLabel(sName, sLabel, 'list'); 343 if len(aoRows) == 0:343 if not aoRows: 344 344 return self._add('No items</div></div></li>') 345 345 sNameEscaped = escapeAttr(sName); … … 648 648 assert len(aoTestGroupMembers) <= len(aoAllTestCases); 649 649 self._addLabel(sName, sLabel); 650 if len(aoAllTestCases) == 0:650 if not aoAllTestCases: 651 651 return self._add('<li>No testcases available.</li>\n') 652 652 … … 752 752 753 753 754 if len(oTestCase.aoTestCaseArgs) == 0:754 if not oTestCase.aoTestCaseArgs: 755 755 self._add(u' <td></td> <td></td> <td></td> <td></td>\n' 756 756 u' </tr>\n'); … … 767 767 assert len(aoSchedGroupMembers) <= len(aoAllTestGroups); 768 768 self._addLabel(sName, sLabel); 769 if len(aoAllTestGroups) == 0:769 if not aoAllTestGroups: 770 770 return self._add(u'<li>No test groups available.</li>\n') 771 771 … … 874 874 875 875 self._addLabel(sName, sLabel); 876 if len(aoAllSchedGroups) == 0:876 if not aoAllSchedGroups: 877 877 return self._add('<li>No scheduling groups available.</li>\n') 878 878 -
trunk/src/VBox/ValidationKit/testmanager/webui/wuilogviewer.py
r62484 r65984 167 167 iLine += 1; 168 168 offCur += len(sLine); 169 if offCur >= offFile or len(sLine) == 0:169 if offCur >= offFile or not sLine: 170 170 break; 171 171 while isCurLineAtOrAfterCurTs(): … … 197 197 iLine += 1; 198 198 offCur += len(sLine); 199 if len(sLine) == 0:199 if not sLine: 200 200 break; 201 201 asLines.append('<pre/></div>\n'); -
trunk/src/VBox/ValidationKit/testmanager/webui/wuimain.py
r65917 r65984 933 933 sHtml += u' <dl>\n'; 934 934 for oCrit in oFilter.aCriteria: 935 if len(oCrit.aoPossible) > 0:935 if oCrit.aoPossible: 936 936 if ( oCrit.oSub is None \ 937 937 and ( oCrit.sState == oCrit.ksState_Selected \ … … 1231 1231 while True: 1232 1232 abChunk = oFile.read(262144); 1233 if len(abChunk) == 0:1233 if not abChunk: 1234 1234 break; 1235 1235 self._oSrvGlue.writeRaw(abChunk); -
trunk/src/VBox/ValidationKit/testmanager/webui/wuireport.py
r65868 r65984 258 258 sHtml = u'<h4>Movements:</h4>\n' \ 259 259 u'<ul>\n'; 260 if len(oSet.aoEnterInfo) == 0 and len(oSet.aoLeaveInfo) == 0:260 if not oSet.aoEnterInfo and not oSet.aoLeaveInfo: 261 261 sHtml += u'<li>No changes</li>\n'; 262 262 else: … … 358 358 # Figure the sorting column. 359 359 if self._aiSortColumns is not None \ 360 and len(self._aiSortColumns) > 0\360 and self._aiSortColumns \ 361 361 and abs(self._aiSortColumns[0]) <= len(oSet.aoPeriods): 362 362 iSortColumn = abs(self._aiSortColumns[0]); … … 562 562 def _formatName(oTestCaseArgs): 563 563 """ Internal helper for formatting the testcase name. """ 564 if oTestCaseArgs.sSubName is not None and len(oTestCaseArgs.sSubName) > 0:564 if oTestCaseArgs.sSubName: 565 565 sName = u'%s / %s' % ( oTestCaseArgs.oTestCase.sName, oTestCaseArgs.sSubName, ); 566 566 else: -
trunk/src/VBox/ValidationKit/testmanager/webui/wuitestresult.py
r65914 r65984 91 91 92 92 for aoSubRows in aoTableContent: 93 if len(aoSubRows) == 0:93 if not aoSubRows: 94 94 continue; # Can happen if there is no testsuit. 95 95 oCaption = aoSubRows[0]; … … 194 194 195 195 196 if len(oTestResult.aoChildren) == 0\196 if not oTestResult.aoChildren \ 197 197 and len(oTestResult.aoValues) + len(oTestResult.aoMsgs) + len(oTestResult.aoFiles) == 0: 198 198 # Leaf - single row. … … 352 352 oTestResult.oReason.oFailureReason.sShort, ); 353 353 sCommentHtml = ''; 354 if oTestResult.oReason.sComment is not None and len(oTestResult.oReason.sComment.strip()) > 0:354 if oTestResult.oReason.sComment and oTestResult.oReason.sComment.strip(): 355 355 sCommentHtml = '<br>' + webutils.escapeElem(oTestResult.oReason.sComment.strip()); 356 356 sCommentHtml = sCommentHtml.replace('\n', '<br>'); … … 400 400 # We need the failure reasons for the combobox. 401 401 aoFailureReasons = FailureReasonLogic(self._oDisp.getDb()).fetchForCombo('Test Sheriff, you figure out why!'); 402 assert len(aoFailureReasons) > 0;402 assert aoFailureReasons; 403 403 404 404 # For now we'll use the standard form helper. … … 454 454 def getTcDepsHtmlList(aoTestCaseData): 455 455 """Get HTML <ul> list of Test Case name items""" 456 if len(aoTestCaseData) > 0:456 if aoTestCaseData: 457 457 sTmp = '<ul>' 458 458 for oTestCaseData in aoTestCaseData: … … 465 465 def getGrDepsHtmlList(aoGlobalResourceData): 466 466 """Get HTML <ul> list of Global Resource name items""" 467 if len(aoGlobalResourceData) > 0:467 if aoGlobalResourceData: 468 468 sTmp = '<ul>' 469 469 for oGlobalResourceData in aoGlobalResourceData: … … 495 495 ]), 496 496 ]; 497 if oTestCaseEx.sDescription is not None and len(oTestCaseEx.sDescription) > 0:497 if oTestCaseEx.sDescription: 498 498 aoResultRows.append([oTestCaseEx.sDescription,]); 499 499 aoResultRows.append([ 'Status:', WuiRawHtml('<span class="tmspan-status-%s">%s</span>' … … 548 548 if oTestCaseEx.sValidationKitZips is not None and oTestCaseEx.sValidationKitZips != '@VALIDATIONKIT_ZIP@': 549 549 aoResultRows.append([ 'Validation Kit:', oTestCaseEx.sValidationKitZips ]); 550 if oTestCaseEx.aoDepTestCases is not None and len(oTestCaseEx.aoDepTestCases) > 0:550 if oTestCaseEx.aoDepTestCases: 551 551 aoResultRows.append([ 'Prereq. Test Cases:', oTestCaseEx.aoDepTestCases, getTcDepsHtmlList ]); 552 if oTestCaseEx.aoDepGlobalResources is not None and len(oTestCaseEx.aoDepGlobalResources) > 0:552 if oTestCaseEx.aoDepGlobalResources: 553 553 aoResultRows.append([ 'Global Resources:', oTestCaseEx.aoDepGlobalResources, getGrDepsHtmlList ]); 554 554 … … 616 616 tsNow = tsReportEffectiveDate, fBracketed = False), ]), 617 617 ]; 618 if oTestBox.sDescription is not None and len(oTestBox.sDescription) > 0:618 if oTestBox.sDescription: 619 619 aoTestBoxRows.append([oTestBox.sDescription, ]); 620 620 aoTestBoxRows += [ … … 856 856 857 857 # Testcase 858 if oEntry.sSubName is not None and len(oEntry.sSubName) > 0:858 if oEntry.sSubName: 859 859 sTestCaseName = '%s / %s' % (oEntry.sTestCaseName, oEntry.sSubName,); 860 860 else: … … 868 868 sReasonTitle += 'Assigned:\t%s\n' % ( self.formatTsShort(oIt.tsFailureReasonAssigned), ); 869 869 sReasonTitle += 'By User: \t%s\n' % ( oIt.oFailureReasonAssigner.sUsername, ); 870 if oIt.sFailureReasonComment is not None and len(oIt.sFailureReasonComment) > 0:870 if oIt.sFailureReasonComment: 871 871 sReasonTitle += 'Comment: \t%s\n' % ( oIt.sFailureReasonComment, ); 872 872 if oIt.oFailureReason.iTicket is not None and oIt.oFailureReason.iTicket > 0: … … 874 874 for i, sUrl in enumerate(oIt.oFailureReason.asUrls): 875 875 sUrl = sUrl.strip(); 876 if len(sUrl) > 0:876 if sUrl: 877 877 sReasonTitle += 'URL#%u: \t%s\n' % ( i, sUrl, ); 878 878 aoReasons.append(WuiTmLink(oIt.oFailureReason.sShort, WuiAdmin.ksScriptName,
注意:
瀏覽 TracChangeset
來幫助您使用更動檢視器