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():

View File

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

View File

@@ -3,6 +3,10 @@
{% block main_content %}
<div class="container">
<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">
<label class="form-control-plaintext col-lg-2">Name:</label>
<label class="form-control-plaintext col-lg-10">{{job.name}}</label>

View File

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