示例#1
0
    def __init__(self, bug=None, url=None, connection=None):
        assert len([i for i in (bug, url) if i]) == 1, "Bug needs one argument, either <bug> or <url>"
        assert connection, "Connection object needed"

        [self.__bugnumber, self.__url, self.__status, self.__importance,
            self.__sourcepackage, self.__summary] = [None]*6

        self.__connection = connection
        self.__saved_hash = None

        if bug:
            if isinstance(bug, str):
                bug = int(bug)
                
            if isinstance(bug, int):
                self.__bugnumber = bug
                self.__url = bugnumber_to_url(self.__bugnumber)
            elif isinstance(bug, LPBugInfo):
                self.__bugnumber = int(bug)
                self.__url = bug.url
                self.__status = bug.status
                self.__importance = bug.importance
                self.__sourcepackage = bug.sourcepackage
                self.__summary = bug.summary
                self.__saved_hash = hash(bug)
            else:
                assert None, "type of bugnumber must be INT or STRING or bugnumber must be an instance of BugInfo, %s" %bug
        elif url:
            #TODO: check for valid url
            self.__url = valid_lp_url(url, BASEURL.BUG)
            assert self.__url, "Invalid launchpad url %s" %url
            self.__bugnumber = int(self.__url.split("/")[-1])
示例#2
0
 def _parse():
     rows = xmldoc.xpathEval('//table[@class="sortable listing" and @id="latestwatches"]/tbody//tr')
     for row in rows:
         lp_url, lp_bugnr, lp_title, watch_url, watch_bugnr, watch_status, private = [None] * 7
         data = row.xpathEval("td")
         parse_error(len(data) == 3, "BugPage.parse_html_bugtracker_bugpage.len_td=%s" %len(data), xml=row, url=debug_url)
         x = data[0].xpathEval("a")
         if x:
             lp_url = x[0].prop("href")
             lp_bugnr = int(lp_url.split("/").pop())
             lp_title = x[0].content.split(":", 1)[-1].strip("\n ")
             
             x = data[1].xpathEval("a")
             parse_error(x, "BugPage.parse_html_bugtracker_bugpage.watch_url", xml=row, url=debug_url)
             watch_url = x[0].prop("href")
             watch_bugnr = x[0].content
             
             watch_status = data[2].content
         else:
             x = data[0].content
             parse_error("(Private)" in x, "BugPage.parse_html_bugtracker_bugpage.private", xml=row, url=debug_url)
             private = True
             x = x.split("#").pop()
             lp_bugnr = int(x.split(":").pop(0))
             lp_url = bugnumber_to_url(lp_bugnr)
         b = BugInfoWatches( lp_url, lp_bugnr, lp_title, watch_url,
                             watch_bugnr, watch_status, bool(private), all_tasks)
         yield b
示例#3
0
 def url(self):
     return self.__url or bugnumber_to_url(self.bugnumber)