Skip to content
Snippets Groups Projects
Commit d31193df authored by Nico Vermaas's avatar Nico Vermaas
Browse files

Revert "Merge branch 'workflow_related_serializer' into 'master'"

This reverts merge request !1
parent fdb2e565
No related branches found
No related tags found
1 merge request!2Revert "Merge branch 'workflow_related_serializer' into 'master'"
Pipeline #8280 passed
...@@ -31,6 +31,9 @@ class Task(models.Model): ...@@ -31,6 +31,9 @@ class Task(models.Model):
sas_id = models.CharField(max_length=30, blank=True, null=True) sas_id = models.CharField(max_length=30, blank=True, null=True)
priority = models.IntegerField(default=0) priority = models.IntegerField(default=0)
purge_policy = models.CharField(max_length=5, default="no", blank=True, null=True) purge_policy = models.CharField(max_length=5, default="no", blank=True, null=True)
desired_workflow_id = models.CharField(max_length=12, blank=True, null=True)
desired_workflow_uri = models.CharField(max_length=100, blank=True, null=True)
workflow = models.ForeignKey(Workflow, related_name='tasks', on_delete=models.SET_NULL, null=True,blank=True)
inputs = models.JSONField(null=True, blank=True) inputs = models.JSONField(null=True, blank=True)
outputs = models.JSONField(null=True, blank=True) outputs = models.JSONField(null=True, blank=True)
......
...@@ -2,47 +2,19 @@ from rest_framework import serializers ...@@ -2,47 +2,19 @@ from rest_framework import serializers
from .models import Status, Task, Workflow, LogEntry from .models import Status, Task, Workflow, LogEntry
class WorkflowSerializer(serializers.ModelSerializer):
# tasks = serializers.StringRelatedField(
# many=True,
# required=False,
# )
class Meta:
model = Workflow
fields = "__all__"
class TaskSerializer(serializers.ModelSerializer): class TaskSerializer(serializers.ModelSerializer):
status_history = serializers.StringRelatedField(
many=True,
required=False,
)
class Meta:
model = Task
fields = ('id','task_type','taskID',
'desired_predecessor_id','predecessor','successor',
'project','sas_id','priority','purge_policy','skip',
'workflow',
'status','desired_status',
'inputs','outputs','status_history')
class TaskReadSerializer(serializers.ModelSerializer):
status_history = serializers.StringRelatedField( status_history = serializers.StringRelatedField(
many=True, many=True,
required=False, required=False,
) )
workflow = WorkflowSerializer(read_only=True)
class Meta: class Meta:
model = Task model = Task
fields = ('id','task_type','taskID', fields = ('id','task_type','taskID',
'desired_predecessor_id','predecessor','successor', 'desired_predecessor_id','predecessor','successor',
'project','sas_id','priority','purge_policy','skip', 'project','sas_id','priority','purge_policy','skip',
'workflow', 'desired_workflow_id','desired_workflow_uri','workflow',
'status','desired_status', 'status','desired_status',
'inputs','outputs','status_history') 'inputs','outputs','status_history')
...@@ -54,6 +26,17 @@ class StatusSerializer(serializers.ModelSerializer): ...@@ -54,6 +26,17 @@ class StatusSerializer(serializers.ModelSerializer):
fields = "__all__" fields = "__all__"
class WorkflowSerializer(serializers.ModelSerializer):
# tasks = serializers.StringRelatedField(
# many=True,
# required=False,
# )
class Meta:
model = Workflow
fields = "__all__"
class LogEntrySerializer(serializers.ModelSerializer): class LogEntrySerializer(serializers.ModelSerializer):
......
...@@ -34,6 +34,28 @@ def pre_save_task_handler(sender, **kwargs): ...@@ -34,6 +34,28 @@ def pre_save_task_handler(sender, **kwargs):
handle_pre_save(sender, **kwargs) handle_pre_save(sender, **kwargs)
def add_workflow(myTaskObject):
desired_workflow_id = myTaskObject.desired_workflow_id
desired_workflow_uri = myTaskObject.desired_workflow_uri
# first try to find the workflow by desired workflow_id
try:
desired_workflow = Workflow.objects.get(id=desired_workflow_id)
except:
desired_workflow = None
if (desired_workflow == None):
# then try workflow_uri
desired_workflow = Workflow.objects.get(workflow_uri=desired_workflow_uri)
# first check if works needs to be done at all
if (myTaskObject.workflow != desired_workflow):
# set the new status
myTaskObject.workflow = desired_workflow
return myTaskObject
def add_predecessor(myTaskObject): def add_predecessor(myTaskObject):
# connect the task to a workflow after posting a (flat) task through the REST API # connect the task to a workflow after posting a (flat) task through the REST API
...@@ -79,6 +101,7 @@ def handle_pre_save(sender, **kwargs): ...@@ -79,6 +101,7 @@ def handle_pre_save(sender, **kwargs):
myStatus.save() myStatus.save()
# connect the task to a workflow after posting a (flat) task through the REST API # connect the task to a workflow after posting a (flat) task through the REST API
myTaskObject = add_workflow(myTaskObject)
myTaskObject = add_predecessor(myTaskObject) myTaskObject = add_predecessor(myTaskObject)
......
...@@ -14,7 +14,7 @@ from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger ...@@ -14,7 +14,7 @@ from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from .models import Task, Status, Workflow, LogEntry from .models import Task, Status, Workflow, LogEntry
from django.db.models import Q from django.db.models import Q
from .serializers import TaskSerializer, TaskReadSerializer, WorkflowSerializer, LogEntrySerializer from .serializers import TaskSerializer, WorkflowSerializer, LogEntrySerializer
from .forms import FilterForm from .forms import FilterForm
from .services import algorithms from .services import algorithms
...@@ -133,11 +133,7 @@ class TaskListViewAPI(generics.ListCreateAPIView): ...@@ -133,11 +133,7 @@ class TaskListViewAPI(generics.ListCreateAPIView):
model = Task model = Task
queryset = Task.objects.all() queryset = Task.objects.all()
serializer_class = TaskSerializer serializer_class = TaskSerializer
def get_serializer_class(self):
if self.request.method in ['GET']:
return TaskReadSerializer
else:
return TaskSerializer
# using the Django Filter Backend - https://django-filter.readthedocs.io/en/latest/index.html # using the Django Filter Backend - https://django-filter.readthedocs.io/en/latest/index.html
filter_backends = (filters.DjangoFilterBackend,) filter_backends = (filters.DjangoFilterBackend,)
filter_class = TaskFilter filter_class = TaskFilter
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment