diff options
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 |
commit | d1435a3d73765fa5e6822fc86bd4d77780641974 (patch) | |
tree | 55ba7c47e5aaddd390f8209993140823f6473fe7 /ishtar_common/views_api.py | |
parent | f713d1010527d171dff95c53f242c009e2b063f8 (diff) | |
download | Ishtar-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.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 |