mirror of
https://github.com/SectorLabs/django-localized-fields.git
synced 2025-04-24 19:32:53 +03:00
81 lines
1.9 KiB
Python
81 lines
1.9 KiB
Python
from django.conf import settings
|
|
from django.contrib.postgres.fields.hstore import KeyTransform
|
|
from django.contrib.postgres.lookups import (SearchLookup, TrigramSimilar,
|
|
Unaccent)
|
|
from django.db.models.expressions import Col
|
|
from django.db.models.lookups import (Contains, EndsWith, Exact, IContains,
|
|
IEndsWith, IExact, In, IRegex, IsNull,
|
|
IStartsWith, Regex, StartsWith)
|
|
from django.utils import translation
|
|
|
|
|
|
class LocalizedLookupMixin():
|
|
def process_lhs(self, qn, connection):
|
|
if isinstance(self.lhs, Col):
|
|
language = translation.get_language() or settings.LANGUAGE_CODE
|
|
self.lhs = KeyTransform(language, self.lhs)
|
|
return super().process_lhs(qn, connection)
|
|
|
|
def get_prep_lookup(self):
|
|
return str(self.rhs)
|
|
|
|
|
|
class LocalizedSearchLookup(LocalizedLookupMixin, SearchLookup):
|
|
pass
|
|
|
|
|
|
class LocalizedUnaccent(LocalizedLookupMixin, Unaccent):
|
|
pass
|
|
|
|
|
|
class LocalizedTrigramSimilair(LocalizedLookupMixin, TrigramSimilar):
|
|
pass
|
|
|
|
|
|
class LocalizedExact(LocalizedLookupMixin, Exact):
|
|
pass
|
|
|
|
|
|
class LocalizedIExact(LocalizedLookupMixin, IExact):
|
|
pass
|
|
|
|
|
|
class LocalizedIn(LocalizedLookupMixin, In):
|
|
pass
|
|
|
|
|
|
class LocalizedContains(LocalizedLookupMixin, Contains):
|
|
pass
|
|
|
|
|
|
class LocalizedIContains(LocalizedLookupMixin, IContains):
|
|
pass
|
|
|
|
|
|
class LocalizedStartsWith(LocalizedLookupMixin, StartsWith):
|
|
pass
|
|
|
|
|
|
class LocalizedIStartsWith(LocalizedLookupMixin, IStartsWith):
|
|
pass
|
|
|
|
|
|
class LocalizedEndsWith(LocalizedLookupMixin, EndsWith):
|
|
pass
|
|
|
|
|
|
class LocalizedIEndsWith(LocalizedLookupMixin, IEndsWith):
|
|
pass
|
|
|
|
|
|
class LocalizedIsNullWith(LocalizedLookupMixin, IsNull):
|
|
pass
|
|
|
|
|
|
class LocalizedRegexWith(LocalizedLookupMixin, Regex):
|
|
pass
|
|
|
|
|
|
class LocalizedIRegexWith(LocalizedLookupMixin, IRegex):
|
|
pass
|