From 56c5f6e31f34e47d9a6c31767840c9d949d63abf Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Mon, 18 Dec 2023 18:56:31 +0100 Subject: ✨ imports: add search criteria MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ishtar_common/views.py | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'ishtar_common/views.py') diff --git a/ishtar_common/views.py b/ishtar_common/views.py index 55a5947c0..3d86583b1 100644 --- a/ishtar_common/views.py +++ b/ishtar_common/views.py @@ -886,6 +886,33 @@ def autocomplete_person( return HttpResponse(data, content_type="text/plain") +def autocomplete_import(request): + all_items = request.user.has_perm("ishtar_common.view_import", models.Import) + own_items = False + if not all_items: + own_items = request.user.has_perm( + "ishtar_common.view_own_import", models.Import + ) + if not all_items and not own_items or not request.GET.get("term"): + return HttpResponse("[]", content_type="text/plain") + q = request.GET.get("term") + limit = request.GET.get("limit", 20) + try: + limit = int(limit) + except ValueError: + return HttpResponseBadRequest() + query = Q() + for q in q.split(" "): + query = query & (Q(name__unaccent__icontains=q) | Q(group__name__unaccent__icontains=q)) + if own_items: + if not hasattr(request.user, "ishtaruser"): + return HttpResponse(json.dumps([]), content_type="text/plain") + query &= models.Import.get_query_owns(request.user.ishtaruser) + items = models.Import.objects.filter(query).distinct()[:limit] + data = [{"id": item.pk, "value": item.name} for item in items if item] + return HttpResponse(json.dumps(data), content_type="text/plain") + + def autocomplete_area(request): if not request.GET.get("term"): return HttpResponse("[]", content_type="text/plain") -- cgit v1.2.3