def get_bugs()

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