mirror of
https://gitlab.science.ru.nl/technicie/MarietjeDjango.git
synced 2025-12-12 23:52:21 +01:00
Add logging to API endpoints
This commit is contained in:
@ -1,3 +1,4 @@
|
||||
from django.contrib.auth import get_user_model
|
||||
from django.db import models
|
||||
from django.db.models import Q
|
||||
from django.conf import settings
|
||||
@ -6,6 +7,8 @@ from django.utils import timezone
|
||||
from queues.exceptions import RequestException
|
||||
from songs.models import Song
|
||||
|
||||
User = get_user_model()
|
||||
|
||||
|
||||
class Playlist(models.Model):
|
||||
def __str__(self):
|
||||
@ -143,10 +146,41 @@ class Queue(models.Model):
|
||||
playlist_song.save()
|
||||
song_count += 1
|
||||
|
||||
def log_action(self, user: User, action: str, description: str) -> "QueueLogEntry":
|
||||
"""
|
||||
Log a queue action.
|
||||
|
||||
:param user: The user performing the action.
|
||||
:param action: An identifier of the action performed.
|
||||
:param description: An optional description for the action.
|
||||
:return: The created QueueLogEntry object.
|
||||
"""
|
||||
return QueueLogEntry.objects.create(
|
||||
queue=self,
|
||||
user=user,
|
||||
action=action,
|
||||
description=description,
|
||||
)
|
||||
|
||||
def __str__(self):
|
||||
return str(self.name)
|
||||
|
||||
|
||||
class UserQueue(models.Model):
|
||||
"""
|
||||
UserQueue model.
|
||||
|
||||
This model connects a user to its queue.
|
||||
"""
|
||||
|
||||
user = models.OneToOneField(User, on_delete=models.CASCADE, related_name="queue")
|
||||
queue = models.ForeignKey(Queue, on_delete=models.SET_NULL, null=True, blank=True, related_name="users")
|
||||
|
||||
def __str__(self):
|
||||
"""Convert this object to string."""
|
||||
return "Queue for user {}".format(self.user)
|
||||
|
||||
|
||||
class QueueCommand(models.Model):
|
||||
queue = models.ForeignKey(
|
||||
Queue,
|
||||
@ -157,3 +191,20 @@ class QueueCommand(models.Model):
|
||||
|
||||
def __str__(self):
|
||||
return str(self.command)
|
||||
|
||||
|
||||
class QueueLogEntry(models.Model):
|
||||
"""Model for logging queue events."""
|
||||
|
||||
queue = models.ForeignKey(Queue, on_delete=models.CASCADE, related_name="logs")
|
||||
user = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True)
|
||||
action = models.CharField(max_length=255)
|
||||
timestamp = models.DateTimeField(auto_now_add=True)
|
||||
description = models.CharField(max_length=255)
|
||||
|
||||
def __str__(self):
|
||||
return f"{self.queue} {self.action} by {self.user} at {self.timestamp}"
|
||||
|
||||
class Meta:
|
||||
verbose_name = "player log entry"
|
||||
verbose_name_plural = "player log entries"
|
||||
|
||||
Reference in New Issue
Block a user