skip according to db state

This commit is contained in:
Ludwig Nussel 2015-05-22 11:04:54 +02:00
parent 80ffcadd8b
commit 03762e8002

View File

@ -137,10 +137,15 @@ class ABIChecker(ReviewBot.ReviewBot):
def __init__(self, *args, **kwargs):
self.no_review = False
self.force = False
if 'no_review' in kwargs:
if kwargs['no_review'] == True:
self.no_review = True
del kwargs['no_review']
if 'force' in kwargs:
if kwargs['force'] == True:
self.force = True
del kwargs['force']
ReviewBot.ReviewBot.__init__(self, *args, **kwargs)
@ -357,15 +362,23 @@ class ABIChecker(ReviewBot.ReviewBot):
def check_one_request(self, req):
self.dblogger.request_id = req.reqid
self.review_messages = ReviewBot.ReviewBot.DEFAULT_REVIEW_MESSAGES
if self.no_review and not self.force and self.check_request_already_done(req.reqid):
self.logger.debug("skip request %s which is already done")
# TODO: check if the request was seen before and we
# didn't reach a final state for too long
return None
commentid, state, result = self.find_abichecker_comment(req)
if self.no_review:
if state == 'done':
self.logger.debug("request %s already done, result: %s"%(req.reqid, result))
return
## using comments instead of db would be an options for bots
## that use no db
# if self.no_review:
# if state == 'done':
# self.logger.debug("request %s already done, result: %s"%(req.reqid, result))
# return
self.dblogger.request_id = req.reqid
self.reports = []
self.text_summary = ''
@ -397,6 +410,16 @@ class ABIChecker(ReviewBot.ReviewBot):
return ret
def check_request_already_done(self, reqid):
try:
request = self.session.query(DB.Request).filter(DB.Request.id == reqid).one()
if request.state == 'done':
return True
except sqlalchemy.orm.exc.NoResultFound, e:
pass
return False
def save_reports_to_db(self, req, state, result):
try:
request = self.session.query(DB.Request).filter(DB.Request.id == req.reqid).one()
@ -859,6 +882,7 @@ class CommandLineInterface(ReviewBot.CommandLineInterface):
def get_optparser(self):
parser = ReviewBot.CommandLineInterface.get_optparser(self)
parser.add_option("--force", action="store_true", help="recheck requests that are already considered done")
parser.add_option("--no-review", action="store_true", help="don't actually accept or decline, just comment")
parser.add_option("--web-url", metavar="URL", help="URL of web service")
return parser
@ -886,6 +910,7 @@ class CommandLineInterface(ReviewBot.CommandLineInterface):
dryrun = self.options.dry, \
no_review = self.options.no_review, \
user = user, \
force = self.options.force, \
logger = self.logger)
@cmdln.option('-r', '--revision', metavar="number", type="int", help="revision number")