Skip to content

Commit 6c7401f

Browse files
committed
[BUGFIXED]-Job history filtering query
1 parent ca389fc commit 6c7401f

2 files changed

Lines changed: 15 additions & 6 deletions

File tree

userinfo/db/crud.py

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import base64
22
from sqlalchemy.orm import Session
3-
from sqlalchemy import inspect, func
3+
from sqlalchemy import inspect, func, case
44
from urllib.parse import quote
55
from . import models, schemas
66
from typing import List
@@ -411,16 +411,25 @@ def get_jobs(db:Session, username: str, all):
411411
filter(models.Job.status.notin_(['FAILED', 'COMPLETE', 'CANCELLED'])).\
412412
all()
413413

414-
def filter_jobs(db: Session, status: str, username: str, start: datetime.date, jobname: str):
414+
def filter_jobs(db: Session, status: str, username: str, jobname: str, submit: datetime.date):
415415
q = db.query(models.Job)
416416
if status:
417417
q = q.filter(models.Job.status == status)
418418
if username:
419419
q = q.filter(models.Job.username == username)
420420
if jobname:
421421
q = q.filter(models.Job.jobname == jobname)
422-
if start:
423-
q = q.filter(func.date(models.Job.start) >= start)
422+
""" if start:
423+
q = q.filter(func.date(models.Job.start) >= start) """
424+
if submit:
425+
q = q.filter(func.date(models.Job.submitted) >= submit)
426+
427+
q = q.order_by(
428+
case(
429+
[(models.Job.submitted != None, models.Job.submitted)],
430+
else_=models.Job.start
431+
).desc()
432+
)
424433
return q.all()
425434

426435

userinfo/routers/job.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@
1414
@router.get("")
1515
def get_jobs( status: Optional[str] = None,
1616
username: Optional[str] = None,
17-
start: Optional[datetime.date] = None,
1817
jobname: Optional[str] = None,
18+
submit: Optional[datetime.date] = None,
1919
user: dict = Depends(keycloak.decode),
2020
db: Session = Depends(udb.get_db)):
2121
logger.debug("Querying jobs")
@@ -24,7 +24,7 @@ def get_jobs( status: Optional[str] = None,
2424
admin = config.get('keycloak', 'admin')
2525
if not realm_access or not admin in realm_access.get('roles'):
2626
return HTTPException(status_code=401, detail="Only admins can list jobs")
27-
return udb.crud.filter_jobs(db, status, username, start, jobname)
27+
return udb.crud.filter_jobs(db, status, username, jobname, submit)
2828

2929

3030
@router.get("/{jobid}", response_model=udb.schemas.Job)

0 commit comments

Comments
 (0)