|
17 | 17 | logger = regzbot.logger |
18 | 18 |
|
19 | 19 |
|
20 | | - |
21 | 20 | def _web_now(): |
22 | 21 | mail_now = regzbot._TESTING.get("mail_now") |
23 | 22 | if mail_now is not None: |
@@ -799,7 +798,7 @@ def create_individual_page(cls, htmlpages, unhandled_count, regression): |
799 | 798 | ) |
800 | 799 |
|
801 | 800 | @classmethod |
802 | | - def createpage_compilation(cls, htmlpages, unhandled_count, categories, pagename): |
| 801 | + def build_compilation(cls, htmlpages, unhandled_count, categories, pagename): |
803 | 802 | tablecolumns = 3 |
804 | 803 | yattagdoc = yattag.Doc() |
805 | 804 | cls.outpage_head(yattagdoc) |
@@ -830,8 +829,12 @@ def createpage_compilation(cls, htmlpages, unhandled_count, categories, pagename |
830 | 829 | with yattagdoc.tag("td", style="width: 100px;"): |
831 | 830 | yattagdoc.text(regressionweb.treename) |
832 | 831 | cls.outpage_footer(yattagdoc, unhandled_count) |
| 832 | + return yattagdoc |
833 | 833 |
|
834 | | - cls.outpage_write(pagename, yattagdoc) |
| 834 | + @classmethod |
| 835 | + def createpage_compilation(cls, htmlpages, unhandled_count, categories, pagename): |
| 836 | + yattagdoc = cls.build_compilation(htmlpages, unhandled_count, categories, pagename) |
| 837 | + cls.outpage_write(pagename, yattagdoc) |
835 | 838 |
|
836 | 839 | @classmethod |
837 | 840 | def create_events(cls, directory, unhandled_count, htmlpages, eventslist): |
@@ -1109,24 +1112,22 @@ def regression_to_json(cls, regression): |
1109 | 1112 | } |
1110 | 1113 |
|
1111 | 1114 | @classmethod |
1112 | | - def compile(cls): |
1113 | | - logger.debug("[webpages] generating") |
| 1115 | + def _events_gmtime_offset(cls): |
| 1116 | + events_gmtime_offset = int(_web_now().timestamp()) - 604800 |
| 1117 | + if regzbot.is_running_citesting("offline"): |
| 1118 | + events_gmtime_offset = int(_web_now().timestamp()) - 604800 * 52 * 10 |
| 1119 | + return events_gmtime_offset |
1114 | 1120 |
|
| 1121 | + @classmethod |
| 1122 | + def prepare(cls): |
1115 | 1123 | # these are the pages we are going to create |
1116 | 1124 | htmlpages = ("next", "mainline", "stable", "new", "all", "resolved", "inconclusive") |
1117 | | - |
1118 | | - # handle this page first, as we need something from it anyway |
1119 | | - unhandled_count = cls.create_unhandled(regzbot.WEBPAGEDIR, htmlpages) |
| 1125 | + unhandled_count = len(list(UnhandledEventWeb.get_all())) |
| 1126 | + events_gmtime_offset = cls._events_gmtime_offset() |
1120 | 1127 |
|
1121 | 1128 | # gather everything we need |
1122 | 1129 | regressionslist = list() |
1123 | 1130 | eventslist = list() |
1124 | | - events_gmtime_offset = ( |
1125 | | - int(_web_now().timestamp()) - 604800 |
1126 | | - ) |
1127 | | - if regzbot.is_running_citesting("offline"): |
1128 | | - events_gmtime_offset = 604800 * 52 * 10 |
1129 | | - |
1130 | 1131 | json_data = list() |
1131 | 1132 | for regression in RegressionWeb.get_all(): |
1132 | 1133 | json_data.append(cls.regression_to_json(regression)) |
@@ -1164,12 +1165,28 @@ def compile(cls): |
1164 | 1165 | ) |
1165 | 1166 | ) |
1166 | 1167 |
|
1167 | | - cls.create_scriptfile_reldate() |
1168 | | - |
1169 | 1168 | eventslist.sort(key=lambda x: x["gmtime"], reverse=True) |
| 1169 | + return { |
| 1170 | + "htmlpages": htmlpages, |
| 1171 | + "unhandled_count": unhandled_count, |
| 1172 | + "regressionslist": regressionslist, |
| 1173 | + "json_data": json_data, |
| 1174 | + "eventslist": eventslist, |
| 1175 | + } |
| 1176 | + |
| 1177 | + @classmethod |
| 1178 | + def publish(cls, prepared): |
| 1179 | + htmlpages = prepared["htmlpages"] |
| 1180 | + unhandled_count = prepared["unhandled_count"] |
| 1181 | + regressionslist = prepared["regressionslist"] |
| 1182 | + json_data = prepared["json_data"] |
| 1183 | + eventslist = prepared["eventslist"] |
| 1184 | + |
| 1185 | + # handle this page first, as we need something from it anyway |
| 1186 | + cls.create_unhandled(regzbot.WEBPAGEDIR, htmlpages) |
| 1187 | + cls.create_scriptfile_reldate() |
1170 | 1188 | cls.create_events(regzbot.WEBPAGEDIR, unhandled_count, htmlpages, eventslist) |
1171 | 1189 | # we don't need this anymore now that we iterated over all regressions |
1172 | | - eventslist = events_gmtime_offset = None |
1173 | 1190 |
|
1174 | 1191 | # create the page listing all regressions, sorted by date |
1175 | 1192 | regressionslist.sort(key=lambda x: x.gmtime_report, reverse=True) |
@@ -1230,4 +1247,24 @@ def compile(cls): |
1230 | 1247 | with open(os.path.join(regzbot.WEBPAGEDIR, "regressions.json"), "w") as jsonfile: |
1231 | 1248 | jsonfile.write(json.dumps(json_data)) |
1232 | 1249 |
|
| 1250 | + @classmethod |
| 1251 | + def compile(cls): |
| 1252 | + logger.debug("[webpages] generating") |
| 1253 | + cls.publish(cls.prepare()) |
1233 | 1254 | logger.debug("[webpages] generated") |
| 1255 | + |
| 1256 | + |
| 1257 | +def dumpall_web(): |
| 1258 | + prepared = RegExportWeb.prepare() |
| 1259 | + regressionslist = prepared["regressionslist"] |
| 1260 | + regressionslist.sort(key=lambda x: x.gmtime_activity, reverse=True) |
| 1261 | + categories = RegExportWeb.categorize(regressionslist) |
| 1262 | + mainline = categories.get("mainline", {}) |
| 1263 | + if not any(section["entries"] for section in mainline.values()): |
| 1264 | + return |
| 1265 | + |
| 1266 | + doc = RegExportWeb.build_compilation( |
| 1267 | + prepared["htmlpages"], prepared["unhandled_count"], mainline, "mainline" |
| 1268 | + ) |
| 1269 | + yield yattag.indent(doc.getvalue()) |
| 1270 | + yield "\n" |
0 commit comments