1
0
mirror of https://github.com/spl0k/supysonic.git synced 2024-09-20 03:11:04 +00:00

Playlists enhancements

- Playlists list sorted
- Owner prefix for public playlists that aren't yours
This commit is contained in:
spl0k 2013-06-28 12:39:46 +02:00
parent 9299b14422
commit 1b4415f98c
2 changed files with 7 additions and 7 deletions

View File

@ -1,7 +1,7 @@
# coding: utf-8 # coding: utf-8
from flask import request from flask import request
from sqlalchemy import or_ from sqlalchemy import or_, func
import uuid import uuid
from web import app from web import app
from db import Playlist, User, Track, session from db import Playlist, User, Track, session
@ -9,16 +9,16 @@ from . import get_entity
@app.route('/rest/getPlaylists.view', methods = [ 'GET', 'POST' ]) @app.route('/rest/getPlaylists.view', methods = [ 'GET', 'POST' ])
def list_playlists(): def list_playlists():
query = Playlist.query.filter(or_(Playlist.user_id == request.user.id, Playlist.public == True)) query = Playlist.query.filter(or_(Playlist.user_id == request.user.id, Playlist.public == True)).order_by(func.lower(Playlist.name))
username = request.args.get('username') username = request.args.get('username')
if username: if username:
if not request.user.admin: if not request.user.admin:
return request.error_formatter(50, 'Restricted to admins') return request.error_formatter(50, 'Restricted to admins')
query = Playlist.query.join(User).filter(User.name == username) query = Playlist.query.join(User).filter(User.name == username).order_by(func.lower(Playlist.name))
return request.formatter({ 'playlists': { 'playlist': [ p.as_subsonic_playlist() for p in query ] } }) return request.formatter({ 'playlists': { 'playlist': [ p.as_subsonic_playlist(request.user) for p in query ] } })
@app.route('/rest/getPlaylist.view', methods = [ 'GET', 'POST' ]) @app.route('/rest/getPlaylist.view', methods = [ 'GET', 'POST' ])
def show_playlist(): def show_playlist():
@ -26,7 +26,7 @@ def show_playlist():
if not status: if not status:
return res return res
info = res.as_subsonic_playlist() info = res.as_subsonic_playlist(request.user)
info['entry'] = [ t.as_subsonic_child(request.user) for t in res.tracks ] info['entry'] = [ t.as_subsonic_child(request.user) for t in res.tracks ]
return request.formatter({ 'playlist': info }) return request.formatter({ 'playlist': info })

4
db.py
View File

@ -350,10 +350,10 @@ class Playlist(Base):
user = relationship('User') user = relationship('User')
tracks = relationship('Track', secondary = playlist_track_assoc) tracks = relationship('Track', secondary = playlist_track_assoc)
def as_subsonic_playlist(self): def as_subsonic_playlist(self, user):
info = { info = {
'id': str(self.id), 'id': str(self.id),
'name': self.name, 'name': self.name if self.user_id == user.id else '[%s] %s' % (self.user.name, self.name),
'owner': self.user.name, 'owner': self.user.name,
'public': self.public, 'public': self.public,
'songCount': len(self.tracks), 'songCount': len(self.tracks),