in crashclouseau/models.py [0:0]
def get_uuids_from_buildid(buildid, product, channel):
sbid = buildid
buildid = utils.get_build_date(buildid)
uuids = db.session.query(
UUID.uuid, UUID.max_score, Signature.signature, Stats.number, Stats.installs
).select_from(UUID)
uuids = uuids.join(Signature).join(Build)
uuids = uuids.join(
Stats, db.and_(Signature.id == Stats.signatureid, Build.id == Stats.buildid)
)
uuids = (
uuids.filter(
Build.buildid == buildid,
Build.product == product,
Build.channel == channel,
UUID.useless.is_(False),
UUID.analyzed.is_(True),
)
.distinct(UUID.id)
.order_by(UUID.id)
)
_res = {}
for uuid in uuids:
t = (uuid.uuid, uuid.max_score)
if uuid.signature in _res:
_res[uuid.signature]["uuids"].append(t)
else:
_res[uuid.signature] = {
"uuids": [t],
"number": uuid.number,
"installs": uuid.installs,
"url": utils.make_url_for_signature(
uuid.signature, buildid, sbid, channel, product
),
}
res = sorted(
_res.items(),
key=lambda p: (-p[1]["number"], -p[1]["installs"], p[0].lower()),
)
return res