fixed up JobExtra printout in class, also put it in job.py, and passed extras to templates/jobs.html to show the extra details on the jobs list page so we can see what path is imported for example

This commit is contained in:
2021-01-20 00:05:56 +11:00
parent 0c70a0ca89
commit 0de95d56d5
4 changed files with 29 additions and 15 deletions

23
job.py
View File

@@ -10,6 +10,19 @@ import pytz
import socket
from shared import PA_JOB_MANAGER_HOST, PA_JOB_MANAGER_PORT
################################################################################
# Class describing Job in the database, and via sqlalchemy, connected to the DB as well
################################################################################
class JobExtra(db.Model):
__tablename__ = "jobextra"
id = db.Column(db.Integer, db.Sequence('jobextra_id_seq'), primary_key=True )
job_id = db.Column(db.Integer, db.ForeignKey('job.id') )
name = db.Column(db.String)
value = db.Column(db.String)
def __repr__(self):
return "<id: {}, job_id: {}, name: {}, value: {}>".format(self.id, self.job_id, self.name, self.value )
class Joblog(db.Model):
id = db.Column(db.Integer, db.Sequence('ill_id_seq'), primary_key=True )
job_id = db.Column(db.Integer, db.ForeignKey('job.id'), primary_key=True )
@@ -19,9 +32,6 @@ class Joblog(db.Model):
def __repr__(self):
return "<id: {}, job_id: {}, log: {}".format(self.id, self.job_id, self.log )
################################################################################
# Class describing Job in the database, and via sqlalchemy, connected to the DB as well
################################################################################
class Job(db.Model):
id = db.Column(db.Integer, db.Sequence('joblog_id_seq'), primary_key=True )
start_time = db.Column(db.DateTime(timezone=True))
@@ -36,15 +46,18 @@ class Job(db.Model):
wait_for = db.Column(db.Integer)
pa_job_state = db.Column(db.String)
extra = db.relationship( "JobExtra")
logs = db.relationship( "Joblog")
def __repr__(self):
return "<id: {}, start_time: {}, last_update: {}, name: {}, state: {}, num_passes: {}, current_passes: {}, num_files: {}, current_file_num: {}, current_file: {}>".format(self.id, self.start_time, self.last_update, self.name, self.state, self.num_passes, self.current_pass, self.num_files, self.num_files, self.current_file_num, self.current_file)
return "<id: {}, start_time: {}, last_update: {}, name: {}, state: {}, num_passes: {}, current_pass: {}, num_files: {}, current_file_num: {}, current_file: {}, pa_job_state: {}, wait_for: {}, extra: {}, logs: {}>".format(self.id, self.start_time, self.last_update, self.name, self.state, self.num_passes, self.current_pass, self.num_files, self.current_file_num, self.current_file, self.pa_job_state, self.wait_for, self.extra, self.logs)
################################################################################
# Utility classes for Jobs
################################################################################
def GetNumActiveJobs():
ret = db.engine.execute("select count(1) from job where pa_job_state != 'Completed'").first()
ret = db.engine.execute("select count(1) from job where pa_job_state is distinct from 'Completed'").first()
return ret.count
def WakePAJobManager():