1
0
mirror of https://gitlab.crans.org/bde/nk20 synced 2025-08-30 00:21:17 +02:00

Compare commits

..

1 Commits

Author SHA1 Message Date
Ehouarn
55be3c9836 Answers to survey 2025-08-29 17:13:52 +02:00
12 changed files with 270 additions and 408 deletions

View File

@@ -32,7 +32,7 @@ class ActivityForm(forms.ModelForm):
def clean_organizer(self):
organizer = self.cleaned_data['organizer']
if not organizer.note.is_active:
self.add_error('organizer', _('The note of this club is inactive.'))
self.add_error('organiser', _('The note of this club is inactive.'))
return organizer
def clean_date_end(self):

View File

@@ -10,7 +10,6 @@ from django.contrib.auth.forms import AuthenticationForm
from django.contrib.auth.models import User
from django.db import transaction
from django.forms import CheckboxSelectMultiple
from phonenumber_field.formfields import PhoneNumberField
from django.utils import timezone
from django.utils.translation import gettext_lazy as _
from note.models import NoteSpecial, Alias
@@ -46,11 +45,6 @@ class ProfileForm(forms.ModelForm):
A form for the extras field provided by the :model:`member.Profile` model.
"""
# Remove widget=forms.HiddenInput() if you want to use report frequency.
phone_number = PhoneNumberField(
widget=forms.TextInput(attrs={"type": "tel", "class": "form-control"}),
required=False
)
report_frequency = forms.IntegerField(required=False, initial=0, label=_("Report frequency"))
last_report = forms.DateTimeField(required=False, disabled=True, label=_("Last report date"))
@@ -78,12 +72,7 @@ class ProfileForm(forms.ModelForm):
if not self.instance.section or (("department" in self.changed_data
or "promotion" in self.changed_data) and "section" not in self.changed_data):
self.instance.section = self.instance.section_generated
instance = super().save(commit=False)
if instance.phone_number:
instance.phone_number = instance.phone_number.as_e164
if commit:
instance.save()
return instance
return super().save(commit)
class Meta:
model = Profile

View File

@@ -10,7 +10,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
{{ title }}
</h3>
<div class="card-body">
<form method="post" id="profile-form">
<form method="post">
{% csrf_token %}
{{ form | crispy }}
{{ profile_form | crispy }}
@@ -20,46 +20,4 @@ SPDX-License-Identifier: GPL-3.0-or-later
</form>
</div>
</div>
{% endblock %}
{% block extrajavascript %}
<!-- intl-tel-input CSS/JS -->
<script>
(() => {
const input = document.querySelector("input[name='phone_number']");
const form = document.querySelector("#profile-form");
if (!input || !form) {
console.error("Input phone_number ou form introuvable.");
}
const iti = window.intlTelInput(input, {
initialCountry: "auto",
nationalMode: false,
autoPlaceholder: "off",
geoIpLookup: callback => {
fetch("https://ipapi.co/json")
.then(res => res.json())
.then(data => callback(data.country_code))
.catch(() => callback("fr"));
},
loadUtils: () => import("https://cdn.jsdelivr.net/npm/intl-tel-input@25.5.2/build/js/utils.js"),
});
form.addEventListener("submit", function(e){
if (!input.value.trim()) {
return;
}
const number = iti.getNumber(intlTelInput.utils.numberFormat.E164);
if (number) {
input.value = number;
form.submit();
} else {
e.preventDefault();
input.focus();
}
});
})();
</script>
{% endblock %}

View File

@@ -69,7 +69,7 @@ class WEIRegistrationForm(forms.ModelForm):
class WEIChooseBusForm(forms.Form):
bus = forms.ModelMultipleChoiceField(
queryset=Bus.objects,
label=_("Bus"),
label=_("bus"),
help_text=_("This choice is not definitive. The WEI organizers are free to attribute for you a bus and a team,"
+ " in particular if you are a free eletron."),
widget=CheckboxSelectMultiple(),

View File

@@ -27,41 +27,41 @@ WORDS = {
"""Sur une échelle allant de 0 (= 0 alcool ou très peu) à 5 (= la fontaine de jouvence alcoolique),
quel niveau de consommation dalcool souhaiterais-tu ?""",
{
42: "",
47: "",
48: "",
45: "",
44: "",
46: "",
43: "",
49: ""
42: 4,
47: 1,
48: 3,
45: 3.5,
44: 4,
46: 5,
43: 3,
49: 3
}
],
"voie_post_bac": [
"""Si la DA du bus de ton choix correspondait à une voie post-bac, laquelle serait-elle ?""",
{
42: "",
47: "",
48: "",
45: "",
44: "",
46: "",
43: "",
49: ""
42: "Double licence cuisine/arts du cirque option burger",
47: "BTS Exploration de donjon",
48: "Ecole des stars en herbe",
45: "Déscolarisation précoce",
44: "Rattrapage pour excès de kiff",
46: "Double cursus STAPS / Licence dhistoire",
43: "Recherche active dun sugar daddy/dun sugar mommy",
49: "Licence de musicologie"
}
],
"boite": [
"""Tu es seul·e sur une île déserte et devant toi il y a une sombre boîte de taille raisonnable.
Quy a-t-il à lintérieur ?""",
{
42: "",
47: "",
48: "",
42: "Un burgouzz de valouzz",
47: "Un ocarina (pour me téléporter hors de ce bourbier)",
48: "Des paillettes, un micro de karaoké et une enceinte bluetooth",
45: "",
44: "",
46: "",
43: "",
49: ""
44: "Une 86 et un caisson pour taper du pied",
46: "Une épée, un ballon et une tireuse",
43: "Des lunettes de soleil",
49: "Mon instrument de musique"
}
],
"tardif": [
@@ -69,42 +69,42 @@ WORDS = {
quaprès tout, il ny a plus personne sur la plage à cette heure-ci. Tu nhabites pas loin mais tenchaînes
demain avec une journée similaire avec un autre groupe damis parce que tes trop #busy. Que fais-tu ?""",
{
42: "",
47: "",
48: "",
45: "",
44: "",
46: "",
43: "",
49: ""
42: "On veut se déchaîner toute la nuit !!",
47: "Je prends une glace et chill un moment avant daller dormir",
48: "Jenfile mes boogie shoes pour enflammer le dancefloor avec elleux et lancer un concours de slay, le perdant finit la bouteille de rhum",
45: "La fête continuuuuue",
44: "Soirée sangria plage → boîte → lever de soleil sur la plage",
46: "Minuit ? Cest lheure du genepi. On commence les alcools forts !!",
43: "Tenchaînes direct (faut pas les priver de ta présence)",
49: "On continue en mode chill (soirée potins)"
}
],
"cohesion": [
"""Cest la rentrée de Seconde et tu découvres ta classe, tes camarades et ta prof principale!!!
qui vous propose une activité de cohésion. Laquelle est-elle ?""",
{
42: "",
47: "",
48: "",
45: "",
44: "",
46: "",
43: "",
49: ""
42: "Un relais cubi en ventriglisse",
47: "Un jeu de rôle",
48: "Organiser la soirée de lannée dans le lycée. Le thème : SLAY (Spotlight, Love, Amaze/All-night, Yeah), paillettes, disco",
45: "La prof de français propose un slam parce qu'elle pense que c'est du rap littéraire qui fera plaisir aux élèves",
44: "Ptit escape game + apéro",
46: "Joute avec des boucliers Gilbert",
43: "Tournage dun clip de confessions nocturnes de Diams",
49: "Je sais pas jai raté mon BAFA"
}
],
"artiste": [
"""Cest lété et la saison des festivals a commencé. Tu regardes la programmation du festival
pas loin de chez toi et tu découvres avec joie la présence dun·e artiste. De qui sagit-il ?""",
{
42: "",
47: "",
48: "",
45: "",
44: "",
46: "",
43: "",
49: ""
42: "Moto-Moto (il chantera son fameux tube “je les aime grosses, je les aime bombées”)",
47: "Hatsune Miku",
48: "Rihanna",
45: "Vald",
44: "Qui connaît vraiment les noms des artistes de tech ?",
46: "Perceval",
43: "Fatal bazooka",
49: "Måneskin"
}
],
"annonce_noel": [
@@ -112,61 +112,77 @@ WORDS = {
Dun coup, tu te lèves, tapotes de manière pompeuse sur ton verre avec un de tes couverts.
Quannonces-tu ?""",
{
42: "",
47: "",
48: "",
45: "",
44: "",
46: "",
43: "",
49: ""
42: """« Chère famille. Je sais bien que nous avions dit : pas de politique à table.
Je ne peux toutefois me retenir de vous annoncer une grande nouvelle…
jai décidé de quitter la ville pour consacrer ma vie au culte du Roi Julian.
A moi la jungle luxuriante, là où le soleil chaud caresse les palmiers,
où les lémuriens dansent avec frénésie et où chaque repas est une ode au burger sauvage.
Longue vie à Sa Majesté le Roi Julian ! »""",
47: "« Jai perdu »",
48: "« Mes chers parents je pars, jarrête lENS pour devenir DJ slay à Ibiza »",
45: "Jinterromps le repas pour rapper les 6min de bande organisée",
44: "« Digestif ? Pétanque ? Les deux ? »",
46: "« Montjoie St Denis à bas la Macronie »",
43: "« Je suis enceinte » (cest faux jai juste besoin dattention)",
49: """Discours de remerciement :
je lance un powerpoint de 65 slides et sors une feuille A4 blanche (je fais semblant de lire mon discours dessus)"""
}
],
"vacances": [
"""Les vacances sont là et taimerais bien partir quelque part, mais où ?""",
{
42: "",
47: "",
48: "",
45: "",
44: "",
46: "",
43: "",
49: ""
42: "A Madagascar, à bord dun bus conduit par des pingouins",
47: "Dans ma chambre",
48: "Rio de Janeiro",
45: "N'importe où tant qu'on peut sortir tous les soirs",
44: "Tu suis les plans du club ski ou de piratens",
46: "Carcassonne",
43: "Coachella",
49: "Dans les montagnes de la république populaire dAuvergne-Rhônes-Alpes pour profiter de la fraîcheur, de la nature et de mes ami·e·s"
}
],
"loisir": [
"""Tas fini ta journée de cours et tu tapprêtes à profiter dune activité/hobby/loisir de ton choix.
Laquelle est-ce ?""",
{
42: "",
47: "",
48: "",
45: "",
44: "",
46: "",
43: "",
49: ""
42: "Cueillir des noix de coco",
47: "Essayer de travailler puis chill avec des potes autour dun jeu en buvant du thé",
48: "Repet du nouveau spectacle de mon club, before (potins) puis sortie avec les potes jusquau bout de la night",
45: "Zoner avec les copaings jusquà pas dheure",
44: "Go Kfet pour se faire traquenard jusquà 3h du mat",
46: "Déterminer ce qui est le plus solide entre mon crâne et une ecocup",
43: "Revoir pour la 6e fois gossip girl au fond de ton lit",
49: "Jouer de mon instrument préféré avec les copains/copines pour préparer le prochain concert #solidays"
}
],
"plan": [
"""Tu reçois un message sur la conversation de groupe que tu partages avec tes potes :
vous êtes chaud·e·s pour vous retrouver. Quel plan tattire le plus ?""",
{
42: "",
47: "",
48: "",
45: "",
44: "",
46: "",
43: "",
49: ""
42: """Après-midi piscine, puis before arrosé de mojito,
avant daller séclater en pot avec toute la savane et de finir sur un after spécial pina colada""",
47: """(matin) : Ptit jeu de rôle
(repas) : le traditionnel poké-tacos
(juste après le repas) : combat avec des épées en mousse avec les copains!
(16h00) : pause thé
(fin daprès midi) : initiation à la danse rock
(soirée) : découverte dun jeu de société avec des règles obscures
""",
48: "Soirée champagne and chic : spectacle et dîner au moulin rouge puis soirée sur les champs",
45: "Se regrouper pour une soirée, même si il nest encore que 10h",
44: "Ptit poké qui termine en koin koin avec after poker",
46: "Une dégustation de bière, un rugby et toute autre activité joviale",
43: "Un brunch de pour papoter puis friperies",
49: "Soirée raclette !"
}
]
}
}
IMAGES = {
"vacances": {
49: "/static/wei/img/logo_auvergne_rhone_alpes.jpg",
}
}
NB_WORDS = 5

View File

@@ -37,11 +37,13 @@ SPDX-License-Identifier: GPL-3.0-or-later
</a>
{% endif %}
{% else %}
{% if registration.validated %}
<a class="btn btn-warning" href="{% url "wei:wei_update_registration" pk=my_registration.pk %}"
data-turbolinks="false">
{% trans "Update my registration" %}
</a>
{% if not not_first_year %}
{% endif %}
{% if my_registration.first_year %}
{% if not survey_complete %}
<a class="btn btn-warning" href="{% url "wei:wei_survey" pk=my_registration.pk %}" data-turbolinks="false">
{% trans "Continue survey" %}

View File

@@ -11,7 +11,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
{{ title }}
</h3>
<div class="card-body">
<form id="registration-form" method="post">
<form method="post">
{% csrf_token %}
{{ form|crispy }}
{{ membership_form|crispy }}
@@ -22,46 +22,6 @@ SPDX-License-Identifier: GPL-3.0-or-later
{% endblock %}
{% block extrajavascript %}
<!-- intl-tel-input CSS/JS -->
<script>
(() => {
const input = document.querySelector("input[name='emergency_contact_phone']");
const form = document.querySelector("#registration-form");
if (!input || !form) {
console.error("Input phone_number ou form introuvable.");
}
const iti = window.intlTelInput(input, {
initialCountry: "auto",
nationalMode: false,
autoPlaceholder: "off",
geoIpLookup: callback => {
fetch("https://ipapi.co/json")
.then(res => res.json())
.then(data => callback(data.country_code))
.catch(() => callback("fr"));
},
loadUtils: () => import("https://cdn.jsdelivr.net/npm/intl-tel-input@25.5.2/build/js/utils.js"),
});
form.addEventListener("submit", function(e){
if (!input.value.trim()) {
return;
}
const number = iti.getNumber(intlTelInput.utils.numberFormat.E164);
if (number) {
input.value = number;
form.submit();
} else {
e.preventDefault();
input.focus();
}
});
})();
</script>
{% if not object.membership %}
<script>
$(document).ready(function () {

View File

@@ -214,6 +214,8 @@ class WEIDetailView(ProtectQuerysetMixin, LoginRequiredMixin, MultiTableMixin, D
context["not_first_year"] = WEIMembership.objects.filter(user=self.request.user).exists()
context["registration_validated"] = WEIMembership.objects.filter(registration=my_registration).exists() if my_registration else False
qs = WEIMembership.objects.filter(club=club, registration__first_year=True, bus__isnull=True)
context["can_validate_1a"] = PermissionBackend.check_perm(
self.request, "wei.change_weimembership_bus", qs.first()) if qs.exists() else False

View File

@@ -7,9 +7,9 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-08-20 23:34+0200\n"
"POT-Creation-Date: 2025-07-15 18:17+0200\n"
"PO-Revision-Date: 2022-04-11 22:05+0200\n"
"Last-Translator: ehouarn <ehouarn@crans.org>\n"
"Last-Translator: bleizi <bleizi@crans.org>\n"
"Language-Team: French <http://translate.ynerant.fr/projects/nk20/nk20/fr/>\n"
"Language: fr\n"
"MIME-Version: 1.0\n"
@@ -19,8 +19,10 @@ msgstr ""
"X-Generator: Poedit 3.0\n"
#: apps/activity/api/serializers.py:77
#, fuzzy
#| msgid "This friendship already exists"
msgid "This opener already exists"
msgstr "Cette personne est déjà ouvreur⋅se"
msgstr "Cette amitié existe déjà"
#: apps/activity/apps.py:10 apps/activity/models.py:129
#: apps/activity/models.py:169 apps/activity/models.py:329
@@ -64,7 +66,7 @@ msgstr "Vous ne pouvez pas inviter plus de 3 personnes à cette activité."
#: apps/note/models/transactions.py:46 apps/note/models/transactions.py:299
#: apps/permission/models.py:329
#: apps/registration/templates/registration/future_profile_detail.html:16
#: apps/wei/models.py:77 apps/wei/models.py:150 apps/wei/tables.py:342
#: apps/wei/models.py:77 apps/wei/models.py:150 apps/wei/tables.py:282
#: apps/wei/templates/wei/base.html:26
#: apps/wei/templates/wei/weimembership_form.html:14 apps/wrapped/models.py:16
msgid "name"
@@ -289,14 +291,14 @@ msgstr "Type"
#: apps/activity/tables.py:86 apps/member/forms.py:199
#: apps/registration/forms.py:91 apps/treasury/forms.py:131
#: apps/wei/forms/registration.py:117
#: apps/wei/forms/registration.py:129
msgid "Last name"
msgstr "Nom de famille"
#: apps/activity/tables.py:88 apps/member/forms.py:204
#: apps/note/templates/note/transaction_form.html:138
#: apps/registration/forms.py:96 apps/treasury/forms.py:133
#: apps/wei/forms/registration.py:122
#: apps/wei/forms/registration.py:134
msgid "First name"
msgstr "Prénom"
@@ -313,7 +315,7 @@ msgstr "Solde du compte"
#: apps/note/tables.py:281 apps/treasury/tables.py:39
#: apps/treasury/templates/treasury/invoice_confirm_delete.html:30
#: apps/treasury/templates/treasury/sogecredit_detail.html:65
#: apps/wei/tables.py:74 apps/wei/tables.py:75 apps/wei/tables.py:148
#: apps/wei/tables.py:75 apps/wei/tables.py:118
#: apps/wei/templates/wei/weiregistration_confirm_delete.html:31
#: note_kfet/templates/oauth2_provider/application_confirm_delete.html:18
#: note_kfet/templates/oauth2_provider/application_detail.html:39
@@ -404,7 +406,6 @@ msgstr "Entrée effectuée !"
#: apps/wei/templates/wei/bus_form.html:17
#: apps/wei/templates/wei/busteam_form.html:18
#: apps/wei/templates/wei/weiclub_form.html:17
#: apps/wei/templates/wei/weimembership_update.html:17
#: apps/wei/templates/wei/weiregistration_form.html:18
msgid "Submit"
msgstr "Envoyer"
@@ -461,6 +462,7 @@ msgstr "modifier"
#: apps/activity/templates/activity/includes/activity_info.html:74
#: apps/logs/models.py:65 apps/note/tables.py:230 apps/note/tables.py:279
#: apps/permission/models.py:126 apps/treasury/tables.py:38
#: apps/wei/tables.py:74
msgid "delete"
msgstr "supprimer"
@@ -535,7 +537,7 @@ msgstr "Pâtes METRO 5kg"
#: apps/food/forms.py:53 apps/food/forms.py:81
msgid "Specific order given to GCKs"
msgstr "Instruction donnée aux GCKs"
msgstr ""
#: apps/food/forms.py:77
msgid "Lasagna"
@@ -596,7 +598,7 @@ msgid "order"
msgstr "consigne"
#: apps/food/models.py:107 apps/food/views.py:35
#: note_kfet/templates/base.html:73
#: note_kfet/templates/base.html:72
msgid "Food"
msgstr "Bouffe"
@@ -685,45 +687,45 @@ msgstr "Retour à la liste de nourriture"
msgid "View food"
msgstr "Voir l'aliment"
#: apps/food/templates/food/food_list.html:38
#: apps/food/templates/food/food_list.html:37
#: note_kfet/templates/base_search.html:15
msgid "Search by attribute such as name..."
msgstr "Chercher par un attribut tel que le nom..."
#: apps/food/templates/food/food_list.html:50
#: apps/food/templates/food/food_list.html:49
#: note_kfet/templates/base_search.html:23
msgid "There is no results."
msgstr "Il n'y a pas de résultat."
#: apps/food/templates/food/food_list.html:59
#: apps/food/templates/food/food_list.html:58
msgid "Meal served"
msgstr "Plat servis"
#: apps/food/templates/food/food_list.html:64
#: apps/food/templates/food/food_list.html:63
msgid "New meal"
msgstr "Nouveau plat"
#: apps/food/templates/food/food_list.html:73
#: apps/food/templates/food/food_list.html:72
msgid "There is no meal served."
msgstr "Il n'y a pas de plat servi."
#: apps/food/templates/food/food_list.html:80
#: apps/food/templates/food/food_list.html:79
msgid "Free food"
msgstr "Open"
#: apps/food/templates/food/food_list.html:87
#: apps/food/templates/food/food_list.html:86
msgid "There is no free food."
msgstr "Il n'y a pas de bouffe en open"
#: apps/food/templates/food/food_list.html:95
#: apps/food/templates/food/food_list.html:94
msgid "Food of your clubs"
msgstr "Bouffe de tes clubs"
#: apps/food/templates/food/food_list.html:101
#: apps/food/templates/food/food_list.html:100
msgid "Food of club"
msgstr "Bouffe du club"
#: apps/food/templates/food/food_list.html:108
#: apps/food/templates/food/food_list.html:107
msgid "Yours club has not food yet."
msgstr "Ton club n'a pas de bouffe pour l'instant"
@@ -805,41 +807,41 @@ msgstr "Ajouter un nouveau QR-code"
msgid "Add an aliment"
msgstr "Ajouter un nouvel aliment"
#: apps/food/views.py:237
#: apps/food/views.py:228
msgid "Add a meal"
msgstr "Ajouter un plat"
#: apps/food/views.py:277
#: apps/food/views.py:259
msgid "Manage ingredients of:"
msgstr "Gestion des ingrédienrs de :"
#: apps/food/views.py:291 apps/food/views.py:299
#: apps/food/views.py:273 apps/food/views.py:281
#, python-brace-format
msgid "Fully used in {meal}"
msgstr "Aliment entièrement utilisé dans : {meal}"
#: apps/food/views.py:346
#: apps/food/views.py:320
msgid "Add the ingredient:"
msgstr "Ajouter l'ingrédient"
#: apps/food/views.py:372
#: apps/food/views.py:346
#, python-brace-format
msgid "Food fully used in : {meal.name}"
msgstr "Aliment entièrement utilisé dans : {meal.name}"
#: apps/food/views.py:391
#: apps/food/views.py:365
msgid "Update an aliment"
msgstr "Modifier un aliment"
#: apps/food/views.py:439
#: apps/food/views.py:413
msgid "Details of:"
msgstr "Détails de :"
#: apps/food/views.py:449 apps/treasury/tables.py:149
#: apps/food/views.py:423 apps/treasury/tables.py:149
msgid "Yes"
msgstr "Oui"
#: apps/food/views.py:451 apps/member/models.py:99 apps/treasury/tables.py:149
#: apps/food/views.py:425 apps/member/models.py:99 apps/treasury/tables.py:149
msgid "No"
msgstr "Non"
@@ -910,11 +912,11 @@ msgstr "cotisation pour adhérer (normalien·ne étudiant·e)"
msgid "roles"
msgstr "rôles"
#: apps/member/admin.py:66 apps/member/models.py:351 apps/wei/models.py:290
#: apps/member/admin.py:66 apps/member/models.py:351
msgid "fee"
msgstr "cotisation"
#: apps/member/apps.py:14 apps/wei/tables.py:286 apps/wei/tables.py:317
#: apps/member/apps.py:14 apps/wei/tables.py:226 apps/wei/tables.py:257
msgid "member"
msgstr "adhérent·e"
@@ -975,12 +977,12 @@ msgid "Check this case if the Société Générale paid the inscription."
msgstr "Cochez cette case si la Société Générale a payé l'inscription."
#: apps/member/forms.py:185 apps/registration/forms.py:78
#: apps/wei/forms/registration.py:104
#: apps/wei/forms/registration.py:116
msgid "Credit type"
msgstr "Type de rechargement"
#: apps/member/forms.py:186 apps/registration/forms.py:79
#: apps/wei/forms/registration.py:105
#: apps/wei/forms/registration.py:117
msgid "No credit"
msgstr "Pas de rechargement"
@@ -989,13 +991,13 @@ msgid "You can credit the note of the user."
msgstr "Vous pouvez créditer la note de l'utilisateur⋅rice avant l'adhésion."
#: apps/member/forms.py:192 apps/registration/forms.py:84
#: apps/wei/forms/registration.py:110
#: apps/wei/forms/registration.py:122
msgid "Credit amount"
msgstr "Montant à créditer"
#: apps/member/forms.py:209 apps/note/templates/note/transaction_form.html:144
#: apps/registration/forms.py:101 apps/treasury/forms.py:135
#: apps/wei/forms/registration.py:127
#: apps/wei/forms/registration.py:139
msgid "Bank"
msgstr "Banque"
@@ -1420,7 +1422,7 @@ msgstr "Membres du club"
#: apps/member/templates/member/club_detail.html:40
#: apps/member/templates/member/profile_detail.html:32
#: apps/wei/templates/wei/weiclub_detail.html:105
#: apps/wei/templates/wei/weiclub_detail.html:75
msgid "Transaction history"
msgstr "Historique des transactions"
@@ -1974,8 +1976,8 @@ msgstr ""
"mode de paiement et un⋅e utilisateur⋅rice ou un club"
#: apps/note/models/transactions.py:357 apps/note/models/transactions.py:360
#: apps/note/models/transactions.py:363 apps/wei/views.py:1135
#: apps/wei/views.py:1139
#: apps/note/models/transactions.py:363 apps/wei/views.py:1103
#: apps/wei/views.py:1107
msgid "This field is required."
msgstr "Ce champ est requis."
@@ -2077,6 +2079,8 @@ msgstr "Historique des transactions récentes"
#: apps/note/templates/note/mails/weekly_report.txt:32
#: apps/registration/templates/registration/mails/email_validation_email.html:40
#: apps/registration/templates/registration/mails/email_validation_email.txt:16
#: apps/scripts/templates/scripts/food_report.html:48
#: apps/scripts/templates/scripts/food_report.txt:14
msgid "Mail generated by the Note Kfet on the"
msgstr "Mail généré par la Note Kfet le"
@@ -2480,7 +2484,7 @@ msgstr ""
#: apps/registration/templates/registration/future_profile_detail.html:73
#: apps/wei/templates/wei/weimembership_form.html:127
#: apps/wei/templates/wei/weimembership_form.html:194
#: apps/wei/templates/wei/weimembership_form.html:192
msgid "Validate registration"
msgstr "Valider l'inscription"
@@ -2757,7 +2761,7 @@ msgstr "Crédits de la Société générale"
msgid "Soge credit for {user}"
msgstr "Crédit de la société générale pour l'utilisateur·rice {user}"
#: apps/treasury/models.py:444
#: apps/treasury/models.py:446
msgid ""
"This user doesn't have enough money to pay the memberships with its note. "
"Please ask her/him to credit the note before invalidating this credit."
@@ -2939,7 +2943,7 @@ msgstr ""
"supprimer la demande de crédit."
#: apps/treasury/templates/treasury/sogecredit_detail.html:63
#: apps/wei/tables.py:60 apps/wei/tables.py:131
#: apps/wei/tables.py:60 apps/wei/tables.py:102
msgid "Validate"
msgstr "Valider"
@@ -3008,21 +3012,22 @@ msgstr "Gérer les crédits de la Société générale"
#: apps/wei/apps.py:10 apps/wei/models.py:47 apps/wei/models.py:48
#: apps/wei/models.py:72 apps/wei/models.py:197
#: note_kfet/templates/base.html:109
#: note_kfet/templates/base.html:108
msgid "WEI"
msgstr "WEI"
#: apps/wei/forms/registration.py:38
#: apps/wei/forms/registration.py:37
msgid "The selected user is not validated. Please validate its account first"
msgstr ""
"L'utilisateur·rice sélectionné·e n'est pas validé·e. Merci de d'abord "
"valider son compte"
#: apps/wei/forms/registration.py:72 apps/wei/models.py:107
msgid "Bus"
msgstr "Bus"
#: apps/wei/forms/registration.py:84 apps/wei/models.py:145
#: apps/wei/models.py:354
msgid "bus"
msgstr "bus"
#: apps/wei/forms/registration.py:73
#: apps/wei/forms/registration.py:85
msgid ""
"This choice is not definitive. The WEI organizers are free to attribute for "
"you a bus and a team, in particular if you are a free eletron."
@@ -3031,11 +3036,11 @@ msgstr ""
"vous attribuer un bus et une équipe, en particulier si vous êtes un·e "
"électron libre."
#: apps/wei/forms/registration.py:80
#: apps/wei/forms/registration.py:92
msgid "Team"
msgstr "Équipe"
#: apps/wei/forms/registration.py:82
#: apps/wei/forms/registration.py:94
msgid ""
"Leave this field empty if you won't be in a team (staff, bus chief, free "
"electron)"
@@ -3043,35 +3048,25 @@ msgstr ""
"Laissez ce champ vide si vous ne serez pas dans une équipe (staff, chef de "
"bus ou électron libre)"
#: apps/wei/forms/registration.py:88 apps/wei/forms/registration.py:98
#: apps/wei/forms/registration.py:100 apps/wei/forms/registration.py:110
#: apps/wei/models.py:179
msgid "WEI Roles"
msgstr "Rôles au WEI"
#: apps/wei/forms/registration.py:89
#: apps/wei/forms/registration.py:101
msgid "Select the roles that you are interested in."
msgstr "Sélectionnez les rôles qui vous intéressent."
#: apps/wei/forms/registration.py:148
#: apps/wei/forms/registration.py:160
msgid "This team doesn't belong to the given bus."
msgstr "Cette équipe n'appartient pas à ce bus."
#: apps/wei/forms/surveys/wei2021.py:35 apps/wei/forms/surveys/wei2022.py:38
#: apps/wei/forms/surveys/wei2025.py:36
msgid "Choose a word:"
msgstr "Choisissez un mot :"
#: apps/wei/forms/surveys/wei2025.py:211
#, python-brace-format
msgid ""
"Select {NB_WORDS} words that describe the WEI experience you want to have."
msgstr ""
#: apps/wei/forms/surveys/wei2025.py:242
#, python-brace-format
msgid "Please choose exactly {NB_WORDS} words"
msgstr ""
#: apps/wei/forms/surveys/wei2025.py:288
#: apps/wei/forms/surveys/wei2025.py:123
msgid "Rate between 0 and 5."
msgstr "Note entre 0 et 5."
@@ -3089,7 +3084,7 @@ msgstr "début"
msgid "date end"
msgstr "fin"
#: apps/wei/models.py:37 apps/wei/templates/wei/base.html:53
#: apps/wei/models.py:37
msgid "deposit amount"
msgstr "montant de la caution"
@@ -3097,7 +3092,7 @@ msgstr "montant de la caution"
msgid "membership fee (soge credit)"
msgstr "Cotisation pour adhérer (crédit sogé)"
#: apps/wei/models.py:81 apps/wei/tables.py:365
#: apps/wei/models.py:81 apps/wei/tables.py:305
msgid "seat count in the bus"
msgstr "nombre de sièges dans le bus"
@@ -3110,13 +3105,13 @@ msgid "Information about the survey for new members, encoded in JSON"
msgstr ""
"Informations sur le sondage pour les nouveaux membres, encodées en JSON"
#: apps/wei/models.py:108 apps/wei/templates/wei/weiclub_detail.html:63
msgid "Buses"
#: apps/wei/models.py:107
msgid "Bus"
msgstr "Bus"
#: apps/wei/models.py:145 apps/wei/models.py:375
msgid "bus"
msgstr "bus"
#: apps/wei/models.py:108 apps/wei/templates/wei/weiclub_detail.html:51
msgid "Buses"
msgstr "Bus"
#: apps/wei/models.py:154
msgid "color"
@@ -3143,9 +3138,10 @@ msgstr "Rôle au WEI"
msgid "Credit from Société générale"
msgstr "Crédit de la Société générale"
#: apps/wei/models.py:207
msgid "Deposit given"
msgstr "Caution donnée"
#: apps/wei/models.py:207 apps/wei/templates/wei/weimembership_form.html:98
#: apps/wei/views.py:997
msgid "Deposit check given"
msgstr "Chèque de caution donné"
#: apps/wei/models.py:213
msgid "Check"
@@ -3156,8 +3152,10 @@ msgid "Note transaction"
msgstr "Transaction Note"
#: apps/wei/models.py:217
#, fuzzy
#| msgid "Credit type"
msgid "deposit type"
msgstr "type de caution"
msgstr "Type de rechargement"
#: apps/wei/models.py:221 apps/wei/templates/wei/weimembership_form.html:64
msgid "birth date"
@@ -3230,35 +3228,35 @@ msgstr ""
"Informations sur l'inscription (bus pour les 2A+, questionnaire pour les "
"1A), encodées en JSON"
#: apps/wei/models.py:296
#: apps/wei/models.py:290
msgid "WEI User"
msgstr "Participant·e au WEI"
#: apps/wei/models.py:297
#: apps/wei/models.py:291
msgid "WEI Users"
msgstr "Participant·e·s au WEI"
#: apps/wei/models.py:385
#: apps/wei/models.py:364
msgid "team"
msgstr "équipe"
#: apps/wei/models.py:395
#: apps/wei/models.py:374
msgid "WEI registration"
msgstr "Inscription au WEI"
#: apps/wei/models.py:399
#: apps/wei/models.py:378
msgid "WEI membership"
msgstr "Adhésion au WEI"
#: apps/wei/models.py:400
#: apps/wei/models.py:379
msgid "WEI memberships"
msgstr "Adhésions au WEI"
#: apps/wei/tables.py:135
#: apps/wei/tables.py:105
msgid "The user does not have enough money."
msgstr "L'utilisateur⋅rice n'a pas assez d'argent."
#: apps/wei/tables.py:138
#: apps/wei/tables.py:108
msgid ""
"The user is in first year. You may validate the credit, the algorithm will "
"run later."
@@ -3266,44 +3264,44 @@ msgstr ""
"L'utilisateur·rice est en première année, vous pouvez valider le crédit, "
"l'algorithme tournera plus tard."
#: apps/wei/tables.py:141
#: apps/wei/tables.py:111
msgid "The user has enough money, you can validate the registration."
msgstr "L'utilisateur⋅rice a assez d'argent, l'inscription est possible."
#: apps/wei/tables.py:174
#: apps/wei/tables.py:143
msgid "Year"
msgstr "Année"
#: apps/wei/tables.py:240 apps/wei/templates/wei/weimembership_form.html:102
#: apps/wei/tables.py:180 apps/wei/templates/wei/weimembership_form.html:102
msgid "preferred bus"
msgstr "bus préféré"
#: apps/wei/tables.py:270 apps/wei/templates/wei/bus_detail.html:38
#: apps/wei/tables.py:210 apps/wei/templates/wei/bus_detail.html:38
#: apps/wei/templates/wei/busteam_detail.html:52
msgid "Teams"
msgstr "Équipes"
#: apps/wei/tables.py:279 apps/wei/tables.py:320
#: apps/wei/tables.py:219 apps/wei/tables.py:260
msgid "Members count"
msgstr "Nombre de membres"
#: apps/wei/tables.py:286 apps/wei/tables.py:317
#: apps/wei/tables.py:226 apps/wei/tables.py:257
msgid "members"
msgstr "adhérent·es"
#: apps/wei/tables.py:347
#: apps/wei/tables.py:287
msgid "suggested first year"
msgstr "1A suggéré·es"
#: apps/wei/tables.py:353
#: apps/wei/tables.py:293
msgid "validated first year"
msgstr "1A validé·es"
#: apps/wei/tables.py:359
#: apps/wei/tables.py:299
msgid "validated staff"
msgstr "2A+ validé·es"
#: apps/wei/tables.py:370
#: apps/wei/tables.py:310
msgid "free seats"
msgstr "sièges libres"
@@ -3344,15 +3342,19 @@ msgstr "Prix du WEI (élèves)"
msgid "WEI fee (unpaid students)"
msgstr "Prix du WEI (étudiant⋅es)"
#: apps/wei/templates/wei/base.html:53
msgid "Deposit amount"
msgstr "Caution"
#: apps/wei/templates/wei/base.html:74
msgid "WEI list"
msgstr "Liste des WEI"
#: apps/wei/templates/wei/base.html:79 apps/wei/views.py:585
#: apps/wei/templates/wei/base.html:79 apps/wei/views.py:550
msgid "Register 1A"
msgstr "Inscrire un⋅e 1A"
#: apps/wei/templates/wei/base.html:83 apps/wei/views.py:681
#: apps/wei/templates/wei/base.html:83 apps/wei/views.py:646
msgid "Register 2A+"
msgstr "Inscrire un⋅e 2A+"
@@ -3369,8 +3371,8 @@ msgid "View club"
msgstr "Voir le club"
#: apps/wei/templates/wei/bus_detail.html:26
msgid "Edit information for survey"
msgstr "Modifier les informations du sondage"
msgid "Edit information"
msgstr "Modifier les informations"
#: apps/wei/templates/wei/bus_detail.html:28
#: apps/wei/templates/wei/busteam_detail.html:24
@@ -3389,8 +3391,8 @@ msgstr "Télécharger au format PDF"
#: apps/wei/templates/wei/survey.html:11
#: apps/wei/templates/wei/survey_closed.html:11
#: apps/wei/templates/wei/survey_end.html:11 apps/wei/views.py:1246
#: apps/wei/views.py:1305 apps/wei/views.py:1352
#: apps/wei/templates/wei/survey_end.html:11 apps/wei/views.py:1165
#: apps/wei/views.py:1220 apps/wei/views.py:1267
msgid "Survey WEI"
msgstr "Questionnaire WEI"
@@ -3419,27 +3421,19 @@ msgstr "M'inscrire au WEI ! 1A"
msgid "Register to the WEI! 2A+"
msgstr "M'inscrire au WEI ! 2A+"
#: apps/wei/templates/wei/weiclub_detail.html:42
#: apps/wei/templates/wei/weiclub_detail.html:40
msgid "Update my registration"
msgstr "Modifier mon inscription"
#: apps/wei/templates/wei/weiclub_detail.html:47
msgid "Continue survey"
msgstr "Continuer le questionnaire"
#: apps/wei/templates/wei/weiclub_detail.html:51
msgid "Restart survey"
msgstr "Recommencer le questionnaire"
#: apps/wei/templates/wei/weiclub_detail.html:75
#: apps/wei/templates/wei/weiclub_detail.html:63
msgid "Members of the WEI"
msgstr "Membres du WEI"
#: apps/wei/templates/wei/weiclub_detail.html:87
#: apps/wei/templates/wei/weiclub_detail.html:89
msgid "Unvalidated registrations"
msgstr "Inscriptions non validées"
#: apps/wei/templates/wei/weiclub_detail.html:97
#: apps/wei/templates/wei/weiclub_detail.html:99
msgid "Attribute buses"
msgstr "Répartition dans les bus"
@@ -3475,10 +3469,6 @@ msgstr "Informations brutes du sondage"
msgid "The algorithm didn't run."
msgstr "L'algorithme n'a pas été exécuté."
#: apps/wei/templates/wei/weimembership_form.html:98 apps/wei/views.py:1029
msgid "Deposit check given"
msgstr "Chèque de caution donné"
#: apps/wei/templates/wei/weimembership_form.html:105
msgid "preferred team"
msgstr "équipe préférée"
@@ -3534,31 +3524,33 @@ msgstr "Paiements requis"
msgid "Membership fees: %(amount)s"
msgstr "Frais d'inscription : %(amount)s"
#: apps/wei/templates/wei/weimembership_form.html:154
#: apps/wei/templates/wei/weimembership_form.html:153
#, python-format
msgid "Deposit (by Note transaction): %(amount)s"
msgstr "Caution (par transaction) : %(amount)s"
#: apps/wei/templates/wei/weimembership_form.html:158
#: apps/wei/templates/wei/weimembership_form.html:157
#, python-format
msgid "Deposit (by check): %(amount)s"
msgstr "Caution (par chèque) : %(amount)s"
#: apps/wei/templates/wei/weimembership_form.html:163
#: apps/wei/templates/wei/weimembership_form.html:161
#, python-format
msgid "Total needed: %(total)s"
msgstr "Total nécessaire : %(total)s"
#: apps/wei/templates/wei/weimembership_form.html:167
#: apps/wei/templates/wei/weimembership_form.html:165
#, python-format
msgid "Current balance: %(balance)s"
msgstr "Solde actuel : %(balance)s"
#: apps/wei/templates/wei/weimembership_form.html:174
msgid "The user didn't give her/his caution."
msgstr "L'utilisateur⋅rice n'a pas donné sa caution."
#: apps/wei/templates/wei/weimembership_form.html:172
#, fuzzy
#| msgid "The user didn't give her/his deposit check."
msgid "The user didn't give her/his caution check."
msgstr "L'utilisateur⋅rice n'a pas donné son chèque de caution."
#: apps/wei/templates/wei/weimembership_form.html:182
#: apps/wei/templates/wei/weimembership_form.html:180
msgid ""
"This user is not a member of the Kfet club for the coming year. The "
"membership will be processed automatically, the WEI registration includes "
@@ -3601,63 +3593,63 @@ msgstr "Chercher un WEI"
msgid "WEI Detail"
msgstr "Détails du WEI"
#: apps/wei/views.py:230
#: apps/wei/views.py:212
msgid "View members of the WEI"
msgstr "Voir les membres du WEI"
#: apps/wei/views.py:263
#: apps/wei/views.py:245
msgid "Find WEI Membership"
msgstr "Trouver une adhésion au WEI"
#: apps/wei/views.py:273
#: apps/wei/views.py:255
msgid "View registrations to the WEI"
msgstr "Voir les inscriptions au WEI"
#: apps/wei/views.py:319
#: apps/wei/views.py:284
msgid "Find WEI Registration"
msgstr "Trouver une inscription au WEI"
#: apps/wei/views.py:330
#: apps/wei/views.py:295
msgid "Update the WEI"
msgstr "Modifier le WEI"
#: apps/wei/views.py:351
#: apps/wei/views.py:316
msgid "Create new bus"
msgstr "Ajouter un nouveau bus"
#: apps/wei/views.py:389
#: apps/wei/views.py:354
msgid "Update bus"
msgstr "Modifier le bus"
#: apps/wei/views.py:421
#: apps/wei/views.py:386
msgid "Manage bus"
msgstr "Gérer le bus"
#: apps/wei/views.py:448
#: apps/wei/views.py:413
msgid "Create new team"
msgstr "Créer une nouvelle équipe"
#: apps/wei/views.py:492
#: apps/wei/views.py:457
msgid "Update team"
msgstr "Modifier l'équipe"
#: apps/wei/views.py:527
#: apps/wei/views.py:492
msgid "Manage WEI team"
msgstr "Gérer l'équipe WEI"
#: apps/wei/views.py:549
#: apps/wei/views.py:514
msgid "Register first year student to the WEI"
msgstr "Inscrire un⋅e 1A au WEI"
#: apps/wei/views.py:606 apps/wei/views.py:699
#: apps/wei/views.py:571 apps/wei/views.py:664
msgid "Check if you will open a Société Générale account"
msgstr "Cochez cette case si vous ouvrez un compte à la Société Générale."
#: apps/wei/views.py:617 apps/wei/views.py:729
#: apps/wei/views.py:582 apps/wei/views.py:694
msgid "This user is already registered to this WEI."
msgstr "Cette personne est déjà inscrite au WEI."
#: apps/wei/views.py:622
#: apps/wei/views.py:587
msgid ""
"This user can't be in her/his first year since he/she has already "
"participated to a WEI."
@@ -3665,67 +3657,65 @@ msgstr ""
"Cet⋅te utilisateur⋅rice ne peut pas être en première année puisqu'iel a déjà "
"participé à un WEI."
#: apps/wei/views.py:645
#: apps/wei/views.py:610
msgid "Register old student to the WEI"
msgstr "Inscrire un⋅e 2A+ au WEI"
#: apps/wei/views.py:703 apps/wei/views.py:826
#: apps/wei/views.py:668 apps/wei/views.py:773
msgid "You already opened an account in the Société générale."
msgstr "Vous avez déjà ouvert un compte auprès de la société générale."
#: apps/wei/views.py:716 apps/wei/views.py:822
#: apps/wei/views.py:681 apps/wei/views.py:790
msgid "Choose how you want to pay the deposit"
msgstr "Choisissez comment payer la caution"
#: apps/wei/views.py:768
#: apps/wei/views.py:733
msgid "Update WEI Registration"
msgstr "Modifier l'inscription WEI"
#: apps/wei/views.py:812
msgid "Tick if the deposit check has been given"
msgstr "Cochez si le chèque de caution a été donné"
#: apps/wei/views.py:851
#: apps/wei/views.py:816
msgid "No membership found for this registration"
msgstr "Pas d'adhésion trouvée pour cette inscription"
#: apps/wei/views.py:860
#: apps/wei/views.py:825
msgid "You don't have the permission to update memberships"
msgstr "Vous n'avez pas la permission de modifier une inscription"
#: apps/wei/views.py:866
#: apps/wei/views.py:831
#, python-format
msgid "You don't have the permission to update the field %(field)s"
msgstr "Vous n'avez pas la permission de modifier le champ %(field)s"
#: apps/wei/views.py:907
#: apps/wei/views.py:876
msgid "Delete WEI registration"
msgstr "Supprimer l'inscription WEI"
#: apps/wei/views.py:918
#: apps/wei/views.py:887
msgid "You don't have the right to delete this WEI registration."
msgstr "Vous n'avez pas la permission de supprimer cette inscription au WEI."
#: apps/wei/views.py:936
#: apps/wei/views.py:905
msgid "Validate WEI registration"
msgstr "Valider l'inscription WEI"
#: apps/wei/views.py:1030
msgid "Only treasurers can validate this field"
msgstr "Seul·e·s les trésorier·ère·s peuvent valider ce champ"
#: apps/wei/views.py:998
msgid "Please make sure the check is given before validating the registration"
msgstr ""
"Merci de vous assurer que le chèque a bien été donné avant de valider "
"l'adhésion"
#: apps/wei/views.py:1036
#: apps/wei/views.py:1004
msgid "Create deposit transaction"
msgstr "Créer une transaction de caution"
#: apps/wei/views.py:1037
#: apps/wei/views.py:1005
#, python-format
msgid ""
"A transaction of %(amount).2f€ will be created from the user's Note account"
msgstr ""
"Un transaction de %(amount).2f€ va être créée depuis la note de l'utilisateur"
#: apps/wei/views.py:1125
#: apps/wei/views.py:1093
#, python-format
msgid ""
"This user doesn't have enough money to join this club and pay the deposit. "
@@ -3735,24 +3725,20 @@ msgstr ""
"payer la caution. Solde actuel : %(balance)d€, crédit : %(credit)d€, "
"requis : %(needed)d€"
#: apps/wei/views.py:1178
#: apps/wei/views.py:1146
#, python-format
msgid "Deposit %(name)s"
msgstr "Caution %(name)s"
#: apps/wei/views.py:1203
msgid "Update WEI Membership"
msgstr "Modifier une adhésion au WEI"
#: apps/wei/views.py:1445
#: apps/wei/views.py:1360
msgid "Attribute buses to first year members"
msgstr "Répartir les 1A dans les bus"
#: apps/wei/views.py:1471
#: apps/wei/views.py:1386
msgid "Attribute bus"
msgstr "Attribuer un bus"
#: apps/wei/views.py:1511
#: apps/wei/views.py:1426
msgid ""
"No first year student without a bus found. Either all of them have a bus, or "
"none has filled the survey yet."
@@ -4109,6 +4095,14 @@ msgstr "La note est indisponible pour le moment"
msgid "Thank you for your understanding -- The Respos Info of BDE"
msgstr "Merci de votre compréhension -- Les Respos Info du BDE"
#: note_kfet/templates/base_search.html:15
msgid "Search by attribute such as name..."
msgstr "Chercher par un attribut tel que le nom..."
#: note_kfet/templates/base_search.html:23
msgid "There is no results."
msgstr "Il n'y a pas de résultat."
#: note_kfet/templates/cas/logged.html:8
msgid ""
"<h3>Log In Successful</h3>You have successfully logged into the Central "
@@ -4116,10 +4110,9 @@ msgid ""
"your web browser when you are done accessing services that require "
"authentication!"
msgstr ""
"<h3>Connection réussie</h3>Vous vous êtes bien connecté au Service Central "
"d'Authentification.<br/>Pour des raisons de sécurité, veuillez vous "
"déconnecter et fermer votre navigateur internet une fois que vous aurez fini "
"d'accéder aux services qui requiert une authentification !"
"<h3>Connection réussie</h3>Vous vous êtes bien connecté au Service Central d'Authentification."
"<br/>Pour des raisons de sécurité, veuillez vous déconnecter et fermer votre navigateur internet "
"une fois que vous aurez fini d'accéder aux services qui requiert une authentification !"
#: note_kfet/templates/cas/logged.html:14
msgid "Log me out from all my sessions"
@@ -4365,18 +4358,6 @@ msgstr ""
"d'adhésion. Vous devez également valider votre adresse email en suivant le "
"lien que vous avez reçu."
#~ msgid "Choose {NB_WORDS} words:"
#~ msgstr "Choisissez {NB_WORDS} mots :"
#~ msgid "Deposit amount"
#~ msgstr "Caution"
#~ msgid ""
#~ "Please make sure the check is given before validating the registration"
#~ msgstr ""
#~ "Merci de vous assurer que le chèque a bien été donné avant de valider "
#~ "l'adhésion"
#~ msgid "caution amount"
#~ msgstr "montant de la caution"

View File

@@ -305,8 +305,8 @@ PIC_WIDTH = 200
PIC_RATIO = 1
# Custom phone number format
PHONENUMBER_DB_FORMAT = 'E164'
PHONENUMBER_DEFAULT_REGION = None
PHONENUMBER_DB_FORMAT = 'NATIONAL'
PHONENUMBER_DEFAULT_REGION = 'FR'
# We add custom information to CAS, in order to give a normalized name to other services
CAS_AUTH_CLASS = 'member.auth.CustomAuthUser'

View File

@@ -29,8 +29,6 @@ SPDX-License-Identifier: GPL-3.0-or-later
<link rel="stylesheet" href="{% static "bootstrap4/css/bootstrap.min.css" %}">
<link rel="stylesheet" href="{% static "font-awesome/css/font-awesome.min.css" %}">
<link rel="stylesheet" href="{% static "css/custom.css" %}">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/intl-tel-input@25.5.2/build/css/intlTelInput.css">
{# JQuery, Bootstrap and Turbolinks JavaScript #}
<script src="{% static "jquery/jquery.min.js" %}"></script>
@@ -43,8 +41,6 @@ SPDX-License-Identifier: GPL-3.0-or-later
{# Translation in javascript files #}
<script src="{% static "js/jsi18n/"|add:LANGUAGE_CODE|add:".js" %}"></script>
<script src="https://cdn.jsdelivr.net/npm/intl-tel-input@25.5.2/build/js/intlTelInput.min.js"></script>
{# If extra ressources are needed for a form, load here #}
{% if form.media %}
{{ form.media }}

View File

@@ -31,45 +31,3 @@ SPDX-License-Identifier: GPL-3.0-or-later
</div>
</div>
{% endblock %}
{% block extrajavascript %}
<!-- intl-tel-input CSS/JS -->
<script>
(() => {
const input = document.querySelector("input[name='phone_number']");
const form = document.querySelector("#profile_form");
if (!input || !form) {
console.error("Input phone_number ou form introuvable.");
}
const iti = window.intlTelInput(input, {
initialCountry: "auto",
nationalMode: false,
autoPlaceholder: "off",
geoIpLookup: callback => {
fetch("https://ipapi.co/json")
.then(res => res.json())
.then(data => callback(data.country_code))
.catch(() => callback("fr"));
},
loadUtils: () => import("https://cdn.jsdelivr.net/npm/intl-tel-input@25.5.2/build/js/utils.js"),
});
form.addEventListener("submit", function(e){
if (!input.value.trim()) {
return;
}
const number = iti.getNumber(intlTelInput.utils.numberFormat.E164);
if (number) {
input.value = number;
form.submit();
} else {
e.preventDefault();
input.focus();
}
});
})();
</script>
{% endblock %}