cleanup and improvements

stream
Laurent 2 years ago
parent 7c31bc3ab3
commit f97d501a0b
  1. 8
      padelclub_backend/settings.py
  2. 11
      padelclub_backend/urls.py
  3. 2
      static/rest_framework/css/bootstrap-theme.min.css.map
  4. 2
      static/rest_framework/css/bootstrap.min.css.map
  5. 2
      static/rest_framework/docs/js/highlight.pack.js
  6. 509
      static/tournaments/Padeltest.html
  7. 0
      static/tournaments/css/foundation.css
  8. 0
      static/tournaments/css/foundation.min.css
  9. 6
      static/tournaments/css/style.css
  10. 0
      static/tournaments/fonts/Anybody/Anybody-ExtraBold.ttf
  11. 0
      static/tournaments/fonts/Montserrat/Montserrat-Regular.ttf
  12. 0
      static/tournaments/fonts/Montserrat/Montserrat-SemiBold.ttf
  13. 4
      static/tournaments/index.html
  14. BIN
      static/tournaments/pc_icon_round_200.png
  15. 34
      tournaments/migrations/0005_rename_user_tournament_creator_and_more.py
  16. 18
      tournaments/migrations/0006_alter_tournament_creation_date.py
  17. 57
      tournaments/migrations/0007_remove_tournament_custom_name_alter_event_date_and_more.py
  18. 18
      tournaments/migrations/0008_alter_tournament_start_date.py
  19. 18
      tournaments/migrations/0009_alter_teamregistration_logo.py
  20. 24
      tournaments/migrations/0010_alter_groupstage_tournament_alter_round_tournament.py
  21. 51
      tournaments/models.py
  22. 64
      tournaments/serializers.py
  23. 509
      tournaments/static/tournaments/Padeltest.html
  24. 8787
      tournaments/static/tournaments/css/foundation.css
  25. 1
      tournaments/static/tournaments/css/foundation.min.css
  26. 421
      tournaments/static/tournaments/css/style.css
  27. BIN
      tournaments/static/tournaments/fonts/Anybody/Anybody-ExtraBold.ttf
  28. BIN
      tournaments/static/tournaments/fonts/Montserrat/Montserrat-Regular.ttf
  29. BIN
      tournaments/static/tournaments/fonts/Montserrat/Montserrat-SemiBold.ttf
  30. 4
      tournaments/static/tournaments/index.html
  31. 53
      tournaments/templates/tournaments/base.html
  32. 6
      tournaments/templates/tournaments/index.html
  33. 4
      tournaments/templates/tournaments/planning.html
  34. 162
      tournaments/templates/tournaments/tournaments.html
  35. 118
      tournaments/templates/tournaments/tournaments_old.html
  36. 31
      tournaments/views.py

@ -81,8 +81,11 @@ WSGI_APPLICATION = 'padelclub_backend.wsgi.application'
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'stax_padelclub_pbl',
'USER': 'stax',
'PASSWORD': 'staxkikoo',
'HOST': 'postgresql-stax.alwaysdata.net',
}
}
@ -153,5 +156,4 @@ REST_FRAMEWORK = {
]
}
from .settings_app import *

