Return list of available first letters for manage navigation
This commit is contained in:
1 parent
fb795c277e
commit
470629d398
1 file changed
+40
-1
@@ -29,6 +29,7 @@ class MoviePlugin(Plugin):
|
|||||||
addApiView('movie.search', self.search)
|
addApiView('movie.search', self.search)
|
||||||
addApiView('movie.list', self.listView)
|
addApiView('movie.list', self.listView)
|
||||||
addApiView('movie.refresh', self.refresh)
|
addApiView('movie.refresh', self.refresh)
|
||||||
|
addApiView('movie.available_chars', self.charView)
|
||||||
|
|
||||||
addApiView('movie.add', self.add)
|
addApiView('movie.add', self.add)
|
||||||
addApiView('movie.edit', self.edit)
|
addApiView('movie.edit', self.edit)
|
||||||
@@ -72,7 +73,7 @@ class MoviePlugin(Plugin):
|
|||||||
if starts_with in ascii_letters:
|
if starts_with in ascii_letters:
|
||||||
filter_or.append(LibraryTitle.title.startswith(toUnicode(starts_with)))
|
filter_or.append(LibraryTitle.title.startswith(toUnicode(starts_with)))
|
||||||
else:
|
else:
|
||||||
for letter in ('!-=+,.?' + digits):
|
for letter in ('()!-=+,.?' + digits):
|
||||||
filter_or.append(LibraryTitle.title.startswith(toUnicode(letter)))
|
filter_or.append(LibraryTitle.title.startswith(toUnicode(letter)))
|
||||||
|
|
||||||
if search:
|
if search:
|
||||||
@@ -99,6 +100,32 @@ class MoviePlugin(Plugin):
|
|||||||
|
|
||||||
return movies
|
return movies
|
||||||
|
|
||||||
|
def availableChars(self, status = ['active']):
|
||||||
|
|
||||||
|
chars = ''
|
||||||
|
|
||||||
|
db = get_session()
|
||||||
|
|
||||||
|
# Make a list from string
|
||||||
|
if not isinstance(status, (list, tuple)):
|
||||||
|
status = [status]
|
||||||
|
|
||||||
|
q = db.query(Movie) \
|
||||||
|
.join(Movie.library, Library.titles) \
|
||||||
|
.options(joinedload_all('library.titles')) \
|
||||||
|
.filter(LibraryTitle.default == True) \
|
||||||
|
.filter(or_(*[Movie.status.has(identifier = s) for s in status]))
|
||||||
|
|
||||||
|
results = q.all()
|
||||||
|
|
||||||
|
for movie in results:
|
||||||
|
char = movie.library.titles[0].title[0].lower()
|
||||||
|
char = char if char in ascii_letters else '#'
|
||||||
|
if char not in chars:
|
||||||
|
chars += char
|
||||||
|
|
||||||
|
return chars
|
||||||
|
|
||||||
def listView(self):
|
def listView(self):
|
||||||
|
|
||||||
params = getParams()
|
params = getParams()
|
||||||
@@ -115,6 +142,18 @@ class MoviePlugin(Plugin):
|
|||||||
'movies': movies,
|
'movies': movies,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
def charView(self):
|
||||||
|
|
||||||
|
params = getParams()
|
||||||
|
status = params.get('status', ['active'])
|
||||||
|
chars = self.availableChars(status)
|
||||||
|
|
||||||
|
return jsonified({
|
||||||
|
'success': True,
|
||||||
|
'empty': len(chars) == 0,
|
||||||
|
'chars': chars,
|
||||||
|
})
|
||||||
|
|
||||||
def refresh(self):
|
def refresh(self):
|
||||||
|
|
||||||
params = getParams()
|
params = getParams()
|
||||||
|
|||||||
Reference in new issue
Block a user