OpenDroneMap-WebODM/app/api/processingnodes.py

43 wiersze
1.5 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 nodes available. Processing nodes are associated with
zero or more tasks and take care of processing input images.
"""
# Don't need a "view node" permission. If you are logged-in, you can view nodes.
permission_classes = (DjangoModelPermissions, )
filter_backends = (DjangoFilterBackend, )
filter_class = ProcessingNodeFilter
pagination_class = None
serializer_class = ProcessingNodeSerializer
queryset = ProcessingNode.objects.all()