def get_top_crash_guilties(classes=None):
q = db.session.query(Guilty.function, Guilty.module, Build.build, db.func.count(Record.id).label('total'), Guilty.id, Guilty.comment)
q = q.join(Record)
q = q.join(Build)
q = q.join(Classification).filter(Record.classification_id == Classification.id)
if not classes:
classes = ['org.clearlinux/crash/clr']
q = q.filter(Classification.classification.in_(classes))
q = q.filter(Build.build.op('~')('^[0-9][0-9]+$'))
q = q.filter(Guilty.hide == False)
q = q.group_by(Guilty.function, Guilty.module, Guilty.comment, Guilty.id, Build.build)
q = q.order_by(desc(cast(Build.build, db.Integer)), desc('total'))
# query for records created in the last week (~ 10 Clear builds)
q = q.filter(Build.build.in_(sorted(tuple(set([x[2] for x in q.all()])), key=lambda x: int(x))[-8:]))
interval_sec = 24 * 60 * 60 * 7
current_time = time()
sec_in_past = current_time - interval_sec
q = q.filter(Record.tsp > sec_in_past)
return q.all()
评论列表
文章目录