OpenDroneMap-WebODM/app/api/processingnodes.py

40 wiersze
1.3 KiB
Python

import django_filters
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):
class Meta:
model = ProcessingNode
fields = '__all__'
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())
else:
return queryset.filter(available_options=dict())
class Meta:
model = ProcessingNode
fields = ['has_available_options', 'id', 'hostname', 'port', 'api_version', 'queue_count', ]
class ProcessingNodeViewSet(viewsets.ModelViewSet):
"""
Processing node get/add/delete/update
Processing nodes are associated with zero or more tasks and
take care of processing input images.
"""
filter_class = ProcessingNodeFilter
pagination_class = None
serializer_class = ProcessingNodeSerializer
queryset = ProcessingNode.objects.all()