add statuses filter to GET /service/{}/job

can now pass in a query string `?statuses=x,y,z` to filter jobs based on
`Job.job_status`. Not passing in a status or passing in an empty string is
equivalent to selecting every filter type at once.
This commit is contained in:
Leo Hemsted
2016-09-23 16:34:13 +01:00
parent 281323b435
commit fb6cb5f236
4 changed files with 56 additions and 7 deletions

View File

@@ -27,10 +27,14 @@ def dao_get_job_by_service_id_and_job_id(service_id, job_id):
return Job.query.filter_by(service_id=service_id, id=job_id).one()
def dao_get_jobs_by_service_id(service_id, limit_days=None, page=1, page_size=50):
def dao_get_jobs_by_service_id(service_id, limit_days=None, page=1, page_size=50, statuses=''):
query_filter = [Job.service_id == service_id]
if limit_days is not None:
query_filter.append(cast(Job.created_at, sql_date) >= days_ago(limit_days))
if statuses != ['']:
query_filter.append(
Job.job_status.in_(statuses)
)
return Job.query \
.filter(*query_filter) \
.order_by(desc(Job.created_at)) \