From 2692300f3bbead8a4707329a9ab26da4ee8d1740 Mon Sep 17 00:00:00 2001 From: j <0x006A@0x2620.org> Date: Tue, 11 Oct 2011 21:05:11 +0200 Subject: [PATCH] title refinement --- pandora/item/models.py | 2 +- pandora/item/utils.py | 4 ++-- pandora/person/models.py | 9 ++++++--- pandora/title/managers.py | 3 +++ pandora/title/models.py | 11 +++++++---- 5 files changed, 19 insertions(+), 10 deletions(-) diff --git a/pandora/item/models.py b/pandora/item/models.py index 4b225320..63d0dc6e 100644 --- a/pandora/item/models.py +++ b/pandora/item/models.py @@ -619,7 +619,7 @@ class Item(models.Model): if name not in base_keys: if sort_type == 'title': value = get_title_sort(self.get(source, u'Untitled')) - value = utils.sort_string(value)[:955] + value = utils.sort_title(value)[:955] set_value(s, name, value) elif sort_type == 'person': value = sortNames(self.get(source, [])) diff --git a/pandora/item/utils.py b/pandora/item/utils.py index 9f29fc2c..4c5691da 100644 --- a/pandora/item/utils.py +++ b/pandora/item/utils.py @@ -201,14 +201,14 @@ def sort_string(string): def sort_title(title): - #title - title = re.sub(u'[\'!¿¡,\.;\-"\:\*\[\]]', '', title) #title = title.replace(u'Æ', 'Ae') if isinstance(title, str): title = unicode(title) title = sort_string(title) + #title + title = re.sub(u'[\'!¿¡,\.;\-"\:\*\[\]]', '', title) return title.strip() def get_positions(ids, pos): diff --git a/pandora/person/models.py b/pandora/person/models.py index f34c2278..06bc0c90 100644 --- a/pandora/person/models.py +++ b/pandora/person/models.py @@ -15,9 +15,12 @@ import managers def get_name_sort(name): - name = unicodedata.normalize('NFKD', name) - person, created = Person.objects.get_or_create(name=name) - sortname = unicodedata.normalize('NFKD', person.sortname) + name = unicodedata.normalize('NFKD', name).strip() + if name: + person, created = Person.objects.get_or_create(name=name) + sortname = unicodedata.normalize('NFKD', person.sortname) + else: + sortname = u'' return sortname class Person(models.Model): diff --git a/pandora/title/managers.py b/pandora/title/managers.py index 98afa293..b9e4480d 100644 --- a/pandora/title/managers.py +++ b/pandora/title/managers.py @@ -1,5 +1,6 @@ # -*- coding: utf-8 -*- # vi:si:et:sw=4:sts=4:ts=4 +import unicodedata from django.db.models import Q, Manager from ox.django.query import QuerySet import ox @@ -41,6 +42,8 @@ def parseCondition(condition, user): return q if k == 'id': v = ox.from26(v) + elif isinstance(v, unicode): + v = unicodedata.normalize('NFKD', v) if isinstance(v, bool): #featured and public flag key = k elif k in ('lat', 'lng', 'area', 'south', 'west', 'north', 'east', 'matches', 'id'): diff --git a/pandora/title/models.py b/pandora/title/models.py index 8e863b19..b5d73d88 100644 --- a/pandora/title/models.py +++ b/pandora/title/models.py @@ -13,9 +13,12 @@ from item import utils import managers def get_title_sort(title): - title = unicodedata.normalize('NFKD', title) - title, created = Title.objects.get_or_create(title=title) - sorttitle = unicodedata.normalize('NFKD', title.sorttitle) + title = unicodedata.normalize('NFKD', title).strip() + if title: + title, created = Title.objects.get_or_create(title=title) + sorttitle = unicodedata.normalize('NFKD', title.sorttitle) + else: + sorttitle = u'' return sorttitle class Title(models.Model): @@ -35,7 +38,7 @@ class Title(models.Model): if not self.sorttitle: self.sorttitle = ox.get_sort_title(self.title) self.sorttitle = unicodedata.normalize('NFKD', self.sorttitle) - self.sortsorttitle = utils.sort_string(self.sorttitle) + self.sortsorttitle = utils.sort_title(self.sorttitle) super(Title, self).save(*args, **kwargs) def get_or_create(model, title, imdbId=None):