|
|
|
@ -564,14 +564,28 @@ class TaskViewSet(auth.TaskGetQuerySetMixin, viewsets.ModelViewSet):
|
|
|
|
raise serializers.ValidationError(
|
|
|
|
raise serializers.ValidationError(
|
|
|
|
"Unexpected action specified for the request")
|
|
|
|
"Unexpected action specified for the request")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def perform_update(self, serializer):
|
|
|
|
|
|
|
|
instance = serializer.instance
|
|
|
|
|
|
|
|
project_id = instance.project_id
|
|
|
|
|
|
|
|
updated_instance = serializer.save()
|
|
|
|
|
|
|
|
if project_id != updated_instance.project_id:
|
|
|
|
|
|
|
|
if project_id is not None:
|
|
|
|
|
|
|
|
Project.objects.get(id=project_id).save()
|
|
|
|
|
|
|
|
if updated_instance.project_id is not None:
|
|
|
|
|
|
|
|
Project.objects.get(id=updated_instance.project_id).save()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def perform_create(self, serializer):
|
|
|
|
def perform_create(self, serializer):
|
|
|
|
owner = self.request.data.get('owner', None)
|
|
|
|
owner = self.request.data.get('owner', None)
|
|
|
|
if owner:
|
|
|
|
if owner:
|
|
|
|
self._validate_task_limit(owner)
|
|
|
|
self._validate_task_limit(owner)
|
|
|
|
serializer.save()
|
|
|
|
instance = serializer.save()
|
|
|
|
else:
|
|
|
|
else:
|
|
|
|
self._validate_task_limit(self.request.user)
|
|
|
|
self._validate_task_limit(self.request.user)
|
|
|
|
serializer.save(owner=self.request.user)
|
|
|
|
instance = serializer.save(owner=self.request.user)
|
|
|
|
|
|
|
|
if instance.project:
|
|
|
|
|
|
|
|
db_project = instance.project
|
|
|
|
|
|
|
|
db_project.save()
|
|
|
|
|
|
|
|
|
|
|
|
def perform_destroy(self, instance):
|
|
|
|
def perform_destroy(self, instance):
|
|
|
|
task_dirname = instance.get_task_dirname()
|
|
|
|
task_dirname = instance.get_task_dirname()
|
|
|
|
@ -580,6 +594,9 @@ class TaskViewSet(auth.TaskGetQuerySetMixin, viewsets.ModelViewSet):
|
|
|
|
if instance.data and not instance.data.tasks.all():
|
|
|
|
if instance.data and not instance.data.tasks.all():
|
|
|
|
shutil.rmtree(instance.data.get_data_dirname(), ignore_errors=True)
|
|
|
|
shutil.rmtree(instance.data.get_data_dirname(), ignore_errors=True)
|
|
|
|
instance.data.delete()
|
|
|
|
instance.data.delete()
|
|
|
|
|
|
|
|
if instance.project:
|
|
|
|
|
|
|
|
db_project = instance.project
|
|
|
|
|
|
|
|
db_project.save()
|
|
|
|
|
|
|
|
|
|
|
|
@swagger_auto_schema(method='get', operation_summary='Returns a list of jobs for a specific task',
|
|
|
|
@swagger_auto_schema(method='get', operation_summary='Returns a list of jobs for a specific task',
|
|
|
|
responses={'200': JobSerializer(many=True)})
|
|
|
|
responses={'200': JobSerializer(many=True)})
|
|
|
|
|