Add option to disable new entries

This commit is contained in:
Phillip Kühne 2019-08-20 02:45:28 +02:00
parent 655cb73e0c
commit 58695e568f
4 changed files with 71 additions and 11 deletions

View File

@ -8,6 +8,7 @@ from flask_basicauth import BasicAuth
app = Flask(__name__, static_url_path='/static') app = Flask(__name__, static_url_path='/static')
basic_auth = BasicAuth(app) basic_auth = BasicAuth(app)
accept_entries = False
@app.route("/") @app.route("/")
def home(): def home():
@ -18,13 +19,17 @@ def home():
@app.route('/api/enqueue', methods=['POST']) @app.route('/api/enqueue', methods=['POST'])
def enqueue(): def enqueue():
if not request.json: if accept_entries:
print(request.data) if not request.json:
abort(400) print(request.data)
name = request.json['name'] abort(400)
song_id = request.json['id'] name = request.json['name']
database.add_entry(name,song_id) song_id = request.json['id']
return Response('{"status":"OK"}', mimetype='text/json') database.add_entry(name, song_id)
return Response('{"status":"OK"}', mimetype='text/json')
else:
return Response('{"status":"Currently not accepting entries"}', mimetype='text/json',status=423)
@app.route("/list") @app.route("/list")
def songlist(): def songlist():
@ -97,6 +102,23 @@ def mark_sung(entry_id):
else: else:
return Response('{"status": "FAIL"}', mimetype='text/json') return Response('{"status": "FAIL"}', mimetype='text/json')
@app.route("/api/entries/accept/<value>")
@basic_auth.required
def set_accept_entries(value):
global accept_entries
if (value=='0' or value=='1'):
accept_entries=bool(int(value))
return Response('{"status": "OK"}', mimetype='text/json')
else:
return Response('{"status": "FAIL"}', mimetype='text/json', status=400)
@app.route("/api/entries/accept")
def get_accept_entries():
global accept_entries
return Response('{"status": "OK", "value": '+str(int(accept_entries))+'}', mimetype='text/json')
@app.route("/api/played/clear") @app.route("/api/played/clear")
@basic_auth.required @basic_auth.required
def clear_played_songs(): def clear_played_songs():

View File

