normalize find values and make lower case, also normalize and lowercase quieries

This commit is contained in:
j 2012-11-18 20:26:13 +01:00
parent 1bc21588a6
commit ec5158c03a
7 changed files with 32 additions and 10 deletions

View file

@ -1,5 +1,7 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# vi:si:et:sw=4:sts=4:ts=4 # vi:si:et:sw=4:sts=4:ts=4
import unicodedata
from django.db.models import Q, Manager from django.db.models import Q, Manager
from ox.django.query import QuerySet from ox.django.query import QuerySet
@ -71,6 +73,8 @@ def parseCondition(condition, user):
}.get(op, '__icontains')) }.get(op, '__icontains'))
key = str(key) key = str(key)
if isinstance(v, unicode):
v = unicodedata.normalize('NFKD', v).lower()
if exclude: if exclude:
q = ~Q(**{key: v}) q = ~Q(**{key: v})
else: else:

View file

@ -2,6 +2,7 @@
# vi:si:et:sw=4:sts=4:ts=4 # vi:si:et:sw=4:sts=4:ts=4
from __future__ import division, with_statement from __future__ import division, with_statement
import re import re
import unicodedata
from django.db import models from django.db import models
from django.db.models import Q from django.db.models import Q
@ -136,6 +137,7 @@ class Annotation(models.Model):
if self.value: if self.value:
self.value = utils.cleanup_value(self.value, layer['type']) self.value = utils.cleanup_value(self.value, layer['type'])
self.findvalue = ox.decode_html(ox.strip_tags(re.sub('<br */?>\n?', ' ', self.value))).replace('\n', ' ') self.findvalue = ox.decode_html(ox.strip_tags(re.sub('<br */?>\n?', ' ', self.value))).replace('\n', ' ')
self.findvalue = unicodedata.normalize('NFKD', self.findvalue).lower()
sortvalue = sort_string(self.findvalue) sortvalue = sort_string(self.findvalue)
if sortvalue: if sortvalue:
self.sortvalue = sortvalue[:900] self.sortvalue = sortvalue[:900]

View file

@ -1,5 +1,6 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# vi:si:et:sw=4:sts=4:ts=4 # vi:si:et:sw=4:sts=4:ts=4
import unicodedata
from django.db.models import Q, Manager from django.db.models import Q, Manager
from ox.django.query import QuerySet from ox.django.query import QuerySet
@ -31,6 +32,8 @@ def parseCondition(condition, user):
}.get(op,'__icontains')) }.get(op,'__icontains'))
key = str(key) key = str(key)
if isinstance(v, unicode):
v = unicodedata.normalize('NFKD', v).lower()
if exclude: if exclude:
q = ~Q(**{k: v}) q = ~Q(**{k: v})
else: else:

View file

@ -1,6 +1,7 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# vi:si:et:sw=4:sts=4:ts=4 # vi:si:et:sw=4:sts=4:ts=4
from datetime import datetime from datetime import datetime
import unicodedata
from django.db.models import Q, Manager from django.db.models import Q, Manager
from django.conf import settings from django.conf import settings
@ -130,6 +131,8 @@ def parseCondition(condition, user):
k = str(k) k = str(k)
value_key = str(value_key) value_key = str(value_key)
if isinstance(v, unicode):
v = unicodedata.normalize('NFKD', v).lower()
if k == '*': if k == '*':
q = Q(**{value_key: v}) q = Q(**{value_key: v})
elif in_find: elif in_find:

View file

@ -600,6 +600,7 @@ class Item(models.Model):
value = value and 'true' or 'false' value = value and 'true' or 'false'
if isinstance(value, basestring): if isinstance(value, basestring):
value = ox.decode_html(ox.strip_tags(value.strip())) value = ox.decode_html(ox.strip_tags(value.strip()))
value = unicodedata.normalize('NFKD', value).lower()
f.value = value f.value = value
f.save() f.save()
else: else:

View file

@ -1,5 +1,7 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# vi:si:et:sw=4:sts=4:ts=4 # vi:si:et:sw=4:sts=4:ts=4
import unicodedata
from django.db.models import Q, Manager from django.db.models import Q, Manager
from ox.django.query import QuerySet from ox.django.query import QuerySet
@ -60,6 +62,8 @@ def parseCondition(condition, user):
}.get(op,'__icontains')) }.get(op,'__icontains'))
key = str(key) key = str(key)
if isinstance(v, unicode):
v = unicodedata.normalize('NFKD', v).lower()
if exclude: if exclude:
q = ~Q(**{key: v}) q = ~Q(**{key: v})
else: else:

View file

@ -1,5 +1,7 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# vi:si:et:sw=4:sts=4:ts=4 # vi:si:et:sw=4:sts=4:ts=4
import unicodedata
from django.db.models import Q, Manager from django.db.models import Q, Manager
from ox.django.query import QuerySet from ox.django.query import QuerySet
@ -59,6 +61,9 @@ def parseCondition(condition, user):
}.get(op,'__icontains')) }.get(op,'__icontains'))
key = str(key) key = str(key)
if isinstance(v, unicode):
v = unicodedata.normalize('NFKD', v).lower()
if exclude: if exclude:
q = ~Q(**{key: v}) q = ~Q(**{key: v})
else: else: