diff options
Diffstat (limited to 'ishtar_common/views_api.py')
-rw-r--r-- | ishtar_common/views_api.py | 32 |
1 files changed, 31 insertions, 1 deletions
diff --git a/ishtar_common/views_api.py b/ishtar_common/views_api.py index c054246e4..052a764bc 100644 --- a/ishtar_common/views_api.py +++ b/ishtar_common/views_api.py @@ -17,11 +17,14 @@ # See the file COPYING for details. +from urllib.parse import unquote_plus + from rest_framework import serializers from rest_framework.response import Response -from ishtar_common.rest import GISAPIView from ishtar_common.models_imports import ImporterType +from ishtar_common.rest import GISAPIView +from ishtar_common.views_item import get_item class ImporterTypeSerializer(serializers.ModelSerializer): @@ -49,3 +52,30 @@ class GISSourceAPI(GISAPIView): def get(self, request, format=None): serializer = ImporterTypeSerializer(self.get_queryset(), many=True) return Response(serializer.data) + + +class GISImportAPI(GISAPIView): + PAGE_LEN = 50 + + def get(self, request, importer_slug, page=1, format=None): + user = self.request.user + q = ImporterType.q_qgis_importers(user.ishtaruser).filter(slug=importer_slug) + if not user.ishtaruser or not q.count(): + return Response([]) + query = None + if request.GET and request.GET["query"]: + query = unquote_plus(request.GET["query"]) + dct = {"query": query, "length": self.PAGE_LEN} + if page > 1: + dct["start"] = (page - 1) * self.PAGE_LEN + 1 + importer = q.all()[0] + importer_class = importer.get_importer_class() + cols, col_names = importer.get_columns(importer_class=importer_class) + obj_name = importer_class.OBJECT_CLS.__name__.lower() + return get_item(importer_class.OBJECT_CLS, "get_" + obj_name, obj_name, + own_table_cols=cols)( + request, data_type="json", full=False, force_own=False, + no_link=True, col_names=col_names, + col_types=importer.get_columns_types(), + **dct + ) |