class Request: def parse(self, xml): self.requestid = int(xml.get("id")) self.creator = xml.get("creator") self.type_ = xml.find("action").get("type") if self.type_ == "delete": # not much to do return self self.source = xml.find("action/source").get("project") # expanded MD5 or commit revision self.revisionid = xml.find("action/source").get("rev") self.target = xml.find("action/target").get("project") self.state = xml.find("state").get("name") # TODO: support muti-action requests # TODO: parse review history # TODO: add description return self def type(self): return self.type_ def __str__(self): return f"Req {self.requestid} {self.creator} {self.type_} {self.source}->{self.target} {self.state}" def __repr__(self): return f"[{self.__str__()}]"