@ -24,15 +24,16 @@ router.register(r'users', views.UserViewSet)
router.register(r'clubs', views.ClubViewSet)
router.register(r'tournaments', views.TournamentViewSet)
router.register(r'events', views.EventViewSet)
router.register(r'group_stages', views.GroupStageViewSet)
router.register(r'group-stages', views.GroupStageViewSet)
router.register(r'matches', views.MatchViewSet)
router.register(r'team_states', views.TeamStateViewSet)
router.register(r'team_registrations', views.TeamRegistrationViewSet)
router.register(r'player_registrations', views.PlayerRegistrationViewSet)
router.register(r'team-states', views.TeamStateViewSet)
router.register(r'team-registrations', views.TeamRegistrationViewSet)
router.register(r'player-registrations', views.PlayerRegistrationViewSet)
router.register(r'exp-tournaments', views.ExpandedTournamentViewSet)
urlpatterns = [
path('api/', include(router.urls)),
path("tournaments/", include("tournaments.urls")),
path("", include("tournaments.urls")),
path('admin/', admin.site.urls),
path('api-auth/', include('rest_framework.urls')),
path('api/plus/api-token-auth/', obtain_auth_token, name='api_token_auth'),

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -0,0 +1,509 @@
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<link rel="stylesheet" href="foundation.css" />
<link rel="stylesheet" href="style.css" />
<link rel="icon" type="image/png" href="favicon.png" />
<title>Padel</title>
</head>
<body>
<div class="wrapper">
<main class="page-body">
<div class="container">
<div class="grid-x">
<div class="cell medium-6 large-6 topblock my-block">
<div class="bubble">
<!-- <div class="flex-row">
<img
src="PadelClub_logo_512.png"
class="logo left-label matchtitle"
/>
<div class="">
<h1 class="club">
Tennis Sporting Club Cassis
</h1>
<h1 class="event">P100 hommes</h1>
<span>Propulsé par Padel Club</span>
</div>
</div> -->
<img
src="PadelClub_logo_512.png"
class="logo inline"
/>
<div class="inline">
<h1 class="club">
Tennis Sporting Club Cassis
</h1>
<h1 class="event">P100 hommes</h1>
<span>Propulsé par Padel Club</span>
</div>
</div>
</div>
</div>
<div class="grid-x">
<div class="cell medium-6 large-3 my-block">
<div class="bubble">
<div class="flex-row">
<label class="left-label matchtitle"
>Match 1</label
>
<label class="right-label info"
>14.03.24 - 17h30</label
>
</div>
<div>
<div
class="test bottom-border padding-bottom-small"
>
<div class="left-label">
<div class="winner">
Sanyo Gutierrez
</div>
<div class="winner">
Franco Stupachuk
</div>
</div>
<div class="">
<span class="score ws winner"
>6</span
>
<span class="score ws winner"
>6</span
>
<span class="score ws winner"
>6</span
>
</div>
</div>
<!-- <div class="" /> -->
<div class="test padding-top-small">
<div class="left-label">
<div>Juan Lebron</div>
<div>Ale Galan</div>
</div>
<div class="">
<span class="score">2</span>
<span class="score">3</span>
<span class="score">4</span>
</div>
</div>
</div>
<div class="top-margin flex-row">
<label class="left-label minor-info"
>5h12min</label
>
<a href="" class="right-label">détails</a>
</div>
</div>
</div>
<div class="cell medium-6 large-3 my-block">
<div class="bubble">
<div class="flex-row">
<label class="left-label matchtitle"
>Match 1</label
>
<label class="right-label info"
>17h30</label
>
</div>
<div>
<div
class="test bottom-border padding-bottom-small"
>
<div class="left-label">
<div class="winner">
Fernando Belasteguín
</div>
<div class="winner">
Carlos Daniel Gutierrez
</div>
</div>
<div class="">
<span class="score ws winner"
>6</span
>
<span class="score ws winner"
>6</span
>
<span class="score ws winner"
>6</span
>
</div>
</div>
<!-- <div class="" /> -->
<div class="test padding-top-small">
<div class="left-label">
<div>Francisco Manuel Gil</div>
<div>Agustin Gomez Silingo</div>
</div>
<div class="">
<span class="score">2</span>
<span class="score">3</span>
<span class="score">4</span>
</div>
</div>
</div>
<div class="top-margin flex-row">
<label class="left-label minor-info"
>5h12min</label
>
<a href="" class="right-label">détails</a>
</div>
</div>
</div>
<div class="cell medium-6 large-3 my-block">
<div class="bubble">
<div class="flex-row">
<label class="left-label matchtitle"
>Match 1</label
>
<label class="right-label info"
>17h30</label
>
</div>
<div>
<div
class="test bottom-border padding-bottom-small"
>
<div class="left-label">
<div class="winner">Sanyo</div>
<div class="winner">Stupa</div>
</div>
<div class="">
<span class="score ws winner"
>6</span
>
<span class="score ws winner"
>6</span
>
<span class="score ws winner"
>6</span
>
</div>
</div>
<!-- <div class="" /> -->
<div class="test padding-top-small">
<div class="left-label">
<div>Lebron</div>
<div>Galan</div>
</div>
<div class="">
<span class="score">2</span>
<span class="score">3</span>
<span class="score">4</span>
</div>
</div>
</div>
<div class="top-margin flex-row">
<label class="left-label minor-info"
>5h12min</label
>
<a href="" class="right-label">détails</a>
</div>
</div>
</div>
<div class="cell medium-6 large-3 my-block">
<div class="bubble">
<div class="flex-row">
<label class="left-label matchtitle"
>Match 1</label
>
<label class="right-label info"
>17h30</label
>
</div>
<div>
<div
class="test bottom-border padding-bottom-small"
>
<div class="left-label">
<div class="winner">Sanyo</div>
<div class="winner">Stupa</div>
</div>
<div class="">
<span class="score ws winner"
>6</span
>
<span class="score ws winner"
>6</span
>
<span class="score ws winner"
>6</span
>
</div>
</div>
<!-- <div class="" /> -->
<div class="test padding-top-small">
<div class="left-label">
<div>Lebron</div>
<div>Galan</div>
</div>
<div class="">
<span class="score">2</span>
<span class="score">3</span>
<span class="score">4</span>
</div>
</div>
</div>
<div class="top-margin flex-row">
<label class="left-label minor-info"
>5h12min</label
>
<a href="" class="right-label">détails</a>
</div>
</div>
</div>
<div class="cell medium-6 large-3 my-block">
<div class="bubble">
<div class="flex-row">
<label class="left-label matchtitle"
>Match 1</label
>
<label class="right-label info"
>17h30</label
>
</div>
<div>
<div
class="test bottom-border padding-bottom-small"
>
<div class="left-label">
<div class="winner">Sanyo</div>
<div class="winner">Stupa</div>
</div>
<div class="">
<span class="score ws winner"
>6</span
>
<span class="score ws winner"
>6</span
>
<span class="score ws winner"
>6</span
>
</div>
</div>
<!-- <div class="" /> -->
<div class="test padding-top-small">
<div class="left-label">
<div>Lebron</div>
<div>Galan</div>
</div>
<div class="">
<span class="score">2</span>
<span class="score">3</span>
<span class="score">4</span>
</div>
</div>
</div>
<div class="top-margin flex-row">
<label class="left-label minor-info"
>5h12min</label
>
<a href="" class="right-label">détails</a>
</div>
</div>
</div>
<div class="cell medium-6 large-3 my-block">
<div class="bubble">
<div class="flex-row">
<label class="left-label matchtitle"
>Match 1</label
>
<label class="right-label info"
>17h30</label
>
</div>
<div>
<div
class="test bottom-border padding-bottom-small"
>
<div class="left-label">
<div class="winner">Sanyo</div>
<div class="winner">Stupa</div>
</div>
<div class="">
<span class="score ws winner"
>6</span
>
<span class="score ws winner"
>6</span
>
<span class="score ws winner"
>6</span
>
</div>
</div>
<!-- <div class="" /> -->
<div class="test padding-top-small">
<div class="left-label">
<div>Lebron</div>
<div>Galan</div>
</div>
<div class="">
<span class="score">2</span>
<span class="score">3</span>
<span class="score">4</span>
</div>
</div>
</div>
<div class="top-margin flex-row">
<label class="left-label minor-info"
>5h12min</label
>
<a href="" class="right-label">détails</a>
</div>
</div>
</div>
<div class="cell medium-6 large-3 my-block">
<div class="bubble">
<div class="flex-row">
<label class="left-label matchtitle"
>Match 1</label
>
<label class="right-label info"
>17h30</label
>
</div>
<div>
<div
class="test bottom-border padding-bottom-small"
>
<div class="left-label">
<div class="winner">Sanyo</div>
<div class="winner">Stupa</div>
</div>
<div class="">
<span class="score ws winner"
>6</span
>
<span class="score ws winner"
>6</span
>
<span class="score ws winner"
>6</span
>
</div>
</div>
<!-- <div class="" /> -->
<div class="test padding-top-small">
<div class="left-label">
<div>Lebron</div>
<div>Galan</div>
</div>
<div class="">
<span class="score">2</span>
<span class="score">3</span>
<span class="score">4</span>
</div>
</div>
</div>
<div class="top-margin flex-row">
<label class="left-label minor-info"
>5h12min</label
>
<a href="" class="right-label">détails</a>
</div>
</div>
</div>
<div class="cell medium-6 large-3 my-block">
<div class="bubble">
<div class="flex-row">
<label class="left-label matchtitle"
>Match 1</label
>
<label class="right-label info"
>17h30</label
>
</div>
<div>
<div
class="test bottom-border padding-bottom-small"
>
<div class="left-label">
<div class="winner">Sanyo</div>
<div class="winner">Stupa</div>
</div>
<div class="">
<span class="score ws winner"
>6</span
>
<span class="score ws winner"
>6</span
>
<span class="score ws winner"
>6</span
>
</div>
</div>
<!-- <div class="" /> -->
<div class="test padding-top-small">
<div class="left-label">
<div>Lebron</div>
<div>Galan</div>
</div>
<div class="">
<span class="score">2</span>
<span class="score">3</span>
<span class="score">4</span>
</div>
</div>
</div>
<div class="top-margin flex-row">
<label class="left-label minor-info"
>5h12min</label
>
<a href="" class="right-label">détails</a>
</div>
</div>
</div>
</div>
</div>
</main>
</div>
</body>
</html>

@ -1,16 +1,16 @@
@font-face {
font-family: "Montserrat-Regular";
src: url("Montserrat/Montserrat-Regular.ttf") format("truetype");
src: url("fonts/Montserrat/Montserrat-Regular.ttf") format("truetype");
}
@font-face {
font-family: "Montserrat-SemiBold";
src: url("Montserrat/Montserrat-SemiBold.ttf") format("truetype");
src: url("fonts/Montserrat/Montserrat-SemiBold.ttf") format("truetype");
}
@font-face {
font-family: "Anybody-ExtraBold";
src: url("Anybody/Anybody-ExtraBold.ttf") format("truetype");
src: url("fonts/Anybody/Anybody-ExtraBold.ttf") format("truetype");
}
html,

@ -4,7 +4,7 @@
<link rel="stylesheet" href="foundation.min.css" />
<link rel="stylesheet" href="style.css" />
<link rel="icon" type="image/png" href="images/favicon.png" />
<link rel="icon" type="image/png" href="favicon.png" />
<title>Padel</title>
</head>
@ -17,7 +17,7 @@
<div class="cell medium-6 large-6 topblock my-block">
<div class="bubble">
<img
src="images/PadelClub_logo_512.png"
src="PadelClub_logo_512.png"
class="logo inline"
/>
<div class="inline">

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

@ -0,0 +1,34 @@
# Generated by Django 4.2.11 on 2024-03-07 09:48
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('tournaments', '0004_match_broadcasted_teamregistration_name_and_more'),
]
operations = [
migrations.RenameField(
model_name='tournament',
old_name='user',
new_name='creator',
),
migrations.RenameField(
model_name='tournament',
old_name='additional_qualified',
new_name='group_stage_additional_qualified',
),
migrations.AlterField(
model_name='teamregistration',
name='logo',
field=models.FilePathField(blank=True, null=True, path='/Users/laurentmorvillier/code/django/padelclub_backend/static/images'),
),
migrations.AlterField(
model_name='teamstate',
name='match',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='team_states', to='tournaments.match'),
),
]

