def _parse(): if not xmldoc.xpathEval('//table[@id="milestone_specs"]'): xmldoc.freeDoc() return blueprinttable = xmldoc.xpathEval('//table[@id="milestone_specs"]//tbody//tr') for row in blueprinttable: m = row.xpathEval('td[1]//a') assert m url = m[0].prop("href") title = m[0].prop("title") spec = m[0].content m = row.xpathEval('td[2]//span[not(@class="sortkey")]') assert m priority = m[0].prop("class") # is the mentorship-icon used? mentorship = bool(row.xpathEval('td[2]//img[@alt="mentoring"]')) #add INFORMATIONAL m = row.xpathEval('td[3]/a') if m: assignee = user.parse_html_user(m[0]) else: assignee = user(None) m = row.xpathEval('td[4]//span[not(@class="sortkey")]') assert m delivery = m[0].prop("class") yield BPInfo(priority, spec, title, url, None, delivery, assignee, None, mentorship)
def parse(self): if self.parsed: return True for i in self.xmldoc: x = user.parse_html_user(i) self.add(x) self.parsed = True
def _get_user(xml, path): m = xml.xpathEval(path) if m: return user.parse_html_user(m[0]) else: m = xml.xpathEval("td") assert m assert "None" in m[0].content # in this case this attribute is set to 'None' return user(None)
def parse(self): if self.parsed: return True for i in self.xmldoc: m = i.xpathEval("a") assert m r_user = user.parse_html_user(m[0]) m = i.xpathEval("strong/a") assert m r_target = user.parse_html_user(m[0]) m = i.xpathEval('div[@style="font-style: italic;"]') assert m r_text = m[0].content self.append(_Request(r_user,r_target,r_text)) self.parsed = True
def parse(self): if self.parsed: return True for i in self.xmldoc: m = i.xpathEval("a") assert m x = user.parse_html_user(m[0]) m = i.xpathEval("img") assert m if "inessential" in m[0].prop("src"): self["inessential"].add(x) elif "essential" in m[0].prop("src"): self["essential"].add(x) else: assert None, "unsupported type" self.parsed = True
def _parse(): if not xmldoc.xpathEval('//table[@id="speclisting"]'): xmldoc.freeDoc() return blueprinttable = xmldoc.xpathEval('//table[@id="speclisting"]//tbody//tr') for row in blueprinttable: m = row.xpathEval('td[1]//span[not(@class="sortkey")]') assert m priority = m[0].prop("class") m = row.xpathEval('td[2]//a') assert m url = m[0].prop("href") title = m[0].prop("title") spec = m[0].content mentorship = bool(row.xpathEval('td[2]//img[@alt="mentoring"]')) #add INFORMATIONAL m = row.xpathEval('td[3]//span[not(@class="sortkey")]') assert m status = m[0].prop("class") m = row.xpathEval('td[4]//span[not(@class="sortkey")]') assert m delivery = m[0].prop("class") m = row.xpathEval('td[5]//a') if m: assignee = user.parse_html_user(m[0]) else: assignee = user(None) m = row.xpathEval('td[6]//a') # on personal blueprint pages this column does not exist if m: project = Project(m[0].prop("href"), m[0].content) else: project = None yield BPInfo(priority, spec, title, url, status, delivery, assignee, project, mentorship)
def _parse(): bug_table_rows = xmldoc.xpathEval('//table[@id="milestone_bugtasks"]//tbody//tr') for row in bug_table_rows: x = row.xpathEval('td[1]//span/img') parse_error(x, "BugPage.parse_html_milestone_bugpage.importance", xml=row, url=debug_url) importance = x[0].prop("alt").strip("()").title() x = row.xpathEval('td[2]') parse_error(x, "BugPage.parse_html_milestone_bugpage.nr", xml=row, url=debug_url) nr = x[0].content x = row.xpathEval('td[3]/a') parse_error(x, "BugPage.parse_html_milestone_bugpage.url", xml=row, url=debug_url) url = x[0].prop("href") summary = x[0].content x = row.xpathEval('td[5]//a') if x: usr = user.parse_html_user(x[0]) else: usr = user(None) x = row.xpathEval('td[6]/span[2]') parse_error(x, "BugPage.parse_html_milestone_bugpage.status", xml=row, url=debug_url) status = x[0].content x = BugInfo(nr, url, status, importance, summary, None, all_tasks) x.assignee = usr yield x