You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
48 lines
1.5 KiB
Python
48 lines
1.5 KiB
Python
# Copyright (C) 2019 Intel Corporation
|
|
#
|
|
# SPDX-License-Identifier: MIT
|
|
import shutil
|
|
|
|
from django.db.models.signals import post_delete, post_save
|
|
from django.dispatch import receiver
|
|
from django.contrib.auth.models import User
|
|
|
|
from .models import (
|
|
Data,
|
|
Job,
|
|
StatusChoice,
|
|
Task,
|
|
Profile,
|
|
)
|
|
|
|
|
|
@receiver(post_save, sender=Job, dispatch_uid="update_task_status")
|
|
def update_task_status(instance, **kwargs):
|
|
db_task = instance.segment.task
|
|
db_jobs = list(Job.objects.filter(segment__task_id=db_task.id))
|
|
status = StatusChoice.COMPLETED
|
|
if list(filter(lambda x: x.status == StatusChoice.ANNOTATION, db_jobs)):
|
|
status = StatusChoice.ANNOTATION
|
|
elif list(filter(lambda x: x.status == StatusChoice.VALIDATION, db_jobs)):
|
|
status = StatusChoice.VALIDATION
|
|
|
|
if status != db_task.status:
|
|
db_task.status = status
|
|
db_task.save()
|
|
|
|
@receiver(post_save, sender=User, dispatch_uid="create_a_profile_on_create_a_user")
|
|
def create_profile(instance, **kwargs):
|
|
if not hasattr(instance, 'profile'):
|
|
profile = Profile()
|
|
profile.user = instance
|
|
profile.save()
|
|
|
|
@receiver(post_delete, sender=Task, dispatch_uid="delete_task_files_on_delete_task")
|
|
def delete_task_files_on_delete_task(instance, **kwargs):
|
|
shutil.rmtree(instance.get_task_dirname(), ignore_errors=True)
|
|
|
|
|
|
@receiver(post_delete, sender=Data, dispatch_uid="delete_data_files_on_delete_data")
|
|
def delete_data_files_on_delete_data(instance, **kwargs):
|
|
shutil.rmtree(instance.get_data_dirname(), ignore_errors=True)
|