1
0
mirror of https://gitlab.crans.org/bde/nk20 synced 2025-02-27 10:26:28 +00:00

Compare commits

..

No commits in common. "451aa64f33be727f32b011cb8b6d49d2952caf87" and "96784aee3bc28421a271996627012464220b3bf1" have entirely different histories.

16 changed files with 162 additions and 194 deletions

View File

@ -1,5 +1,5 @@
from rest_framework.pagination import PageNumberPagination
class CustomPagination(PageNumberPagination):
page_size_query_param = 'page_size'

View File

@ -325,8 +325,8 @@ class SpecialTransaction(Transaction):
def clean(self):
# SpecialTransaction are only possible with NoteSpecial object
if self.is_credit() == self.is_debit():
raise ValidationError(_("A special transaction is only possible between a"
" Note associated to a payment method and a User or a Club"))
raise(ValidationError(_("A special transaction is only possible between a"
" Note associated to a payment method and a User or a Club")))
@transaction.atomic
def save(self, *args, **kwargs):

View File

@ -9,7 +9,6 @@ from member.models import Club
from note.models import NoteSpecial, Alias
from note_kfet.inputs import AmountInput
class SignUpForm(UserCreationForm):
"""
Pre-register users with all information
@ -45,14 +44,14 @@ class SignUpForm(UserCreationForm):
fields = ('first_name', 'last_name', 'username', 'email', )
# class DeclareSogeAccountOpenedForm(forms.Form):
# soge_account = forms.BooleanField(
# label=_("I declare that I opened or I will open soon a bank account in the Société générale with the BDE "
# "partnership."),
# help_text=_("Warning: this engages you to open your bank account. If you finally decides to don't open your "
# "account, you will have to pay the BDE membership."),
# required=False,
# )
#class DeclareSogeAccountOpenedForm(forms.Form):
# soge_account = forms.BooleanField(
# label=_("I declare that I opened or I will open soon a bank account in the Société générale with the BDE "
# "partnership."),
# help_text=_("Warning: this engages you to open your bank account. If you finally decides to don't open your "
# "account, you will have to pay the BDE membership."),
# required=False,
# )
class WEISignupForm(forms.Form):
@ -118,9 +117,10 @@ class ValidationForm(forms.Form):
# If the bda exists
if Club.objects.filter(name__iexact="bda").exists():
# The user can join the bda club at the inscription
# The user can join the bda club at the inscription
join_bda = forms.BooleanField(
label=_("Join BDA Club"),
required=False,
initial=False,
)

View File

@ -1,6 +1,8 @@
# Copyright (C) 2018-2021 by BDE ENS Paris-Saclay
# SPDX-License-Identifier: GPL-3.0-or-later
from datetime import date, timedelta
from django.contrib.auth.models import User
from django.db.models import Q
from django.test import TestCase
@ -190,7 +192,7 @@ class TestValidateRegistration(TestCase):
# BDE Membership is mandatory
response = self.client.post(reverse("registration:future_user_detail", args=(self.user.pk,)), data=dict(
# soge=False,
# soge=False,
credit_type=NoteSpecial.objects.get(special_type="Chèque").id,
credit_amount=4200,
last_name="TOTO",
@ -204,7 +206,7 @@ class TestValidateRegistration(TestCase):
# Same
response = self.client.post(reverse("registration:future_user_detail", args=(self.user.pk,)), data=dict(
# soge=False,
# soge=False,
credit_type="",
credit_amount=0,
last_name="TOTO",
@ -218,7 +220,7 @@ class TestValidateRegistration(TestCase):
# The BDE membership is not free
response = self.client.post(reverse("registration:future_user_detail", args=(self.user.pk,)), data=dict(
# soge=False,
# soge=False,
credit_type=NoteSpecial.objects.get(special_type="Espèces").id,
credit_amount=0,
last_name="TOTO",
@ -232,7 +234,7 @@ class TestValidateRegistration(TestCase):
# Last and first names are required for a credit
response = self.client.post(reverse("registration:future_user_detail", args=(self.user.pk,)), data=dict(
# soge=False,
# soge=False,
credit_type=NoteSpecial.objects.get(special_type="Chèque").id,
credit_amount=4000,
last_name="",
@ -249,7 +251,7 @@ class TestValidateRegistration(TestCase):
self.user.username = "admïntoto"
self.user.save()
response = self.client.post(reverse("registration:future_user_detail", args=(self.user.pk,)), data=dict(
# soge=False,
# soge=False,
credit_type=NoteSpecial.objects.get(special_type="Chèque").id,
credit_amount=500,
last_name="TOTO",
@ -275,7 +277,7 @@ class TestValidateRegistration(TestCase):
self.user.profile.save()
response = self.client.post(reverse("registration:future_user_detail", args=(self.user.pk,)), data=dict(
# soge=False,
# soge=False,
credit_type=NoteSpecial.objects.get(special_type="Chèque").id,
credit_amount=500,
last_name="TOTO",
@ -312,7 +314,7 @@ class TestValidateRegistration(TestCase):
self.user.profile.save()
response = self.client.post(reverse("registration:future_user_detail", args=(self.user.pk,)), data=dict(
# soge=False,
# soge=False,
credit_type=NoteSpecial.objects.get(special_type="Espèces").id,
credit_amount=4000,
last_name="TOTO",

View File

@ -24,7 +24,7 @@ from permission.models import Role
from permission.views import ProtectQuerysetMixin
from treasury.models import SogeCredit
# from .forms import SignUpForm, ValidationForm, DeclareSogeAccountOpenedForm
#from .forms import SignUpForm, ValidationForm, DeclareSogeAccountOpenedForm
from .forms import SignUpForm, ValidationForm
from .tables import FutureUserTable
from .tokens import email_validation_token
@ -316,8 +316,8 @@ class FutureUserDetailView(ProtectQuerysetMixin, LoginRequiredMixin, FormMixin,
# If the user does not select any payment method, then no credit will be performed.
credit_amount = 0 if credit_type is None else credit_amount
# if fee > credit_amount and not soge:
if fee > credit_amount:
# if fee > credit_amount and not soge:
# Check if the user credits enough money
form.add_error('credit_type',
_("The entered amount is not enough for the memberships, should be at least {}")
@ -352,7 +352,7 @@ class FutureUserDetailView(ProtectQuerysetMixin, LoginRequiredMixin, FormMixin,
quantity=1,
amount=credit_amount,
reason="Crédit " + credit_type.special_type + " (Inscription)",
# reason="Crédit " + ("Société générale" if soge else credit_type.special_type) + " (Inscription)",
# reason="Crédit " + ("Société générale" if soge else credit_type.special_type) + " (Inscription)",
last_name=last_name,
first_name=first_name,
bank=bank,

View File

@ -1,5 +1,6 @@
# Copyright (C) 2018-2023 by BDE ENS Paris-Saclay
# Copyright (C) 2018-2021 by BDE ENS Paris-Saclay
# SPDX-License-Identifier: GPL-3.0-or-later
import datetime
from datetime import date
from django.conf import settings
@ -11,8 +12,7 @@ from django.db.models import Q
from django.template.loader import render_to_string
from django.utils import timezone
from django.utils.translation import gettext_lazy as _
# from member.models import Club, Membership # Club unused because of disabled soge
from member.models import Membership
from member.models import Club, Membership
from note.models import NoteSpecial, SpecialTransaction, MembershipTransaction, NoteUser
@ -326,12 +326,12 @@ class SogeCredit(models.Model):
if self.valid or not self.pk:
return
# Soge do not pay BDE and kfet memberships since 2022
# bde = Club.objects.get(name="BDE")
# kfet = Club.objects.get(name="Kfet")
# bde_qs = Membership.objects.filter(user=self.user, club=bde, date_start__gte=bde.membership_start)
# kfet_qs = Membership.objects.filter(user=self.user, club=kfet, date_start__gte=kfet.membership_start)
bde = Club.objects.get(name="BDE")
kfet = Club.objects.get(name="Kfet")
bde_qs = Membership.objects.filter(user=self.user, club=bde, date_start__gte=bde.membership_start)
kfet_qs = Membership.objects.filter(user=self.user, club=kfet, date_start__gte=kfet.membership_start)
## Soge do not pay BDE and kfet memberships this year (2022-2023)
# if bde_qs.exists():
# m = bde_qs.get()
# if MembershipTransaction.objects.filter(membership=m).exists(): # non-free membership
@ -388,6 +388,7 @@ class SogeCredit(models.Model):
for tr in self.transactions.all():
tr.valid = True
tr._force_save = True
tr.created_at = timezone.now()
tr.save()
@transaction.atomic
@ -436,11 +437,12 @@ class SogeCredit(models.Model):
for tr in self.transactions.all():
tr._force_save = True
tr.valid = True
tr.created_at = timezone.now()
tr.save()
if self.credit_transaction:
# If the soge credit is deleted while the user is not validated yet,
# there is not credit transaction.
# There is a credit transaction if the user declares that no bank account
# There is a credit transaction iff the user declares that no bank account
# was opened after the validation of the account.
self.credit_transaction.valid = False
self.credit_transaction.reason += " (invalide)"

View File

@ -1,4 +1,4 @@
# Copyright (C) 2018-2023 by BDE ENS Paris-Saclay
# Copyright (C) 2018-2021 by BDE ENS Paris-Saclay
# SPDX-License-Identifier: GPL-3.0-or-later
from django import forms
@ -38,7 +38,7 @@ class WEIRegistrationForm(forms.ModelForm):
class Meta:
model = WEIRegistration
exclude = ('wei', 'clothing_cut')
exclude = ('wei', )
widgets = {
"user": Autocomplete(
User,

View File

@ -148,7 +148,7 @@ class WEISurvey2021(WEISurvey):
buses = cls.get_algorithm_class().get_buses()
return sum([cls.get_algorithm_class().get_bus_information(bus).scores[word] for bus in buses]) / buses.count()
# @lru_cache
@lru_cache()
def score(self, bus):
if not self.is_complete():
raise ValueError("Survey is not ended, can't calculate score")
@ -159,11 +159,11 @@ class WEISurvey2021(WEISurvey):
- self.word_mean(getattr(self.information, 'word' + str(i))) for i in range(1, 21)) / 20
return s
# @lru_cache()
@lru_cache()
def scores_per_bus(self):
return {bus: self.score(bus) for bus in self.get_algorithm_class().get_buses()}
# @lru_cache()
@lru_cache()
def ordered_buses(self):
values = list(self.scores_per_bus().items())
values.sort(key=lambda item: -item[1])

View File

@ -14,17 +14,17 @@ from .base import WEISurvey, WEISurveyInformation, WEISurveyAlgorithm, WEIBusInf
from ...models import WEIMembership
WORDS = [
'ABBA', 'After', 'Alcoolique anonyme', 'Ambiance festive', 'Années 2000', 'Apéro', 'Art',
'Baby foot billard biere pong', 'BBQ', 'Before', 'Bière pong', 'Bon enfant', 'Calme', 'Canapé',
'Chanson paillarde', 'Chanson populaire', 'Chartreuse', 'Cheerleader', 'Chill', 'Choré',
'Cinéma', 'Cocktail', 'Comédie musicle', 'Commercial', 'Copaing', 'Danse', 'Dancefloor',
'Electro', 'Fanfare', 'Gin tonic', 'Inclusif', 'Jazz', "Jeux d'alcool", 'Jeux de carte',
'Jeux de rôle', 'Jeux de société', 'JUL', 'Jus de fruit', 'Kfet', 'Kleptomanie assurée',
'LGBTQ+', 'Livre', 'Morning beer', 'Musique', 'NAPS', 'Paillettes', 'Pastis', 'Paté Hénaff',
'Peluche', 'Pena baiona', "Peu d'alcool", 'Pilier de bar', 'PMU', 'Poulpe', 'Punch', 'Rap',
'Réveil', 'Rock', 'Rugby', 'Sandwich', 'Serge', 'Shot', 'Sociable', 'Spectacle', 'Techno',
'Techno house', 'Thérapie Taxi', 'Tradition kchanaises', 'Troisième mi-temps', 'Turn up',
'Vodka', 'Vodka pomme', 'Volley', 'Vomi stratégique'
'ABBA', 'After', 'Alcoolique anonyme', 'Ambiance festive', 'Années 2000', 'Apéro', 'Art',
'Baby foot billard biere pong', 'BBQ', 'Before', 'Bière pong', 'Bon enfant', 'Calme', 'Canapé',
'Chanson paillarde', 'Chanson populaire', 'Chartreuse', 'Cheerleader', 'Chill', 'Choré',
'Cinéma', 'Cocktail', 'Comédie musicle', 'Commercial', 'Copaing', 'Danse', 'Dancefloor',
'Electro', 'Fanfare', 'Gin tonic', 'Inclusif', 'Jazz', "Jeux d'alcool", 'Jeux de carte',
'Jeux de rôle', 'Jeux de société', 'JUL', 'Jus de fruit', 'Kfet', 'Kleptomanie assurée',
'LGBTQ+', 'Livre', 'Morning beer', 'Musique', 'NAPS', 'Paillettes', 'Pastis', 'Paté Hénaff',
'Peluche', 'Pena baiona', "Peu d'alcool", 'Pilier de bar', 'PMU', 'Poulpe', 'Punch', 'Rap',
'Réveil', 'Rock', 'Rugby', 'Sandwich', 'Serge', 'Shot', 'Sociable', 'Spectacle', 'Techno',
'Techno house', 'Thérapie Taxi', 'Tradition kchanaises', 'Troisième mi-temps', 'Turn up',
'Vodka', 'Vodka pomme', 'Volley', 'Vomi stratégique'
]
@ -151,7 +151,7 @@ class WEISurvey2022(WEISurvey):
buses = cls.get_algorithm_class().get_buses()
return sum([cls.get_algorithm_class().get_bus_information(bus).scores[word] for bus in buses]) / buses.count()
# @lru_cache()
@lru_cache()
def score(self, bus):
if not self.is_complete():
raise ValueError("Survey is not ended, can't calculate score")
@ -162,11 +162,11 @@ class WEISurvey2022(WEISurvey):
- self.word_mean(getattr(self.information, 'word' + str(i))) for i in range(1, 21)) / 20
return s
# @lru_cache()
@lru_cache()
def scores_per_bus(self):
return {bus: self.score(bus) for bus in self.get_algorithm_class().get_buses()}
# @lru_cache()
@lru_cache()
def ordered_buses(self):
values = list(self.scores_per_bus().items())
values.sort(key=lambda item: -item[1])

View File

@ -1,18 +0,0 @@
# Generated by Django 2.2.28 on 2023-07-09 09:51
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('wei', '0005_auto_20230128_1850'),
]
operations = [
migrations.AlterField(
model_name='weiregistration',
name='clothing_cut',
field=models.CharField(choices=[('male', 'Male'), ('female', 'Female'), ('unisex', 'Unisex')], default='unisex', max_length=16, verbose_name='clothing cut'),
),
]

View File

@ -1,4 +1,4 @@
# Copyright (C) 2018-2023 by BDE ENS Paris-Saclay
# Copyright (C) 2018-2021 by BDE ENS Paris-Saclay
# SPDX-License-Identifier: GPL-3.0-or-later
import json
@ -209,9 +209,7 @@ class WEIRegistration(models.Model):
choices=(
('male', _("Male")),
('female', _("Female")),
('unisex', _("Unisex")),
),
default='unisex',
verbose_name=_("clothing cut"),
)

View File

@ -56,7 +56,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
<dd class="col-xl-6">{{ registration.get_gender_display }}</dd>
<dt class="col-xl-6">{% trans 'clothing cut'|capfirst %}</dt>
<dd class="col-xl-6">{{ registration.get_clothing_cut_display }}</dd>
<dd class="col-xl-6">{{ registration.clothing_cut }}</dd>
<dt class="col-xl-6">{% trans 'clothing size'|capfirst %}</dt>
<dd class="col-xl-6">{{ registration.clothing_size }}</dd>

View File

@ -448,10 +448,6 @@ Options
"value": "female",
"display_name": "Femme"
}
{
"value": "unisex",
"display_name": "Unisexe"
},
]
},
"clothing_size": {

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-07-09 11:55+0200\n"
"POT-Creation-Date: 2023-07-07 21:25+0200\n"
"PO-Revision-Date: 2020-11-16 20:02+0000\n"
"Last-Translator: bleizi <bleizi@crans.org>\n"
"Language-Team: German <http://translate.ynerant.fr/projects/nk20/nk20/de/>\n"
@ -263,14 +263,14 @@ msgid "Type"
msgstr "Type"
#: apps/activity/tables.py:84 apps/member/forms.py:186
#: apps/registration/forms.py:92 apps/treasury/forms.py:131
#: apps/registration/forms.py:91 apps/treasury/forms.py:131
#: apps/wei/forms/registration.py:104
msgid "Last name"
msgstr "Nachname"
#: apps/activity/tables.py:86 apps/member/forms.py:191
#: apps/note/templates/note/transaction_form.html:138
#: apps/registration/forms.py:97 apps/treasury/forms.py:133
#: apps/registration/forms.py:96 apps/treasury/forms.py:133
#: apps/wei/forms/registration.py:109
msgid "First name"
msgstr "Vorname"
@ -549,7 +549,7 @@ msgid "This image cannot be loaded."
msgstr "Dieses Bild kann nicht geladen werden."
#: apps/member/forms.py:141 apps/member/views.py:103
#: apps/registration/forms.py:34 apps/registration/views.py:266
#: apps/registration/forms.py:33 apps/registration/views.py:266
msgid "An alias with a similar name already exists."
msgstr "Ein ähnliches Alias ist schon benutzt."
@ -561,12 +561,12 @@ msgstr "Mitgliedschaft von der Société Générale bezahlt"
msgid "Check this case if the Société Générale paid the inscription."
msgstr "Die Société Générale die Mitgliedschaft bezahlt."
#: apps/member/forms.py:172 apps/registration/forms.py:79
#: apps/member/forms.py:172 apps/registration/forms.py:78
#: apps/wei/forms/registration.py:91
msgid "Credit type"
msgstr "Kredittype"
#: apps/member/forms.py:173 apps/registration/forms.py:80
#: apps/member/forms.py:173 apps/registration/forms.py:79
#: apps/wei/forms/registration.py:92
msgid "No credit"
msgstr "Kein Kredit"
@ -575,13 +575,13 @@ msgstr "Kein Kredit"
msgid "You can credit the note of the user."
msgstr "Sie dûrfen diese Note kreditieren."
#: apps/member/forms.py:179 apps/registration/forms.py:85
#: apps/member/forms.py:179 apps/registration/forms.py:84
#: apps/wei/forms/registration.py:97
msgid "Credit amount"
msgstr "Kreditanzahl"
#: apps/member/forms.py:196 apps/note/templates/note/transaction_form.html:144
#: apps/registration/forms.py:102 apps/treasury/forms.py:135
#: apps/registration/forms.py:101 apps/treasury/forms.py:135
#: apps/wei/forms/registration.py:114
msgid "Bank"
msgstr "Bank"
@ -1193,7 +1193,7 @@ msgstr "Speichern"
msgid "Registrations"
msgstr "Anmeldung"
#: apps/member/views.py:73 apps/registration/forms.py:24
#: apps/member/views.py:73 apps/registration/forms.py:23
msgid "This address must be valid."
msgstr "Diese Adresse muss gültig sein."
@ -1982,15 +1982,15 @@ msgstr "Alle Rechten"
msgid "registration"
msgstr "Anmeldung"
#: apps/registration/forms.py:40
#: apps/registration/forms.py:39
msgid "This email address is already used."
msgstr "Diese email adresse ist schon benutzt."
#: apps/registration/forms.py:60
#: apps/registration/forms.py:59
msgid "Register to the WEI"
msgstr "Zu WEI anmelden"
#: apps/registration/forms.py:62
#: apps/registration/forms.py:61
msgid ""
"Check this case if you want to register to the WEI. If you hesitate, you "
"will be able to register later, after validating your account in the Kfet."
@ -1999,15 +1999,15 @@ msgstr ""
"falls Zweifel, können Sie sich später nach Bestätigung Ihres Kontos im Kfet "
"registrieren."
#: apps/registration/forms.py:107
#: apps/registration/forms.py:106
msgid "Join BDE Club"
msgstr "BDE Mitglieder werden"
#: apps/registration/forms.py:114
#: apps/registration/forms.py:113
msgid "Join Kfet Club"
msgstr "Kfet Mitglieder werden"
#: apps/registration/forms.py:123
#: apps/registration/forms.py:122
msgid "Join BDA Club"
msgstr "BDA Mitglieder werden"
@ -2311,7 +2311,7 @@ msgstr "spezielle Transaktion Proxies"
msgid "credit transaction"
msgstr "Kredit Transaktion"
#: apps/treasury/models.py:432
#: apps/treasury/models.py:433
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."
@ -2319,16 +2319,16 @@ msgstr ""
"Dieser Benutzer hat nicht genug Geld, um die Mitgliedschaften mit seiner "
"Note zu bezahlen."
#: apps/treasury/models.py:452
#: apps/treasury/models.py:454
#: apps/treasury/templates/treasury/sogecredit_detail.html:10
msgid "Credit from the Société générale"
msgstr "Kredit von der Société générale"
#: apps/treasury/models.py:453
#: apps/treasury/models.py:455
msgid "Credits from the Société générale"
msgstr "Krediten von der Société générale"
#: apps/treasury/models.py:456
#: apps/treasury/models.py:458
#, python-brace-format
msgid "Soge credit for {user}"
msgstr "Kredit von der Société générale für {user}"
@ -2592,7 +2592,7 @@ msgid "The selected user is not validated. Please validate its account first"
msgstr ""
#: apps/wei/forms/registration.py:59 apps/wei/models.py:126
#: apps/wei/models.py:325
#: apps/wei/models.py:323
msgid "bus"
msgstr "Bus"
@ -2717,44 +2717,40 @@ msgstr "Nicht binär"
msgid "gender"
msgstr "Geschlecht"
#: apps/wei/models.py:212
msgid "Unisex"
msgstr "Unisex"
#: apps/wei/models.py:215 apps/wei/templates/wei/weimembership_form.html:58
#: apps/wei/models.py:213 apps/wei/templates/wei/weimembership_form.html:58
msgid "clothing cut"
msgstr "Kleidung Schnitt"
#: apps/wei/models.py:228 apps/wei/templates/wei/weimembership_form.html:61
#: apps/wei/models.py:226 apps/wei/templates/wei/weimembership_form.html:61
msgid "clothing size"
msgstr "Kleidergröße"
#: apps/wei/models.py:234 apps/wei/templates/wei/attribute_bus_1A.html:28
#: apps/wei/models.py:232 apps/wei/templates/wei/attribute_bus_1A.html:28
#: apps/wei/templates/wei/weimembership_form.html:67
msgid "health issues"
msgstr "Gesundheitsprobleme"
#: apps/wei/models.py:239 apps/wei/templates/wei/weimembership_form.html:70
#: apps/wei/models.py:237 apps/wei/templates/wei/weimembership_form.html:70
msgid "emergency contact name"
msgstr "Notfall-Kontakt"
#: apps/wei/models.py:244 apps/wei/templates/wei/weimembership_form.html:73
#: apps/wei/models.py:242 apps/wei/templates/wei/weimembership_form.html:73
msgid "emergency contact phone"
msgstr "Notfallkontakttelefon"
#: apps/wei/models.py:249 apps/wei/templates/wei/weimembership_form.html:52
#: apps/wei/models.py:247 apps/wei/templates/wei/weimembership_form.html:52
msgid "first year"
msgstr "Erste Jahr"
#: apps/wei/models.py:250
#: apps/wei/models.py:248
msgid "Tells if the user is new in the school."
msgstr "Gibt an, ob der USer neu in der Schule ist."
#: apps/wei/models.py:255
#: apps/wei/models.py:253
msgid "registration information"
msgstr "Registrierung Detailen"
#: apps/wei/models.py:256
#: apps/wei/models.py:254
msgid ""
"Information about the registration (buses for old members, survey for the "
"new members), encoded in JSON"
@ -2762,27 +2758,27 @@ msgstr ""
"Informationen zur Registrierung (Busse für alte Mitglieder, Umfrage für neue "
"Mitglieder), verschlüsselt in JSON"
#: apps/wei/models.py:314
#: apps/wei/models.py:312
msgid "WEI User"
msgstr "WEI User"
#: apps/wei/models.py:315
#: apps/wei/models.py:313
msgid "WEI Users"
msgstr "WEI Users"
#: apps/wei/models.py:335
#: apps/wei/models.py:333
msgid "team"
msgstr "Team"
#: apps/wei/models.py:345
#: apps/wei/models.py:343
msgid "WEI registration"
msgstr "WEI Registrierung"
#: apps/wei/models.py:349
#: apps/wei/models.py:347
msgid "WEI membership"
msgstr "WEI Mitgliedschaft"
#: apps/wei/models.py:350
#: apps/wei/models.py:348
msgid "WEI memberships"
msgstr "WEI Mitgliedschaften"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-07-09 11:55+0200\n"
"POT-Creation-Date: 2023-07-07 21:25+0200\n"
"PO-Revision-Date: 2022-04-11 23:12+0200\n"
"Last-Translator: bleizi <bleizi@crans.org>\n"
"Language-Team: \n"
@ -262,14 +262,14 @@ msgid "Type"
msgstr "Tipo"
#: apps/activity/tables.py:84 apps/member/forms.py:186
#: apps/registration/forms.py:92 apps/treasury/forms.py:131
#: apps/registration/forms.py:91 apps/treasury/forms.py:131
#: apps/wei/forms/registration.py:104
msgid "Last name"
msgstr "Apellido"
#: apps/activity/tables.py:86 apps/member/forms.py:191
#: apps/note/templates/note/transaction_form.html:138
#: apps/registration/forms.py:97 apps/treasury/forms.py:133
#: apps/registration/forms.py:96 apps/treasury/forms.py:133
#: apps/wei/forms/registration.py:109
msgid "First name"
msgstr "Nombre"
@ -546,7 +546,7 @@ msgid "This image cannot be loaded."
msgstr "Esta imagen no puede ser cargada."
#: apps/member/forms.py:141 apps/member/views.py:103
#: apps/registration/forms.py:34 apps/registration/views.py:266
#: apps/registration/forms.py:33 apps/registration/views.py:266
msgid "An alias with a similar name already exists."
msgstr "Un alias similar ya existe."
@ -558,12 +558,12 @@ msgstr "Registración pagadas por Société Générale"
msgid "Check this case if the Société Générale paid the inscription."
msgstr "Marcar esta casilla si Société Générale pagó la registración."
#: apps/member/forms.py:172 apps/registration/forms.py:79
#: apps/member/forms.py:172 apps/registration/forms.py:78
#: apps/wei/forms/registration.py:91
msgid "Credit type"
msgstr "Tipo de crédito"
#: apps/member/forms.py:173 apps/registration/forms.py:80
#: apps/member/forms.py:173 apps/registration/forms.py:79
#: apps/wei/forms/registration.py:92
msgid "No credit"
msgstr "No crédito"
@ -572,13 +572,13 @@ msgstr "No crédito"
msgid "You can credit the note of the user."
msgstr "Usted puede acreditar la note del usuario."
#: apps/member/forms.py:179 apps/registration/forms.py:85
#: apps/member/forms.py:179 apps/registration/forms.py:84
#: apps/wei/forms/registration.py:97
msgid "Credit amount"
msgstr "Valor del crédito"
#: apps/member/forms.py:196 apps/note/templates/note/transaction_form.html:144
#: apps/registration/forms.py:102 apps/treasury/forms.py:135
#: apps/registration/forms.py:101 apps/treasury/forms.py:135
#: apps/wei/forms/registration.py:114
msgid "Bank"
msgstr "Banco"
@ -1180,7 +1180,7 @@ msgstr "Guardar cambios"
msgid "Registrations"
msgstr "Registraciones"
#: apps/member/views.py:73 apps/registration/forms.py:24
#: apps/member/views.py:73 apps/registration/forms.py:23
msgid "This address must be valid."
msgstr "Este correo tiene que ser valido."
@ -1963,15 +1963,15 @@ msgstr "Todos los permisos"
msgid "registration"
msgstr "afiliación"
#: apps/registration/forms.py:40
#: apps/registration/forms.py:39
msgid "This email address is already used."
msgstr "Este correo electrónico ya esta utilizado."
#: apps/registration/forms.py:60
#: apps/registration/forms.py:59
msgid "Register to the WEI"
msgstr "Registrarse en el WEI"
#: apps/registration/forms.py:62
#: apps/registration/forms.py:61
msgid ""
"Check this case if you want to register to the WEI. If you hesitate, you "
"will be able to register later, after validating your account in the Kfet."
@ -1979,15 +1979,15 @@ msgstr ""
"Marcar esta casilla si usted quiere registrarse en el WEI. Si duda, podrá "
"registrarse más tarde, después de validar su cuenta Note Kfet."
#: apps/registration/forms.py:107
#: apps/registration/forms.py:106
msgid "Join BDE Club"
msgstr "Afiliarse al club BDE"
#: apps/registration/forms.py:114
#: apps/registration/forms.py:113
msgid "Join Kfet Club"
msgstr "Afiliarse al club Kfet"
#: apps/registration/forms.py:123
#: apps/registration/forms.py:122
msgid "Join BDA Club"
msgstr "Afiliarse al club BDA"
@ -2289,7 +2289,7 @@ msgstr "proxys de transacciones especiales"
msgid "credit transaction"
msgstr "transacción de crédito"
#: apps/treasury/models.py:432
#: apps/treasury/models.py:433
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."
@ -2298,16 +2298,16 @@ msgstr ""
"afiliaciones. Por favor pídelo acreditar su note antes de invalidar este "
"crédito."
#: apps/treasury/models.py:452
#: apps/treasury/models.py:454
#: apps/treasury/templates/treasury/sogecredit_detail.html:10
msgid "Credit from the Société générale"
msgstr "Crédito de la Société Générale"
#: apps/treasury/models.py:453
#: apps/treasury/models.py:455
msgid "Credits from the Société générale"
msgstr "Créditos de la Société Générale"
#: apps/treasury/models.py:456
#: apps/treasury/models.py:458
#, python-brace-format
msgid "Soge credit for {user}"
msgstr "Crédito de la Société Générale para {user}"
@ -2562,7 +2562,7 @@ msgstr ""
"El usuario seleccionado no ha sido validado. Validar esta cuenta primero"
#: apps/wei/forms/registration.py:59 apps/wei/models.py:126
#: apps/wei/models.py:325
#: apps/wei/models.py:323
msgid "bus"
msgstr "bus"
@ -2687,44 +2687,40 @@ msgstr "No binari@"
msgid "gender"
msgstr "género"
#: apps/wei/models.py:212
msgid "Unisex"
msgstr "Unisex"
#: apps/wei/models.py:215 apps/wei/templates/wei/weimembership_form.html:58
#: apps/wei/models.py:213 apps/wei/templates/wei/weimembership_form.html:58
msgid "clothing cut"
msgstr "forma de ropa"
#: apps/wei/models.py:228 apps/wei/templates/wei/weimembership_form.html:61
#: apps/wei/models.py:226 apps/wei/templates/wei/weimembership_form.html:61
msgid "clothing size"
msgstr "medida de ropa"
#: apps/wei/models.py:234 apps/wei/templates/wei/attribute_bus_1A.html:28
#: apps/wei/models.py:232 apps/wei/templates/wei/attribute_bus_1A.html:28
#: apps/wei/templates/wei/weimembership_form.html:67
msgid "health issues"
msgstr "problemas de salud"
#: apps/wei/models.py:239 apps/wei/templates/wei/weimembership_form.html:70
#: apps/wei/models.py:237 apps/wei/templates/wei/weimembership_form.html:70
msgid "emergency contact name"
msgstr "nombre del contacto de emergencia"
#: apps/wei/models.py:244 apps/wei/templates/wei/weimembership_form.html:73
#: apps/wei/models.py:242 apps/wei/templates/wei/weimembership_form.html:73
msgid "emergency contact phone"
msgstr "teléfono del contacto de emergencia"
#: apps/wei/models.py:249 apps/wei/templates/wei/weimembership_form.html:52
#: apps/wei/models.py:247 apps/wei/templates/wei/weimembership_form.html:52
msgid "first year"
msgstr "primer año"
#: apps/wei/models.py:250
#: apps/wei/models.py:248
msgid "Tells if the user is new in the school."
msgstr "Indica si el usuario es nuevo en la escuela."
#: apps/wei/models.py:255
#: apps/wei/models.py:253
msgid "registration information"
msgstr "informaciones sobre la afiliación"
#: apps/wei/models.py:256
#: apps/wei/models.py:254
msgid ""
"Information about the registration (buses for old members, survey for the "
"new members), encoded in JSON"
@ -2732,27 +2728,27 @@ msgstr ""
"Informaciones sobre la afiliacion (bus para miembros ancianos, cuestionario "
"para los nuevos miembros), registrado en JSON"
#: apps/wei/models.py:314
#: apps/wei/models.py:312
msgid "WEI User"
msgstr "Participante WEI"
#: apps/wei/models.py:315
#: apps/wei/models.py:313
msgid "WEI Users"
msgstr "Participantes WEI"
#: apps/wei/models.py:335
#: apps/wei/models.py:333
msgid "team"
msgstr "equipo"
#: apps/wei/models.py:345
#: apps/wei/models.py:343
msgid "WEI registration"
msgstr "Apuntación al WEI"
#: apps/wei/models.py:349
#: apps/wei/models.py:347
msgid "WEI membership"
msgstr "Afiliación al WEI"
#: apps/wei/models.py:350
#: apps/wei/models.py:348
msgid "WEI memberships"
msgstr "Afiliaciones al WEI"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-07-09 11:55+0200\n"
"POT-Creation-Date: 2023-07-07 21:25+0200\n"
"PO-Revision-Date: 2022-04-11 22:05+0200\n"
"Last-Translator: bleizi <bleizi@crans.org>\n"
"Language-Team: French <http://translate.ynerant.fr/projects/nk20/nk20/fr/>\n"
@ -263,14 +263,14 @@ msgid "Type"
msgstr "Type"
#: apps/activity/tables.py:84 apps/member/forms.py:186
#: apps/registration/forms.py:92 apps/treasury/forms.py:131
#: apps/registration/forms.py:91 apps/treasury/forms.py:131
#: apps/wei/forms/registration.py:104
msgid "Last name"
msgstr "Nom de famille"
#: apps/activity/tables.py:86 apps/member/forms.py:191
#: apps/note/templates/note/transaction_form.html:138
#: apps/registration/forms.py:97 apps/treasury/forms.py:133
#: apps/registration/forms.py:96 apps/treasury/forms.py:133
#: apps/wei/forms/registration.py:109
msgid "First name"
msgstr "Prénom"
@ -548,7 +548,7 @@ msgid "This image cannot be loaded."
msgstr "Cette image ne peut pas être chargée."
#: apps/member/forms.py:141 apps/member/views.py:103
#: apps/registration/forms.py:34 apps/registration/views.py:266
#: apps/registration/forms.py:33 apps/registration/views.py:266
msgid "An alias with a similar name already exists."
msgstr "Un alias avec un nom similaire existe déjà."
@ -560,12 +560,12 @@ msgstr "Inscription payée par la Société générale"
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:172 apps/registration/forms.py:79
#: apps/member/forms.py:172 apps/registration/forms.py:78
#: apps/wei/forms/registration.py:91
msgid "Credit type"
msgstr "Type de rechargement"
#: apps/member/forms.py:173 apps/registration/forms.py:80
#: apps/member/forms.py:173 apps/registration/forms.py:79
#: apps/wei/forms/registration.py:92
msgid "No credit"
msgstr "Pas de rechargement"
@ -574,13 +574,13 @@ msgstr "Pas de rechargement"
msgid "You can credit the note of the user."
msgstr "Vous pouvez créditer la note de l'utilisateur avant l'adhésion."
#: apps/member/forms.py:179 apps/registration/forms.py:85
#: apps/member/forms.py:179 apps/registration/forms.py:84
#: apps/wei/forms/registration.py:97
msgid "Credit amount"
msgstr "Montant à créditer"
#: apps/member/forms.py:196 apps/note/templates/note/transaction_form.html:144
#: apps/registration/forms.py:102 apps/treasury/forms.py:135
#: apps/registration/forms.py:101 apps/treasury/forms.py:135
#: apps/wei/forms/registration.py:114
msgid "Bank"
msgstr "Banque"
@ -1183,7 +1183,7 @@ msgstr "Sauvegarder les changements"
msgid "Registrations"
msgstr "Inscriptions"
#: apps/member/views.py:73 apps/registration/forms.py:24
#: apps/member/views.py:73 apps/registration/forms.py:23
msgid "This address must be valid."
msgstr "Cette adresse doit être valide."
@ -1972,15 +1972,15 @@ msgstr "Tous les droits"
msgid "registration"
msgstr "inscription"
#: apps/registration/forms.py:40
#: apps/registration/forms.py:39
msgid "This email address is already used."
msgstr "Cet email est déjà pris."
#: apps/registration/forms.py:60
#: apps/registration/forms.py:59
msgid "Register to the WEI"
msgstr "S'inscrire au WEI"
#: apps/registration/forms.py:62
#: apps/registration/forms.py:61
msgid ""
"Check this case if you want to register to the WEI. If you hesitate, you "
"will be able to register later, after validating your account in the Kfet."
@ -1989,15 +1989,15 @@ msgstr ""
"pourrez toujours vous inscrire plus tard, après avoir validé votre compte à "
"la Kfet."
#: apps/registration/forms.py:107
#: apps/registration/forms.py:106
msgid "Join BDE Club"
msgstr "Adhérer au club BDE"
#: apps/registration/forms.py:114
#: apps/registration/forms.py:113
msgid "Join Kfet Club"
msgstr "Adhérer au club Kfet"
#: apps/registration/forms.py:123
#: apps/registration/forms.py:122
msgid "Join BDA Club"
msgstr "Adhérer au club BDA"
@ -2297,7 +2297,7 @@ msgstr "proxys de transactions spéciales"
msgid "credit transaction"
msgstr "transaction de crédit"
#: apps/treasury/models.py:432
#: apps/treasury/models.py:433
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."
@ -2305,16 +2305,16 @@ msgstr ""
"Cet utilisateur n'a pas assez d'argent pour payer les adhésions avec sa "
"note. Merci de lui demander de recharger sa note avant d'invalider ce crédit."
#: apps/treasury/models.py:452
#: apps/treasury/models.py:454
#: apps/treasury/templates/treasury/sogecredit_detail.html:10
msgid "Credit from the Société générale"
msgstr "Crédit de la Société générale"
#: apps/treasury/models.py:453
#: apps/treasury/models.py:455
msgid "Credits from the Société générale"
msgstr "Crédits de la Société générale"
#: apps/treasury/models.py:456
#: apps/treasury/models.py:458
#, python-brace-format
msgid "Soge credit for {user}"
msgstr "Crédit de la société générale pour l'utilisateur {user}"
@ -2574,7 +2574,7 @@ msgstr ""
"compte"
#: apps/wei/forms/registration.py:59 apps/wei/models.py:126
#: apps/wei/models.py:325
#: apps/wei/models.py:323
msgid "bus"
msgstr "bus"
@ -2699,44 +2699,40 @@ msgstr "Non-binaire"
msgid "gender"
msgstr "genre"
#: apps/wei/models.py:212
msgid "Unisex"
msgstr "Unisexe"
#: apps/wei/models.py:215 apps/wei/templates/wei/weimembership_form.html:58
#: apps/wei/models.py:213 apps/wei/templates/wei/weimembership_form.html:58
msgid "clothing cut"
msgstr "coupe de vêtement"
#: apps/wei/models.py:228 apps/wei/templates/wei/weimembership_form.html:61
#: apps/wei/models.py:226 apps/wei/templates/wei/weimembership_form.html:61
msgid "clothing size"
msgstr "taille de vêtement"
#: apps/wei/models.py:234 apps/wei/templates/wei/attribute_bus_1A.html:28
#: apps/wei/models.py:232 apps/wei/templates/wei/attribute_bus_1A.html:28
#: apps/wei/templates/wei/weimembership_form.html:67
msgid "health issues"
msgstr "problèmes de santé"
#: apps/wei/models.py:239 apps/wei/templates/wei/weimembership_form.html:70
#: apps/wei/models.py:237 apps/wei/templates/wei/weimembership_form.html:70
msgid "emergency contact name"
msgstr "nom du contact en cas d'urgence"
#: apps/wei/models.py:244 apps/wei/templates/wei/weimembership_form.html:73
#: apps/wei/models.py:242 apps/wei/templates/wei/weimembership_form.html:73
msgid "emergency contact phone"
msgstr "téléphone du contact en cas d'urgence"
#: apps/wei/models.py:249 apps/wei/templates/wei/weimembership_form.html:52
#: apps/wei/models.py:247 apps/wei/templates/wei/weimembership_form.html:52
msgid "first year"
msgstr "première année"
#: apps/wei/models.py:250
#: apps/wei/models.py:248
msgid "Tells if the user is new in the school."
msgstr "Indique si l'utilisateur est nouveau dans l'école."
#: apps/wei/models.py:255
#: apps/wei/models.py:253
msgid "registration information"
msgstr "informations sur l'inscription"
#: apps/wei/models.py:256
#: apps/wei/models.py:254
msgid ""
"Information about the registration (buses for old members, survey for the "
"new members), encoded in JSON"
@ -2744,27 +2740,27 @@ msgstr ""
"Informations sur l'inscription (bus pour les 2A+, questionnaire pour les "
"1A), encodées en JSON"
#: apps/wei/models.py:314
#: apps/wei/models.py:312
msgid "WEI User"
msgstr "Participant au WEI"
#: apps/wei/models.py:315
#: apps/wei/models.py:313
msgid "WEI Users"
msgstr "Participants au WEI"
#: apps/wei/models.py:335
#: apps/wei/models.py:333
msgid "team"
msgstr "équipe"
#: apps/wei/models.py:345
#: apps/wei/models.py:343
msgid "WEI registration"
msgstr "Inscription au WEI"
#: apps/wei/models.py:349
#: apps/wei/models.py:347
msgid "WEI membership"
msgstr "Adhésion au WEI"
#: apps/wei/models.py:350
#: apps/wei/models.py:348
msgid "WEI memberships"
msgstr "Adhésions au WEI"