Store the BBB link in the Pool model

This commit is contained in:
Yohann D'ANELLO 2021-01-21 17:55:20 +01:00
parent 56ad352e64
commit 35042f077f
Signed by: ynerant
GPG Key ID: 3A75C55819C8CF85
5 changed files with 87 additions and 50 deletions

View File

@ -143,7 +143,7 @@ class SolutionForm(forms.ModelForm):
class PoolForm(forms.ModelForm): class PoolForm(forms.ModelForm):
class Meta: class Meta:
model = Pool model = Pool
fields = ('tournament', 'round', 'juries',) fields = ('tournament', 'round', 'bbb_code', 'juries',)
widgets = { widgets = {
"juries": forms.CheckboxSelectMultiple, "juries": forms.CheckboxSelectMultiple,
} }

View File

@ -321,7 +321,7 @@ class Command(BaseCommand):
Matrix.set_room_avatar(f"#poule-{slug}-{pool.id}:tfjm.org", avatar_uri) Matrix.set_room_avatar(f"#poule-{slug}-{pool.id}:tfjm.org", avatar_uri)
Matrix.set_room_avatar(f"#poule-{slug}-{pool.id}-jurys:tfjm.org", avatar_uri) Matrix.set_room_avatar(f"#poule-{slug}-{pool.id}-jurys:tfjm.org", avatar_uri)
url_params = urlencode(dict(url="https://visio.animath.live/b/XXX-XXX-XXX", url_params = urlencode(dict(url=f"https://visio.animath.live/b/{pool.bbb_code}",
isAudioConf='false', displayName='$matrix_display_name', isAudioConf='false', displayName='$matrix_display_name',
avatarUrl='$matrix_avatar_url', userId='$matrix_user_id')) \ avatarUrl='$matrix_avatar_url', userId='$matrix_user_id')) \
.replace("%24", "$") .replace("%24", "$")

View File

@ -0,0 +1,19 @@
# Generated by Django 3.0.11 on 2021-01-21 16:47
import django.core.validators
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('participation', '0011_note'),
]
operations = [
migrations.AddField(
model_name='pool',
name='bbb_code',
field=models.CharField(blank=True, default='', help_text='The code of the form xxx-xxx-xxx at the end of the BBB link.', max_length=11, validators=[django.core.validators.RegexValidator('[a-z]{3}-[a-z]{3}-[a-z]{3}')], verbose_name='BigBlueButton code'),
),
]

View File