@ -25,6 +25,9 @@
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.2/css/all.css" <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.2/css/all.css"
integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay" crossorigin="anonymous"> integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay" crossorigin="anonymous">
<!-- Bootstraptoggle -->
<link href="https://gitcdn.github.io/bootstrap-toggle/2.2.2/css/bootstrap-toggle.min.css" rel="stylesheet">
</head> </head>
<body> <body>
@ -93,6 +96,7 @@
integrity="sha256-4F7e4JsAJyLUdpP7Q8Sah866jCOhv72zU5E8lIRER4w=" crossorigin="anonymous"> integrity="sha256-4F7e4JsAJyLUdpP7Q8Sah866jCOhv72zU5E8lIRER4w=" crossorigin="anonymous">
</script> </script>
<script src="https://unpkg.com/bootstrap-table@1.15.3/dist/bootstrap-table.min.js"></script> <script src="https://unpkg.com/bootstrap-table@1.15.3/dist/bootstrap-table.min.js"></script>
<script src="https://gitcdn.github.io/bootstrap-toggle/2.2.2/js/bootstrap-toggle.min.js"></script>
{% block extrajs %}{% endblock %} {% block extrajs %}{% endblock %}
<script> <script>
$(document).ready(function () { $(document).ready(function () {

View File

@ -10,6 +10,7 @@
<button type="button" class="topbutton btn btn-danger" onclick="confirmUpdateSongDatabase()"><i <button type="button" class="topbutton btn btn-danger" onclick="confirmUpdateSongDatabase()"><i
class="fas fa-file-import mr-2"></i>Song-Datenbank class="fas fa-file-import mr-2"></i>Song-Datenbank
aktualisieren</button> aktualisieren</button>
<input id="entryToggle" type="checkbox" class="topbutton" data-toggle="toggle" data-on="Eintragen erlaubt" data-off="Eintragen deaktiviert" data-onstyle="success" data-offstyle="danger">
</div> </div>
<table class="table" <table class="table"
id="entrytable" id="entrytable"
@ -40,7 +41,12 @@
{% block extrajs %} {% block extrajs %}
<script> <script>
$(function () { $(function () {
$('[data-toggle="tooltip"]').tooltip() $('[data-toggle="tooltip"]').tooltip();
$('#entryToggle').change(function() {
$.ajax({url: "/api/entries/accept/"+($('#entryToggle').is(":checked") ? "1" : "0")});
refreshEntryToggle()
})
refreshEntryToggle()
}) })
function confirmDeleteEntry(name, entry_id) { function confirmDeleteEntry(name, entry_id) {
bootbox.confirm("Wirklich den Eintrag von "+name+" löschen?", function(result){ bootbox.confirm("Wirklich den Eintrag von "+name+" löschen?", function(result){
@ -94,6 +100,18 @@
} }
}) })
} }
function refreshEntryToggle() {
$.getJSON("/api/entries/accept", (data) => {
if (data["value"]!=$('#entryToggle').is(":checked")) {
if(data["value"]==1) {
$('#entryToggle').bootstrapToggle('on')
}
else {
$('#entryToggle').bootstrapToggle('off')
}
}
})
}
function deleteEntry(entry_id) { function deleteEntry(entry_id) {
$.ajax({ $.ajax({
type: 'GET', type: 'GET',

View File

@ -47,7 +47,7 @@
$.each(data, function (key, val) { $.each(data, function (key, val) {
items.push("<tr><td>"+val[0]+`</td> items.push("<tr><td>"+val[0]+`</td>
<td><button type='button' <td><button type='button'
class='btn btn-primary justify-content-center align-content-between' class='btn btn-primary justify-content-center align-content-between enqueueButton'
data-toggle='modal' data-toggle='modal'
data-target='#enqueueModal' onclick='setSelectedId(`+val[1]+`)'><i data-target='#enqueueModal' onclick='setSelectedId(`+val[1]+`)'><i
class="fas fa-plus"></i></button></td> class="fas fa-plus"></i></button></td>
@ -62,6 +62,12 @@
} }
}); });
$.getJSON("/api/entries/accept", (data) => {
if (data["value"]==0) {
$("#filter").prop("disabled",true);
}
})
$("#nameForm").submit( function (e) { $("#nameForm").submit( function (e) {
e.preventDefault(); e.preventDefault();
submitModal(); submitModal();
@ -69,7 +75,7 @@
}); });
function enqueue(id,name,success_callback) { function enqueue(id,name,success_callback, blocked_callback) {
var data = { var data = {
"name": name, "name": name,
"id": id "id": id
@ -79,6 +85,9 @@
url: '/api/enqueue', url: '/api/enqueue',
data: JSON.stringify(data), // or JSON.stringify ({name: 'jonas'}), data: JSON.stringify(data), // or JSON.stringify ({name: 'jonas'}),
success: success_callback, success: success_callback,
statusCode: {
423: blocked_callback
},
contentType: "application/json", contentType: "application/json",
dataType: 'json' dataType: 'json'
}); });
@ -91,9 +100,16 @@
function submitModal() { function submitModal() {
var name = $("#singerNameInput").val(); var name = $("#singerNameInput").val();
var id = $("#selectedId").attr("value"); var id = $("#selectedId").attr("value");
enqueue(id,name,function(){ enqueue(id,name,function () {
$("#enqueueModal").modal('hide'); $("#enqueueModal").modal('hide');
window.location.href = '/#end'; window.location.href = '/#end';
}, function () {
bootbox.alert({
message: "Es werden leider keine neuen Anmeldungen mehr angenommen. Tut mir leid :(",
});
$(".enqueueButton").prop("disabled",true);
$("#enqueueModal").modal('hide');
}); });