convert all raw sqls to ORM
This commit is contained in:
29
job.py
29
job.py
@@ -90,8 +90,8 @@ def GetJM_Message():
|
|||||||
# active jobs being processed in the background
|
# active jobs being processed in the background
|
||||||
################################################################################
|
################################################################################
|
||||||
def GetNumActiveJobs():
|
def GetNumActiveJobs():
|
||||||
ret = db.engine.execute("select count(1) from job where pa_job_state is distinct from 'Completed'").first()
|
ret=Job.query.filter(Job.pa_job_state != 'Completed').with_entities(func.count(Job.id).label('count') ).first()
|
||||||
return ret.count
|
return ret[0]
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
# this function uses sockets to force wake the job mgr / option from Admin menu
|
# this function uses sockets to force wake the job mgr / option from Admin menu
|
||||||
@@ -197,7 +197,7 @@ def joblog(id):
|
|||||||
refresh=False
|
refresh=False
|
||||||
else:
|
else:
|
||||||
refresh=True
|
refresh=True
|
||||||
log_cnt = db.session.execute( f"select count(id) from joblog where job_id = {id}" ).first()[0]
|
log_cnt = Joblog.query.filter(Joblog.job_id==id).with_entities( func.count(1) ).first()[0]
|
||||||
newest_logs = Joblog.query.filter(Joblog.job_id==id).order_by(Joblog.log_date.desc()).limit(NEWEST_LOG_LIMIT).all()
|
newest_logs = Joblog.query.filter(Joblog.job_id==id).order_by(Joblog.log_date.desc()).limit(NEWEST_LOG_LIMIT).all()
|
||||||
oldest_logs = Joblog.query.filter(Joblog.job_id==id).order_by(Joblog.log_date).limit(OLDEST_LOG_LIMIT).all()
|
oldest_logs = Joblog.query.filter(Joblog.job_id==id).order_by(Joblog.log_date).limit(OLDEST_LOG_LIMIT).all()
|
||||||
logs=sorted( set( oldest_logs + newest_logs ), key=lambda el: el.log_date )
|
logs=sorted( set( oldest_logs + newest_logs ), key=lambda el: el.log_date )
|
||||||
@@ -256,9 +256,8 @@ def stale_job(id):
|
|||||||
WithdrawDependantJobs( job, job.id, "(Stale) Job withdrawn manually by user" )
|
WithdrawDependantJobs( job, job.id, "(Stale) Job withdrawn manually by user" )
|
||||||
FinishJob(job, f"Job (#{job.id}) (Stale) Job withdrawn manually by user", "Withdrawn" )
|
FinishJob(job, f"Job (#{job.id}) (Stale) Job withdrawn manually by user", "Withdrawn" )
|
||||||
|
|
||||||
# clear out message for this job being stale (and do this via raw sql to
|
# clear out persistent message for this job being stale
|
||||||
# avoid circulr import)
|
PA_JobManager_Message.query.filter(PA_JobManager_Message.job_id==id).delete()
|
||||||
db.engine.execute( f"delete from pa_job_manager_fe_message where job_id = {id}" )
|
|
||||||
|
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
WakePAJobManager(job.id)
|
WakePAJobManager(job.id)
|
||||||
@@ -282,23 +281,25 @@ def stale_jobs():
|
|||||||
@app.route("/joblog_search", methods=["POST"])
|
@app.route("/joblog_search", methods=["POST"])
|
||||||
@login_required
|
@login_required
|
||||||
def joblog_search():
|
def joblog_search():
|
||||||
|
from files import Entry
|
||||||
|
from sqlalchemy import text
|
||||||
|
|
||||||
eid=request.form['eid']
|
eid=request.form['eid']
|
||||||
ent_cursor=db.engine.execute( f"select name from entry where id = {eid}" )
|
ent=Entry.query.get(eid)
|
||||||
for ent in ent_cursor:
|
logs=Joblog.query.join(Job).filter(Joblog.log.ilike(text(f"'%%{ent.name}%%'"))).with_entities(Joblog.log, Job.id, Job.name, Job.state, Joblog.log_date).all()
|
||||||
jobs_cursor=db.engine.execute( f"select l.log, j.id, j.name, j.state, l.log_date from joblog l, job j where l.job_id = j.id and l.log ilike '%%{ent[0]}%%' order by l.log_date")
|
|
||||||
|
|
||||||
# turn DB output into json and return it to the f/e
|
# turn DB output into json and return it to the f/e
|
||||||
ret='[ '
|
ret='[ '
|
||||||
first_job=1
|
first_job=1
|
||||||
last_job_id = -1
|
last_job_id = -1
|
||||||
for j in jobs_cursor:
|
for l in logs:
|
||||||
if not first_job:
|
if not first_job:
|
||||||
ret +=", "
|
ret +=", "
|
||||||
ret+= '{'
|
ret+= '{'
|
||||||
ret+= f'"id":"{j.id}", '
|
ret+= f'"id":"{l.id}", '
|
||||||
ret+= f'"name":"{j.name}", '
|
ret+= f'"name":"{l.name}", '
|
||||||
ret+= f'"log_date":"{j.log_date}", '
|
ret+= f'"log_date":"{l.log_date}", '
|
||||||
ret+= f'"log": "{j.log}"'
|
ret+= f'"log": "{l.log}"'
|
||||||
ret+= '}'
|
ret+= '}'
|
||||||
first_job=0
|
first_job=0
|
||||||
ret+= ' ]'
|
ret+= ' ]'
|
||||||
|
|||||||
Reference in New Issue
Block a user