Browse Source

Use simple_title for sorting and searching

pull/69/merge
Ruud 13 years ago
parent
commit
efee3a836d
  1. 23
      couchpotato/core/plugins/movie/main.py

23
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.core.settings.model import Movie, Library, LibraryTitle
from couchpotato.environment import Env from couchpotato.environment import Env
from sqlalchemy.orm import joinedload_all from sqlalchemy.orm import joinedload_all
from sqlalchemy.sql.expression import or_, asc, func from sqlalchemy.sql.expression import or_, asc, not_
from string import ascii_letters, digits from string import ascii_lowercase
from urllib import urlencode from urllib import urlencode
log = CPLog(__name__) log = CPLog(__name__)
@ -70,19 +70,22 @@ class MoviePlugin(Plugin):
filter_or = [] filter_or = []
if starts_with: if starts_with:
if starts_with in ascii_letters: starts_with = toUnicode(starts_with.lower())
filter_or.append(LibraryTitle.title.startswith(toUnicode(starts_with))) if starts_with in ascii_lowercase:
filter_or.append(LibraryTitle.simple_title.startswith(starts_with))
else: else:
for letter in ('()!-=+,.?' + digits): ignore = []
filter_or.append(LibraryTitle.title.startswith(toUnicode(letter))) for letter in ascii_lowercase:
ignore.append(LibraryTitle.simple_title.startswith(toUnicode(letter)))
filter_or.append(not_(or_(*ignore)))
if search: if search:
filter_or.append(LibraryTitle.title.like('%%' + search + '%%')) filter_or.append(LibraryTitle.simple_title.like('%%' + search + '%%'))
if filter_or: if filter_or:
q = q.filter(or_(*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: if limit_offset:
splt = limit_offset.split(',') splt = limit_offset.split(',')
@ -119,8 +122,8 @@ class MoviePlugin(Plugin):
results = q.all() results = q.all()
for movie in results: for movie in results:
char = movie.library.titles[0].title[0].lower() char = movie.library.titles[0].simple_title[0]
char = char if char in ascii_letters else '#' char = char if char in ascii_lowercase else '#'
if char not in chars: if char not in chars:
chars += char chars += char

Loading…
Cancel
Save