From a89f7fdb2bef1b39f1e7874504ac58a0a94114b2 Mon Sep 17 00:00:00 2001 From: Damien De Paoli Date: Sun, 17 Jan 2021 11:05:14 +1100 Subject: [PATCH] fixed bugs with wrong sequence names in DB classes, also added AddLogForJob and used it in GenerateFileData, and fixed but where I re-ran a completed job --- pa_job_manager.py | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/pa_job_manager.py b/pa_job_manager.py index 2e723f1..f620e2f 100644 --- a/pa_job_manager.py +++ b/pa_job_manager.py @@ -118,7 +118,7 @@ class FileData(): # HACK: At present this only handles one path (need to re-factor if we have # # multiple valid paths in import_path) # ############################################################################## - def GenerateFileData(self): + def GenerateFileData(self, job): settings = session.query(Settings).first() if settings == None: return @@ -140,6 +140,7 @@ class FileData(): for file in file_list[0]: if file == path: continue + fname=file.replace(path, "") stat = os.stat(file) if last_import_date == 0 or stat.st_ctime > last_import_date: print( "{} - {} is newer than {}".format( file, stat.st_ctime, last_import_date ) ) @@ -161,12 +162,11 @@ class FileData(): fhash=None fsize = round(os.stat(file).st_size/(1024*1024)) - fname=file.replace(path, "") path_prefix=symlink.replace(path,"") file_obj = File( name=fname, type=ftype, size_mb=fsize, hash=fhash, path_prefix=path_prefix, thumbnail=fthumbnail ) session.add(file_obj) else: - print( "{} - {} is OLDER than {}".format( file, stat.st_ctime, last_import_date ) ) + AddLogForJob(job, "{} - {} is OLDER than {}".format( file, stat.st_ctime, last_import_date ), file ) settings.last_import_date = time.time() session.commit() return self @@ -220,7 +220,7 @@ class PA_JobManager(Base): class Joblog(Base): __tablename__ = "joblog" - id = Column(Integer, Sequence('ill_id_seq'), primary_key=True ) + id = Column(Integer, Sequence('joblog_id_seq'), primary_key=True ) job_id = Column(Integer, ForeignKey('job.id') ) log_date = Column(DateTime(timezone=True)) log = Column(String) @@ -230,7 +230,7 @@ class Joblog(Base): class Job(Base): __tablename__ = "job" - id = Column(Integer, Sequence('joblog_id_seq'), primary_key=True ) + id = Column(Integer, Sequence('job_id_seq'), primary_key=True ) start_time = Column(DateTime(timezone=True)) last_update = Column(DateTime(timezone=True)) name = Column(String) @@ -273,6 +273,14 @@ def InitialiseManager(): session.add(pa_eng) return +def AddLogForJob(job, message, current_file=''): + now=datetime.now(pytz.utc) + log=Joblog( job_id=job.id, log=message, log_date=now ) + job.last_update=now + job.current_file=current_file + session.add(log) + session.commit() + def RunJob(job): print("Run job: {}, pa_eng state: {}, internal job state: {}".format( job.name, job.pa_job_state, job.state) ) try: @@ -282,8 +290,8 @@ def RunJob(job): print("force scan not being handled yet") else: print("Requested to process unknown job type: {}".format(job.name)) - except: - MessageToFE( job.id, "danger", "Failed (see log for details)" ) + except Exception as e: + MessageToFE( job.id, "danger", "Failed with: {} (try job log for details)".format(e) ) return def HandleJobs(): @@ -291,7 +299,7 @@ def HandleJobs(): pa_eng.state = 'Scanning Jobs' jobs=GetJobs() for job in jobs: - if job.pa_job_state != 'complete': + if job.pa_job_state != 'Completed': RunJob(job) pa_eng.num_active_jobs = pa_eng.num_active_jobs + 1 else: @@ -301,7 +309,7 @@ def HandleJobs(): return def JobScanNow(job): - filedata.GenerateFileData() + filedata.GenerateFileData(job) job.state="Completed" job.pa_job_state="Completed" job.last_update=datetime.now(pytz.utc)