@ -0,0 +1,18 @@
# Generated by Django 4.2.11 on 2024-03-07 10:34
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('tournaments', '0005_rename_user_tournament_creator_and_more'),
]
operations = [
migrations.AlterField(
model_name='tournament',
name='creation_date',
field=models.DateTimeField(),
),
]

@ -0,0 +1,57 @@
# Generated by Django 4.2.11 on 2024-03-07 10:36
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('tournaments', '0006_alter_tournament_creation_date'),
]
operations = [
migrations.RemoveField(
model_name='tournament',
name='custom_name',
),
migrations.AlterField(
model_name='event',
name='date',
field=models.DateTimeField(),
),
migrations.AlterField(
model_name='match',
name='end_date',
field=models.DateTimeField(blank=True, null=True),
),
migrations.AlterField(
model_name='match',
name='start_date',
field=models.DateTimeField(blank=True, null=True),
),
migrations.AlterField(
model_name='teamregistration',
name='call_date',
field=models.DateTimeField(blank=True, null=True),
),
migrations.AlterField(
model_name='teamregistration',
name='registration_date',
field=models.DateTimeField(blank=True, null=True),
),
migrations.AlterField(
model_name='tournament',
name='closed_registration_date',
field=models.DateTimeField(blank=True, null=True),
),
migrations.AlterField(
model_name='tournament',
name='end_date',
field=models.DateTimeField(blank=True, null=True),
),
migrations.AlterField(
model_name='tournament',
name='rank_source_date',
field=models.DateTimeField(blank=True, null=True),
),
]

@ -0,0 +1,18 @@
# Generated by Django 4.2.11 on 2024-03-07 10:37
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('tournaments', '0007_remove_tournament_custom_name_alter_event_date_and_more'),
]
operations = [
migrations.AlterField(
model_name='tournament',
name='start_date',
field=models.DateTimeField(),
),
]

@ -0,0 +1,18 @@
# Generated by Django 4.2.11 on 2024-03-07 11:50
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('tournaments', '0008_alter_tournament_start_date'),
]
operations = [
migrations.AlterField(
model_name='teamregistration',
name='logo',
field=models.CharField(blank=True, max_length=200, null=True),
),
]

@ -0,0 +1,24 @@
# Generated by Django 4.2.11 on 2024-03-07 12:05
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('tournaments', '0009_alter_teamregistration_logo'),
]
operations = [
migrations.AlterField(
model_name='groupstage',
name='tournament',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='tournaments.tournament'),
),
migrations.AlterField(
model_name='round',
name='tournament',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='tournaments.tournament'),
),
]

