diff options
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 |
commit | 3297cdadc31ea857ed51317081d7d3174af7dbc9 (patch) | |
tree | 206966ec7684d85811f7a8686fd781d3ab9d9fd4 /ishtar_common/lookups.py | |
parent | 07e3e2e9c3da9f05634a45f65723504c229f2baa (diff) | |
download | Ishtar-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.py | 167 |
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] |