Job previews (#112)
parent
304972bcc2
commit
4cb4f56109
@ -0,0 +1,64 @@
|
||||
# Generated by Django 3.2.14 on 2022-07-18 06:37
|
||||
|
||||
import os
|
||||
import shutil
|
||||
from django.db import migrations
|
||||
from django.conf import settings
|
||||
from cvat.apps.engine.log import get_logger
|
||||
|
||||
MIGRATION_NAME = os.path.splitext(os.path.basename(__file__))[0]
|
||||
MIGRATION_LOG = os.path.join(settings.MIGRATIONS_LOGS_ROOT, f"{MIGRATION_NAME}.log")
|
||||
|
||||
def _get_query_set(apps):
|
||||
Job = apps.get_model("engine", "Job")
|
||||
query_set = Job.objects.all()
|
||||
return query_set
|
||||
|
||||
def _get_job_preview_path(jid):
|
||||
return os.path.join(settings.JOBS_ROOT, str(jid), "preview.jpeg")
|
||||
|
||||
def _get_data_preview_path(did):
|
||||
return os.path.join(settings.MEDIA_DATA_ROOT, str(did), "preview.jpeg")
|
||||
|
||||
def create_previews(apps, schema_editor):
|
||||
logger = get_logger(MIGRATION_NAME, MIGRATION_LOG)
|
||||
query_set = _get_query_set(apps)
|
||||
logger.info(f'Migration has been started. Need to create {query_set.count()} previews.')
|
||||
for db_job in query_set:
|
||||
try:
|
||||
jid = db_job.id
|
||||
did = db_job.segment.task.data.id
|
||||
task_preview = _get_data_preview_path(did)
|
||||
job_preview = _get_job_preview_path(jid)
|
||||
if os.path.isfile(task_preview) and not os.path.isfile(job_preview):
|
||||
shutil.copy(task_preview, job_preview)
|
||||
except Exception as e:
|
||||
logger.error(f'Cannot create preview for job {db_job.id}')
|
||||
logger.error(str(e))
|
||||
|
||||
def delete_previews(apps, schema_editor):
|
||||
logger = get_logger(MIGRATION_NAME, MIGRATION_LOG)
|
||||
query_set = _get_query_set(apps)
|
||||
logger.info(f'Reverse migration has been started. Need to delete {query_set.count()} previews.')
|
||||
for db_job in query_set:
|
||||
try:
|
||||
jid = db_job.id
|
||||
job_preview = _get_job_preview_path(jid)
|
||||
if os.path.isfile(job_preview):
|
||||
os.remove(job_preview)
|
||||
except Exception as e:
|
||||
logger.error(f'Cannot delete preview for job {db_job.id}')
|
||||
logger.error(str(e))
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('engine', '0055_jobs_directories'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RunPython(
|
||||
code=create_previews,
|
||||
reverse_code=delete_previews
|
||||
)
|
||||
]
|
||||
Loading…
Reference in New Issue