| @@ -550,7 +550,7 @@ class AFCStatistics(Task): | |||||
| for template in code.filter_templates(): | for template in code.filter_templates(): | ||||
| name = template.name.strip().lower() | name = template.name.strip().lower() | ||||
| if name == "afc submission": | if name == "afc submission": | ||||
| if template.has(1): | |||||
| if template.has(1, ignore_empty=True): | |||||
| status = template.get(1).value.strip().upper() | status = template.get(1).value.strip().upper() | ||||
| statuses.append(status if status in valid else "P") | statuses.append(status if status in valid else "P") | ||||
| else: | else: | ||||
| @@ -625,26 +625,26 @@ class AFCStatistics(Task): | |||||
| def get_pending(self, pageid, content): | def get_pending(self, pageid, content): | ||||
| """Return (submitter, submit_ts, submit_revid) for the given page.""" | """Return (submitter, submit_ts, submit_revid) for the given page.""" | ||||
| check = lambda tmpl: not tmpl.has(1) or tmpl.get(1).value.strip().upper() == "P" | |||||
| res = self._get_status_helper(pageid, content, check, "u", "ts") | |||||
| res = self._get_status_helper(pageid, content, ("P", ""), ("u", "ts")) | |||||
| return res or self._search_history(pageid, self.CHART_PEND, ["P"], []) | return res or self._search_history(pageid, self.CHART_PEND, ["P"], []) | ||||
| def get_decline(self, pageid, content): | def get_decline(self, pageid, content): | ||||
| """Return (decliner, decline_ts, decline_revid) for the given page.""" | """Return (decliner, decline_ts, decline_revid) for the given page.""" | ||||
| check = lambda tmpl: tmpl.has(1) and tmpl.get(1).value.strip().upper() == "D" | |||||
| res = self._get_status_helper( | |||||
| pageid, content, check, "decliner", "declinets") | |||||
| params = ("decliner", "declinets") | |||||
| res = self._get_status_helper(pageid, content, ("D"), params) | |||||
| return res or self._search_history( | return res or self._search_history( | ||||
| pageid, self.CHART_DECLINE, ["D"], ["R", "P", "T"]) | pageid, self.CHART_DECLINE, ["D"], ["R", "P", "T"]) | ||||
| def _get_status_helper(self, pageid, content, check, param_u, param_ts): | |||||
| def _get_status_helper(self, pageid, content, statuses, params): | |||||
| """Helper function for get_pending() and get_decline().""" | """Helper function for get_pending() and get_decline().""" | ||||
| submits = [] | submits = [] | ||||
| code = mwparserfromhell.parse(content) | code = mwparserfromhell.parse(content) | ||||
| for tmpl in code.filter_templates(): | for tmpl in code.filter_templates(): | ||||
| if tmpl.name.strip().lower() == "afc submission" and check(tmpl): | |||||
| if tmpl.has(param_u) and tmpl.has(param_ts): | |||||
| submits.append((tmpl.get(param_u), tmpl.get(param_ts))) | |||||
| status = tmpl.get(1).value.strip().upper() if tmpl.has(1) else "P" | |||||
| if tmpl.name.strip().lower() == "afc submission": | |||||
| if all([tmpl.has(par, ignore_empty=True) for par in params]): | |||||
| if status in statuses: | |||||
| submits.append([tmpl.get(par) for par in params]) | |||||
| if not submits: | if not submits: | ||||
| return None | return None | ||||
| latest = max(submits, lambda pair: pair[1]) | latest = max(submits, lambda pair: pair[1]) | ||||