summaryrefslogtreecommitdiff
path: root/ishtar_common/lookups.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2021-09-09 11:07:01 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2022-12-12 12:20:58 +0100
commit3297cdadc31ea857ed51317081d7d3174af7dbc9 (patch)
tree206966ec7684d85811f7a8686fd781d3ab9d9fd4 /ishtar_common/lookups.py
parent07e3e2e9c3da9f05634a45f65723504c229f2baa (diff)
downloadIshtar-3297cdadc31ea857ed51317081d7d3174af7dbc9.tar.bz2
Ishtar-3297cdadc31ea857ed51317081d7d3174af7dbc9.zip
Migration to Django 2.2 - fixes
- remove django-ajax-select - fix migrations
Diffstat (limited to 'ishtar_common/lookups.py')
-rw-r--r--ishtar_common/lookups.py167
1 files changed, 0 insertions, 167 deletions
diff --git a/ishtar_common/lookups.py b/ishtar_common/lookups.py
deleted file mode 100644
index 66b43f3e4..000000000
--- a/ishtar_common/lookups.py
+++ /dev/null
@@ -1,167 +0,0 @@
-from ajax_select import register, LookupChannel as BaseLookupChannel
-
-from django.conf import settings
-from django.contrib.auth.models import User
-from django.db.models import Q
-from ishtar_common import models
-
-
-class LookupChannel(BaseLookupChannel):
- def get_objects(self, items):
- # TODO: why IDs are not given here? M2M issue
- ids = []
- for item in items:
- if hasattr(item, 'pk'):
- ids.append(item.pk)
- else:
- ids.append(item)
-
- # TODO: strange bug on Import edit
- # copied from lookup_channel.py
- if getattr(self.model._meta.pk, "remote_field", False):
- # Use the type of the field being referenced (2.0+)
- # modification is here
- # pk_type = self.model._meta.pk.remote_field.field.to_python
- pk_type = int
- elif getattr(self.model._meta.pk, "rel", False):
- # Use the type of the field being referenced
- pk_type = self.model._meta.pk.rel.field.to_python
- else:
- pk_type = self.model._meta.pk.to_python
-
- # Return objects in the same order as passed in here
- ids = [pk_type(pk) for pk in ids]
- things = self.model.objects.in_bulk(ids)
- return [things[aid] for aid in ids if aid in things]
-
- def format_item_display(self, item):
- return "<span class='ajax-label'>%s</span>" % str(item)
-
-
-class TypeLookupChannel(LookupChannel):
- def get_query(self, q, request):
- query = Q(label__icontains=q) | Q(label__icontains=q)
- return self.model.objects.filter(query).order_by('label')[:20]
-
-
-@register('town')
-class TownLookup(LookupChannel):
- model = models.Town
-
- def get_query(self, q, request):
- if settings.COUNTRY == 'fr':
- query = Q()
- for term in q.strip().split(' '):
- query &= (
- Q(name__icontains=term) | Q(numero_insee__icontains=term)
- )
- else:
- query = Q(name__icontains=q)
- return self.model.objects.filter(query).order_by('name')[:20]
-
-
-@register('user')
-class UserLookup(LookupChannel):
- model = User
-
- def get_query(self, q, request):
- query = Q()
- for term in q.strip().split(' '):
- query &= (
- Q(username__icontains=term) |
- Q(first_name__icontains=term) |
- Q(last_name__icontains=term) |
- Q(email__icontains=term)
- )
- return self.model.objects.filter(query).order_by('username')[:20]
-
-
-@register('organization')
-class OrganizationLookup(LookupChannel):
- model = models.Organization
-
- def get_query(self, q, request):
- return self.model.objects.filter(
- name__icontains=q).order_by('name')[:20]
-
-
-@register('person')
-class PersonLookup(LookupChannel):
- model = models.Person
-
- def get_query(self, q, request):
- query = Q()
- for term in q.strip().split(' '):
- query &= (
- Q(name__icontains=term) | Q(surname__icontains=term) |
- Q(email__icontains=term) | Q(attached_to__name__icontains=term)|
- Q(raw_name__icontains=term)
- )
- return self.model.objects.filter(query).order_by('name')[:20]
-
-
-@register('author')
-class AuthorLookup(LookupChannel):
- model = models.Author
-
- def get_query(self, q, request):
- query = Q()
- for term in q.strip().split(' '):
- query &= (
- Q(person__name__icontains=term) |
- Q(person__surname__icontains=term) |
- Q(person__raw_name__icontains=term) |
- Q(person__attached_to__name__icontains=term) |
- Q(author_type__label__icontains=term)
- )
- return self.model.objects.filter(query).order_by('person__name')[:20]
-
-
-@register('ishtaruser')
-class UserLookup(LookupChannel):
- model = models.IshtarUser
-
- def get_query(self, q, request):
- query = Q()
- for term in q.strip().split(' '):
- query &= (
- Q(user_ptr__username__icontains=term) |
- Q(person__name__icontains=term) |
- Q(person__surname__icontains=term) |
- Q(person__email__icontains=term) |
- Q(person__attached_to__name__icontains=term)|
- Q(person__raw_name__icontains=term)
- )
- return self.model.objects.filter(query).order_by('person__name')[:20]
-
- def format_item_display(self, item):
- return "<span class='ajax-label'>%s</span>" % str(item.person)
-
-
-@register('area')
-class AreaLookup(LookupChannel):
- model = models.Area
-
- def get_query(self, q, request):
- query = Q(label__icontains=q)
- return self.model.objects.filter(query).order_by('label')[:20]
-
-
-@register('document')
-class DocumentLookup(LookupChannel):
- model = models.Document
-
- def get_query(self, q, request):
- query = Q(title__icontains=q) | Q(reference__icontains=q) | Q(
- internal_reference__icontains=q
- )
- return self.model.objects.filter(query).order_by('title')[:20]
-
-
-@register('source_type')
-class SourceTypeLookup(LookupChannel):
- model = models.SourceType
-
- def get_query(self, q, request):
- query = Q(label__icontains=q)
- return self.model.objects.filter(query).order_by('label')[:20]