mirror of
https://gitlab.com/animath/si/plateforme.git
synced 2024-12-25 06:22:22 +00:00
Limit upload file size
This commit is contained in:
parent
150f555d9d
commit
f01537719b
@ -3,6 +3,7 @@ import re
|
||||
|
||||
from django import forms
|
||||
from django.db.models import Q
|
||||
from django.template.defaultfilters import filesizeformat
|
||||
from django.utils import timezone
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
@ -139,9 +140,23 @@ class SolutionForm(forms.ModelForm):
|
||||
|
||||
problem = forms.ChoiceField(
|
||||
label=_("Problem"),
|
||||
choices=[(str(i), _("Problem #{problem:d}").format(problem=i)) for i in range(1, 9)],
|
||||
choices=[(str(i), _("Problem #%(problem)d") % {"problem": i}) for i in range(1, 9)],
|
||||
)
|
||||
|
||||
def clean_file(self):
|
||||
content = self.cleaned_data['file']
|
||||
content_type = content.content_type
|
||||
if content_type in ["application/pdf"]:
|
||||
if content.size > 5 * 2 ** 20:
|
||||
raise forms.ValidationError(
|
||||
_('Please keep filesize under %(max_size)s. Current filesize %(current_size)s') % {
|
||||
"max_size": filesizeformat(2 * 2 ** 20),
|
||||
"current_size": filesizeformat(content.size)
|
||||
})
|
||||
else:
|
||||
raise forms.ValidationError(_('The file should be a PDF file.'))
|
||||
return content
|
||||
|
||||
class Meta:
|
||||
model = Solution
|
||||
fields = ('file', 'problem',)
|
||||
@ -152,6 +167,20 @@ class SynthesisForm(forms.ModelForm):
|
||||
Form to upload a synthesis.
|
||||
"""
|
||||
|
||||
def clean_file(self):
|
||||
content = self.cleaned_data['file']
|
||||
content_type = content.content_type
|
||||
if content_type in ["application/pdf"]:
|
||||
if content.size > 5 * 2 ** 20:
|
||||
raise forms.ValidationError(
|
||||
_('Please keep filesize under %(max_size)s. Current filesize %(current_size)s') % {
|
||||
"max_size": filesizeformat(2 * 2 ** 20),
|
||||
"current_size": filesizeformat(content.size)
|
||||
})
|
||||
else:
|
||||
raise forms.ValidationError(_('The file should be a PDF file.'))
|
||||
return content
|
||||
|
||||
class Meta:
|
||||
model = Synthesis
|
||||
fields = ('file', 'source', 'round',)
|
||||
|
@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: TFJM2\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2020-05-11 14:17+0200\n"
|
||||
"POT-Creation-Date: 2020-05-12 18:25+0200\n"
|
||||
"PO-Revision-Date: 2020-04-29 02:30+0000\n"
|
||||
"Last-Translator: Yohann D'ANELLO <yohann.danello@animath.fr>\n"
|
||||
"Language-Team: fr <LL@li.org>\n"
|
||||
@ -233,7 +233,8 @@ msgstr "solutions"
|
||||
#: apps/member/models.py:291
|
||||
#, python-brace-format
|
||||
msgid "Solution of team {trigram} for problem {problem} for final"
|
||||
msgstr "Solution de l'équipe {trigram} pour le problème {problem} pour la finale"
|
||||
msgstr ""
|
||||
"Solution de l'équipe {trigram} pour le problème {problem} pour la finale"
|
||||
|
||||
#: apps/member/models.py:294
|
||||
#, python-brace-format
|
||||
@ -330,7 +331,7 @@ msgstr "Tous les profils"
|
||||
msgid "Orphaned profiles"
|
||||
msgstr "Profils orphelins"
|
||||
|
||||
#: apps/member/views.py:244 apps/tournament/forms.py:22 templates/base.html:83
|
||||
#: apps/member/views.py:244 apps/tournament/forms.py:23 templates/base.html:83
|
||||
msgid "Organizers"
|
||||
msgstr "Organisateurs"
|
||||
|
||||
@ -341,85 +342,96 @@ msgstr "Organisateurs"
|
||||
msgid "tournament"
|
||||
msgstr "tournoi"
|
||||
|
||||
#: apps/tournament/forms.py:30
|
||||
#: apps/tournament/forms.py:31
|
||||
msgid "This tournament already exists."
|
||||
msgstr "Ce tournoi existe déjà."
|
||||
|
||||
#: apps/tournament/forms.py:32
|
||||
#: apps/tournament/forms.py:33
|
||||
msgid "The final tournament was already defined."
|
||||
msgstr "Le tournoi de la finale est déjà défini."
|
||||
|
||||
#: apps/tournament/forms.py:64
|
||||
#: apps/tournament/forms.py:65
|
||||
msgid "This organizer already exist."
|
||||
msgstr "Cet organisateur existe déjà."
|
||||
|
||||
#: apps/tournament/forms.py:93
|
||||
#: apps/tournament/forms.py:94
|
||||
msgid "The trigram must be composed of three upcase letters."
|
||||
msgstr "Le trigramme doit être composé de trois lettres en majuscules."
|
||||
|
||||
#: apps/tournament/forms.py:97
|
||||
#: apps/tournament/forms.py:98
|
||||
msgid "This trigram is already used."
|
||||
msgstr "Ce trigramme est déjà utilisé."
|
||||
|
||||
#: apps/tournament/forms.py:100
|
||||
#: apps/tournament/forms.py:101
|
||||
msgid "This name is already used."
|
||||
msgstr "Ce nom est déjà utilisé."
|
||||
|
||||
#: apps/tournament/forms.py:103
|
||||
#: apps/tournament/forms.py:104
|
||||
msgid "This tournament is already closed."
|
||||
msgstr "Ce tournoi est déjà fermé."
|
||||
|
||||
#: apps/tournament/forms.py:114
|
||||
#: apps/tournament/forms.py:115
|
||||
msgid "Access code"
|
||||
msgstr "Code d'accès"
|
||||
|
||||
#: apps/tournament/forms.py:122
|
||||
#: apps/tournament/forms.py:123
|
||||
msgid "The access code must be composed of 6 alphanumeric characters."
|
||||
msgstr "Le code d'accès doit être composé de 6 caractères alphanumériques."
|
||||
|
||||
#: apps/tournament/forms.py:126
|
||||
#: apps/tournament/forms.py:127
|
||||
msgid "This access code is invalid."
|
||||
msgstr "Ce code d'accès est invalide."
|
||||
|
||||
#: apps/tournament/forms.py:129
|
||||
#: apps/tournament/forms.py:130
|
||||
msgid "The team is already validated."
|
||||
msgstr "L'équipe est déjà validée."
|
||||
|
||||
#: apps/tournament/forms.py:141
|
||||
#: apps/tournament/forms.py:142
|
||||
msgid "Problem"
|
||||
msgstr "Problème"
|
||||
|
||||
#: apps/tournament/forms.py:142
|
||||
#, python-brace-format
|
||||
msgid "Problem #{problem:d}"
|
||||
msgstr "Problème n°{problem:d}"
|
||||
#: apps/tournament/forms.py:143
|
||||
#, python-format
|
||||
msgid "Problem #%(problem)d"
|
||||
msgstr "Problème n°%(problem)d"
|
||||
|
||||
#: apps/tournament/forms.py:168 apps/tournament/forms.py:181
|
||||
#: apps/tournament/forms.py:194
|
||||
#: apps/tournament/forms.py:152 apps/tournament/forms.py:176
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Please keep filesize under %(max_size)s. Current filesize %(current_size)s"
|
||||
msgstr ""
|
||||
"Merci de ne pas dépasser les %(max_size)s. Le fichier envoyé pèse %(current_size)s."
|
||||
|
||||
#: apps/tournament/forms.py:157 apps/tournament/forms.py:181
|
||||
msgid "The file should be a PDF file."
|
||||
msgstr "Ce fichier doit être au format PDF."
|
||||
|
||||
#: apps/tournament/forms.py:197 apps/tournament/forms.py:210
|
||||
#: apps/tournament/forms.py:223
|
||||
msgid "Choose a team..."
|
||||
msgstr "Choisir une équipe ..."
|
||||
|
||||
#: apps/tournament/forms.py:169
|
||||
#: apps/tournament/forms.py:198
|
||||
msgid "Team 1"
|
||||
msgstr "Équipe 1"
|
||||
|
||||
#: apps/tournament/forms.py:176
|
||||
#: apps/tournament/forms.py:205
|
||||
msgid "Problem defended by team 1"
|
||||
msgstr "Problème défendu par l'équipe 1"
|
||||
|
||||
#: apps/tournament/forms.py:182
|
||||
#: apps/tournament/forms.py:211
|
||||
msgid "Team 2"
|
||||
msgstr "Équipe 2"
|
||||
|
||||
#: apps/tournament/forms.py:189
|
||||
#: apps/tournament/forms.py:218
|
||||
msgid "Problem defended by team 2"
|
||||
msgstr "Problème défendu par l'équipe 2"
|
||||
|
||||
#: apps/tournament/forms.py:195
|
||||
#: apps/tournament/forms.py:224
|
||||
msgid "Team 3"
|
||||
msgstr "Équipe 3"
|
||||
|
||||
#: apps/tournament/forms.py:202
|
||||
#: apps/tournament/forms.py:231
|
||||
msgid "Problem defended by team 3"
|
||||
msgstr "Problème défendu par l'équipe 3"
|
||||
|
||||
@ -437,8 +449,8 @@ msgid ""
|
||||
"List of all organizers that can see and manipulate data of the tournament "
|
||||
"and the teams."
|
||||
msgstr ""
|
||||
"Liste des organisateurs qui peuvent manipuler les données du tournoi et "
|
||||
"des équipes."
|
||||
"Liste des organisateurs qui peuvent manipuler les données du tournoi et des "
|
||||
"équipes."
|
||||
|
||||
#: apps/tournament/models.py:29 templates/tournament/tournament_detail.html:15
|
||||
msgid "size"
|
||||
@ -509,8 +521,8 @@ msgid ""
|
||||
"The trigram should be composed of 3 capitalize letters, that is a funny "
|
||||
"acronym for the team."
|
||||
msgstr ""
|
||||
"Le trigramme doit être composé de trois lettres en majuscule, qui doit "
|
||||
"être un acronyme amusant représentant l'équipe."
|
||||
"Le trigramme doit être composé de trois lettres en majuscule, qui doit être "
|
||||
"un acronyme amusant représentant l'équipe."
|
||||
|
||||
#: apps/tournament/models.py:183
|
||||
msgid "The tournament where the team is registered."
|
||||
|
Loading…
Reference in New Issue
Block a user