Fix code and migration conflict

online_registration
Laurent 1 year ago
commit f04039f3de
  1. 6
      api/serializers.py
  2. 1
      api/urls.py
  3. 15
      api/views.py
  4. 7
      tournaments/admin.py
  5. 26
      tournaments/migrations/0091_drawlog.py
  6. 4
      tournaments/migrations/0092_club_timezone.py
  7. 10
      tournaments/models/draw_log.py
  8. 8
      tournaments/models/match.py

@ -12,6 +12,7 @@ from django.contrib.sites.shortcuts import get_current_site
from api.tokens import account_activation_token
from shared.cryptography import encryption_util
from tournaments.models.draw_log import DrawLog
class EncryptedUserField(serializers.Field):
def to_representation(self, value):
@ -230,3 +231,8 @@ class DeviceTokenSerializer(serializers.ModelSerializer):
model = DeviceToken
fields = '__all__'
read_only_fields = ['user']
class DrawLogSerializer(serializers.ModelSerializer):
class Meta:
model = DrawLog
fields = '__all__'

@ -18,6 +18,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'draw-logs', views.DrawLogViewSet)
router.register(r'failed-api-calls', views.FailedApiCallViewSet)
router.register(r'logs', views.LogViewSet)
router.register(r'device-token', views.DeviceTokenViewSet)

@ -1,5 +1,6 @@
from pandas.io.feather_format import pd
from .serializers import ClubSerializer, CourtSerializer, DateIntervalSerializer, TournamentSerializer, UserSerializer, ChangePasswordSerializer, EventSerializer, RoundSerializer, GroupStageSerializer, MatchSerializer, TeamScoreSerializer, TeamRegistrationSerializer, PlayerRegistrationSerializer, LiveMatchSerializer, PurchaseSerializer, UserUpdateSerializer, FailedApiCallSerializer, LogSerializer, DeviceTokenSerializer
from tournaments.models.draw_log import DrawLog
from .serializers import ClubSerializer, CourtSerializer, DateIntervalSerializer, DrawLogSerializer, TournamentSerializer, UserSerializer, ChangePasswordSerializer, EventSerializer, RoundSerializer, GroupStageSerializer, MatchSerializer, TeamScoreSerializer, TeamRegistrationSerializer, PlayerRegistrationSerializer, LiveMatchSerializer, PurchaseSerializer, UserUpdateSerializer, FailedApiCallSerializer, LogSerializer, DeviceTokenSerializer
from tournaments.models import Club, Tournament, CustomUser, Event, Round, GroupStage, Match, TeamScore, TeamRegistration, PlayerRegistration, Court, DateInterval, Purchase, FailedApiCall, Log, DeviceToken
from rest_framework import viewsets, permissions
@ -288,3 +289,15 @@ class DeviceTokenViewSet(viewsets.ModelViewSet):
def perform_create(self, serializer):
serializer.save(user=self.request.user)
class DrawLogViewSet(viewsets.ModelViewSet):
queryset = DrawLog.objects.all()
serializer_class = DrawLogSerializer
def get_queryset(self):
tournament_id = self.request.query_params.get('tournament')
if tournament_id:
return self.queryset.filter(tournament=tournament_id)
if self.request.user:
return self.queryset.filter(tournament__event__creator=self.request.user)
return []

@ -2,6 +2,7 @@ from django.contrib import admin
from tournaments.models import team_registration
from tournaments.models.device_token import DeviceToken
from tournaments.models.draw_log import DrawLog
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
@ -105,6 +106,11 @@ class LogAdmin(admin.ModelAdmin):
class DeviceTokenAdmin(admin.ModelAdmin):
list_display = ['user', 'value']
class DrawLogAdmin(admin.ModelAdmin):
list_display = ['tournament', 'draw_date', 'draw_seed', 'draw_match_index', 'draw_team_position']
list_filter = [SimpleTournamentListFilter]
ordering = ['draw_date']
admin.site.register(CustomUser, CustomUserAdmin)
admin.site.register(Club, ClubAdmin)
admin.site.register(Event, EventAdmin)
@ -121,3 +127,4 @@ admin.site.register(DateInterval, DateIntervalAdmin)
admin.site.register(FailedApiCall, FailedApiCallAdmin)
admin.site.register(Log, LogAdmin)
admin.site.register(DeviceToken, DeviceTokenAdmin)
admin.site.register(DrawLog, DrawLogAdmin)

@ -0,0 +1,26 @@
# Generated by Django 4.2.11 on 2024-10-24 06:55
from django.db import migrations, models
import django.db.models.deletion
import uuid
class Migration(migrations.Migration):
dependencies = [
('tournaments', '0090_tournament_initial_seed_count_and_more'),
]
operations = [
migrations.CreateModel(
name='DrawLog',
fields=[
('id', models.UUIDField(default=uuid.uuid4, primary_key=True, serialize=False)),
('draw_date', models.DateTimeField()),
('draw_seed', models.IntegerField()),
('draw_match_index', models.IntegerField()),
('draw_team_position', models.IntegerField()),
('tournament', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='tournaments.tournament')),
],
),
]

@ -1,4 +1,4 @@
# Generated by Django 5.1 on 2024-10-24 12:53
# Generated by Django 5.1 on 2024-10-24 12:57
from django.db import migrations, models
@ -6,7 +6,7 @@ from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('tournaments', '0090_tournament_initial_seed_count_and_more'),
('tournaments', '0091_drawlog'),
]
operations = [

@ -0,0 +1,10 @@
from django.db import models
import uuid
class DrawLog(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=True)
tournament = models.ForeignKey('Tournament', on_delete=models.CASCADE)
draw_date = models.DateTimeField()
draw_seed = models.IntegerField()
draw_match_index = models.IntegerField()
draw_team_position = models.IntegerField()

@ -42,6 +42,8 @@ class Match(models.Model):
if self.tournament().event:
club = self.tournament().event.club
if self.confirmed is False:
return ""
if club:
return club.court_name(index)
elif index is not None:
@ -98,12 +100,18 @@ class Match(models.Model):
return ''
elif self.start_date:
if self.started():
if self.confirmed:
return self.formatted_duration()
else:
return 'À suivre'
else:
# timezoned_datetime = timezone.localtime(self.start_date)
timezone = self.tournament().timezone()
local_start = self.start_date.astimezone(timezone)
if self.confirmed:
return formats.date_format(local_start, format='l H:i')
else:
return f"Estimée : {formats.date_format(local_start, format='l H:i')}"
else:
return 'À venir...'

Loading…
Cancel
Save