in crashclouseau/buginfo.py [0:0]
def get_bugs(signature, wait=True):
# return a dict: bugid => buginfo
# if buginfo is None => security bug
if not signature:
return {}
logger.info("Get bugs for signature {}: started.".format(signature))
def bug_handler(bug, data):
if "cf_crash_signature" in bug:
if signature in utils.get_signatures([bug["cf_crash_signature"]]):
data[bug["id"]] = bug
del bug["cf_crash_signature"]
start_date = pytz.utc.localize(datetime.utcnow())
start_date -= relativedelta(hours=2)
data = {}
bz = Bugzilla(
get_bz_search(signature, start_date), bughandler=bug_handler, bugdata=data
).get_data()
bugs = socorro.Bugs.get_bugs([signature])[signature]
bz.wait()
bz_bugs = set(data.keys())
old_bugs = []
for bug in bugs:
if bug not in bz_bugs:
old_bugs.append(bug)
# the bug is in Socorro and not in search query
data[bug] = None
bz = Bugzilla(
bugids=old_bugs, include_fields=BZ_FIELDS, bughandler=bug_handler, bugdata=data
)
if wait:
bz.wait()
logger.info("Get bugs: finished.")
return data
logger.info("Get bugs: finished.")
return bz, data