mirror of
https://github.com/PhoenixTwoFive/karaoqueue.git
synced 2025-07-01 15:51:41 +02:00
Compare commits
17 Commits
eb0cfcf4cb
...
legacy
Author | SHA1 | Date | |
---|---|---|---|
b38f5edd9e | |||
374a080b0e | |||
8a9fa436d8 | |||
4ec347988a | |||
ec89ac482d | |||
836b509a7d | |||
6da62c4132
|
|||
34a7ea1a55
|
|||
555cdda631
|
|||
cc4c538e91 | |||
a03c1c41bb
|
|||
ed09a93b3d
|
|||
0234d64bf2
|
|||
eb86575332
|
|||
1cf6a6a733 | |||
06594855d6
|
|||
43a12228ae
|
8
.github/dependabot.yml
vendored
Normal file
8
.github/dependabot.yml
vendored
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
version: 2
|
||||||
|
updates:
|
||||||
|
- package-ecosystem: "pip"
|
||||||
|
directory: "/backend"
|
||||||
|
schedule:
|
||||||
|
interval: "weekly"
|
||||||
|
day: "sunday"
|
||||||
|
time: "16:00"
|
3
.vscode/settings.json
vendored
3
.vscode/settings.json
vendored
@ -10,5 +10,8 @@
|
|||||||
"python.testing.unittestEnabled": true,
|
"python.testing.unittestEnabled": true,
|
||||||
"emmet.includeLanguages": {
|
"emmet.includeLanguages": {
|
||||||
"django-html": "html"
|
"django-html": "html"
|
||||||
|
},
|
||||||
|
"yaml.schemas": {
|
||||||
|
"https://json.schemastore.org/dependabot-2.0.json": "file:///home/phillip/Projekte/Software/StuK/karaoqueue/dependabot.yml"
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -32,11 +32,9 @@ def favicon():
|
|||||||
@nocache
|
@nocache
|
||||||
def enqueue():
|
def enqueue():
|
||||||
if not request.json:
|
if not request.json:
|
||||||
print(request.data)
|
|
||||||
abort(400)
|
abort(400)
|
||||||
client_id = request.json['client_id']
|
client_id = request.json['client_id']
|
||||||
if not helpers.is_valid_uuid(client_id):
|
if not helpers.is_valid_uuid(client_id):
|
||||||
print(request.data)
|
|
||||||
abort(400)
|
abort(400)
|
||||||
name = request.json['name'].strip()
|
name = request.json['name'].strip()
|
||||||
song_id = request.json['id']
|
song_id = request.json['id']
|
||||||
@ -46,11 +44,9 @@ def enqueue():
|
|||||||
else:
|
else:
|
||||||
if helpers.get_accept_entries(app):
|
if helpers.get_accept_entries(app):
|
||||||
if not request.json:
|
if not request.json:
|
||||||
print(request.data)
|
|
||||||
abort(400)
|
abort(400)
|
||||||
client_id = request.json['client_id']
|
client_id = request.json['client_id']
|
||||||
if not helpers.is_valid_uuid(client_id):
|
if not helpers.is_valid_uuid(client_id):
|
||||||
print(request.data)
|
|
||||||
abort(400)
|
abort(400)
|
||||||
name = request.json['name']
|
name = request.json['name']
|
||||||
song_id = request.json['id']
|
song_id = request.json['id']
|
||||||
@ -203,7 +199,6 @@ def get_stats():
|
|||||||
# Return data from long_term_stats as csv
|
# Return data from long_term_stats as csv
|
||||||
def get_stats_csv():
|
def get_stats_csv():
|
||||||
db_result = database.get_long_term_stats()
|
db_result = database.get_long_term_stats()
|
||||||
print(db_result)
|
|
||||||
csv = "Id,Playbacks\n"
|
csv = "Id,Playbacks\n"
|
||||||
for row in db_result:
|
for row in db_result:
|
||||||
csv += str(row[0]) + "," + str(row[1]) + "\n"
|
csv += str(row[0]) + "," + str(row[1]) + "\n"
|
||||||
@ -258,14 +253,11 @@ def delete_entry_admin(entry_id):
|
|||||||
@nocache
|
@nocache
|
||||||
def delete_entry_user(entry_id):
|
def delete_entry_user(entry_id):
|
||||||
if not request.json:
|
if not request.json:
|
||||||
print(request.data)
|
|
||||||
abort(400)
|
abort(400)
|
||||||
client_id = request.json['client_id']
|
client_id = request.json['client_id']
|
||||||
if not helpers.is_valid_uuid(client_id):
|
if not helpers.is_valid_uuid(client_id):
|
||||||
print(request.data)
|
|
||||||
abort(400)
|
abort(400)
|
||||||
if database.get_raw_entry(entry_id)[3] != client_id: # type: ignore
|
if database.get_raw_entry(entry_id)[3] != client_id: # type: ignore
|
||||||
print(request.data)
|
|
||||||
abort(403)
|
abort(403)
|
||||||
if database.delete_entry(entry_id):
|
if database.delete_entry(entry_id):
|
||||||
return Response('{"status": "OK"}', mimetype='text/json')
|
return Response('{"status": "OK"}', mimetype='text/json')
|
||||||
@ -278,7 +270,6 @@ def delete_entry_user(entry_id):
|
|||||||
@basic_auth.required
|
@basic_auth.required
|
||||||
def delete_entries():
|
def delete_entries():
|
||||||
if not request.json:
|
if not request.json:
|
||||||
print(request.data)
|
|
||||||
abort(400)
|
abort(400)
|
||||||
return
|
return
|
||||||
updates = database.delete_entries(request.json)
|
updates = database.delete_entries(request.json)
|
||||||
|
@ -298,8 +298,7 @@ def transfer_playbacks():
|
|||||||
ON DUPLICATE KEY
|
ON DUPLICATE KEY
|
||||||
UPDATE Playbacks = lts.Playbacks + VALUES(Playbacks);
|
UPDATE Playbacks = lts.Playbacks + VALUES(Playbacks);
|
||||||
""")
|
""")
|
||||||
result = conn.execute(stmt)
|
conn.execute(stmt)
|
||||||
print(result)
|
|
||||||
conn.commit()
|
conn.commit()
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
autopep8==2.0.4
|
autopep8==2.0.4
|
||||||
beautifulsoup4==4.12.3
|
beautifulsoup4==4.12.3
|
||||||
blinker==1.7.0
|
blinker==1.8.2
|
||||||
bs4==0.0.2
|
bs4==0.0.2
|
||||||
certifi==2024.2.2
|
certifi==2024.2.2
|
||||||
charset-normalizer==3.3.2
|
charset-normalizer==3.3.2
|
||||||
@ -33,8 +33,8 @@ soupsieve==2.5
|
|||||||
SQLAlchemy==2.0.27
|
SQLAlchemy==2.0.27
|
||||||
toml==0.10.2
|
toml==0.10.2
|
||||||
tomli==2.0.1
|
tomli==2.0.1
|
||||||
tomlkit==0.12.3
|
tomlkit==0.13.2
|
||||||
typing_extensions==4.9.0
|
typing_extensions==4.9.0
|
||||||
tzdata==2024.1
|
tzdata==2024.2
|
||||||
urllib3==2.2.0
|
urllib3==2.2.0
|
||||||
Werkzeug==3.0.1
|
Werkzeug==3.0.1
|
||||||
|
@ -63,9 +63,14 @@ body {
|
|||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.table {
|
||||||
|
color: var(--text-color);
|
||||||
|
}
|
||||||
|
|
||||||
table td {
|
table td {
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
text-overflow: ellipsis;
|
text-overflow: ellipsis;
|
||||||
|
color: var(--text-color);
|
||||||
}
|
}
|
||||||
|
|
||||||
table.entries tbody tr[data-index="0"] {
|
table.entries tbody tr[data-index="0"] {
|
||||||
@ -234,5 +239,8 @@ pre {
|
|||||||
/* Toasts */
|
/* Toasts */
|
||||||
--toast-background-color: #232323;
|
--toast-background-color: #232323;
|
||||||
--toast-text-color: #f5f5f5;
|
--toast-text-color: #f5f5f5;
|
||||||
|
|
||||||
|
/* Tables */
|
||||||
|
--table-border-color: #232323;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -13,7 +13,7 @@
|
|||||||
<title>{% block title %}{% endblock %} - KaraoQueue</title>
|
<title>{% block title %}{% endblock %} - KaraoQueue</title>
|
||||||
|
|
||||||
<!-- Bootstrap-Tables -->
|
<!-- Bootstrap-Tables -->
|
||||||
<link rel="stylesheet" href="https://unpkg.com/bootstrap-table@1.21.2/dist/bootstrap-table.min.css">
|
<link rel="stylesheet" href="https://unpkg.com/bootstrap-table@1.22.2/dist/bootstrap-table.min.css">
|
||||||
|
|
||||||
<!-- Bootstrap-Toaster-->
|
<!-- Bootstrap-Toaster-->
|
||||||
<link rel="stylesheet"
|
<link rel="stylesheet"
|
||||||
@ -22,8 +22,8 @@
|
|||||||
crossorigin="anonymous" referrerpolicy="no-referrer" />
|
crossorigin="anonymous" referrerpolicy="no-referrer" />
|
||||||
|
|
||||||
<!-- Bootstrap core CSS -->
|
<!-- Bootstrap core CSS -->
|
||||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.2.1/dist/css/bootstrap.min.css"
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/css/bootstrap.min.css"
|
||||||
integrity="sha384-GJzZqFGwb1QTTN6wy59ffF1BuGJpLSa9DkKMp0DgiMDm4iYMj70gZWKYbI706tWS" crossorigin="anonymous">
|
integrity="sha384-xOolHFLEh07PJGoPkLv1IbcEPTNtaed2xpHsD9ESMhqIYd0nLMwNLD69Npy4HI+N" crossorigin="anonymous">
|
||||||
|
|
||||||
<!-- Custom styles for this template -->
|
<!-- Custom styles for this template -->
|
||||||
<link href="static/css/style.css" rel="stylesheet">
|
<link href="static/css/style.css" rel="stylesheet">
|
||||||
@ -86,7 +86,7 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
<a href="https://github.com/PhoenixTwoFive/karaoqueue" class="ml-1 mr-1"><i
|
<a href="https://github.com/PhoenixTwoFive/karaoqueue" class="ml-1 mr-1"><i
|
||||||
class="fab fa-github mr-1"></i><span>Github</span></a>
|
class="fab fa-github mr-1"></i><span>Github</span></a>
|
||||||
<span class="text-muted"> {{karaoqueue_version}} - 2019-23 - <span id="myName">Phillip
|
<span class="text-muted"> {{karaoqueue_version}} - 2019-24 - <span id="myName">Phillip
|
||||||
Kühne</span></span>
|
Kühne</span></span>
|
||||||
</div>
|
</div>
|
||||||
</footer>
|
</footer>
|
||||||
@ -101,15 +101,15 @@
|
|||||||
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.14.6/dist/umd/popper.min.js"
|
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.14.6/dist/umd/popper.min.js"
|
||||||
integrity="sha384-wHAiFfRlMFy6i5SRaxvfOCifBUQy1xHdJ/yoi7FRNXMRBu5WHdZYu1hA6ZOblgut"
|
integrity="sha384-wHAiFfRlMFy6i5SRaxvfOCifBUQy1xHdJ/yoi7FRNXMRBu5WHdZYu1hA6ZOblgut"
|
||||||
crossorigin="anonymous"></script>
|
crossorigin="anonymous"></script>
|
||||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.2.1/dist/js/bootstrap.min.js"
|
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/js/bootstrap.min.js"
|
||||||
integrity="sha384-B0UglyR+jN6CkvvICOB2joaf5I4l3gm9GU6Hc1og6Ls7i6U/mkkaduKaBhlAXv9k"
|
integrity="sha384-+sLIOodYLS7CIrQpBjl+C7nPvqq+FbNUBDunl/OZv93DB7Ln/533i8e/mZXLi/P+"
|
||||||
crossorigin="anonymous"></script>
|
crossorigin="anonymous"></script>
|
||||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootbox.js/4.4.0/bootbox.min.js"
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootbox.js/4.4.0/bootbox.min.js"
|
||||||
integrity="sha256-4F7e4JsAJyLUdpP7Q8Sah866jCOhv72zU5E8lIRER4w=" crossorigin="anonymous">
|
integrity="sha256-4F7e4JsAJyLUdpP7Q8Sah866jCOhv72zU5E8lIRER4w=" crossorigin="anonymous">
|
||||||
</script>
|
</script>
|
||||||
<script src="https://unpkg.com/bootstrap-table@1.21.2/dist/bootstrap-table.min.js"></script>
|
<script src="https://unpkg.com/bootstrap-table@1.22.2/dist/bootstrap-table.min.js"></script>
|
||||||
<script
|
<script
|
||||||
src="https://unpkg.com/bootstrap-table@1.21.2/dist/extensions/auto-refresh/bootstrap-table-auto-refresh.min.js"></script>
|
src="https://unpkg.com/bootstrap-table@1.22.2/dist/extensions/auto-refresh/bootstrap-table-auto-refresh.min.js"></script>
|
||||||
<script src="https://gitcdn.github.io/bootstrap-toggle/2.2.2/js/bootstrap-toggle.min.js"></script>
|
<script src="https://gitcdn.github.io/bootstrap-toggle/2.2.2/js/bootstrap-toggle.min.js"></script>
|
||||||
|
|
||||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-toaster/4.1.2/js/bootstrap-toaster.min.js"
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-toaster/4.1.2/js/bootstrap-toaster.min.js"
|
||||||
@ -187,6 +187,14 @@
|
|||||||
return entries;
|
return entries;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function dataRequestQueueAndDestroyTooltips(params) {
|
||||||
|
document.querySelectorAll(".tooltip[role='tooltip']").forEach((tooltip) => tooltip.remove());
|
||||||
|
var base_url = "/api/queue"
|
||||||
|
$.get(base_url).then((res) => {
|
||||||
|
params.success(res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
<a id="bfb" role="button" class="btn btn-primary btn-lg btn-block mb-2" href="/list">Eintragen</a>
|
<a id="bfb" role="button" class="btn btn-primary btn-lg btn-block mb-2" href="/list">Eintragen</a>
|
||||||
<table class="table entries"
|
<table class="table entries"
|
||||||
data-toggle="table"
|
data-toggle="table"
|
||||||
data-url="/api/queue"
|
data-ajax="dataRequestQueueAndDestroyTooltips"
|
||||||
data-pagination="true"
|
data-pagination="true"
|
||||||
data-classes="table"
|
data-classes="table"
|
||||||
data-show-refresh="false"
|
data-show-refresh="false"
|
||||||
|
@ -22,7 +22,7 @@
|
|||||||
<table class="table entries" id="entrytable" data-toggle="table" data-search="true" data-show-columns="true"
|
<table class="table entries" id="entrytable" data-toggle="table" data-search="true" data-show-columns="true"
|
||||||
data-show-toggle="true" data-multiple-select-row="true" data-click-to-select="true" data-toolbar="#toolbar"
|
data-show-toggle="true" data-multiple-select-row="true" data-click-to-select="true" data-toolbar="#toolbar"
|
||||||
data-pagination="true" data-show-extended-pagination="true" data-classes="table table-hover"
|
data-pagination="true" data-show-extended-pagination="true" data-classes="table table-hover"
|
||||||
data-url="/api/queue" data-show-refresh="true" data-auto-refresh="true" data-auto-refresh-interval="10">
|
data-ajax="dataRequestQueueAndDestroyTooltips" data-show-refresh="true" data-auto-refresh="true" data-auto-refresh-interval="10">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th data-field="state" data-checkbox="true"></th>
|
<th data-field="state" data-checkbox="true"></th>
|
||||||
@ -153,7 +153,7 @@
|
|||||||
$.ajax({
|
$.ajax({
|
||||||
type: 'POST',
|
type: 'POST',
|
||||||
url: '/api/entries/delete',
|
url: '/api/entries/delete',
|
||||||
data: JSON.stringify(ids), // or JSON.stringify ({name: 'jonas'}),
|
data: JSON.stringify(ids),
|
||||||
error: function () {
|
error: function () {
|
||||||
bootbox.alert({
|
bootbox.alert({
|
||||||
message: "Fehler beim Löschen der Eintragungen.",
|
message: "Fehler beim Löschen der Eintragungen.",
|
||||||
|
Reference in New Issue
Block a user