From b4cb17f82424232de4ebbf72f4de5f244b78b331 Mon Sep 17 00:00:00 2001 From: Laurent Date: Fri, 31 May 2024 17:48:12 +0200 Subject: [PATCH] Adds FailedApiCall as a new resource --- padelclub_backend/urls.py | 2 +- tournaments/admin.py | 14 +++++------ tournaments/migrations/0063_failedapicall.py | 25 ++++++++++++++++++++ tournaments/models/__init__.py | 1 + tournaments/models/failed_api_call.py | 13 ++++++++++ tournaments/serializers.py | 8 +++++-- tournaments/views.py | 8 +++++-- 7 files changed, 58 insertions(+), 13 deletions(-) create mode 100644 tournaments/migrations/0063_failedapicall.py create mode 100644 tournaments/models/failed_api_call.py diff --git a/padelclub_backend/urls.py b/padelclub_backend/urls.py index fcebc27..a62a920 100644 --- a/padelclub_backend/urls.py +++ b/padelclub_backend/urls.py @@ -34,7 +34,7 @@ router.register(r'player-registrations', views.PlayerRegistrationViewSet) router.register(r'purchases', views.PurchaseViewSet) router.register(r'courts', views.CourtViewSet) router.register(r'date-intervals', views.DateIntervalViewSet) -# router.register(r'exp-tournaments', views.ExpandedTournamentViewSet, basename='tournaments-json') +router.register(r'failed-api-calls', views.FailedApiCallViewSet) urlpatterns = [ diff --git a/tournaments/admin.py b/tournaments/admin.py index bba13c7..65f0f00 100644 --- a/tournaments/admin.py +++ b/tournaments/admin.py @@ -1,5 +1,6 @@ from django.contrib import admin -from .models import Club, TeamScore, Tournament, CustomUser, Event, Round, GroupStage, Match, TeamRegistration, PlayerRegistration, Purchase, Court, DateInterval + +from .models import Club, TeamScore, Tournament, CustomUser, Event, Round, GroupStage, Match, TeamRegistration, PlayerRegistration, Purchase, Court, DateInterval, FailedApiCall from django.contrib.auth.admin import UserAdmin from django.contrib.auth.forms import UserCreationForm, UserChangeForm @@ -28,13 +29,6 @@ class CustomUserAdmin(UserAdmin): ), ] - - - - - - - class TeamRegistrationAdmin(admin.ModelAdmin): list_display = ['player_names', 'group_stage_position', 'name', 'tournament'] @@ -71,6 +65,9 @@ class CourtAdmin(admin.ModelAdmin): class DateIntervalAdmin(admin.ModelAdmin): list_display = ['court_index', 'event'] +class FailedApiCallAdmin(admin.ModelAdmin): + list_display = ['date', 'type', 'error'] + admin.site.register(CustomUser, CustomUserAdmin) admin.site.register(Club, ClubAdmin) admin.site.register(Event, EventAdmin) @@ -84,3 +81,4 @@ admin.site.register(PlayerRegistration, PlayerRegistrationAdmin) admin.site.register(Purchase, PurchaseAdmin) admin.site.register(Court, CourtAdmin) admin.site.register(DateInterval, DateIntervalAdmin) +admin.site.register(FailedApiCall, FailedApiCallAdmin) diff --git a/tournaments/migrations/0063_failedapicall.py b/tournaments/migrations/0063_failedapicall.py new file mode 100644 index 0000000..8432e0d --- /dev/null +++ b/tournaments/migrations/0063_failedapicall.py @@ -0,0 +1,25 @@ +# Generated by Django 4.2.11 on 2024-05-31 15:47 + +from django.db import migrations, models +import uuid + + +class Migration(migrations.Migration): + + dependencies = [ + ('tournaments', '0062_tournament_publish_tournament_and_more'), + ] + + operations = [ + migrations.CreateModel( + name='FailedApiCall', + fields=[ + ('id', models.UUIDField(default=uuid.uuid4, primary_key=True, serialize=False)), + ('date', models.DateTimeField()), + ('type', models.CharField(max_length=50)), + ('call_id', models.UUIDField()), + ('api_call', models.JSONField()), + ('error', models.TextField()), + ], + ), + ] diff --git a/tournaments/models/__init__.py b/tournaments/models/__init__.py index 5a67590..718dbb2 100644 --- a/tournaments/models/__init__.py +++ b/tournaments/models/__init__.py @@ -13,3 +13,4 @@ from .team_registration import TeamRegistration from .player_registration import PlayerRegistration from .team_score import TeamScore from .purchase import Purchase +from .failed_api_call import FailedApiCall diff --git a/tournaments/models/failed_api_call.py b/tournaments/models/failed_api_call.py new file mode 100644 index 0000000..26f029b --- /dev/null +++ b/tournaments/models/failed_api_call.py @@ -0,0 +1,13 @@ +from django.db import models +import uuid + +class FailedApiCall(models.Model): + id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=True) + date = models.DateTimeField() + type = models.CharField(max_length=50) + call_id = models.UUIDField() + api_call = models.JSONField() + error = models.TextField() + + def __str__(self): + return f"{self.type} - {self.date}" diff --git a/tournaments/serializers.py b/tournaments/serializers.py index 296b607..107e8df 100644 --- a/tournaments/serializers.py +++ b/tournaments/serializers.py @@ -1,7 +1,6 @@ from rest_framework import serializers from tournaments.models.court import Court -from tournaments.models.date_interval import DateInterval -from .models import Club, LiveMatch, TeamScore, Tournament, CustomUser, Event, Round, GroupStage, Match, TeamRegistration, PlayerRegistration, Purchase +from .models import Club, LiveMatch, TeamScore, Tournament, CustomUser, Event, Round, GroupStage, Match, TeamRegistration, PlayerRegistration, Purchase, FailedApiCall, DateInterval from django.contrib.auth import password_validation from django.utils.translation import gettext_lazy as _ # email @@ -207,3 +206,8 @@ class DateIntervalSerializer(serializers.ModelSerializer): class Meta: model = DateInterval fields = '__all__' + +class FailedApiCallSerializer(serializers.ModelSerializer): + class Meta: + model = FailedApiCall + fields = '__all__' diff --git a/tournaments/views.py b/tournaments/views.py index 9ee50b4..ef431ec 100644 --- a/tournaments/views.py +++ b/tournaments/views.py @@ -9,8 +9,8 @@ from tournaments.models.date_interval import DateInterval from .tokens import account_activation_token from tournaments.models import group_stage -from .serializers import ClubSerializer, CourtSerializer, DateIntervalSerializer, TournamentSerializer, UserSerializer, ChangePasswordSerializer, EventSerializer, RoundSerializer, GroupStageSerializer, MatchSerializer, TeamScoreSerializer, TeamRegistrationSerializer, PlayerRegistrationSerializer, LiveMatchSerializer, PurchaseSerializer, UserUpdateSerializer -from .models import Club, Tournament, CustomUser, Event, Round, GroupStage, Match, TeamScore, TeamRegistration, PlayerRegistration, Purchase +from .serializers import ClubSerializer, CourtSerializer, DateIntervalSerializer, TournamentSerializer, UserSerializer, ChangePasswordSerializer, EventSerializer, RoundSerializer, GroupStageSerializer, MatchSerializer, TeamScoreSerializer, TeamRegistrationSerializer, PlayerRegistrationSerializer, LiveMatchSerializer, PurchaseSerializer, UserUpdateSerializer, FailedApiCallSerializer +from .models import Club, Tournament, CustomUser, Event, Round, GroupStage, Match, TeamScore, TeamRegistration, PlayerRegistration, Purchase, FailedApiCall from .models import TeamSummon from datetime import datetime, timedelta @@ -390,3 +390,7 @@ class DateIntervalViewSet(viewsets.ModelViewSet): if self.request.user: return self.queryset.filter(event__creator=self.request.user) return [] + +class FailedApiCallViewSet(viewsets.ModelViewSet): + queryset = FailedApiCall.objects.all() + serializer_class = FailedApiCallSerializer