diff --git a/apps/participation/forms.py b/apps/participation/forms.py index f80fefe..de77aba 100644 --- a/apps/participation/forms.py +++ b/apps/participation/forms.py @@ -61,7 +61,7 @@ class ParticipationForm(forms.ModelForm): class MotivationLetterForm(forms.ModelForm): def clean_file(self): - if "file" in self.files: + if "motivation_letter" in self.files: file = self.files["motivation_letter"] if file.size > 2e6: raise ValidationError(_("The uploaded file size must be under 2 Mo.")) diff --git a/apps/participation/management/commands/fix_matrix_channels.py b/apps/participation/management/commands/fix_matrix_channels.py index 4be6bb6..9213e9f 100644 --- a/apps/participation/management/commands/fix_matrix_channels.py +++ b/apps/participation/management/commands/fix_matrix_channels.py @@ -23,7 +23,10 @@ class Command(BaseCommand): else: # pragma: no cover if not os.path.isfile(".matrix_avatar"): avatar_uri = Matrix.get_avatar() - if not isinstance(avatar_uri, str): + if isinstance(avatar_uri, str): + with open(".matrix_avatar", "w") as f: + f.write(avatar_uri) + else: stat_file = os.stat("tfjm/static/logo.png") with open("tfjm/static/logo.png", "rb") as f: resp = Matrix.upload(f, filename="logo.png", content_type="image/png", diff --git a/apps/participation/views.py b/apps/participation/views.py index afafbc7..235441f 100644 --- a/apps/participation/views.py +++ b/apps/participation/views.py @@ -391,7 +391,7 @@ class TeamAuthorizationsView(LoginRequiredMixin, DetailView): _("Parental authorization of {participant}.{ext}") .format(participant=str(participant), ext=ext)) - if participant.health_sheet: + if isinstance(participant, StudentRegistration) and participant.health_sheet: mime_type = magic.from_file("media/" + participant.health_sheet.name) ext = mime_type.split("/")[1].replace("jpeg", "jpg") zf.write("media/" + participant.health_sheet.name, diff --git a/apps/registration/models.py b/apps/registration/models.py index 3e12fce..3a603f8 100644 --- a/apps/registration/models.py +++ b/apps/registration/models.py @@ -159,7 +159,13 @@ class ParticipantRegistration(Registration): @property def under_18(self): - return (timezone.now().date() - self.birth_date).days < 18 * 365.24 + important_date = timezone.now().date() + if self.team and self.team.participation.tournament: + important_date = self.team.participation.tournament.date_start + if self.team.participation.final: + from participation.models import Tournament + important_date = Tournament.final_tournament().date_start + return (important_date - self.birth_date).days < 18 * 365.24 @property def type(self): # pragma: no cover diff --git a/tfjm/matrix.py b/tfjm/matrix.py index 20732d6..3d7e48d 100644 --- a/tfjm/matrix.py +++ b/tfjm/matrix.py @@ -76,7 +76,7 @@ class Matrix: """ client = await cls._get_client() resp = await client.get_avatar() - return resp.avatar_url if resp.status_code == 200 else resp + return resp.avatar_url if hasattr(resp, "avatar_url") else resp @classmethod @async_to_sync diff --git a/tfjm/settings.py b/tfjm/settings.py index 76f5f9b..0b13ce4 100644 --- a/tfjm/settings.py +++ b/tfjm/settings.py @@ -56,6 +56,7 @@ INSTALLED_APPS = [ 'address', 'bootstrap_datepicker_plus', 'crispy_forms', + 'django_filters', 'django_tables2', 'haystack', 'logs',