class AbstractReviewQueue(AbstractQueue, PersistentPatchCollectionDelegate, StepSequenceErrorHandler): def __init__(self, options=None): AbstractQueue.__init__(self, options) # PersistentPatchCollectionDelegate methods def collection_name(self): return self.name def fetch_potential_patch_ids(self): return self.tool.bugs.queries.fetch_attachment_ids_from_review_queue() def status_server(self): return self.tool.status_bot # AbstractQueue methods def begin_work_queue(self): AbstractQueue.begin_work_queue(self) self._patches = PersistentPatchCollection(self) def next_work_item(self): patch_id = self._patches.next() if patch_id: return self.tool.bugs.fetch_attachment(patch_id) self._update_status("Empty queue") def should_proceed_with_work_item(self, patch): raise NotImplementedError, "subclasses must implement" def process_work_item(self, patch): raise NotImplementedError, "subclasses must implement" def handle_unexpected_error(self, patch, message): log(message) # StepSequenceErrorHandler methods @classmethod def handle_script_error(cls, tool, state, script_error): log(script_error.message_with_output())
def begin_work_queue(self): AbstractQueue.begin_work_queue(self) self._patches = PersistentPatchCollection(self)