Skip to content
Snippets Groups Projects

Dávky okolo feedbacku

Closed Martin Mareš requested to merge mj/upload-feedback into master
1 file
+ 6
4
Compare changes
  • Side-by-side
  • Inline
@@ -4,7 +4,8 @@ from datetime import timedelta
import os
import secrets
from sqlalchemy import or_
from typing import Optional, Dict, Callable
from sqlalchemy.orm import joinedload
from typing import Optional, Dict, Callable, List
import mo
import mo.config as config
@@ -28,10 +29,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 +98,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,12 +116,19 @@ class TheJob:
try:
_handler_table[job.type](self)
logger.info(f'Job: Úspěšně dokončen job #{job.job_id}')
if self.errors:
logger.info(f'Job: Neúspěšně dokončen job #{job.job_id} ({job.result})')
job.state = db.JobState.failed
job.out_json = {'errors': self.errors}
if job.result == "":
job.result = 'Došlo k chybám, viz detail'
else:
logger.info(f'Job: Úspěšně dokončen job #{job.job_id} ({job.result})')
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
return
job.result = 'Interní chyba, informujte prosím správce systému.'
job.finished_at = mo.util.get_now()
job.expires_at = job.finished_at + timedelta(minutes=config.JOB_EXPIRATION)
Loading