@ -77,7 +77,7 @@ class CustomUser(AbstractUser):
class Event(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
club = models.ForeignKey(Club, on_delete=models.CASCADE)
date = models.DateField()
date = models.DateTimeField()
name = models.CharField(max_length=200, null=True, blank=True)
federal_tournament_data = models.JSONField(null=True, blank=True)
court_count = models.IntegerField(null=True, blank=True)
@ -92,11 +92,11 @@ class Event(models.Model):
class Tournament(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
event = models.ForeignKey(Event, blank=True, null=True, on_delete=models.CASCADE)
user = models.ForeignKey(CustomUser, blank=True, null=True, on_delete=models.CASCADE)
creator = models.ForeignKey(CustomUser, blank=True, null=True, on_delete=models.CASCADE)
name = models.CharField(max_length=200, null=True, blank=True)
start_date = models.DateField()
end_date = models.DateField(null=True, blank=True)
creation_date = models.DateField()
start_date = models.DateTimeField()
end_date = models.DateTimeField(null=True, blank=True)
creation_date = models.DateTimeField()
is_private = models.BooleanField()
format = models.IntegerField(default=FederalMatchCategory.NINE_GAMES, choices=FederalMatchCategory.choices, null=True, blank=True)
group_stage_format = models.IntegerField(default=FederalMatchCategory.NINE_GAMES, choices=FederalMatchCategory.choices, null=True, blank=True)
@ -104,8 +104,8 @@ class Tournament(models.Model):
loser_round_format = models.IntegerField(default=FederalMatchCategory.NINE_GAMES, choices=FederalMatchCategory.choices, null=True, blank=True)
bracket_sort_mode = models.IntegerField(default=0)
group_stage_count = models.IntegerField(default=0)
rank_source_date = models.DateField(null=True, blank=True)
custom_name = models.CharField(max_length=100, null=True, blank=True)
rank_source_date = models.DateTimeField(null=True, blank=True)
# custom_name = models.CharField(max_length=100, null=True, blank=True)
day_duration = models.IntegerField(default=0)
team_count = models.IntegerField(default=0)
team_sorting = models.IntegerField(default=0)
@ -114,13 +114,13 @@ class Tournament(models.Model):
federal_age_category = models.IntegerField(default=FederalAgeCategory.SENIOR, choices=FederalAgeCategory.choices)
group_stage_court_count = models.IntegerField(null=True, blank=True)
seed_count = models.IntegerField(default=0)
closed_registration_date = models.DateField(null=True, blank=True)
additional_qualified = models.IntegerField(default=0) # ajouter group_stage dans le nom ?
closed_registration_date = models.DateTimeField(null=True, blank=True)
group_stage_additional_qualified = models.IntegerField(default=0)
court_count = models.IntegerField(null=True, blank=True)
prioritize_club_members = models.BooleanField()
qualified_per_group_stage = models.IntegerField(default=0)
teams_per_group_stage = models.IntegerField(default=0)
#estimated_end_date = models.DateField(null=True, blank=True)
#estimated_end_date = models.DateTimeField(null=True, blank=True)
def __str__(self):
return self.name
@ -138,12 +138,13 @@ class Tournament(models.Model):
team_calls = []
for team_registration in self.teamregistration_set.all():
names = team_registration.team_names()
call_date = team_registration.call_date.strftime("%d/%m/%y %H:%M")
stage = team_registration.next_stage()
weight = team_registration.weight()
team_call = TeamCall(names, call_date, weight, stage, team_registration.logo)
team_calls.append(team_call)
call_date = team_registration.call_date
if call_date:
names = team_registration.team_names()
stage = team_registration.next_stage()
weight = team_registration.weight()
team_call = TeamCall(names, call_date, weight, stage, team_registration.logo)
team_calls.append(team_call)
return team_calls
@ -158,7 +159,7 @@ class Tournament(models.Model):
class Round(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
tournament = models.ForeignKey(Club, on_delete=models.CASCADE)
tournament = models.ForeignKey(Tournament, on_delete=models.CASCADE)
index = models.IntegerField(null=True, blank=True)
loser = models.ForeignKey('self', blank=True, null=True, on_delete=models.CASCADE)
format = models.IntegerField(default=FederalMatchCategory.NINE_GAMES, choices=FederalMatchCategory.choices, null=True, blank=True)
@ -192,7 +193,7 @@ class Round(models.Model):
class GroupStage(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
tournament = models.ForeignKey(Club, on_delete=models.CASCADE)
tournament = models.ForeignKey(Tournament, on_delete=models.CASCADE)
index = models.IntegerField(null=True, blank=True)
format = models.IntegerField(default=FederalMatchCategory.NINE_GAMES, choices=FederalMatchCategory.choices, null=True, blank=True)
@ -223,8 +224,8 @@ class Match(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
round = models.ForeignKey(Round, null=True, blank=True, on_delete=models.CASCADE)
group_stage = models.ForeignKey(GroupStage, null=True, blank=True, on_delete=models.CASCADE)
start_date = models.DateField(null=True, blank=True)
end_date = models.DateField(null=True, blank=True)
start_date = models.DateTimeField(null=True, blank=True)
end_date = models.DateTimeField(null=True, blank=True)
index = models.IntegerField(null=True, blank=True)
format = models.IntegerField(default=FederalMatchCategory.NINE_GAMES, choices=FederalMatchCategory.choices, null=True, blank=True)
court = models.IntegerField(null=True, blank=True)
@ -244,7 +245,7 @@ class Match(models.Model):
return f"{str(self.group_stage)} > {desc} > {player_names}"
def player_names(self):
return map(lambda ts: ts.player_names(), self.teamstate_set.all())
return map(lambda ts: ts.player_names(), self.team_states.all())
def formatted_start_date(self):
return self.start_date.strftime("%H:%M")
@ -253,14 +254,14 @@ class TeamRegistration(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
tournament = models.ForeignKey(Tournament, on_delete=models.CASCADE)
group_stage = models.ForeignKey(GroupStage, null=True, blank=True, on_delete=models.SET_NULL)
registration_date = models.DateField(null=True, blank=True)
call_date = models.DateField(null=True, blank=True)
registration_date = models.DateTimeField(null=True, blank=True)
call_date = models.DateTimeField(null=True, blank=True)
initial_position = models.IntegerField(null=True, blank=True)
group_stage_position = models.IntegerField(null=True, blank=True)
comment = models.CharField(max_length=200, null=True, blank=True)
source = models.CharField(max_length=20, null=True, blank=True)
source_value = models.CharField(max_length=200, null=True, blank=True)
logo = models.FilePathField(path=os.path.join(settings.STATIC_ROOT, "images"), null=True, blank=True)
logo = models.CharField(max_length=200, null=True, blank=True) #models.FilePathField(path=os.path.join(settings.STATIC_ROOT, "images"), null=True, blank=True)
name = models.CharField(max_length=200, null=True, blank=True)
def __str__(self):
@ -355,5 +356,5 @@ class TeamCall:
# class Point(models.Model):
# game = models.ForeignKey(Game, on_delete=models.CASCADE)
# action = models.IntegerField()
# date = models.DateField()
# date = models.DateTimeField()
# team_id = models.IntegerField()

@ -26,15 +26,15 @@ class ClubSerializer(serializers.HyperlinkedModelSerializer):
class TournamentSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
club_id = serializers.PrimaryKeyRelatedField(queryset=Club.objects.all())
# club_id = serializers.PrimaryKeyRelatedField(queryset=Club.objects.all())
event_id = serializers.PrimaryKeyRelatedField(queryset=Event.objects.all())
user_id = serializers.PrimaryKeyRelatedField(queryset=CustomUser.objects.all())
creator_id = serializers.PrimaryKeyRelatedField(queryset=CustomUser.objects.all())
model = Tournament
fields = ['id', 'name', 'club_id', 'event_id', 'user_id', 'start_date', 'end_date', 'creation_date',
fields = ['id', 'name', 'event_id', 'creator_id', 'start_date', 'end_date', 'creation_date',
'is_private', 'format', 'group_stage_format', 'round_format', 'loser_round_format', 'bracket_sort_mode',
'group_stage_count', 'rank_source_date', 'custom_name', 'day_duration', 'team_count', 'team_sorting',
'group_stage_count', 'rank_source_date', 'day_duration', 'team_count', 'team_sorting',
'federal_category', 'federal_level_category', 'federal_age_category', 'group_stage_court_count',
'seed_count', 'closed_registration_date', 'additional_qualified', 'court_count', 'prioritize_club_members',
'seed_count', 'closed_registration_date', 'group_stage_additional_qualified', 'court_count', 'prioritize_club_members',
'qualified_per_group_stage', 'teams_per_group_stage']
class EventSerializer(serializers.HyperlinkedModelSerializer):
@ -82,9 +82,9 @@ class TeamRegistrationSerializer(serializers.HyperlinkedModelSerializer):
class PlayerRegistrationSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
team_registration_id = serializers.PrimaryKeyRelatedField(queryset=TeamRegistration.objects.all())
team_state_id = serializers.PrimaryKeyRelatedField(queryset=TeamState.objects.all())
# team_state_id = serializers.PrimaryKeyRelatedField(queryset=TeamState.objects.all())
model = PlayerRegistration
fields = ['id', 'team_registration_id', 'team_state_id', 'first_name', 'last_name', 'licence_id', 'rank', 'has_paid']
fields = ['id', 'team_registration_id', 'first_name', 'last_name', 'licence_id', 'rank', 'has_paid']
class ChangePasswordSerializer(serializers.Serializer):
old_password = serializers.CharField(max_length=128, write_only=True, required=True)
@ -111,3 +111,53 @@ class ChangePasswordSerializer(serializers.Serializer):
user.set_password(password)
user.save()
return user
class ExpandedMatchSerializer(serializers.HyperlinkedModelSerializer):
team_states = TeamStateSerializer(many=True, read_only=True)
class Meta:
round_id = serializers.PrimaryKeyRelatedField(queryset=Round.objects.all())
group_stage_id = serializers.PrimaryKeyRelatedField(queryset=GroupStage.objects.all())
model = Match
fields = ['id', 'round_id', 'group_stage_id', 'index', 'format', 'court', 'start_date', 'end_date',
'serving_team_id', 'winning_team_id', 'losing_team_id', 'team_states']
class ExpandedRoundSerializer(serializers.HyperlinkedModelSerializer):
match_set = ExpandedMatchSerializer(many=True, read_only=True)
class Meta:
tournament_id = serializers.PrimaryKeyRelatedField(queryset=Tournament.objects.all())
loser_id = serializers.PrimaryKeyRelatedField(queryset=Round.objects.all())
model = Round
fields = ['id', 'index', 'tournament_id', 'loser_id', 'format', 'match_set']
class ExpandedGroupStageSerializer(serializers.HyperlinkedModelSerializer):
match_set = ExpandedMatchSerializer(many=True, read_only=True)
class Meta:
tournament_id = serializers.PrimaryKeyRelatedField(queryset=Tournament.objects.all())
model = GroupStage
fields = ['id', 'index', 'tournament_id', 'format', 'match_set']
class ExpandedTeamRegistrationSerializer(serializers.HyperlinkedModelSerializer):
playerregistration_set = PlayerRegistrationSerializer(many=True, read_only=True)
class Meta:
# match_id = serializers.PrimaryKeyRelatedField(queryset=Match.objects.all())
group_stage_id = serializers.PrimaryKeyRelatedField(queryset=GroupStage.objects.all())
model = TeamRegistration
fields = ['id', 'group_stage_id', 'registration_date', 'call_date', 'initial_position',
'group_stage_position', 'logo', 'playerregistration_set']
class ExpandedTournamentSerializer(serializers.HyperlinkedModelSerializer):
teamregistration_set = ExpandedTeamRegistrationSerializer(many=True, read_only=True)
round_set = ExpandedRoundSerializer(many=True, read_only=True)
groupstage_set = ExpandedGroupStageSerializer(many=True, read_only=True)
class Meta:
# club_id = serializers.PrimaryKeyRelatedField(queryset=Club.objects.all())
event_id = serializers.PrimaryKeyRelatedField(queryset=Event.objects.all())
creator_id = serializers.PrimaryKeyRelatedField(queryset=CustomUser.objects.all())
model = Tournament
fields = ['id', 'name', 'event_id', 'creator_id', 'start_date', 'end_date', 'creation_date',
'is_private', 'format', 'group_stage_format', 'round_format', 'loser_round_format', 'bracket_sort_mode',
'group_stage_count', 'rank_source_date', 'day_duration', 'team_count', 'team_sorting',
'federal_category', 'federal_level_category', 'federal_age_category', 'group_stage_court_count',
'seed_count', 'closed_registration_date', 'group_stage_additional_qualified', 'court_count', 'prioritize_club_members',
'qualified_per_group_stage', 'teams_per_group_stage', 'teamregistration_set', 'round_set', 'groupstage_set']

@ -0,0 +1,509 @@
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<link rel="stylesheet" href="foundation.css" />
<link rel="stylesheet" href="style.css" />
<link rel="icon" type="image/png" href="favicon.png" />
<title>Padel</title>
</head>
<body>
<div class="wrapper">
<main class="page-body">
<div class="container">
<div class="grid-x">
<div class="cell medium-6 large-6 topblock my-block">
<div class="bubble">
<!-- <div class="flex-row">
<img
src="PadelClub_logo_512.png"
class="logo left-label matchtitle"
/>
<div class="">
<h1 class="club">
Tennis Sporting Club Cassis
</h1>
<h1 class="event">P100 hommes</h1>
<span>Propulsé par Padel Club</span>
</div>
</div> -->
<img
src="PadelClub_logo_512.png"
class="logo inline"
/>
<div class="inline">
<h1 class="club">
Tennis Sporting Club Cassis
</h1>
<h1 class="event">P100 hommes</h1>
<span>Propulsé par Padel Club</span>
</div>
</div>
</div>
</div>
<div class="grid-x">
<div class="cell medium-6 large-3 my-block">
<div class="bubble">
<div class="flex-row">
<label class="left-label matchtitle"
>Match 1</label
>
<label class="right-label info"
>14.03.24 - 17h30</label
>
</div>
<div>
<div
class="test bottom-border padding-bottom-small"
>
<div class="left-label">
<div class="winner">
Sanyo Gutierrez
</div>
<div class="winner">
Franco Stupachuk
</div>
</div>
<div class="">
<span class="score ws winner"
>6</span
>
<span class="score ws winner"
>6</span
>
<span class="score ws winner"
>6</span
>
</div>
</div>
<!-- <div class="" /> -->
<div class="test padding-top-small">
<div class="left-label">
<div>Juan Lebron</div>
<div>Ale Galan</div>
</div>
<div class="">
<span class="score">2</span>
<span class="score">3</span>
<span class="score">4</span>
</div>
</div>
</div>
<div class="top-margin flex-row">
<label class="left-label minor-info"
>5h12min</label
>
<a href="" class="right-label">détails</a>
</div>
</div>
</div>
<div class="cell medium-6 large-3 my-block">
<div class="bubble">
<div class="flex-row">
<label class="left-label matchtitle"
>Match 1</label
>
<label class="right-label info"
>17h30</label
>
</div>
<div>
<div
class="test bottom-border padding-bottom-small"
>
<div class="left-label">
<div class="winner">
Fernando Belasteguín
</div>
<div class="winner">
Carlos Daniel Gutierrez
</div>
</div>
<div class="">
<span class="score ws winner"
>6</span
>
<span class="score ws winner"
>6</span
>
<span class="score ws winner"
>6</span
>
</div>
</div>
<!-- <div class="" /> -->
<div class="test padding-top-small">
<div class="left-label">
<div>Francisco Manuel Gil</div>
<div>Agustin Gomez Silingo</div>
</div>
<div class="">
<span class="score">2</span>
<span class="score">3</span>
<span class="score">4</span>
</div>
</div>
</div>
<div class="top-margin flex-row">
<label class="left-label minor-info"
>5h12min</label
>
<a href="" class="right-label">détails</a>
</div>
</div>
</div>
<div class="cell medium-6 large-3 my-block">
<div class="bubble">
<div class="flex-row">
<label class="left-label matchtitle"
>Match 1</label
>
<label class="right-label info"
>17h30</label
>
</div>
<div>
<div
class="test bottom-border padding-bottom-small"
>
<div class="left-label">
<div class="winner">Sanyo</div>
<div class="winner">Stupa</div>
</div>
<div class="">
<span class="score ws winner"
>6</span
>
<span class="score ws winner"
>6</span
>
<span class="score ws winner"
>6</span
>
</div>
</div>
<!-- <div class="" /> -->
<div class="test padding-top-small">
<div class="left-label">
<div>Lebron</div>
<div>Galan</div>
</div>
<div class="">
<span class="score">2</span>
<span class="score">3</span>
<span class="score">4</span>
</div>
</div>
</div>
<div class="top-margin flex-row">
<label class="left-label minor-info"
>5h12min</label
>
<a href="" class="right-label">détails</a>
</div>
</div>
</div>
<div class="cell medium-6 large-3 my-block">
<div class="bubble">
<div class="flex-row">
<label class="left-label matchtitle"
>Match 1</label
>
<label class="right-label info"
>17h30</label
>
</div>
<div>
<div
class="test bottom-border padding-bottom-small"
>
<div class="left-label">
<div class="winner">Sanyo</div>
<div class="winner">Stupa</div>
</div>
<div class="">
<span class="score ws winner"
>6</span
>
<span class="score ws winner"
>6</span
>
<span class="score ws winner"
>6</span
>
</div>
</div>
<!-- <div class="" /> -->
<div class="test padding-top-small">
<div class="left-label">
<div>Lebron</div>
<div>Galan</div>
</div>
<div class="">
<span class="score">2</span>
<span class="score">3</span>
<span class="score">4</span>
</div>
</div>
</div>
<div class="top-margin flex-row">
<label class="left-label minor-info"
>5h12min</label
>
<a href="" class="right-label">détails</a>
</div>
</div>
</div>
<div class="cell medium-6 large-3 my-block">
<div class="bubble">
<div class="flex-row">
<label class="left-label matchtitle"
>Match 1</label
>
<label class="right-label info"
>17h30</label
>
</div>
<div>
<div
class="test bottom-border padding-bottom-small"
>
<div class="left-label">
<div class="winner">Sanyo</div>
<div class="winner">Stupa</div>
</div>
<div class="">
<span class="score ws winner"
>6</span
>
<span class="score ws winner"
>6</span
>
<span class="score ws winner"
>6</span
>
</div>
</div>
<!-- <div class="" /> -->
<div class="test padding-top-small">
<div class="left-label">
<div>Lebron</div>
<div>Galan</div>
</div>
<div class="">
<span class="score">2</span>
<span class="score">3</span>
<span class="score">4</span>
</div>
</div>
</div>
<div class="top-margin flex-row">
<label class="left-label minor-info"
>5h12min</label
>
<a href="" class="right-label">détails</a>
</div>
</div>
</div>
<div class="cell medium-6 large-3 my-block">
<div class="bubble">
<div class="flex-row">
<label class="left-label matchtitle"
>Match 1</label
>
<label class="right-label info"
>17h30</label
>
</div>
<div>
<div
class="test bottom-border padding-bottom-small"
>
<div class="left-label">
<div class="winner">Sanyo</div>
<div class="winner">Stupa</div>
</div>
<div class="">
<span class="score ws winner"
>6</span
>
<span class="score ws winner"
>6</span
>
<span class="score ws winner"
>6</span
>
</div>
</div>
<!-- <div class="" /> -->
<div class="test padding-top-small">
<div class="left-label">
<div>Lebron</div>
<div>Galan</div>
</div>
<div class="">
<span class="score">2</span>
<span class="score">3</span>
<span class="score">4</span>
</div>
</div>
</div>
<div class="top-margin flex-row">
<label class="left-label minor-info"
>5h12min</label
>
<a href="" class="right-label">détails</a>
</div>
</div>
</div>
<div class="cell medium-6 large-3 my-block">
<div class="bubble">
<div class="flex-row">
<label class="left-label matchtitle"
>Match 1</label
>
<label class="right-label info"
>17h30</label
>
</div>
<div>
<div
class="test bottom-border padding-bottom-small"
>
<div class="left-label">
<div class="winner">Sanyo</div>
<div class="winner">Stupa</div>
</div>
<div class="">
<span class="score ws winner"
>6</span
>
<span class="score ws winner"
>6</span
>
<span class="score ws winner"
>6</span
>
</div>
</div>
<!-- <div class="" /> -->
<div class="test padding-top-small">
<div class="left-label">
<div>Lebron</div>
<div>Galan</div>
</div>
<div class="">
<span class="score">2</span>
<span class="score">3</span>
<span class="score">4</span>
</div>
</div>
</div>
<div class="top-margin flex-row">
<label class="left-label minor-info"
>5h12min</label
>
<a href="" class="right-label">détails</a>
</div>
</div>
</div>
<div class="cell medium-6 large-3 my-block">
<div class="bubble">
<div class="flex-row">
<label class="left-label matchtitle"
>Match 1</label
>
<label class="right-label info"
>17h30</label
>
</div>
<div>
<div
class="test bottom-border padding-bottom-small"
>
<div class="left-label">
<div class="winner">Sanyo</div>
<div class="winner">Stupa</div>
</div>
<div class="">
<span class="score ws winner"
>6</span
>
<span class="score ws winner"
>6</span
>
<span class="score ws winner"
>6</span
>
</div>
</div>
<!-- <div class="" /> -->
<div class="test padding-top-small">
<div class="left-label">
<div>Lebron</div>
<div>Galan</div>
</div>
<div class="">
<span class="score">2</span>
<span class="score">3</span>
<span class="score">4</span>
</div>
</div>
</div>
<div class="top-margin flex-row">
<label class="left-label minor-info"
>5h12min</label
>
<a href="" class="right-label">détails</a>
</div>
</div>
</div>
</div>
</div>
</main>
</div>
</body>
</html>

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

@ -0,0 +1,421 @@
@font-face {
font-family: "Montserrat-Regular";
src: url("../fonts/Montserrat/Montserrat-Regular.ttf") format("truetype");
}
@font-face {
font-family: "Montserrat-SemiBold";
src: url("../fonts/Montserrat/Montserrat-SemiBold.ttf") format("truetype");
}
@font-face {
font-family: "Anybody-ExtraBold";
src: url("../fonts/Anybody/Anybody-ExtraBold.ttf") format("truetype");
}
html,
body {
background: linear-gradient(
20deg,
#1b223a 0 20%,
#e84038 20% 40%,
#f39200 40% 60%,
#ffd300 60% 80%,
#1b223a 80% 100%
);
font-family: "Montserrat-Regular";
font-size: 16px;
/* color: #1b223a; */
color: #707070;
box-sizing: border-box;
height: 100%;
padding: 0;
margin: 0;
}
label {
color: #707070;
}
h1 {
font-size: 20px;
margin: 0px;
line-height: 1.1;
}
header,
footer {
padding: 10px;
}
header {
font-size: 20px;
}
/* .page-body {
flex-grow: 1;
} */
a {
color: #707070;
}
a:hover {
color: #f39200;
}
/* a {
color: #707070;
padding: 8px 12px;
background-color: #fae7ce;
border-radius: 12px;
text-decoration: none;
font-size: 12px;
font-weight: 600;
} */
.wrapper {
margin: 0px 10px;
}
@media print, screen and (min-width: 40em) {
.wrapper {
margin: 0px 40px;
}
}
.mybox {
color: #707070;
padding: 8px 12px;
background-color: #fae7ce;
border-radius: 12px;
text-decoration: none;
font-size: 12px;
font-weight: 600;
}
table {
border-collapse: collapse;
margin: 5px 0px;
padding: 5px;
}
.score-table {
font-size: 18px;
}
label {
font-size: 18px;
}
td {
padding: 3px 0px;
}
tr {
/* height: 40px; */
}
.topblock {
margin-top: 20px;
}
.firstrow {
border-bottom: 1pt solid #ccc;
}
.big {
font-size: 20px;
font-weight: 600;
}
.bold {
font-weight: 600;
}
.matchtitle {
font-family: "Anybody-ExtraBold";
font-size: 18px;
color: #1b223a;
}
.title {
font-family: "Anybody-ExtraBold";
font-size: 18px;
color: #f39200;
}
.large {
font-family: "Montserrat-SemiBold";
font-size: 18px;
/* color: #707070; */
}
.info {
font-family: "Montserrat-SemiBold";
font-size: 14px;
color: #707070;
}
.small {
font-size: 12px;
}
.minor-info {
color: #707070;
font-size: 14px;
}
.logo {
height: 100px;
padding: 5px 10px;
}
.padding-bottom-small {
padding-bottom: 4px;
}
.padding-bottom {
padding-bottom: 20px;
}
.padding-top-small {
padding-top: 4px;
}
.names {
/* width: 70%; */
}
.scores {
vertical-align: middle;
/* margin: 0 auto 0 0; */
}
.separator {
height: 1px;
background-color: #707070;
margin: 5px 0px;
}
.score {
font-size: 20px;
vertical-align: middle;
padding: 0px 5px;
}
.winner {
color: #f39200;
}
.ws {
font-family: "Montserrat-SemiBold";
}
.center {
text-align: center;
margin: 0 auto;
}
.my-block {
padding: 0px 10px;
}
@media print, screen and (min-width: 40em) {
.my-block {
padding: 10px 10px;
}
}
.red {
background-color: red;
}
.bubble {
padding: 20px;
background-color: white;
border-radius: 24px;
/* box-shadow: 10px 10px lightblue; */
}
.test {
display: flex;
justify-content: space-between;
align-items: center;
/* width: 25%; */
}
.inline {
display: inline-block;
/* box-sizing: border-box; */
vertical-align: middle;
}
.table-container {
display: table;
}
.table-cell {
display: table-cell;
vertical-align: middle;
}
.horizontal-padding {
padding: 0px 20px;
}
.horizontal-margin {
margin: 0px 10px;
}
.hpadding10 {
padding: 0px 10px;
}
.vert-middle {
vertical-align: middle;
}
.club {
font-family: "Anybody-ExtraBold";
font-size: 24px;
color: #f39200;
}
.event {
font-family: "Anybody-ExtraBold";
font-size: 48px;
color: #1b223a;
}
.bottom-border {
border-bottom: 1px solid #ccc;
}
.bubble-bottom {
font-size: 14px;
}
.duration {
/* display:grid; */
/* grid-template-columns: max-content max-content; */
width: 100%;
background-color: #fcc;
}
.alignleft {
text-align: left;
}
.alignright {
text-align: right;
}
.clear {
clear: both;
}
.teamname {
width: 100%;
}
.top-margin {
margin-top: 10px;
}
.top-margin20 {
margin-top: 20px;
}
.smatch {
padding-top: 20px;
width: 800px;
margin: 0 auto;
}
.right {
text-align: right;
}
.scontainer {
display: flex;
align-items: center;
}
.container {
width: 100%;
/* text-align:center; */
}
.verticalmargin {
margin: 10px 0px;
}
.vertical-padding {
padding: 8px 0px;
}
.tight {
line-height: 1.1;
}
.flex-row {
display: flex;
justify-content: space-between;
/* vertical-align: middle; */
}
.left-label {
align-self: flex-start;
/* Aligns the left label to the top */
}
.right-label {
align-self: flex-end;
/* Aligns the right label to the bottom */
}
.left-column {
flex-grow: 1;
}
.right-column {
flex-grow: 1;
text-align: right;
}
.team_image {
height: 40px;
width: 40px;
}
.w15 {
width: 15%;
}
.w20 {
width: 20%;
}
.w25 {
width: 25%;
}
.w30 {
width: 30%;
}
.w40 {
width: 40%;
}
.w50 {
width: 50%;
}
.w60 {
width: 60%;
}
.w70 {
width: 70%;
}
.w80 {
width: 80%;
}
.w100 {
width: 100%;
}
.w80px {
width: 80px;
}
.w100px {
width: 100px;
}

@ -4,7 +4,7 @@
<link rel="stylesheet" href="foundation.min.css" />
<link rel="stylesheet" href="style.css" />
<link rel="icon" type="image/png" href="images/favicon.png" />
<link rel="icon" type="image/png" href="favicon.png" />
<title>Padel</title>
</head>
@ -17,7 +17,7 @@
<div class="cell medium-6 large-6 topblock my-block">
<div class="bubble">
<img
src="images/PadelClub_logo_512.png"
src="PadelClub_logo_512.png"
class="logo inline"
/>
<div class="inline">

@ -0,0 +1,53 @@
<html>
{% load static %}
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<link
rel="stylesheet"
href="{% static 'tournaments/css/foundation.min.css' %}"
/>
<link rel="stylesheet" href="{% static 'tournaments/css/style.css' %}" />
<link
rel="icon"
type="image/png"
href="{% static 'tournaments/images/favicon.png' %}"
/>
<title>{% block head_title %}Page Title{% endblock %}</title>
</head>
<body>
<div class="wrapper">
<main class="page-body">
<div class="container">
<div class="grid-x">
<div class="cell medium-6 large-6 topblock my-block">
<div class="bubble">
<img
src="{% static 'tournaments/images/PadelClub_logo_512.png' %}"
class="logo inline"
/>
<div class="inline">
<h1 class="club">Bienvenue !</h1>
<h1 class="event">{% block title %}Page Title{% endblock %}</h1>
<!-- <span>Propulsé par Padel Club</span> -->
</div>
</div>
</div>
</div>
<main>
{% block content %}
<!-- The content of child templates will be inserted here -->
{% endblock %}
</main>
</div>
</div>
</main>
</div>
</body>
</html>

@ -4,10 +4,10 @@
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<link
rel="stylesheet"
rel="stylesheet" type="text/css"
href="{% static 'tournaments/foundation.min.css' %}"
/>
<link rel="stylesheet" href="{% static 'tournaments/style.css' %}" />
<link rel="stylesheet" type="text/css" href="{% static 'tournaments/style.css' %}" />
<link
rel="icon"
@ -57,7 +57,7 @@
{{ tournament.event.club.name }}
</div>
<div class="w25 mybox inline">
{{ tournament.start_date }}
{{ tournament.start_date|date:"Y-m-d" }}
</div>
</div>

@ -47,7 +47,7 @@
<div class="table-container bottom-border vertical-padding">
<img src="{% static 'tournaments/images/{{ team_call.image }}' %}" class="team_image horizontal-margin">
<img src="{% static 'tournaments/{{ team_call.image }}' %}" class="team_image horizontal-margin">
<div class="w50 tight table-cell hpadding10">
{% for name in team_call.names %}
<div>{{ name }}</div>
@ -68,7 +68,7 @@
<div class="bubble">
<div class="table-container bottom-border vertical-padding">
<img src="{% static 'tournaments/images/pc_icon_round_200.png' %}" class="team_image horizontal-margin">
<img src="{% static 'tournaments/pc_icon_round_200.png' %}" class="team_image horizontal-margin">
<div class="w50 tight table-cell hpadding10">
<div>Razmig Sarkissian</div>
<div>Laurent Morvillier</div>

@ -1,112 +1,52 @@
<html>
{% load static %}
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<link
rel="stylesheet"
href="{% static 'tournaments/foundation.min.css' %}"
/>
<link rel="stylesheet" href="{% static 'tournaments/style.css' %}" />
<link
rel="icon"
type="image/png"
href="{% static 'tournaments/favicon.png' %}"
/>
<title>Padel Club</title>
<script>
function fadeContent() {
$(".content:hidden:first").fadeIn(500).delay(2000).fadeOut(500, function() {
$(this).appendTo($(this).parent()); //stick current at the end
fadeContent(); //loop
});
}
fadeContent(); //kick it off the first time
<!--
<div class="contentPanel">
<div class="content">
<div style="border: solid 2px black; text-align: center">
This is first content
</div>
</div>
<div class="content">
<div style="border: solid 2px black; text-align: center">
This is second content
</div>
</div>
<div class="content">
<div style="border: solid 2px black; text-align: center">
This is third content
</div>
</div>
</div>
.contentPanel .content { display: none; }
-->
</script>
</head>
<body>
<div class="wrapper">
<main class="page-body">
<div class="container">
<div class="grid-x">
<div class="cell medium-6 large-6 topblock my-block">
<div class="bubble">
<img
src="{% static 'tournaments/PadelClub_logo_512.png' %}"
class="logo inline"
/>
<div class="inline">
<h1 class="club">Bienvenue !</h1>
<h1 class="event">Tournois</h1>
<!-- <span>Propulsé par Padel Club</span> -->
</div>
</div>
</div>
</div>
<div class="grid-x">
<div class="cell medium-6 large-6 topblock my-block">
<div class="bubble">
{% if live %}
<label class="title">En cours</label>
{% for tournament in live %}
{% include 'tournaments/tournament_row.html' %}
{% endfor %} {% endif %} {% if future %}
<label class="title top-margin20">A venir</label>
{% for tournament in future %}
{% include 'tournaments/tournament_row.html' %}
{% endfor %} {% endif %}
</div>
</div>
<div class="cell medium-6 large-6 topblock my-block">
<div class="bubble">
{% if ended %}
<label class="title">Terminés</label>
{% for tournament in ended %}
{% include 'tournaments/tournament_row.html' %}
{% endfor %} {% endif %}
</div>
</div>
</div>
</div>
</main>
{% extends 'tournaments/base.html' %}
{% block head_title %}Tournois{% endblock %}
{% block title %}Tournois{% endblock %}
{% block content %}
{% if live or future %}
<div class="grid-x">
<div class="cell medium-6 large-6 topblock my-block">
<div class="bubble">
{% if live %}
<label class="title">En cours</label>
{% for tournament in live %}
{% include 'tournaments/tournament_row.html' %}
{% endfor %} {% endif %}
{% if future %}
<label class="title top-margin20">A venir</label>
{% for tournament in future %}
{% include 'tournaments/tournament_row.html' %}
{% endfor %} {% endif %}
</div>
</div>
{% endif %}
{% if ended %}
<div class="cell medium-6 large-6 topblock my-block">
<div class="bubble">
<label class="title">Terminés</label>
{% for tournament in ended %}
{% include 'tournaments/tournament_row.html' %}
{% endfor %}
</div>
</div>
</body>
</html>
{% endif %}
{% endblock %}

@ -0,0 +1,118 @@
<html>
{% load static %}
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<link
rel="stylesheet"
href="{% static 'tournaments/css/foundation.min.css' %}"
/>
<link rel="stylesheet" href="{% static 'tournaments/css/style.css' %}" />
<link
rel="icon"
type="image/png"
href="{% static 'tournaments/images/favicon.png' %}"
/>
<title>Padel Club</title>
<script>
function fadeContent() {
$(".content:hidden:first").fadeIn(500).delay(2000).fadeOut(500, function() {
$(this).appendTo($(this).parent()); //stick current at the end
fadeContent(); //loop
});
}
fadeContent(); //kick it off the first time
<!--
<div class="contentPanel">
<div class="content">
<div style="border: solid 2px black; text-align: center">
This is first content
</div>
</div>
<div class="content">
<div style="border: solid 2px black; text-align: center">
This is second content
</div>
</div>
<div class="content">
<div style="border: solid 2px black; text-align: center">
This is third content
</div>
</div>
</div>
.contentPanel .content { display: none; }
-->
</script>
</head>
<body>
<div class="wrapper">
<main class="page-body">
<div class="container">
<div class="grid-x">
<div class="cell medium-6 large-6 topblock my-block">
<div class="bubble">
<img
src="{% static 'tournaments/images/PadelClub_logo_512.png' %}"
class="logo inline"
/>
<div class="inline">
<h1 class="club">Bienvenue !</h1>
<h1 class="event">Tournois</h1>
<!-- <span>Propulsé par Padel Club</span> -->
</div>
</div>
</div>
</div>
{% if live or future %}
<div class="grid-x">
<div class="cell medium-6 large-6 topblock my-block">
<div class="bubble">
{% if live %}
<label class="title">En cours</label>
{% for tournament in live %}
{% include 'tournaments/tournament_row.html' %}
{% endfor %} {% endif %}
{% if future %}
<label class="title top-margin20">A venir</label>
{% for tournament in future %}
{% include 'tournaments/tournament_row.html' %}
{% endfor %} {% endif %}
</div>
</div>
{% endif %}
{% if ended %}
<div class="cell medium-6 large-6 topblock my-block">
<div class="bubble">
<label class="title">Terminés</label>
{% for tournament in ended %}
{% include 'tournaments/tournament_row.html' %}
{% endfor %}
</div>
</div>
{% endif %}
</div>
</div>
</main>
</div>
</body>
</html>

@ -1,6 +1,6 @@
from django.shortcuts import render, get_object_or_404
from django.http import HttpResponse
from .serializers import ClubSerializer, TournamentSerializer, UserSerializer, ChangePasswordSerializer, EventSerializer, RoundSerializer, GroupStageSerializer, MatchSerializer, TeamStateSerializer, TeamRegistrationSerializer, PlayerRegistrationSerializer
from .serializers import ClubSerializer, TournamentSerializer, ExpandedTournamentSerializer, UserSerializer, ChangePasswordSerializer, EventSerializer, RoundSerializer, GroupStageSerializer, MatchSerializer, TeamStateSerializer, TeamRegistrationSerializer, PlayerRegistrationSerializer
from .models import Club, Tournament, CustomUser, Event, Round, GroupStage, Match, TeamState, TeamRegistration, PlayerRegistration
from .models import TeamCall
@ -18,13 +18,24 @@ def index(request):
future_tournaments = Tournament.objects.filter(end_date__isnull=True, start_date__gt=today).order_by('start_date')
live_tournaments = Tournament.objects.filter(end_date__isnull=True, start_date__lte=today).order_by('start_date')
ended_tournaments = Tournament.objects.filter(end_date__isnull=False).order_by('start_date')
template = loader.get_template('tournaments/tournaments.html')
context = {
'future': future_tournaments,
'live': live_tournaments,
'ended': ended_tournaments,
}
return HttpResponse(template.render(context, request))
# template = loader.get_template('tournaments/tournaments.html')
# context = {
# 'future': future_tournaments,
# 'live': live_tournaments,
# 'ended': ended_tournaments,
# }
# return HttpResponse(template.render(context, request))
return render(
request,
"tournaments/tournaments.html",
{
'future': future_tournaments,
'live': live_tournaments,
'ended': ended_tournaments,
},
content_type="text/html",
)
def tournament(request, tournament_id):
@ -87,6 +98,10 @@ class TournamentViewSet(viewsets.ModelViewSet):
queryset = Tournament.objects.all()
serializer_class = TournamentSerializer
class ExpandedTournamentViewSet(viewsets.ModelViewSet):
queryset = Tournament.objects.all()
serializer_class = ExpandedTournamentSerializer
class ChangePasswordView(UpdateAPIView):
serializer_class = ChangePasswordSerializer

Loading…
Cancel
Save