Marietje 4.1: Addition of Django REST framework, Swagger, Dark mode and updates to Django and Bootstrap

This commit is contained in:
Lars van Rhijn
2023-09-14 19:55:51 +02:00
parent 379ababcc0
commit d1a1be7e2e
124 changed files with 4835 additions and 3490 deletions

View File

@ -6,21 +6,22 @@ from prometheus_client import generate_latest, Gauge
from queues.models import Queue, PlaylistSong
# Export queue length
queue_length_gauge = Gauge('marietje_queue_length', 'Marietje queue length', ['name'])
queue_length_gauge = Gauge("marietje_queue_length", "Marietje queue length", ["name"])
# Export the queue duration
queue_duration_gauge = Gauge('marietje_queue_duration', 'Marietje queue duration in seconds', ['name'])
queue_duration_gauge = Gauge("marietje_queue_duration", "Marietje queue duration in seconds", ["name"])
# Export the amount of different users in the queue
queue_users_gauge = Gauge('marietje_queue_users', 'Users holding a queue at some point', ['name'])
queue_users_gauge = Gauge("marietje_queue_users", "Users holding a queue at some point", ["name"])
try:
for queue in Queue.objects.all():
def _get_queue_length():
return PlaylistSong.objects.filter(playlist=queue.playlist_id, state=0).count()
def _get_queue_duration():
playlist_songs = (PlaylistSong.objects.filter(playlist=queue.playlist_id, state=0)
.select_related('song')
.all())
playlist_songs = (
PlaylistSong.objects.filter(playlist=queue.playlist_id, state=0).select_related("song").all()
)
return sum(ps.song.duration for ps in playlist_songs)
def _get_queue_distinct_users():
@ -28,8 +29,7 @@ try:
# sqlite3. This makes testing a bit tedious. Also, it does not give me
# that much of confidence that it would also work on mysql.
# Furtermore, we do not expect the queue to be very long at any moment.
return len(set(PlaylistSong.objects.filter(playlist=queue.playlist_id, state=0)
.values_list('user')))
return len(set(PlaylistSong.objects.filter(playlist=queue.playlist_id, state=0).values_list("user")))
queue_length_gauge.labels(name=queue).set_function(_get_queue_length)
queue_duration_gauge.labels(name=queue).set_function(_get_queue_duration)