def find_parse_function(connection, url, all_tasks): url = valid_lp_url(url, BASEURL.BLUEPRINTLIST) lp_content = connection.get(url) xmldoc = libxml2.htmlParseDoc(unicode_for_libxml2(lp_content.text), "UTF-8") u = urlparse.urlsplit(url) if "+milestone" in u[2]: result = BlueprintPage.parse_html_milestone_specs(xmldoc, all_tasks, url) else: result = BlueprintPage.parse_html_blueprintpage(xmldoc, all_tasks, url) return result
def find_parse_function(connection, url, all_tasks): url = valid_lp_url(url, BASEURL.BUGPAGE) lp_content = connection.get(url) xmldoc = libxml2.htmlParseDoc(unicode_for_libxml2(lp_content.text), "UTF-8") u = urlparse.urlsplit(url) if "+milestone" in u[2]: result = BugPage.parse_html_milestone_bugpage(xmldoc, all_tasks, url) elif "+expirable-bugs" in u[2]: result = BugPage.parse_html_expirable_bugpage(xmldoc, all_tasks, url) elif "bugs/bugtrackers" in u[2]: result = BugPage.parse_html_bugtracker_bugpage(xmldoc, all_tasks, url) else: result = BugPage.parse_html_bugpage(xmldoc, all_tasks, url) return result
def _parse_page(text): guess_type = UNKNOWNERROR errors = {} t = libxml2.htmlParseDoc(unicode_for_libxml2(text), "UTF-8") e = t.xpathEval('//tr[@class="error"]') for i in e: msg = "" m = i.xpathEval('td/div[@class="message"]') if m: msg = m[0].content m = i.xpathEval("td/div/input | td/div/textarea") assert m val = m[0].prop("name") errors[val] = msg return guess_type, errors
def __init__(self, url, connection): LPBluePrint.__init__(self, url, connection) page = self._connection.get(self.url) #TODO: check redirection self.xmldoc = libxml2.htmlParseDoc(unicode_for_libxml2(page.text), "UTF-8") self.__info_box = InfoBox(self.xmldoc.xpathEval('//table[@class="summary"]/tbody')) self.__subscribers = Subscribers(self.xmldoc.xpathEval('//div[@id="portlet-subscribers"]/div[@class="portletBody"]//div')) self.__lifecycle = Lifecycle(self.xmldoc.xpathEval('//div[@id="portlet-lifecycle"]/div/table/tbody')) self.__related_bugs = RelatedBugs(self.xmldoc.xpathEval('//div[@id="portlet-related-bugs"]/div/ul//li')) self.__overview = Overview(self.xmldoc.xpathEval('//table[@class="summary"]/following-sibling::p[1]')) self.__full_spec = FullSpec(self.xmldoc.xpathEval('//table[@class="summary"]/following-sibling::ul[1]/li/a')) self.__mentors = Mentors(self.xmldoc.xpathEval('//table[@class="summary"]/following-sibling::p[2]//a')) self.__whiteboard = WhiteBoard(self.xmldoc.xpathEval('//h2[contains(.,"Whiteboard")]/following-sibling::div')) self.__feedback_request = FeedbackRequest(self.xmldoc.xpathEval('//div[@id="portlet-feedback"]/div/ul//li'))