1
0
mirror of https://gitlab.com/animath/si/plateforme.git synced 2025-06-21 01:18:22 +02:00

Display tournament list

This commit is contained in:
Yohann D'ANELLO
2020-04-29 16:26:52 +02:00
parent eead385218
commit e865910ee3
10 changed files with 135 additions and 23 deletions

View File

@ -1,4 +1,4 @@
from django.core.management import BaseCommand
from django.core.management import BaseCommand, CommandError
from django.db import transaction
from member.models import TFJMUser, Document, Solution, Synthesis, Authorization, MotivationLetter
@ -61,6 +61,17 @@ class Command(BaseCommand):
Tournament.objects.create(**obj_dict)
print(self.style.SUCCESS("Tournaments imported"))
@staticmethod
def validation_status(status):
if status == "NOT_READY":
return "0invalid"
elif status == "WAITING":
return "1waiting"
elif status == "VALIDATED":
return "2valid"
else:
raise CommandError("Unknown status: {}".format(status))
@transaction.atomic
def import_teams(self):
self.stdout.write("Importing teams...")
@ -84,7 +95,7 @@ class Command(BaseCommand):
"trigram": args[2],
"tournament": Tournament.objects.get(pk=args[3]),
"inscription_date": args[13],
"validation_status": args[14].lower(),
"validation_status": Command.validation_status(args[14]),
"selected_for_final": args[15],
"access_code": args[16],
"year": args[17],
@ -93,6 +104,19 @@ class Command(BaseCommand):
Team.objects.create(**obj_dict)
print(self.style.SUCCESS("Teams imported"))
@staticmethod
def role(role):
if role == "ADMIN":
return "0admin"
elif role == "ORGANIZER":
return "1volunteer"
elif role == "ENCADRANT":
return "2coach"
elif role == "PARTICIPANT":
return "3participant"
else:
raise CommandError("Unknown role: {}".format(role))
@transaction.atomic
def import_users(self):
self.stdout.write("Importing users...")
@ -130,7 +154,7 @@ class Command(BaseCommand):
"responsible_phone": args[15],
"responsible_email": args[16],
"description": args[17].replace("\\n", "\n") if args[17] else None,
"role": args[18].lower(),
"role": Command.role(args[18]),
"team": Team.objects.get(pk=args[19]) if args[19] else None,
"year": args[20],
"date_joined": args[23],

View File

@ -127,10 +127,10 @@ class TFJMUser(AbstractUser):
role = models.CharField(
max_length=16,
choices=[
("admin", _("admin")),
("organizer", _("organizer")),
("encadrant", _("encadrant")),
("participant", _("participant")),
("0admin", _("admin")),
("1volunteer", _("organizer")),
("2coach", _("coach")),
("3participant", _("participant")),
]
)
@ -141,15 +141,15 @@ class TFJMUser(AbstractUser):
@property
def participates(self):
return self.role == "participant" or self.role == "encadrant"
return self.role == "3participant" or self.role == "2encadrant"
@property
def organizes(self):
return self.role == "organizer" or self.role == "admin"
return self.role == "1volunteer" or self.role == "0admin"
@property
def admin(self):
return self.role == "admin"
return self.role == "0admin"
class Meta:
verbose_name = _("user")

View File

@ -100,9 +100,9 @@ class Team(models.Model):
validation_status = models.CharField(
max_length=8,
choices=[
("invalid", _("Registration not validated")),
("waiting", _("Waiting for validation")),
("valid", _("Registration validated")),
("0invalid", _("Registration not validated")),
("1waiting", _("Waiting for validation")),
("1valid", _("Registration validated")),
],
verbose_name=_("validation status"),
)
@ -184,9 +184,9 @@ class Payment(models.Model):
validation_status = models.CharField(
max_length=8,
choices=[
("invalid", _("Registration not validated")),
("waiting", _("Waiting for validation")),
("valid", _("Registration validated")),
("0invalid", _("Registration not validated")),
("1waiting", _("Waiting for validation")),
("2valid", _("Registration validated")),
],
verbose_name=_("validation status"),
)

20
apps/tournament/tables.py Normal file
View File

@ -0,0 +1,20 @@
import django_tables2 as tables
from django.utils.translation import gettext as _
from .models import Tournament
class TournamentTable(tables.Table):
date_start = tables.Column(
verbose_name=_("dates").capitalize(),
)
def render_date_start(self, record):
return _("From {start:%b %d %Y} to {end:%b %d %Y}").format(start=record.date_start, end=record.date_end)
class Meta:
model = Tournament
fields = ("name", "date_start", "date_inscription", "date_solutions", "size", )
attrs = {
'class': 'table table-condensed table-striped table-hover'
}

9
apps/tournament/urls.py Normal file
View File

@ -0,0 +1,9 @@
from django.urls import path
from .views import TournamentListView
app_name = "tournament"
urlpatterns = [
path('list/', TournamentListView.as_view(), name="list"),
]

View File

@ -1,3 +1,24 @@
from django.shortcuts import render
from django.db.models import Q
from django.utils.translation import gettext_lazy as _
from django_tables2.views import SingleTableView
# Create your views here.
from member.models import TFJMUser
from .models import Tournament
from .tables import TournamentTable
class TournamentListView(SingleTableView):
model = Tournament
table_class = TournamentTable
extra_context = dict(title=_("Tournaments list"),)
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
team_users = TFJMUser.objects.filter(Q(team__isnull=False) | Q(role="admin") | Q(role="organizer"))
valid_team_users = team_users.filter(Q(team__validation_status="valid") | Q(role="admin") | Q(role="organizer"))
context["team_users_emails"] = [user.email for user in team_users]
context["valid_team_users_emails"] = [user.email for user in valid_team_users]
return context