Changeset 83364 in vbox for trunk/src/VBox/ValidationKit/testmanager/webui
- Timestamp:
- Mar 23, 2020 9:47:01 AM (5 years ago)
- svn:sync-xref-src-repo-rev:
- 136568
- Location:
- trunk/src/VBox/ValidationKit/testmanager/webui
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/ValidationKit/testmanager/webui/wuiadminschedgroup.py
r82968 r83364 35 35 from testmanager.core.schedgroup import SchedGroupData, SchedGroupDataEx; 36 36 from testmanager.core.testgroup import TestGroupData, TestGroupLogic; 37 from testmanager.core.testbox import TestBoxData ;38 from testmanager.webui.wuicontentbase import WuiFormContentBase, WuiListContentBase, WuiTmLink 37 from testmanager.core.testbox import TestBoxData, TestBoxLogic; 38 from testmanager.webui.wuicontentbase import WuiFormContentBase, WuiListContentBase, WuiTmLink, WuiRawHtml; 39 39 40 40 … … 55 55 WuiFormContentBase.__init__(self, oData, sMode, 'SchedGroup', oDisp, sTitle); 56 56 57 # Read additional bits form the DB. 58 self._aoAllTestGroups = TestGroupLogic(oDisp.getDb()).getAll(); 59 60 61 def _populateForm(self, oForm, oData): 57 # Read additional bits form the DB, unless we're in 58 if sMode != WuiFormContentBase.ksMode_Show: 59 self._aoAllRelevantTestGroups = TestGroupLogic(oDisp.getDb()).getAll(); 60 self._aoAllRelevantTestBoxes = TestBoxLogic(oDisp.getDb()).getAll(); 61 else: 62 self._aoAllRelevantTestGroups = [oMember.oTestGroup for oMember in oData.aoMembers]; 63 self._aoAllRelevantTestBoxes = [oMember.oTestBox for oMember in oData.aoTestBoxes]; 64 65 def _populateForm(self, oForm, oData): # type: (WuiHlpForm, SchedGroupDataEx) -> bool 62 66 """ 63 67 Construct an HTML form 64 68 """ 65 69 66 oForm.addIntRO (SchedGroupData.ksParam_idSchedGroup,oData.idSchedGroup, 'ID')67 oForm.addTimestampRO(SchedGroupData.ksParam_tsEffective, 68 oForm.addTimestampRO(SchedGroupData.ksParam_tsExpire, 69 oForm.addIntRO (SchedGroupData.ksParam_uidAuthor,oData.uidAuthor, 'Changed by UID')70 oForm.addText (SchedGroupData.ksParam_sName,oData.sName, 'Name')71 oForm.addText (SchedGroupData.ksParam_sDescription,oData.sDescription, 'Description')72 oForm.addCheckBox (SchedGroupData.ksParam_fEnabled,oData.fEnabled, 'Enabled')73 74 oForm.addComboBox (SchedGroupData.ksParam_enmScheduler,oData.enmScheduler, 'Scheduler type',75 70 oForm.addIntRO( SchedGroupData.ksParam_idSchedGroup, oData.idSchedGroup, 'ID') 71 oForm.addTimestampRO(SchedGroupData.ksParam_tsEffective, oData.tsEffective, 'Last changed') 72 oForm.addTimestampRO(SchedGroupData.ksParam_tsExpire, oData.tsExpire, 'Expires (excl)') 73 oForm.addIntRO( SchedGroupData.ksParam_uidAuthor, oData.uidAuthor, 'Changed by UID') 74 oForm.addText( SchedGroupData.ksParam_sName, oData.sName, 'Name') 75 oForm.addText( SchedGroupData.ksParam_sDescription, oData.sDescription, 'Description') 76 oForm.addCheckBox( SchedGroupData.ksParam_fEnabled, oData.fEnabled, 'Enabled') 77 78 oForm.addComboBox( SchedGroupData.ksParam_enmScheduler, oData.enmScheduler, 'Scheduler type', 79 SchedGroupData.kasSchedulerDesc) 76 80 77 81 aoBuildSrcIds = BuildSourceLogic(self._oDisp.getDb()).fetchForCombo(); 78 oForm.addComboBox (SchedGroupData.ksParam_idBuildSrc,oData.idBuildSrc, 'Build source', aoBuildSrcIds);79 oForm.addComboBox (SchedGroupData.ksParam_idBuildSrcTestSuite,80 82 oForm.addComboBox( SchedGroupData.ksParam_idBuildSrc, oData.idBuildSrc, 'Build source', aoBuildSrcIds); 83 oForm.addComboBox( SchedGroupData.ksParam_idBuildSrcTestSuite, 84 oData.idBuildSrcTestSuite, 'Test suite', aoBuildSrcIds); 81 85 82 86 oForm.addListOfSchedGroupMembers(SchedGroupDataEx.ksParam_aoMembers, 83 oData.aoMembers, self._aoAll TestGroups,'Test groups',87 oData.aoMembers, self._aoAllRelevantTestGroups, 'Test groups', 84 88 fReadOnly = self._sMode == WuiFormContentBase.ksMode_Show); 85 89 86 oForm.addMultilineText (SchedGroupData.ksParam_sComment, oData.sComment, 'Comment'); 90 oForm.addListOfSchedGroupBoxes(SchedGroupDataEx.ksParam_aoTestBoxes, 91 oData.aoTestBoxes, self._aoAllRelevantTestBoxes, 'Test boxes', 92 fReadOnly = self._sMode == WuiFormContentBase.ksMode_Show); 93 94 oForm.addMultilineText(SchedGroupData.ksParam_sComment, oData.sComment, 'Comment'); 87 95 oForm.addSubmit() 88 96 … … 114 122 """ 115 123 from testmanager.webui.wuiadmin import WuiAdmin 116 oEntry = self._aoEntries[iEntry] 124 oEntry = self._aoEntries[iEntry] # type: SchedGroupDataEx 117 125 118 126 oBuildSrc = None; … … 143 151 # Test boxes. 144 152 aoTestBoxes = []; 145 for oTestBox in oEntry.aoTestBoxes: 146 aoTestBoxes.append(WuiTmLink(oTestBox.sName, WuiAdmin.ksScriptName, 147 { WuiAdmin.ksParamAction: WuiAdmin.ksActionTestBoxDetails, 148 TestBoxData.ksParam_idTestBox: oTestBox.idTestBox, 149 WuiAdmin.ksParamEffectiveDate: self._tsEffectiveDate, }, 150 sTitle = '#%s - %s / %s - %s.%s (%s)' 151 % (oTestBox.idTestBox, oTestBox.ip, oTestBox.uuidSystem, oTestBox.sOs, 152 oTestBox.sCpuArch, oTestBox.sOsVersion,))); 153 153 for oRelation in oEntry.aoTestBoxes: 154 oTestBox = oRelation.oTestBox; 155 if oTestBox: 156 aoTestBoxes.append(WuiTmLink(oTestBox.sName, WuiAdmin.ksScriptName, 157 { WuiAdmin.ksParamAction: WuiAdmin.ksActionTestBoxDetails, 158 TestBoxData.ksParam_idTestBox: oTestBox.idTestBox, 159 WuiAdmin.ksParamEffectiveDate: self._tsEffectiveDate, }, 160 sTitle = '#%s - %s / %s - %s.%s (%s)' 161 % (oTestBox.idTestBox, oTestBox.ip, oTestBox.uuidSystem, oTestBox.sOs, 162 oTestBox.sCpuArch, oTestBox.sOsVersion,))); 163 else: 164 aoTestBoxes.append(WuiRawHtml('#%s' % (oRelation.idTestBox,))); 154 165 155 166 # Actions -
trunk/src/VBox/ValidationKit/testmanager/webui/wuihlpform.py
r82968 r83364 40 40 from testmanager.core.testcaseargs import TestCaseArgsData; 41 41 from testmanager.core.testgroup import TestGroupMemberData, TestGroupDataEx; 42 from testmanager.core.testbox import TestBoxDataForSchedGroup; 42 43 43 44 # Python 3 hacks: … … 654 655 self._addLabel(sName, sLabel); 655 656 if not aoAllTestCases: 656 return self._add('<li>No testcases available.</li>\n')657 return self._add('<li>No testcases.</li>\n') 657 658 658 659 self._add(u'<input name="%s" type="hidden" value="%s">\n' … … 763 764 u'</table>\n'); 764 765 765 def addListOfSchedGroupMembers(self, sName, aoSchedGroupMembers, aoAll TestGroups, # pylint: disable=too-many-locals766 def addListOfSchedGroupMembers(self, sName, aoSchedGroupMembers, aoAllRelevantTestGroups, # pylint: disable=too-many-locals 766 767 sLabel, fReadOnly = True): 767 768 """ … … 770 771 if fReadOnly is None or self._fReadOnly: 771 772 fReadOnly = self._fReadOnly; 772 assert len(aoSchedGroupMembers) <= len(aoAll TestGroups);773 assert len(aoSchedGroupMembers) <= len(aoAllRelevantTestGroups); 773 774 self._addLabel(sName, sLabel); 774 if not aoAll TestGroups:775 return self._add(u'<li>No test groups available.</li>\n')775 if not aoAllRelevantTestGroups: 776 return self._add(u'<li>No test groups.</li>\n') 776 777 777 778 self._add(u'<input name="%s" type="hidden" value="%s">\n' 778 779 % ( SchedGroupDataEx.ksParam_aidTestGroups, 779 ','.join([unicode(oTestGroup.idTestGroup) for oTestGroup in aoAll TestGroups]), ));780 ','.join([unicode(oTestGroup.idTestGroup) for oTestGroup in aoAllRelevantTestGroups]), )); 780 781 781 782 self._add(u'<table class="tmformtbl">\n' … … 797 798 oDefMember = SchedGroupMemberData(); 798 799 aoSchedGroupMembers = list(aoSchedGroupMembers); # Copy it so we can pop. 799 for iTestGroup, _ in enumerate(aoAll TestGroups):800 oTestGroup = aoAll TestGroups[iTestGroup];800 for iTestGroup, _ in enumerate(aoAllRelevantTestGroups): 801 oTestGroup = aoAllRelevantTestGroups[iTestGroup]; 801 802 802 803 # Is it a member? … … 844 845 ' selected' if oMember is None or oMember.idTestGroupPreReq is None else '', 845 846 )); 846 for oTestGroup2 in aoAll TestGroups:847 for oTestGroup2 in aoAllRelevantTestGroups: 847 848 if oTestGroup2 != oTestGroup: 848 849 fSelected = oMember is not None and oTestGroup2.idTestGroup == oMember.idTestGroupPreReq; … … 862 863 u'</table>\n'); 863 864 865 def addListOfSchedGroupBoxes(self, sName, aoSchedGroupBoxes, aoAllRelevantTestBoxes, # pylint: disable=too-many-locals 866 sLabel, fReadOnly = True): # (str, list[TestBoxDataEx], list[TestBoxDataEx], str, bool) -> str 867 """ 868 For WuiAdminSchedGroup. 869 """ 870 if fReadOnly is None or self._fReadOnly: 871 fReadOnly = self._fReadOnly; 872 assert len(aoSchedGroupBoxes) <= len(aoAllRelevantTestBoxes); 873 self._addLabel(sName, sLabel); 874 if not aoAllRelevantTestBoxes: 875 return self._add(u'<li>No test boxes.</li>\n') 876 877 self._add(u'<input name="%s" type="hidden" value="%s">\n' 878 % ( SchedGroupDataEx.ksParam_aidTestBoxes, 879 ','.join([unicode(oTestBox.idTestBox) for oTestBox in aoAllRelevantTestBoxes]), )); 880 881 ## @todo replace with tmform-field-list tricks. 882 self._add(u'<table class="tmformtbl">\n' 883 u' <thead>\n' 884 u' <tr>\n' 885 u' <th></th>\n' 886 u' <th>Test Box</th>\n' 887 u' <th>Priority [0..31]</th>\n' 888 u' </tr>\n' 889 u' </thead>\n' 890 u' <tbody>\n' 891 ); 892 893 sCheckBoxAttr = u' readonly onclick="return false" onkeydown="return false"' if fReadOnly else ''; 894 895 oDefMember = TestBoxDataForSchedGroup(); 896 aoSchedGroupBoxes = list(aoSchedGroupBoxes); # Copy it so we can pop. 897 for iTestBox, _ in enumerate(aoAllRelevantTestBoxes): 898 oTestBox = aoAllRelevantTestBoxes[iTestBox]; 899 900 # Is it a member? 901 oMember = None; 902 for i, _ in enumerate(aoSchedGroupBoxes): 903 if aoSchedGroupBoxes[i].oTestBox and aoSchedGroupBoxes[i].oTestBox.idTestBox == oTestBox.idTestBox: 904 oMember = aoSchedGroupBoxes.pop(i); 905 break; 906 907 # Start on the rows... 908 sPrefix = u'%s[%d]' % (sName, oTestBox.idTestBox,); 909 self._add(u' <tr class="%s">\n' 910 u' <td>\n' 911 u' <input name="%s[%s]" type="hidden" value="%s">\n' # idTestBox 912 u' <input name="%s[%s]" type="hidden" value="%s">\n' # idSchedGroup 913 u' <input name="%s[%s]" type="hidden" value="%s">\n' # tsExpire 914 u' <input name="%s[%s]" type="hidden" value="%s">\n' # tsEffective 915 u' <input name="%s[%s]" type="hidden" value="%s">\n' # uidAuthor 916 u' <input name="%s" type="checkbox"%s%s value="%d" class="tmform-checkbox" title="#%d - %s">\n' #(list) 917 u' </td>\n' 918 % ( 'tmodd' if iTestBox & 1 else 'tmeven', 919 sPrefix, TestBoxDataForSchedGroup.ksParam_idTestBox, oTestBox.idTestBox, 920 sPrefix, TestBoxDataForSchedGroup.ksParam_idSchedGroup, -1 if oMember is None else oMember.idSchedGroup, 921 sPrefix, TestBoxDataForSchedGroup.ksParam_tsExpire, '' if oMember is None else oMember.tsExpire, 922 sPrefix, TestBoxDataForSchedGroup.ksParam_tsEffective, '' if oMember is None else oMember.tsEffective, 923 sPrefix, TestBoxDataForSchedGroup.ksParam_uidAuthor, '' if oMember is None else oMember.uidAuthor, 924 SchedGroupDataEx.ksParam_aoTestBoxes, '' if oMember is None else ' checked', sCheckBoxAttr, 925 oTestBox.idTestBox, oTestBox.idTestBox, escapeElem(oTestBox.sName), 926 )); 927 self._add(u' <td align="left">%s</td>\n' % ( escapeElem(oTestBox.sName), )); 928 929 self._add(u' <td align="center">\n' 930 u' <input name="%s[%s]" type="text" value="%s" style="max-width:3em;" %s>\n' 931 u' </td>\n' 932 % ( sPrefix, 933 TestBoxDataForSchedGroup.ksParam_iSchedPriority, 934 (oMember if oMember is not None else oDefMember).iSchedPriority, 935 ' readonly class="tmform-input-readonly"' if fReadOnly else '', )); 936 937 self._add(u' </tr>\n'); 938 return self._add(u' </tbody>\n' 939 u'</table>\n'); 940 864 941 def addListOfSchedGroupsForTestBox(self, sName, aoInSchedGroups, aoAllSchedGroups, sLabel, # pylint: disable=too-many-locals 865 942 fReadOnly = None): … … 880 957 self._addLabel(sName, sLabel); 881 958 if not aoAllSchedGroups: 882 return self._add('<li>No scheduling groups available.</li>\n')959 return self._add('<li>No scheduling groups.</li>\n') 883 960 884 961 # Add special parameter with all the scheduling group IDs in the form.
Note:
See TracChangeset
for help on using the changeset viewer.