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 import socket
from shared import PA_JOB_MANAGER_HOST, PA_JOB_MANAGER_PORT 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): class Joblog(db.Model):
id = db.Column(db.Integer, db.Sequence('ill_id_seq'), primary_key=True ) 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 ) job_id = db.Column(db.Integer, db.ForeignKey('job.id'), primary_key=True )
@@ -19,9 +32,6 @@ class Joblog(db.Model):
def __repr__(self): def __repr__(self):
return "<id: {}, job_id: {}, log: {}".format(self.id, self.job_id, self.log ) 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): class Job(db.Model):
id = db.Column(db.Integer, db.Sequence('joblog_id_seq'), primary_key=True ) id = db.Column(db.Integer, db.Sequence('joblog_id_seq'), primary_key=True )
start_time = db.Column(db.DateTime(timezone=True)) start_time = db.Column(db.DateTime(timezone=True))
@@ -36,15 +46,18 @@ class Job(db.Model):
wait_for = db.Column(db.Integer) wait_for = db.Column(db.Integer)
pa_job_state = db.Column(db.String) pa_job_state = db.Column(db.String)
extra = db.relationship( "JobExtra")
logs = db.relationship( "Joblog")
def __repr__(self): 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 # Utility classes for Jobs
################################################################################ ################################################################################
def GetNumActiveJobs(): 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 return ret.count
def WakePAJobManager(): def WakePAJobManager():

View File

@@ -261,7 +261,7 @@ class Job(Base):
extra = relationship( "JobExtra") extra = relationship( "JobExtra")
def __repr__(self): def __repr__(self):
return "<id: {}, start_time: {}, last_update: {}, name: {}, state: {}, num_passes: {}, current_passes: {}, 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.num_files, self.current_file_num, self.current_file, self.pa_job_state, self.wait_for, self.extra, self.logs) 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)
class PA_JobManager_FE_Message(Base): class PA_JobManager_FE_Message(Base):
__tablename__ = "pa_job_manager_fe_message" __tablename__ = "pa_job_manager_fe_message"
@@ -427,7 +427,6 @@ def JobImportDir(job):
if os.path.isdir(file): if os.path.isdir(file):
path_prefix=os.path.join(symlink,fname) path_prefix=os.path.join(symlink,fname)
dir=AddDir( job, fname, path_prefix, dir ) dir=AddDir( job, fname, path_prefix, dir )
print("DEBUG(adddir)");
else: else:
file_cnt=file_cnt+1 file_cnt=file_cnt+1
if isImage(file): if isImage(file):
@@ -438,7 +437,6 @@ def JobImportDir(job):
type_str = 'File' type_str = 'File'
fsize = round(os.stat(file).st_size/(1024*1024)) fsize = round(os.stat(file).st_size/(1024*1024))
e=AddFile( job, os.path.basename(fname), type_str, fsize, dir ) e=AddFile( job, os.path.basename(fname), type_str, fsize, dir )
print("DEBUG(addfile)");
else: else:
AddLogForJob(job, "DEBUG: {} - {} is OLDER than {}".format( file, stat.st_ctime, last_import_date ), file ) AddLogForJob(job, "DEBUG: {} - {} is OLDER than {}".format( file, stat.st_ctime, last_import_date ), file )
print("DEBUG: {} - {} is OLDER than {}".format( file, stat.st_ctime, last_import_date ), file ) print("DEBUG: {} - {} is OLDER than {}".format( file, stat.st_ctime, last_import_date ), file )
@@ -448,7 +446,6 @@ def JobImportDir(job):
job.state = "Completed" job.state = "Completed"
job.last_updated = datetime.now(pytz.utc) job.last_updated = datetime.now(pytz.utc)
# settings.last_import_date = time.time() # settings.last_import_date = time.time()
print ("DEBUG-END: finished Job import dir: {}".format(job))
else: else:
AddLogForJob(job, "Finished Importing: {} -- Path does not exist".format( path) ) AddLogForJob(job, "Finished Importing: {} -- Path does not exist".format( path) )
job.pa_job_state = "Completed" job.pa_job_state = "Completed"

View File

@@ -3,6 +3,10 @@
{% block main_content %} {% block main_content %}
<div class="container"> <div class="container">
<h3>{{page_title}}</h3> <h3>{{page_title}}</h3>
<div class="row col-lg-12">
<label class="form-control-plaintext col-lg-2">Job #:</label>
<label class="form-control-plaintext col-lg-10">{{job.id}}</label>
</div>
<div class="row col-lg-12"> <div class="row col-lg-12">
<label class="form-control-plaintext col-lg-2">Name:</label> <label class="form-control-plaintext col-lg-2">Name:</label>
<label class="form-control-plaintext col-lg-10">{{job.name}}</label> <label class="form-control-plaintext col-lg-10">{{job.name}}</label>

View File

@@ -7,14 +7,14 @@
var completed_rows=Array() var completed_rows=Array()
{% for job in jobs %} {% for job in jobs %}
row=` row='<tr><td><a href="{{url_for('joblog', id=job.id)}}">{{job.name}}</a>'
<tr><td> {% for ex in job.extra %}
<a href="{{url_for('joblog', id=job.id )}}">{{job.name}}</td><td>{{job.start_time}}</td> row+=' ({{ex.name}} == {{ ex.value }})'
<td> {% endfor %}
` row+= '</td><td>{{job.start_time}}</td><td>'
{% if job.pa_job_state != "Completed" %} {% if job.pa_job_state != "Completed" %}
row +=` row +=`
Not yet In Progress (no details yet)
</td></tr> </td></tr>
` `
active_rows.push(row) active_rows.push(row)