always use get_operator, avoid case-insensitive match if possible

This commit is contained in:
j 2016-06-29 23:58:29 +02:00
commit e9863c238e
24 changed files with 289 additions and 370 deletions

View file

@ -3,16 +3,19 @@
import unicodedata
from django.db.models import Q, Manager
from oxdjango.query import QuerySet
from oxdjango.query import QuerySet
from oxdjango.managers import get_operator
from item.utils import decode_id
keymap = {
'user': 'user__username',
}
default_key = 'name'
def parseCondition(condition, user):
k = condition.get('key', 'name')
k = {
'user': 'user__username',
}.get(k, k)
k = condition.get('key', default_key)
k = keymap.get(k, k)
v = condition['value']
op = condition.get('operator')
if not op:
@ -25,12 +28,7 @@ def parseCondition(condition, user):
if k == 'id':
v = decode_id(v)
key = '%s%s' % (k, {
'==': '__iexact',
'^': '__istartswith',
'$': '__iendswith',
}.get(op,'__icontains'))
key = k + get_operator(op, 'istr')
key = str(key)
if isinstance(v, unicode):
v = unicodedata.normalize('NFKD', v).lower()

View file

@ -62,7 +62,7 @@ class Event(models.Model):
@classmethod
def get_or_create(model, name):
qs = model.objects.filter(name_find__icontains=u'|%s|'%name)
qs = model.objects.filter(name_find__contains=u'|%s|' % name.lower())
if qs.count() == 0:
instance = model(name=name)
instance.save()
@ -131,6 +131,7 @@ class Event(models.Model):
if not self.name_sort:
self.set_name_sort()
self.name_find = '||' + '||'.join((self.name,) + self.alternativeNames) + '||'
self.name_find = self.name_find.lower()
self.defined = len(filter(None, [getattr(self, key)
for key in ('start', 'end')])) > 0
if self.endTime and self.startTime: