Skip to content
Snippets Groups Projects

Výsledkovka pomocí mo.web.table

Closed Jiří Setnička requested to merge jirka/table into master
1 file
+ 14
3
Compare changes
  • Side-by-side
  • Inline
+ 14
3
@@ -4,7 +4,7 @@ from datetime import timedelta
import os
import secrets
from sqlalchemy import or_
from typing import Optional, Dict, Callable
from typing import Optional, Dict, Callable, List
import mo
import mo.config as config
@@ -28,10 +28,12 @@ class TheJob:
job: db.Job
job_id: Optional[int]
errors: List[str]
def __init__(self, job_id: Optional[int] = None):
"""Pokud chceme pracovat s existujícím jobem, zadáme jeho ID."""
self.job_id = job_id
self.errors = []
def load(self) -> db.Job:
sess = db.get_session()
@@ -95,6 +97,9 @@ class TheJob:
logger.info(f'Job: Ruším job #{self.job.job_id}')
return self._finish_remove()
def error(self, msg):
self.errors.append(msg)
def run(self):
sess = db.get_session()
if not self.load() or self.job.state != db.JobState.ready:
@@ -110,11 +115,17 @@ class TheJob:
try:
_handler_table[job.type](self)
logger.info(f'Job: Úspěšně dokončen job #{job.job_id}')
job.state = db.JobState.done
if self.errors:
logger.info(f'Job: Neúspěšně dokončen job #{job.job_id}')
job.state = db.JobState.failed
job.out_json = {'errors': self.errors}
else:
logger.info(f'Job: Úspěšně dokončen job #{job.job_id}')
job.state = db.JobState.done
except Exception as e:
logger.error(f'Job: Chyba při zpracování jobu #{job.job_id}: %s', e, exc_info=e)
job.state = db.JobState.failed
job.out_json = {'errors': 'Interní chyba, informujte prosím správce systému.'}
return
job.finished_at = mo.util.get_now()
Loading