1
0
mirror of https://github.com/spl0k/supysonic.git synced 2024-12-23 01:16:18 +00:00

WIP: Add some style to web frontend

This commit is contained in:
Óscar García Amor 2017-07-10 14:25:19 +02:00
parent 8a91e23043
commit aa7939cbc7
6 changed files with 79 additions and 40 deletions

View File

@ -22,11 +22,13 @@ from flask import request, session, flash, render_template, redirect, url_for
import uuid
from supysonic.web import app, store
from supysonic.db import Playlist
from supysonic.managers.user import UserManager
@app.route('/playlist')
def playlist_index():
return render_template('playlists.html', mine = store.find(Playlist, Playlist.user_id == uuid.UUID(session.get('userid'))),
others = store.find(Playlist, Playlist.user_id != uuid.UUID(session.get('userid'))))
others = store.find(Playlist, Playlist.user_id != uuid.UUID(session.get('userid'))),
admin = UserManager.get(store, session.get('userid'))[1].admin)
@app.route('/playlist/<uid>')
def playlist_details(uid):
@ -41,7 +43,7 @@ def playlist_details(uid):
flash('Unknown playlist')
return redirect(url_for('playlist_index'))
return render_template('playlist.html', playlist = playlist)
return render_template('playlist.html', playlist = playlist, admin = UserManager.get(store, session.get('userid'))[1].admin)
@app.route('/playlist/<uid>', methods = [ 'POST' ])
def playlist_update(uid):

View File

@ -30,7 +30,8 @@ body {
margin-bottom: 0;
}
#clients td {
#clients td,
#playlist td {
vertical-align: middle;
}

View File

@ -31,14 +31,14 @@
<div class="form-group">
<label class="sr-only" for="user">Name</label>
<div class="input-group">
<span class="input-group-addon"><i class="glyphicon glyphicon-pencil"></i></span>
<div class="input-group-addon"><span class="glyphicon glyphicon-pencil"></span></div>
<input type="text" class="form-control" id="name" name="name" value="{{ request.form.name }}" placeholder="Name" />
</div>
</div>
<div class="form-group">
<label class="sr-only" for="user">Path</label>
<div class="input-group">
<span class="input-group-addon"><i class="glyphicon glyphicon-folder-open"></i></span>
<div class="input-group-addon"><span class="glyphicon glyphicon-folder-open"></span></div>
<input type="text" class="form-control" id="path" name="path" value="{{ request.form.path }}" placeholder="Path" />
</div>
</div>

View File

@ -18,27 +18,42 @@
along with this program. If not, see <http://www.gnu.org/licenses/>.
-#}
{% extends "layout.html" %}
{% block navbar_playlists %}
<li class="active"><a href="{{ url_for('playlist_index') }}">Playlists <span
class="sr-only">(current)</span></a></li>
{% endblock %}
{% block body %}
<h2>Playlist "{{ playlist.name }}"</h2>
<div class="page-header">
<h2>Playlist "{{ playlist.name }}"</h2>
</div>
{% if playlist.user_id|str == session.get('userid') %}
<h3>Edit</h3>
<form method="post">
<table>
<table id="playlist" class="table">
<thead>
<tr><th>Name</th><th>Public</th><th></th></tr>
</thead>
<tbody>
<tr>
<td><input type="text" name="name" value="{{ playlist.name }}" /></td>
<td><input type="text" class="form-control" name="name" value="{{ playlist.name }}" /></td>
<td><input type="checkbox" name="public" {% if playlist.public %}checked="true"{% endif %} /></td>
<td><input type="submit" /></td>
<td><input class="btn btn-default" type="submit" /></td>
</tr>
</tbody>
</table>
</form>
{% endif %}
<h3>Tracks</h3>
<table>
<table class="table table-striped">
<thead>
<tr><th>Artist</th><th>Title</th><th>Album</th><th>Length</th></tr>
</thead>
<tbody>
{% for t in playlist.tracks %}
<tr><td>{{ t.album.artist.name }}</td><td>{{ t.title }}</td><td>{{ t.album.name }}</td><td>{{ t.duration_str() }}</td></tr>
{% endfor %}
</tbody>
</table>
{% endblock %}

View File

@ -18,27 +18,47 @@
along with this program. If not, see <http://www.gnu.org/licenses/>.
-#}
{% extends "layout.html" %}
{% block navbar_playlists %}
<li class="active"><a href="{{ url_for('playlist_index') }}">Playlists <span
class="sr-only">(current)</span></a></li>
{% endblock %}
{% block body %}
<h2>My playlists</h2>
<div class="page-header">
<h2>My playlists</h2>
</div>
{% if not mine.count() %}
<p>You don't have any playlists.</p>
{% else %}
<table>
<table class="table table-striped table-hover">
<thead>
<tr><th>Playlist</th><th>Tracks</th><th>Public</th><th></th></tr>
</thead>
<tbody>
{% for p in mine %}
<tr>
<td><a href="{{ url_for('playlist_details', uid = p.id) }}">{{ p.name }}</a></td>
<td>{{ p.tracks.count() }}</td>
<td><input type="checkbox" disabled="true" {% if p.public %}checked="true"{% endif %} /></td>
<td><a href="{{ url_for('playlist_delete', uid = p.id) }}">X</a></td>
<td>{% if p.public %}<span class="glyphicon glyphicon-check"
aria-label="Public playlist"></span>{% else %}<span
class="glyphicon glyphicon-unchecked"
aria-label="Private playlist"></span>{% endif %}</td>
<td><a href="{{ url_for('playlist_delete', uid = p.id) }}" aria-label="Delete playlist">
<span class="glyphicon glyphicon-remove-circle" aria-hidden="true" data-toggle="tooltip" data-placement="top" title="Delete playlist"></span></a></td>
</tr>
{% endfor %}
</tbody>
</table>
{% endif %}
{% if others.count() %}
<h2>Others' playslits</h2>
<table>
<div class="page-header">
<h2>Others' playlists</h2>
</div>
<table class="table table-striped table-hover">
<thead>
<tr><th>Playlist</th><th>Owner</th><th>Tracks</th></tr>
</thead>
<tbody>
{% for p in others %}
<tr>
<td><a href="{{ url_for('playlist_details', uid = p.id) }}">{{ p.name }}</a></td>
@ -46,6 +66,7 @@
<td>{{ p.tracks.count() }}</td>
</tr>
{% endfor %}
</tbody>
</table>
{% endif %}
{% endblock %}

View File

@ -35,7 +35,7 @@
{% for user in users %}
<tr><td>{{ user.name }}</td><td>{{ user.mail }}</td><td>{{ user.admin }}</td><td>{{ user.last_play_date }}</td><td>
<a href="{{ url_for('del_user', uid = user.id) }}" aria-label="Delete user">
<span class="glyphicon glyphicon-remove-circle" aria-hidden="true" data-toggle="tooltip" data-placement="top" title="Delete user"></a></td></tr>
<span class="glyphicon glyphicon-remove-circle" aria-hidden="true" data-toggle="tooltip" data-placement="top" title="Delete user"></span></a></td></tr>
{% endfor %}
</tbody>
</table>