kopia lustrzana https://github.com/OpenDroneMap/WebODM
Code cleanup
rodzic
d7a450521c
commit
c75c35a21e
|
@ -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
|
import django_filters
|
||||||
from django.utils import timezone
|
from django_filters.rest_framework import FilterSet
|
||||||
from datetime import timedelta
|
from rest_framework import serializers, viewsets
|
||||||
from django.db.models import Q
|
from rest_framework.filters import DjangoFilterBackend
|
||||||
|
from rest_framework.permissions import DjangoModelPermissions
|
||||||
|
|
||||||
|
from nodeodm.models import ProcessingNode
|
||||||
|
|
||||||
|
|
||||||
class ProcessingNodeSerializer(serializers.ModelSerializer):
|
class ProcessingNodeSerializer(serializers.ModelSerializer):
|
||||||
|
@ -19,6 +15,7 @@ class ProcessingNodeSerializer(serializers.ModelSerializer):
|
||||||
class ProcessingNodeFilter(FilterSet):
|
class ProcessingNodeFilter(FilterSet):
|
||||||
has_available_options = django_filters.MethodFilter()
|
has_available_options = django_filters.MethodFilter()
|
||||||
|
|
||||||
|
# noinspection PyMethodMayBeStatic
|
||||||
def filter_has_available_options(self, queryset, value):
|
def filter_has_available_options(self, queryset, value):
|
||||||
if value.lower() in ['true', '1']:
|
if value.lower() in ['true', '1']:
|
||||||
return queryset.exclude(available_options=dict())
|
return queryset.exclude(available_options=dict())
|
||||||
|
|
|
@ -1,8 +1,9 @@
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth.models import User
|
||||||
from rest_framework import serializers, viewsets
|
from rest_framework import serializers, viewsets
|
||||||
from rest_framework.response import Response
|
|
||||||
from app import models
|
from app import models
|
||||||
from .tasks import TaskIDsSerializer, TaskSerializer
|
from .tasks import TaskIDsSerializer
|
||||||
|
|
||||||
|
|
||||||
class ProjectSerializer(serializers.ModelSerializer):
|
class ProjectSerializer(serializers.ModelSerializer):
|
||||||
owner = serializers.PrimaryKeyRelatedField(queryset=User.objects.all())
|
owner = serializers.PrimaryKeyRelatedField(queryset=User.objects.all())
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
from django.contrib.auth.models import User
|
|
||||||
from django.core.exceptions import ObjectDoesNotExist
|
from django.core.exceptions import ObjectDoesNotExist
|
||||||
from rest_framework import status, serializers, viewsets, filters, exceptions, permissions, parsers
|
from rest_framework import status, serializers, viewsets, filters, exceptions, permissions, parsers
|
||||||
from rest_framework.response import Response
|
from rest_framework.response import Response
|
||||||
from rest_framework.decorators import parser_classes, api_view
|
|
||||||
from app import models, scheduler
|
from app import models, scheduler
|
||||||
from nodeodm.models import ProcessingNode
|
from nodeodm.models import ProcessingNode
|
||||||
|
|
||||||
|
|
||||||
class TaskIDsSerializer(serializers.BaseSerializer):
|
class TaskIDsSerializer(serializers.BaseSerializer):
|
||||||
def to_representation(self, obj):
|
def to_representation(self, obj):
|
||||||
return obj.id
|
return obj.id
|
||||||
|
@ -34,8 +34,9 @@ class TaskViewSet(viewsets.ViewSet):
|
||||||
permission_classes = (permissions.DjangoModelPermissions, )
|
permission_classes = (permissions.DjangoModelPermissions, )
|
||||||
parser_classes = (parsers.MultiPartParser, parsers.JSONParser, )
|
parser_classes = (parsers.MultiPartParser, parsers.JSONParser, )
|
||||||
ordering_fields = '__all__'
|
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
|
Retrieves a project and raises an exeption if the current user
|
||||||
has no access to it.
|
has no access to it.
|
||||||
|
@ -55,7 +56,7 @@ class TaskViewSet(viewsets.ViewSet):
|
||||||
return '\n'.join(output.split('\n')[line_num:])
|
return '\n'.join(output.split('\n')[line_num:])
|
||||||
|
|
||||||
def list(self, request, project_pk=None):
|
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 = self.queryset.filter(project=project_pk)
|
||||||
tasks = filters.OrderingFilter().filter_queryset(self.request, tasks, self)
|
tasks = filters.OrderingFilter().filter_queryset(self.request, tasks, self)
|
||||||
serializer = TaskSerializer(tasks, many=True)
|
serializer = TaskSerializer(tasks, many=True)
|
||||||
|
@ -68,8 +69,6 @@ class TaskViewSet(viewsets.ViewSet):
|
||||||
except ObjectDoesNotExist:
|
except ObjectDoesNotExist:
|
||||||
raise exceptions.NotFound()
|
raise exceptions.NotFound()
|
||||||
|
|
||||||
response_data = None
|
|
||||||
|
|
||||||
if request.query_params.get('output_only', '').lower() in ['true', '1']:
|
if request.query_params.get('output_only', '').lower() in ['true', '1']:
|
||||||
response_data = self.task_output_only(request, task)
|
response_data = self.task_output_only(request, task)
|
||||||
else:
|
else:
|
||||||
|
@ -88,13 +87,13 @@ class TaskViewSet(viewsets.ViewSet):
|
||||||
for file in filesList]
|
for file in filesList]
|
||||||
|
|
||||||
task = models.Task.create_from_images(files, project)
|
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)
|
return Response({"id": task.id}, status=status.HTTP_201_CREATED)
|
||||||
else:
|
else:
|
||||||
raise exceptions.ValidationError(detail="Cannot create task, input provided is not valid.")
|
raise exceptions.ValidationError(detail="Cannot create task, input provided is not valid.")
|
||||||
|
|
||||||
def update(self, request, pk=None, project_pk=None, partial=False):
|
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:
|
try:
|
||||||
task = self.queryset.get(pk=pk, project=project_pk)
|
task = self.queryset.get(pk=pk, project=project_pk)
|
||||||
except ObjectDoesNotExist:
|
except ObjectDoesNotExist:
|
||||||
|
|
|
@ -139,7 +139,7 @@ class Task(models.Model):
|
||||||
|
|
||||||
# TODO: log process has started processing
|
# TODO: log process has started processing
|
||||||
|
|
||||||
except ProcessingException, e:
|
except ProcessingException as e:
|
||||||
print("TASK ERROR: " + e.message)
|
print("TASK ERROR: " + e.message)
|
||||||
|
|
||||||
# Need to update status (first time, queued or running?)
|
# Need to update status (first time, queued or running?)
|
||||||
|
|
|
@ -1,7 +1,9 @@
|
||||||
|
from django.contrib.auth.models import User
|
||||||
from django.test import TestCase
|
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.boot import boot
|
||||||
|
from app.models import Project
|
||||||
|
|
||||||
|
|
||||||
class BootTestCase(TestCase):
|
class BootTestCase(TestCase):
|
||||||
'''
|
'''
|
||||||
|
|
|
@ -129,7 +129,7 @@ class TestApp(BootTestCase):
|
||||||
|
|
||||||
# Test options validation
|
# Test options validation
|
||||||
task.options = [{'name': 'test', 'value': 1}]
|
task.options = [{'name': 'test', 'value': 1}]
|
||||||
self.assertTrue(task.save() == None)
|
self.assertTrue(task.save() is None)
|
||||||
|
|
||||||
task.options = {'test': 1}
|
task.options = {'test': 1}
|
||||||
self.assertRaises(ValidationError, task.save)
|
self.assertRaises(ValidationError, task.save)
|
||||||
|
@ -139,12 +139,12 @@ class TestApp(BootTestCase):
|
||||||
|
|
||||||
|
|
||||||
def test_scheduler(self):
|
def test_scheduler(self):
|
||||||
self.assertTrue(scheduler.setup() == None)
|
self.assertTrue(scheduler.setup() is None)
|
||||||
|
|
||||||
# Can call update_nodes_info()
|
# 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
|
# 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)
|
||||||
|
|
Ładowanie…
Reference in New Issue