Add entry deletion, footer

This commit is contained in:
Phillip Kühne 2019-05-22 12:19:28 +02:00
parent 0f7144dbc9
commit 5818eb1150
5 changed files with 126 additions and 9 deletions

View File

@ -28,7 +28,7 @@ def create_entry_table():
def create_list_view():
conn = open_db()
conn.execute("""CREATE VIEW IF NOT EXISTS [Liste] AS
SELECT Name, Title, Artist
SELECT Name, Title, Artist, entries.Id
FROM entries, songs
WHERE entries.Song_Id=songs.Id""")
conn.close()
@ -59,3 +59,11 @@ def add_entry(name,song_id):
conn.commit()
conn.close()
return
def delete_entry(id):
conn = open_db()
cur = conn.cursor()
cur.execute("DELETE FROM entries WHERE id=?",(id,))
conn.commit()
conn.close()
return True

30
main.py
View File

@ -1,12 +1,22 @@
from flask import Flask, render_template, Response, abort, request
from flask import Flask, render_template, Response, abort, request, redirect
import helpers
import database
import os, errno
import json
from flask_basicauth import BasicAuth
app = Flask(__name__, static_url_path='/static')
app.config['BASIC_AUTH_USERNAME'] = 'admin'
app.config['BASIC_AUTH_PASSWORD'] = 'Karaoke2019blubb'
basic_auth = BasicAuth(app)
@app.route("/")
def home():
return render_template('main.html', list=database.get_list())
if basic_auth.authenticate():
return render_template('main_admin.html', list=database.get_list(), auth=basic_auth.authenticate())
else:
return render_template('main.html', list=database.get_list(), auth=basic_auth.authenticate())
@app.route('/api/enqueue', methods=['POST'])
def enqueue():
@ -20,7 +30,7 @@ def enqueue():
@app.route("/list")
def songlist():
return render_template('songlist.html', list=database.get_song_list())
return render_template('songlist.html', list=database.get_song_list(), auth=basic_auth.authenticate())
@app.route("/api/songs")
def songs():
@ -33,6 +43,20 @@ def get_song_completions(input_string):
list = database.get_song_completions(input_string=input_string)
return Response(json.dumps(list, ensure_ascii=False).encode('utf-8'), mimetype='text/json')
@app.route("/api/entries/delete/<entry_id>")
@basic_auth.required
def delete_entry(entry_id):
if database.delete_entry(entry_id):
return Response({"status": "OK"}, mimetype='text/json')
else:
return Response({"status": "FAIL"}, mimetype='text/json')
@app.route("/login")
@basic_auth.required
def admin():
return redirect("/")
if __name__ == "__main__":
"""try:
os.remove("test.db")

View File

@ -1,3 +1,30 @@
body {
padding-top: 5rem;
}
html, body {
height: 100%;
}
footer a, footer span{
display: inline-flex;
vertical-align: middle;
}
.site {
height: auto;
min-height: 100%;
}
main {
padding-bottom: 60px; /* Höhe des Footers */
}
.footer {
margin-top: -60px;
width: 100%;
height: 60px;
/* Set the fixed height of the footer here */
/*line-height: 60px; /* Vertically center the text there */
background-color: #f5f5f5;
}

View File

@ -45,11 +45,24 @@
</form>-->
</div>
</nav>
<main role="main" class="container">
{% block content %}{% endblock %}
</main><!-- /.container -->
<div class="site">
<main role="main" class="container">
{% block content %}{% endblock %}
</main><!-- /.container -->
</div>
<!-- Footer -->
<footer class="footer">
<div class="container text-center py-3">
{% if not auth %}
<a href="/login"><i class='material-icons'>launch</i>&nbsp;Login</a>
{% endif %}
<a href="https://github.com/PhoenixTwoFive/karaoqueue"><i class='material-icons'>code</i>&nbsp;Github</a>
<span class="text-muted">KaraoQueue -&nbsp;<span
style="display:inline-block;transform: rotate(180deg);">&copy</span>&nbsp;2019 - Phillip
Kühne</span>
</div>
</footer>
<!-- Footer -->
<!-- Bootstrap core JavaScript
================================================== -->
<!-- Placed at the end of the document so the pages load faster -->

45
templates/main_admin.html Normal file
View File

@ -0,0 +1,45 @@
{% extends 'base.html' %}
{% block title %}Home{% endblock %}
{% block content %}
<table class="table">
<tr>
<th scope="col">Name</th>
<th scope="col">Song</th>
<th scope="col">Künstler</th>
<th scope="col">Löschen</th>
</tr>
{% for entry in list: %}
<tr>
<td>
{{ entry[0] }}
</td>
<td>
{{ entry[1] }}
</td>
<td>
{{ entry[2] }}
</td>
<td>
<button type='button' class='btn btn-danger' onclick='deleteEntry({{ entry[3] }})'><i
class='material-icons'>delete</i></button>
</td>
</tr>
{% endfor %}
</table>
<a name="end"></a>
{% endblock %}
{% block extrajs %}
<script>
function deleteEntry(entry_id) {
$.ajax({
type: 'GET',
url: '/api/entries/delete/'+entry_id,
contentType: "application/json",
dataType: 'json'
});
location.reload();
}
</script>
{% endblock %}