pull/40/head
Piero Toffanin 2016-11-01 15:11:36 -04:00
rodzic d7a450521c
commit c75c35a21e
6 zmienionych plików z 28 dodań i 29 usunięć

Wyświetl plik

@ -1,14 +1,10 @@
from rest_framework import serializers, viewsets
from rest_framework.response import Response
from rest_framework.decorators import permission_classes
from rest_framework.permissions import DjangoModelPermissions
from rest_framework.filters import DjangoFilterBackend
from django_filters.rest_framework import FilterSet
from nodeodm.models import ProcessingNode
import django_filters
from django.utils import timezone
from datetime import timedelta
from django.db.models import Q
from django_filters.rest_framework import FilterSet
from rest_framework import serializers, viewsets
from rest_framework.filters import DjangoFilterBackend
from rest_framework.permissions import DjangoModelPermissions
from nodeodm.models import ProcessingNode
class ProcessingNodeSerializer(serializers.ModelSerializer):
@ -19,6 +15,7 @@ class ProcessingNodeSerializer(serializers.ModelSerializer):
class ProcessingNodeFilter(FilterSet):
has_available_options = django_filters.MethodFilter()
# noinspection PyMethodMayBeStatic
def filter_has_available_options(self, queryset, value):
if value.lower() in ['true', '1']:
return queryset.exclude(available_options=dict())

Wyświetl plik

@ -1,8 +1,9 @@
from django.contrib.auth.models import User
from rest_framework import serializers, viewsets
from rest_framework.response import Response
from app import models
from .tasks import TaskIDsSerializer, TaskSerializer
from .tasks import TaskIDsSerializer
class ProjectSerializer(serializers.ModelSerializer):
owner = serializers.PrimaryKeyRelatedField(queryset=User.objects.all())

Wyświetl plik

@ -1,11 +1,11 @@
from django.contrib.auth.models import User
from django.core.exceptions import ObjectDoesNotExist
from rest_framework import status, serializers, viewsets, filters, exceptions, permissions, parsers
from rest_framework.response import Response
from rest_framework.decorators import parser_classes, api_view
from app import models, scheduler
from nodeodm.models import ProcessingNode
class TaskIDsSerializer(serializers.BaseSerializer):
def to_representation(self, obj):
return obj.id
@ -34,8 +34,9 @@ class TaskViewSet(viewsets.ViewSet):
permission_classes = (permissions.DjangoModelPermissions, )
parser_classes = (parsers.MultiPartParser, parsers.JSONParser, )
ordering_fields = '__all__'
def get_and_check_project(self, request, project_pk, perms = ('view_project', )):
@staticmethod
def get_and_check_project(request, project_pk, perms = ('view_project', )):
'''
Retrieves a project and raises an exeption if the current user
has no access to it.
@ -55,7 +56,7 @@ class TaskViewSet(viewsets.ViewSet):
return '\n'.join(output.split('\n')[line_num:])
def list(self, request, project_pk=None):
project = self.get_and_check_project(request, project_pk)
self.get_and_check_project(request, project_pk)
tasks = self.queryset.filter(project=project_pk)
tasks = filters.OrderingFilter().filter_queryset(self.request, tasks, self)
serializer = TaskSerializer(tasks, many=True)
@ -68,8 +69,6 @@ class TaskViewSet(viewsets.ViewSet):
except ObjectDoesNotExist:
raise exceptions.NotFound()
response_data = None
if request.query_params.get('output_only', '').lower() in ['true', '1']:
response_data = self.task_output_only(request, task)
else:
@ -88,13 +87,13 @@ class TaskViewSet(viewsets.ViewSet):
for file in filesList]
task = models.Task.create_from_images(files, project)
if task != None:
if not task is None:
return Response({"id": task.id}, status=status.HTTP_201_CREATED)
else:
raise exceptions.ValidationError(detail="Cannot create task, input provided is not valid.")
def update(self, request, pk=None, project_pk=None, partial=False):
project = self.get_and_check_project(request, project_pk, ('change_project', ))
self.get_and_check_project(request, project_pk, ('change_project', ))
try:
task = self.queryset.get(pk=pk, project=project_pk)
except ObjectDoesNotExist:

Wyświetl plik

@ -139,7 +139,7 @@ class Task(models.Model):
# TODO: log process has started processing
except ProcessingException, e:
except ProcessingException as e:
print("TASK ERROR: " + e.message)
# Need to update status (first time, queued or running?)

Wyświetl plik

@ -1,7 +1,9 @@
from django.contrib.auth.models import User
from django.test import TestCase
from django.contrib.auth.models import User, Group
from app.models import Project
from app.boot import boot
from app.models import Project
class BootTestCase(TestCase):
'''

Wyświetl plik

@ -129,7 +129,7 @@ class TestApp(BootTestCase):
# Test options validation
task.options = [{'name': 'test', 'value': 1}]
self.assertTrue(task.save() == None)
self.assertTrue(task.save() is None)
task.options = {'test': 1}
self.assertRaises(ValidationError, task.save)
@ -139,12 +139,12 @@ class TestApp(BootTestCase):
def test_scheduler(self):
self.assertTrue(scheduler.setup() == None)
self.assertTrue(scheduler.setup() is None)
# Can call update_nodes_info()
self.assertTrue(scheduler.update_nodes_info() == None)
self.assertTrue(scheduler.update_nodes_info() is None)
# Can call function in background
self.assertTrue(scheduler.update_nodes_info(background=True).join() == None)
self.assertTrue(scheduler.update_nodes_info(background=True).join() is None)
self.assertTrue(scheduler.teardown() == None)
self.assertTrue(scheduler.teardown() is None)