summaryrefslogtreecommitdiff
path: root/ishtar_common/views_api.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2025-07-18 17:10:41 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2025-07-21 15:10:29 +0200
commitd1435a3d73765fa5e6822fc86bd4d77780641974 (patch)
tree55ba7c47e5aaddd390f8209993140823f6473fe7 /ishtar_common/views_api.py
parentf713d1010527d171dff95c53f242c009e2b063f8 (diff)
downloadIshtar-d1435a3d73765fa5e6822fc86bd4d77780641974.tar.bz2
Ishtar-d1435a3d73765fa5e6822fc86bd4d77780641974.zip
✨ GIS API: get types API
Diffstat (limited to 'ishtar_common/views_api.py')
-rw-r--r--ishtar_common/views_api.py23
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