From efee3a836d382d15405ed7e22821c27a6ed90696 Mon Sep 17 00:00:00 2001 From: Ruud Date: Sun, 22 Jan 2012 23:40:11 +0100 Subject: [PATCH] Use simple_title for sorting and searching --- couchpotato/core/plugins/movie/main.py | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/couchpotato/core/plugins/movie/main.py b/couchpotato/core/plugins/movie/main.py index 2e56e9a..212d2d2 100644 --- a/couchpotato/core/plugins/movie/main.py +++ b/couchpotato/core/plugins/movie/main.py @@ -8,8 +8,8 @@ from couchpotato.core.plugins.base import Plugin from couchpotato.core.settings.model import Movie, Library, LibraryTitle from couchpotato.environment import Env from sqlalchemy.orm import joinedload_all -from sqlalchemy.sql.expression import or_, asc, func -from string import ascii_letters, digits +from sqlalchemy.sql.expression import or_, asc, not_ +from string import ascii_lowercase from urllib import urlencode log = CPLog(__name__) @@ -70,19 +70,22 @@ class MoviePlugin(Plugin): filter_or = [] if starts_with: - if starts_with in ascii_letters: - filter_or.append(LibraryTitle.title.startswith(toUnicode(starts_with))) + starts_with = toUnicode(starts_with.lower()) + if starts_with in ascii_lowercase: + filter_or.append(LibraryTitle.simple_title.startswith(starts_with)) else: - for letter in ('()!-=+,.?' + digits): - filter_or.append(LibraryTitle.title.startswith(toUnicode(letter))) + ignore = [] + for letter in ascii_lowercase: + ignore.append(LibraryTitle.simple_title.startswith(toUnicode(letter))) + filter_or.append(not_(or_(*ignore))) if search: - filter_or.append(LibraryTitle.title.like('%%' + search + '%%')) + filter_or.append(LibraryTitle.simple_title.like('%%' + search + '%%')) if filter_or: q = q.filter(or_(*filter_or)) - q = q.order_by(asc(func.lower(LibraryTitle.title))) + q = q.order_by(asc(LibraryTitle.simple_title)) if limit_offset: splt = limit_offset.split(',') @@ -119,8 +122,8 @@ class MoviePlugin(Plugin): results = q.all() for movie in results: - char = movie.library.titles[0].title[0].lower() - char = char if char in ascii_letters else '#' + char = movie.library.titles[0].simple_title[0] + char = char if char in ascii_lowercase else '#' if char not in chars: chars += char