Adds and generates broadcast_code to club when clubs are created

clubs
Laurent 1 year ago
parent f69321becf
commit 8adbfdada8
  1. 6
      tournaments/apps.py
  2. 18
      tournaments/migrations/0065_club_broadcast_code.py
  3. 18
      tournaments/migrations/0066_alter_club_broadcast_code.py
  4. 1
      tournaments/models/club.py
  5. 19
      tournaments/signals.py
  6. 1
      tournaments/urls.py
  7. 5
      tournaments/views.py

@ -1,6 +1,8 @@
from django.apps import AppConfig from django.apps import AppConfig
class TournamentsConfig(AppConfig): class TournamentsConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'tournaments' name = 'tournaments'
default_auto_field = 'django.db.models.BigAutoField'
def ready(self):
import tournaments.signals # This will ensure the signals are registered

@ -0,0 +1,18 @@
# Generated by Django 4.2.11 on 2024-06-04 11:11
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('tournaments', '0064_failedapicall_user'),
]
operations = [
migrations.AddField(
model_name='club',
name='broadcast_code',
field=models.CharField(blank=True, max_length=10, null=True),
),
]

@ -0,0 +1,18 @@
# Generated by Django 4.2.11 on 2024-06-04 11:36
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('tournaments', '0065_club_broadcast_code'),
]
operations = [
migrations.AlterField(
model_name='club',
name='broadcast_code',
field=models.CharField(blank=True, max_length=10, null=True, unique=True),
),
]

@ -17,6 +17,7 @@ class Club(models.Model):
longitude = models.FloatField(null=True, blank=True) longitude = models.FloatField(null=True, blank=True)
court_count = models.IntegerField(default=2) court_count = models.IntegerField(default=2)
broadcast_code = models.CharField(max_length=10, null=True, blank=True, unique=True)
def __str__(self): def __str__(self):
return self.name return self.name

@ -0,0 +1,19 @@
import random
import string
from django.db.models.signals import post_save
from django.dispatch import receiver
from .models import Club
def generate_unique_code():
characters = string.ascii_letters + string.digits
while True:
code = ''.join(random.sample(characters, 3))
print(code)
if not Club.objects.filter(broadcast_code=code).exists():
return code
@receiver(post_save, sender=Club)
def assign_unique_code(sender, instance, created, **kwargs):
if created and not instance.broadcast_code:
instance.broadcast_code = generate_unique_code()
instance.save()

@ -6,6 +6,7 @@ urlpatterns = [
path("", views.index, name="index"), path("", views.index, name="index"),
path("clubs/", views.clubs, name="clubs"), path("clubs/", views.clubs, name="clubs"),
path("clubs/<str:club_id>/", views.club, name="club"), path("clubs/<str:club_id>/", views.club, name="club"),
path("c/<str:broadcast_code>", views.club_broadcast, name="club-broadcast"),
path("tournament/<str:tournament_id>/", path("tournament/<str:tournament_id>/",
include([ include([
path('', views.tournament, name='tournament'), path('', views.tournament, name='tournament'),

@ -243,6 +243,11 @@ def activate(request, uidb64, token):
else: else:
return HttpResponse('Le lien est invalide.') return HttpResponse('Le lien est invalide.')
def club_broadcast(request, broadcast_code):
club = get_object_or_404(Club, broadcast_code=broadcast_code)
return HttpResponse(club.name)
##### API ##### ##### API #####
@api_view(['GET']) @api_view(['GET'])

Loading…
Cancel
Save