mirror of
https://github.com/spl0k/supysonic.git
synced 2024-12-22 17:06:17 +00:00
Playlists enhancements
- Playlists list sorted - Owner prefix for public playlists that aren't yours
This commit is contained in:
parent
9299b14422
commit
1b4415f98c
@ -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
4
db.py
@ -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),
|
||||||
|
Loading…
Reference in New Issue
Block a user