diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2023-12-18 18:56:31 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2024-04-16 16:38:33 +0200 |
commit | 56c5f6e31f34e47d9a6c31767840c9d949d63abf (patch) | |
tree | c293968531fba747a39d464ac6b571dc39d99b2e /ishtar_common/views.py | |
parent | ef878c317f8aa33b5fdd92417a12e1385454e86e (diff) | |
download | Ishtar-56c5f6e31f34e47d9a6c31767840c9d949d63abf.tar.bz2 Ishtar-56c5f6e31f34e47d9a6c31767840c9d949d63abf.zip |
✨ imports: add search criteria
Diffstat (limited to 'ishtar_common/views.py')
-rw-r--r-- | ishtar_common/views.py | 27 |
1 files changed, 27 insertions, 0 deletions
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") |