def filter_records(build, classification, severity, machine_id=None, os_name=None, limit=None, from_date=None,
to_date=None, payload=None, not_payload=None, data_source=None):
records = Record.query
if build is not None:
records = records.join(Record.build).filter_by(build=build)
if classification is not None:
if isinstance(classification, list):
records = records.join(Record.classification).filter(Classification.classification.in_(classification))
else:
records = records.join(Record.classification).filter(Classification.classification.like(classification))
if severity is not None:
records = records.filter(Record.severity == severity)
if os_name is not None:
records = records.filter(Record.os_name == os_name)
if machine_id is not None:
records = records.filter(Record.machine_id == machine_id)
if from_date is not None:
from_date = mktime(strptime(from_date, "%Y-%m-%d"))
records = records.filter(Record.tsp >= from_date)
if to_date is not None:
to_date = mktime(strptime(to_date, "%Y-%m-%d"))
records = records.filter(Record.tsp < to_date)
if payload is not None:
records = records.filter(Record.backtrace.op('~')(payload))
if not_payload is not None:
records = records.filter(~Record.backtrace.op('~')(not_payload))
if data_source is not None:
if data_source == "external":
records = records.filter(Record.external == True)
elif data_source == "internal":
records = records.filter(Record.external == False)
records = records.order_by(Record.id.desc())
if limit is not None:
records = records.limit(limit)
return records
评论列表
文章目录