Adds Log model + admin + API

clubs
Laurent 1 year ago
parent 03abff69bb
commit de7a4b75fa
  1. 7
      api/serializers.py
  2. 1
      api/urls.py
  3. 15
      api/views.py
  4. 7
      tournaments/admin.py
  5. 25
      tournaments/migrations/0072_log.py
  6. 1
      tournaments/models/__init__.py
  7. 19
      tournaments/models/log.py

@ -1,6 +1,6 @@
from rest_framework import serializers
from tournaments.models.court import Court
from tournaments.models import Club, LiveMatch, TeamScore, Tournament, CustomUser, Event, Round, GroupStage, Match, TeamRegistration, PlayerRegistration, Purchase, FailedApiCall, DateInterval
from tournaments.models import Club, LiveMatch, TeamScore, Tournament, CustomUser, Event, Round, GroupStage, Match, TeamRegistration, PlayerRegistration, Purchase, FailedApiCall, DateInterval, Log
from django.contrib.auth import password_validation
from django.utils.translation import gettext_lazy as _
# email
@ -202,3 +202,8 @@ class FailedApiCallSerializer(serializers.ModelSerializer):
class Meta:
model = FailedApiCall
fields = '__all__'
class LogSerializer(serializers.ModelSerializer):
class Meta:
model = Log
fields = '__all__'

@ -19,6 +19,7 @@ router.register(r'purchases', views.PurchaseViewSet)
router.register(r'courts', views.CourtViewSet)
router.register(r'date-intervals', views.DateIntervalViewSet)
router.register(r'failed-api-calls', views.FailedApiCallViewSet)
router.register(r'logs', views.LogViewSet)
urlpatterns = [
path('', include(router.urls)),

@ -1,5 +1,5 @@
from .serializers import ClubSerializer, CourtSerializer, DateIntervalSerializer, TournamentSerializer, UserSerializer, ChangePasswordSerializer, EventSerializer, RoundSerializer, GroupStageSerializer, MatchSerializer, TeamScoreSerializer, TeamRegistrationSerializer, PlayerRegistrationSerializer, LiveMatchSerializer, PurchaseSerializer, UserUpdateSerializer, FailedApiCallSerializer
from tournaments.models import Club, Tournament, CustomUser, Event, Round, GroupStage, Match, TeamScore, TeamRegistration, PlayerRegistration, Court, DateInterval, Purchase, FailedApiCall
from .serializers import ClubSerializer, CourtSerializer, DateIntervalSerializer, TournamentSerializer, UserSerializer, ChangePasswordSerializer, EventSerializer, RoundSerializer, GroupStageSerializer, MatchSerializer, TeamScoreSerializer, TeamRegistrationSerializer, PlayerRegistrationSerializer, LiveMatchSerializer, PurchaseSerializer, UserUpdateSerializer, FailedApiCallSerializer, LogSerializer
from tournaments.models import Club, Tournament, CustomUser, Event, Round, GroupStage, Match, TeamScore, TeamRegistration, PlayerRegistration, Court, DateInterval, Purchase, FailedApiCall, Log
from rest_framework import viewsets, permissions
from rest_framework.authtoken.models import Token
@ -187,3 +187,14 @@ class FailedApiCallViewSet(viewsets.ModelViewSet):
def perform_create(self, serializer):
serializer.save(user=self.request.user)
class LogViewSet(viewsets.ModelViewSet):
queryset = Log.objects.all()
serializer_class = LogSerializer
permission_classes = [] # Log are public whereas the other requests are only for logged users
def get_queryset(self):
return []
def perform_create(self, serializer):
serializer.save(user=self.request.user)

@ -2,7 +2,7 @@ from django.contrib import admin
from tournaments.models import team_registration
from .models import Club, TeamScore, Tournament, CustomUser, Event, Round, GroupStage, Match, TeamRegistration, PlayerRegistration, Purchase, Court, DateInterval, FailedApiCall
from .models import Club, TeamScore, Tournament, CustomUser, Event, Round, GroupStage, Match, TeamRegistration, PlayerRegistration, Purchase, Court, DateInterval, FailedApiCall, Log
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.forms import UserCreationForm, UserChangeForm
@ -82,6 +82,10 @@ class FailedApiCallAdmin(admin.ModelAdmin):
list_display = ['date', 'user', 'type', 'error']
list_filter = ['user']
class LogAdmin(admin.ModelAdmin):
list_display = ['date', 'user', 'message']
list_filter = ['user']
admin.site.register(CustomUser, CustomUserAdmin)
admin.site.register(Club, ClubAdmin)
admin.site.register(Event, EventAdmin)
@ -96,3 +100,4 @@ admin.site.register(Purchase, PurchaseAdmin)
admin.site.register(Court, CourtAdmin)
admin.site.register(DateInterval, DateIntervalAdmin)
admin.site.register(FailedApiCall, FailedApiCallAdmin)
admin.site.register(Log, LogAdmin)

@ -0,0 +1,25 @@
# Generated by Django 4.2.11 on 2024-07-03 08:56
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
import uuid
class Migration(migrations.Migration):
dependencies = [
('tournaments', '0071_alter_event_club'),
]
operations = [
migrations.CreateModel(
name='Log',
fields=[
('id', models.UUIDField(default=uuid.uuid4, primary_key=True, serialize=False)),
('date', models.DateTimeField()),
('message', models.TextField(blank=True, null=True)),
('user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL)),
],
),
]

@ -14,3 +14,4 @@ from .player_registration import PlayerRegistration
from .team_score import TeamScore
from .purchase import Purchase
from .failed_api_call import FailedApiCall
from .log import Log

@ -0,0 +1,19 @@
from django.db import models
from . import CustomUser
import uuid
class Log(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=True)
date = models.DateTimeField()
user = models.ForeignKey(CustomUser, blank=True, null=True, on_delete=models.SET_NULL)
message = models.TextField(blank=True, null=True)
def __str__(self):
datetime = self.date.strftime("%Y-%m-%d %H:%M")
if self.user:
return f"{datetime} | {self.user.username} | {self.message}"
else:
return f"{datetime} | {self.message}"
def discord_string(self):
return str(self)
Loading…
Cancel
Save