From c72cd53a2f43379b8119c972221ccdb162afc924 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Fri, 18 Jul 2025 17:10:41 +0200 Subject: ✨ GIS API: get types API MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ishtar_common/views_api.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'ishtar_common/views_api.py') 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 -- cgit v1.2.3