crashclouseau/single.py (25 lines of code) (raw):
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this file,
# You can obtain one at http://mozilla.org/MPL/2.0/.
from dateutil.relativedelta import relativedelta
from . import config, inspector, models, pushlog
def filelog(filenames, buildid, channel, ndays):
if filenames:
res = None
if models.Node.has_channel(channel):
res = models.Changeset.find(filenames, buildid, channel, ndays)
if res is None:
# the buildid modulo n days is not in the pushlog
mindate = buildid - relativedelta(days=ndays)
logs = pushlog.puhslog(
mindate, buildid, channel=channel, file_filter=lambda f: f in filenames
)
res = {}
for log in logs:
node = log["node"]
for f in log["files"]:
if f in res:
res[f].append(node)
else:
res[f] = [node]
return res
return None
def get(uuid, ndays=config.get_ndays()):
res, channel, chgsets = inspector.get_crash_by_uuid(uuid, ndays, filelog)
return res, channel, chgsets