@ -344,6 +344,15 @@ class Pool(models.Model):
verbose_name=_("juries"), verbose_name=_("juries"),
) )
bbb_code = models.CharField(
max_length=11,
blank=True,
default="",
verbose_name=_("BigBlueButton code"),
help_text=_("The code of the form xxx-xxx-xxx at the end of the BBB link."),
validators=[RegexValidator("[a-z]{3}-[a-z]{3}-[a-z]{3}")],
)
@property @property
def solutions(self): def solutions(self):
return Solution.objects.filter(participation__in=self.participations, final_solution=self.tournament.final) return Solution.objects.filter(participation__in=self.participations, final_solution=self.tournament.final)

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: TFJM\n" "Project-Id-Version: TFJM\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-01-19 00:29+0100\n" "POT-Creation-Date: 2021-01-21 17:46+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Yohann D'ANELLO <yohann.danello@animath.fr>\n" "Last-Translator: Yohann D'ANELLO <yohann.danello@animath.fr>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -120,26 +120,32 @@ msgstr "Je m'engage à participer à l'intégralité du TFJM²."
msgid "Message to address to the team:" msgid "Message to address to the team:"
msgstr "Message à adresser à l'équipe :" msgstr "Message à adresser à l'équipe :"
#: apps/participation/forms.py:123 #: apps/participation/forms.py:124
msgid "The uploaded file size must be under 5 Mo." msgid "The uploaded file size must be under 5 Mo."
msgstr "Le fichier envoyé doit peser moins de 5 Mo." msgstr "Le fichier envoyé doit peser moins de 5 Mo."
#: apps/participation/forms.py:125 #: apps/participation/forms.py:126 apps/participation/forms.py:189
msgid "The uploaded file must be a PDF file." msgid "The uploaded file must be a PDF file."
msgstr "Le fichier envoyé doit être au format PDF." msgstr "Le fichier envoyé doit être au format PDF."
#: apps/participation/forms.py:129 #: apps/participation/forms.py:130
msgid "The PDF file must not have more than 30 pages." msgid "The PDF file must not have more than 30 pages."
msgstr "Le fichier PDF ne doit pas avoir plus de 30 pages." msgstr "Le fichier PDF ne doit pas avoir plus de 30 pages."
#: apps/participation/forms.py:169 #: apps/participation/forms.py:170
msgid "The defender, the opponent and the reporter must be different." msgid "The defender, the opponent and the reporter must be different."
msgstr "Le défenseur, l'opposant et le rapporteur doivent être différents." msgstr "Le défenseur, l'opposant et le rapporteur doivent être différents."
#: apps/participation/forms.py:173 #: apps/participation/forms.py:174
msgid "This defender did not work on this problem." msgid "This defender did not work on this problem."
msgstr "Ce défenseur ne travaille pas sur ce problème." msgstr "Ce défenseur ne travaille pas sur ce problème."
#: apps/participation/forms.py:187 apps/registration/forms.py:116
#: apps/registration/forms.py:138 apps/registration/forms.py:160
#: apps/registration/forms.py:214
msgid "The uploaded file size must be under 2 Mo."
msgstr "Le fichier envoyé doit peser moins de 2 Mo."
#: apps/participation/models.py:30 apps/participation/models.py:121 #: apps/participation/models.py:30 apps/participation/models.py:121
#: apps/participation/tables.py:17 apps/participation/tables.py:34 #: apps/participation/tables.py:17 apps/participation/tables.py:34
msgid "name" msgid "name"
@ -179,7 +185,7 @@ msgstr "début"
msgid "end" msgid "end"
msgstr "fin" msgstr "fin"
#: apps/participation/models.py:136 apps/participation/models.py:377 #: apps/participation/models.py:136 apps/participation/models.py:386
#: apps/participation/templates/participation/tournament_detail.html:18 #: apps/participation/templates/participation/tournament_detail.html:18
msgid "place" msgid "place"
msgstr "lieu" msgstr "lieu"
@ -257,8 +263,8 @@ msgstr "L'équipe est sélectionnée pour la finale."
msgid "Participation of the team {name} ({trigram})" msgid "Participation of the team {name} ({trigram})"
msgstr "Participation de l'équipe {name} ({trigram})" msgstr "Participation de l'équipe {name} ({trigram})"
#: apps/participation/models.py:315 apps/participation/models.py:499 #: apps/participation/models.py:315 apps/participation/models.py:508
#: apps/participation/models.py:537 #: apps/participation/models.py:546
msgid "participation" msgid "participation"
msgstr "participation" msgstr "participation"
@ -279,140 +285,148 @@ msgstr "Tour {round}"
msgid "juries" msgid "juries"
msgstr "jurys" msgstr "jurys"
#: apps/participation/models.py:358 #: apps/participation/models.py:352
msgid "BigBlueButton code"
msgstr "Code BigBlueButton"
#: apps/participation/models.py:353
msgid "The code of the form xxx-xxx-xxx at the end of the BBB link."
msgstr "Le code de la forme xxx-xxx-xxx à la fin du lien BBB."
#: apps/participation/models.py:367
#, python-brace-format #, python-brace-format
msgid "Pool {round} for tournament {tournament} with teams {teams}" msgid "Pool {round} for tournament {tournament} with teams {teams}"
msgstr "Poule {round} du tournoi {tournament} avec les équipes {teams}" msgstr "Poule {round} du tournoi {tournament} avec les équipes {teams}"
#: apps/participation/models.py:364 apps/participation/models.py:372 #: apps/participation/models.py:373 apps/participation/models.py:381
msgid "pool" msgid "pool"
msgstr "poule" msgstr "poule"
#: apps/participation/models.py:365 #: apps/participation/models.py:374
msgid "pools" msgid "pools"
msgstr "poules" msgstr "poules"
#: apps/participation/models.py:379 #: apps/participation/models.py:388
msgid "Where the solution is presented?" msgid "Where the solution is presented?"
msgstr "Où est-ce que les solutions sont défendues ?" msgstr "Où est-ce que les solutions sont défendues ?"
#: apps/participation/models.py:384 #: apps/participation/models.py:393
msgid "defended solution" msgid "defended solution"
msgstr "solution défendue" msgstr "solution défendue"
#: apps/participation/models.py:386 apps/participation/models.py:506 #: apps/participation/models.py:395 apps/participation/models.py:515
#, python-brace-format #, python-brace-format
msgid "Problem #{problem}" msgid "Problem #{problem}"
msgstr "Problème n°{problem}" msgstr "Problème n°{problem}"
#: apps/participation/models.py:393 apps/participation/tables.py:105 #: apps/participation/models.py:402 apps/participation/tables.py:105
msgid "defender" msgid "defender"
msgstr "défenseur" msgstr "défenseur"
#: apps/participation/models.py:400 apps/participation/models.py:549 #: apps/participation/models.py:409 apps/participation/models.py:558
msgid "opponent" msgid "opponent"
msgstr "opposant" msgstr "opposant"
#: apps/participation/models.py:407 apps/participation/models.py:550 #: apps/participation/models.py:416 apps/participation/models.py:559
msgid "reporter" msgid "reporter"
msgstr "rapporteur" msgstr "rapporteur"
#: apps/participation/models.py:467 apps/participation/models.py:470 #: apps/participation/models.py:476 apps/participation/models.py:479
#: apps/participation/models.py:473 #: apps/participation/models.py:482
#, python-brace-format #, python-brace-format
msgid "Team {trigram} is not registered in the pool." msgid "Team {trigram} is not registered in the pool."
msgstr "L'équipe {trigram} n'est pas inscrite dans la poule." msgstr "L'équipe {trigram} n'est pas inscrite dans la poule."
#: apps/participation/models.py:478 #: apps/participation/models.py:487
#, python-brace-format #, python-brace-format
msgid "Passage of {defender} for problem {problem}" msgid "Passage of {defender} for problem {problem}"
msgstr "Passage de {defender} pour le problème {problem}" msgstr "Passage de {defender} pour le problème {problem}"
#: apps/participation/models.py:482 apps/participation/models.py:544 #: apps/participation/models.py:491 apps/participation/models.py:553
#: apps/participation/models.py:582 #: apps/participation/models.py:591
msgid "passage" msgid "passage"
msgstr "passage" msgstr "passage"
#: apps/participation/models.py:483 #: apps/participation/models.py:492
msgid "passages" msgid "passages"
msgstr "passages" msgstr "passages"
#: apps/participation/models.py:504 #: apps/participation/models.py:513
msgid "problem" msgid "problem"
msgstr "numéro de problème" msgstr "numéro de problème"
#: apps/participation/models.py:511 #: apps/participation/models.py:520
msgid "solution for the final tournament" msgid "solution for the final tournament"
msgstr "solution pour la finale" msgstr "solution pour la finale"
#: apps/participation/models.py:516 apps/participation/models.py:555 #: apps/participation/models.py:525 apps/participation/models.py:564
msgid "file" msgid "file"
msgstr "fichier" msgstr "fichier"
#: apps/participation/models.py:524 #: apps/participation/models.py:533
#, python-brace-format #, python-brace-format
msgid "Solution of team {team} for problem {problem}" msgid "Solution of team {team} for problem {problem}"
msgstr "Solution de l'équipe {team} pour le problème {problem}" msgstr "Solution de l'équipe {team} pour le problème {problem}"
#: apps/participation/models.py:528 #: apps/participation/models.py:537
msgid "solution" msgid "solution"
msgstr "solution" msgstr "solution"
#: apps/participation/models.py:529 #: apps/participation/models.py:538
msgid "solutions" msgid "solutions"
msgstr "solutions" msgstr "solutions"
#: apps/participation/models.py:563 #: apps/participation/models.py:572
#, python-brace-format #, python-brace-format
msgid "Synthesis for the {type} of the {passage}" msgid "Synthesis for the {type} of the {passage}"
msgstr "Synthèse pour {type} du {passage}" msgstr "Synthèse pour {type} du {passage}"
#: apps/participation/models.py:566 #: apps/participation/models.py:575
msgid "synthesis" msgid "synthesis"
msgstr "note de synthèse" msgstr "note de synthèse"
#: apps/participation/models.py:567 #: apps/participation/models.py:576
msgid "syntheses" msgid "syntheses"
msgstr "notes de synthèse" msgstr "notes de synthèse"
#: apps/participation/models.py:575 #: apps/participation/models.py:584
msgid "jury" msgid "jury"
msgstr "jury" msgstr "jury"
#: apps/participation/models.py:587 #: apps/participation/models.py:596
msgid "defender writing note" msgid "defender writing note"
msgstr "note d'écrit du défenseur" msgstr "note d'écrit du défenseur"
#: apps/participation/models.py:593 #: apps/participation/models.py:602
msgid "defender oral note" msgid "defender oral note"
msgstr "note d'oral du défenseur" msgstr "note d'oral du défenseur"
#: apps/participation/models.py:599 #: apps/participation/models.py:608
msgid "opponent writing note" msgid "opponent writing note"
msgstr "note d'écrit de l'opposant" msgstr "note d'écrit de l'opposant"
#: apps/participation/models.py:605 #: apps/participation/models.py:614
msgid "opponent oral note" msgid "opponent oral note"
msgstr "note d'oral de l'opposant" msgstr "note d'oral de l'opposant"
#: apps/participation/models.py:611 #: apps/participation/models.py:620
msgid "reporter writing note" msgid "reporter writing note"
msgstr "not d'écrit du rapporteur" msgstr "not d'écrit du rapporteur"
#: apps/participation/models.py:617 #: apps/participation/models.py:626
msgid "reporter oral note" msgid "reporter oral note"
msgstr "note d'oral du rapporteur" msgstr "note d'oral du rapporteur"
#: apps/participation/models.py:626 #: apps/participation/models.py:635
#, python-brace-format #, python-brace-format
msgid "Notes of {jury} for {passage}" msgid "Notes of {jury} for {passage}"
msgstr "Notes de {jury} pour le {passage}" msgstr "Notes de {jury} pour le {passage}"
#: apps/participation/models.py:633 #: apps/participation/models.py:642
msgid "note" msgid "note"
msgstr "note" msgstr "note"
#: apps/participation/models.py:634 #: apps/participation/models.py:643
msgid "notes" msgid "notes"
msgstr "notes" msgstr "notes"
@ -1017,11 +1031,6 @@ msgstr "bénévole"
msgid "admin" msgid "admin"
msgstr "admin" msgstr "admin"
#: apps/registration/forms.py:116 apps/registration/forms.py:138
#: apps/registration/forms.py:160 apps/registration/forms.py:214
msgid "The uploaded file size must be under 2 Mo."
msgstr "Le fichier envoyé doit peser moins de 2 Mo."
#: apps/registration/forms.py:118 apps/registration/forms.py:140 #: apps/registration/forms.py:118 apps/registration/forms.py:140
#: apps/registration/forms.py:162 apps/registration/forms.py:216 #: apps/registration/forms.py:162 apps/registration/forms.py:216
msgid "The uploaded file must be a PDF, PNG of JPEG file." msgid "The uploaded file must be a PDF, PNG of JPEG file."