demo-int-table/back/object/views.py

42 lines
1.1 KiB
Python

from rest_framework import viewsets
import django_filters
from .models import ClickableArea, Element3D, Scene3D
from .serializers import ClickableAreaSerializer, Element3DSerializer, Scene3DSerializer
class NumberInFilter(django_filters.BaseInFilter, django_filters.NumberFilter):
pass
class ClickableAreaViewSet(viewsets.ModelViewSet):
queryset = ClickableArea.objects.all()
serializer_class = ClickableAreaSerializer
filterset_fields = (
"source",
"object_name",
)
class Scene3DViewSet(viewsets.ModelViewSet):
queryset = Scene3D.objects.all()
serializer_class = Scene3DSerializer
filterset_fields = (
"name",
)
class Element3DFilter(django_filters.rest_framework.FilterSet):
parent = NumberInFilter(
field_name="parent",
lookup_expr="in",
)
parent__isnull = django_filters.BooleanFilter(
field_name="parent",
lookup_expr="isnull",
)
class Element3DViewSet(viewsets.ModelViewSet):
queryset = Element3D.objects.all()
serializer_class = Element3DSerializer
filterset_class = Element3DFilter