summaryrefslogtreecommitdiff
path: root/ishtar_common/views_api.py
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar_common/views_api.py')
-rw-r--r--ishtar_common/views_api.py32
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
+ )