diff options
Diffstat (limited to 'ishtar_common/views_api.py')
-rw-r--r-- | ishtar_common/views_api.py | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/ishtar_common/views_api.py b/ishtar_common/views_api.py index 052a764bc..a8d6b9648 100644 --- a/ishtar_common/views_api.py +++ b/ishtar_common/views_api.py @@ -17,11 +17,15 @@ # See the file COPYING for details. +from django.apps import apps +from django.http import Http404 + from urllib.parse import unquote_plus from rest_framework import serializers from rest_framework.response import Response +from ishtar_common.models_common import GeneralType from ishtar_common.models_imports import ImporterType from ishtar_common.rest import GISAPIView from ishtar_common.views_item import get_item @@ -54,6 +58,25 @@ class GISSourceAPI(GISAPIView): return Response(serializer.data) +class GenericTypeSerializer(serializers.Serializer): + label = serializers.CharField(max_length=500) + txt_idx = serializers.CharField(max_length=200) + + +class GISTypeAPI(GISAPIView): + def get(self, request, app, model, format=None): + try: + model = apps.get_model(app, model) + except LookupError: + raise Http404() + if not issubclass(model, GeneralType): + raise Http404() + serializer = GenericTypeSerializer( + model.objects.filter(available=True), many=True + ) + return Response(serializer.data) + + class GISImportAPI(GISAPIView): PAGE_LEN = 50 |