Date: Wed, 10 Jan 2024 15:06:13 +0100
Subject: [PATCH 13/61] translated (td: fix errors and validations)
---
applications/forms/base.py | 16 ++--
applications/forms/volunteer.py | 155 ++++++++++++++++++-------------
applications/models/__init__.py | 1 +
applications/models/constants.py | 1 +
applications/models/volunteer.py | 42 ++++++++-
5 files changed, 141 insertions(+), 74 deletions(-)
diff --git a/applications/forms/base.py b/applications/forms/base.py
index 6d2641e3..21f717d4 100644
--- a/applications/forms/base.py
+++ b/applications/forms/base.py
@@ -99,12 +99,16 @@ def clean_other_diet(self):
raise forms.ValidationError("Please tell us your specific dietary requirements")
return data
- def clean_other_gender(self):
- data = self.cleaned_data['other_gender']
- gender = self.cleaned_data['gender']
- if gender == models.GENDER_OTHER and not data:
- raise forms.ValidationError("Please enter this field or select 'Prefer not to answer'")
- return data
+ #def clean_other_gender(self):
+ #print(self.cleaned_data)
+ # data = self.cleaned_data['other_gender']
+ #gender = self.cleaned_data['gender']
+ #print("data", data)
+ #print("gender", gender)
+ #if gender == models.GENDER_OTHER and not data:
+ #if not data:
+ # raise forms.ValidationError("Please enter this field or select 'Prefer not to answer'")
+ # return data
def clean_origin(self):
origin = self.cleaned_data['origin']
diff --git a/applications/forms/volunteer.py b/applications/forms/volunteer.py
index 6c7174fa..edbf5036 100644
--- a/applications/forms/volunteer.py
+++ b/applications/forms/volunteer.py
@@ -3,43 +3,54 @@
class VolunteerApplicationForm(_BaseApplicationForm):
+
+
+ diet = forms.ChoiceField(
+ required=True,
+ label='Restricciones alimenticias',
+ choices=models.DIETS_ES,
+ help_text="Estas son las diferentes opciones que tenemos. No podemos asegurar que la carne sea hallal."
+ )
+
first_timer = forms.BooleanField(
required=False, initial=False, widget=forms.HiddenInput
)
first_time_volunteer = forms.TypedChoiceField(
required=True,
- label="Is it your first time volunteering in %s?" % settings.HACKATHON_NAME,
+ label="¿Es tu primera vez haciendo voluntariado en %s?" % settings.HACKATHON_NAME,
coerce=lambda x: x == "True",
- choices=((True, "Yes"), (False, "No")),
+ choices=((True, "Sí"), (False, "No")),
widget=forms.RadioSelect,
)
which_hack = forms.MultipleChoiceField(
- required=False,
- label="Which %s editions have you volunteered in?" % settings.HACKATHON_NAME,
+ required=True,
+ label="¿En qué ediciones de %s has participado como voluntari@?" % settings.HACKATHON_NAME,
widget=forms.CheckboxSelectMultiple,
choices=models.PREVIOUS_HACKS,
)
under_age = forms.TypedChoiceField(
required=True,
- label="Are you over the age of 18 years old?",
+ label="¿Tienes o tendrás la mayoría de edad antes de la fecha del evento?",
initial=False,
coerce=lambda x: x == "True",
- choices=((False, "No"), (True, "Yes")),
+ choices=((False, "No"), (True, "Sí")),
widget=forms.RadioSelect,
)
night_shifts = forms.TypedChoiceField(
required=False,
- label="Would you be okay with doing night shifts?",
+ label="¿Estarías de acuerdo en irte a dormir más tarde de las 00h?",
coerce=lambda x: x == "True",
- choices=((False, "No"), (True, "Yes"), (None, "Maybe")),
+ choices=((False, "No"), (True, "Sí"), (None, "Puede ser")),
+ help_text="No exigimos a nadie quedarse hasta ninguna hora en particular",
widget=forms.RadioSelect,
)
- lennyface = forms.TypedChoiceField(
+ lennyface = forms.CharField(initial="NA", widget=forms.HiddenInput(), required=False)
+
+ hear_about_us = forms.TypedChoiceField(
required=True,
- label="Will you be in Barcelona from April to May?",
+ label="¿Cómo nos has conocido?",
coerce=lambda x: x == "True",
- choices=((False, "Doubtful"), (True, "Yes")),
- help_text="The event is in May, however, we kindly request your presence at the preceding meetings in person!",
+ choices=(("Posters", "Posters"), ("Redes Sociales", "Redes Sociales"), ("Mesas en el bar de la FIB","Mesas en el bar de la FIB"),("Whatsapp, amigos u otras personas","Whatsapp, amigos u otras personas"), ("Web", "Web"), ("Otros", "Otros")),
widget=forms.RadioSelect,
)
university = forms.CharField(
@@ -47,36 +58,53 @@ class VolunteerApplicationForm(_BaseApplicationForm):
)
degree = forms.CharField(initial="NA", widget=forms.HiddenInput(), required=False)
+ terms_and_conditions = forms.BooleanField(
+ required=False,
+ label='He leído, entensdido y acepto los %s '
+ 'Términos y Condiciones '
+ 'y la %s Política de Privacidad y Cookies'
+ '. '
+ '*' % (settings.HACKATHON_NAME, settings.HACKATHON_NAME)
+ )
+
+ email_subscribe = forms.BooleanField(required=False, label='Suscríbete a nuestra lista de marketing para informarte sobre nuestros próximos eventos.')
+
+ diet_notice = forms.BooleanField(
+ required=False,
+ label='Autorizo a "Hackers en UPC" a utilizar mi información sobre alergias e intolerancias alimentarias únicamente para gestionar el servicio de catering. *'
+ )
+
bootstrap_field_info = {
- "Personal Info": {
+ "Información Personal": {
"fields": [
{"name": "pronouns", "space": 12},
{"name": "gender", "space": 12},
- {"name": "under_age", "space": 12},
- {"name": "lennyface", "space": 12},
{"name": "other_gender", "space": 12},
+ {"name": "under_age", "space": 12},
+ {"name": "hear_about_us", "space": 12},
{"name": "origin", "space": 12},
],
- "description": "Hey there, we need some information before we start :)",
+ "description": "Hola voluntari@, necesitamos un poco de información antes de empezar :)",
},
- "Volunteering": {
+ "Voluntariado": {
"fields": [
{"name": "first_time_volunteer", "space": 12},
{"name": "which_hack", "space": 12},
- {"name": "english_level", "space": 12},
+ {"name": "languages", "space": 12},
{"name": "attendance", "space": 12},
{"name": "volunteer_motivation", "space": 12},
],
},
- "Some other questions": {
+ "Otras preguntas": {
"fields": [
{"name": "friends", "space": 12},
{"name": "night_shifts", "space": 12},
{"name": "tshirt_size", "space": 12},
],
- "description": "Don’t panic! There are just a few more questions ",
+ "description": "¡No te asustes! Solo quedan algunas preguntas más 🤯",
},
- "Personal Interests": {
+ "Intereses Personales": {
"fields": [
{"name": "fav_movie", "space": 12},
{"name": "quality", "space": 12},
@@ -88,7 +116,7 @@ class VolunteerApplicationForm(_BaseApplicationForm):
{"name": "university", "space": 12},
{"name": "degree", "space": 12},
],
- "description": "We want to get to know you!",
+ "description": "¡Queremos conocerte!",
},
}
@@ -100,8 +128,6 @@ def clean(self):
return super(VolunteerApplicationForm, self).clean()
- def volunteer(self):
- return True
def clean_reimb_amount(self):
data = self.cleaned_data["reimb_amount"]
@@ -129,10 +155,11 @@ def clean_reimb(self):
def get_bootstrap_field_info(self):
fields = super().get_bootstrap_field_info()
discord = getattr(settings, "DISCORD_HACKATHON", False)
- other_fields = fields["Some other questions"]["fields"]
+ other_fields = fields["Otras preguntas"]["fields"]
polices_fields = [
{"name": "terms_and_conditions", "space": 12},
{"name": "email_subscribe", "space": 12},
+ {"name": "diet_notice", "space": 12}
]
if not discord:
other_fields.extend(
@@ -145,19 +172,18 @@ def get_bootstrap_field_info(self):
# Fields that we only need the first time the hacker fills the application
# https://stackoverflow.com/questions/9704067/test-if-django-modelform-has-instance
if not self.instance.pk:
- fields["HackUPC Policies"] = {
+ fields["Políticas HackUPC"] = {
"fields": polices_fields,
"description": 'We, Hackers at UPC, '
- "process your information to organize an awesome hackathon. It "
- "will also include images and videos of yourself during the event. "
- "Your data will be used for admissions mainly. We may also reach "
- "out to you (sending you an e-mail) about other events that we are "
- "organizing and that are of a similar nature to those previously "
- "requested by you. For more information on the processing of your "
- "personal data and on how to exercise your rights of access, "
- "rectification, suppression, limitation, portability and opposition "
- "please visit our Privacy and Cookies Policy.
",
+ 'margin-bottom: 1em;line-height: 1.25em;">Nosotros, Hackers at UPC, '
+ "procesamos tu información para organizar la mejor hackathon posible. "
+ "También incluirá imágenes y videos tuyos durante el evento. "
+ "Tus datos se utilizarán principalmente para admisiones. También podríamos contactarte "
+ "(enviándote un correo electrónico) sobre otros eventos que estamos organizando y"
+ "que son de una naturaleza similar a los que previamente solicitaste. Para más"
+ "información sobre el procesamiento de tus datos personales y sobre cómo ejercer tus"
+ "derechos de acceso, rectificación, supresión, limitación, portabilidad y oposición, por"
+ "favor visita nuestra Política de Privacidad y Cookies.