mirror of
https://gitlab.crans.org/bde/nk20
synced 2024-12-23 07:52:23 +00:00
Merge branch 'registration2023' into 'main'
Registration2023 See merge request bde/nk20!213
This commit is contained in:
commit
b42f5afeab
@ -1,5 +1,5 @@
|
||||
from rest_framework.pagination import PageNumberPagination
|
||||
|
||||
|
||||
class CustomPagination(PageNumberPagination):
|
||||
page_size_query_param = 'page_size'
|
||||
|
||||
|
@ -263,7 +263,7 @@ class Club(models.Model):
|
||||
|
||||
today = datetime.date.today()
|
||||
|
||||
if (today - self.membership_start).days >= 365:
|
||||
while (today - self.membership_start).days >= 365:
|
||||
if self.membership_start:
|
||||
self.membership_start = datetime.date(self.membership_start.year + 1,
|
||||
self.membership_start.month, self.membership_start.day)
|
||||
|
@ -183,7 +183,7 @@ class TestMemberships(TestCase):
|
||||
club = Club.objects.get(name="Kfet")
|
||||
else:
|
||||
club = Club.objects.create(
|
||||
name="Second club " + ("with BDE" if bde_parent else "without BDE"),
|
||||
name="Second club without BDE",
|
||||
parent_club=None,
|
||||
email="newclub@example.com",
|
||||
require_memberships=True,
|
||||
|
@ -753,6 +753,10 @@ class ClubAddMemberView(ProtectQuerysetMixin, ProtectedCreateView):
|
||||
club = old_membership.club
|
||||
user = old_membership.user
|
||||
|
||||
# Update club membership date
|
||||
if PermissionBackend.check_perm(self.request, "member.change_club_membership_start", club):
|
||||
club.update_membership_dates()
|
||||
|
||||
form.instance.club = club
|
||||
|
||||
# Get form data
|
||||
|
@ -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):
|
||||
|
@ -5,6 +5,7 @@ from django import forms
|
||||
from django.contrib.auth.forms import UserCreationForm
|
||||
from django.contrib.auth.models import User
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
from member.models import Club
|
||||
from note.models import NoteSpecial, Alias
|
||||
from note_kfet.inputs import AmountInput
|
||||
|
||||
@ -44,14 +45,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):
|
||||
@ -67,11 +68,11 @@ class ValidationForm(forms.Form):
|
||||
"""
|
||||
Validate the inscription of the new users and pay memberships.
|
||||
"""
|
||||
soge = forms.BooleanField(
|
||||
label=_("Inscription paid by Société Générale"),
|
||||
required=False,
|
||||
help_text=_("Check this case if the Société Générale paid the inscription."),
|
||||
)
|
||||
# soge = forms.BooleanField(
|
||||
# label=_("Inscription paid by Société Générale"),
|
||||
# required=False,
|
||||
# help_text=_("Check this case if the Société Générale paid the inscription."),
|
||||
# )
|
||||
|
||||
credit_type = forms.ModelChoiceField(
|
||||
queryset=NoteSpecial.objects,
|
||||
@ -114,3 +115,12 @@ class ValidationForm(forms.Form):
|
||||
required=False,
|
||||
initial=True,
|
||||
)
|
||||
|
||||
# If the bda exists
|
||||
if Club.objects.filter(name__iexact="bda").exists():
|
||||
# The user can join the bda club at the inscription
|
||||
join_bda = forms.BooleanField(
|
||||
label=_("Join BDA Club"),
|
||||
required=False,
|
||||
initial=False,
|
||||
)
|
||||
|
@ -57,11 +57,13 @@ SPDX-License-Identifier: GPL-3.0-or-later
|
||||
<h4> {% trans "Validate account" %}</h4>
|
||||
</div>
|
||||
|
||||
{% comment "Soge not for membership (only WEI)" %}
|
||||
{% if declare_soge_account %}
|
||||
<div class="alert alert-info">
|
||||
{% trans "The user declared that he/she opened a bank account in the Société générale." %}
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endcomment %}
|
||||
|
||||
<div class="card-body" id="profile_infos">
|
||||
{% csrf_token %}
|
||||
@ -76,6 +78,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
{% comment "Soge not for membership (only WEI)" %}
|
||||
{% block extrajavascript %}
|
||||
<script>
|
||||
soge_field = $("#id_soge");
|
||||
@ -118,3 +121,4 @@ SPDX-License-Identifier: GPL-3.0-or-later
|
||||
{% endif %}
|
||||
</script>
|
||||
{% endblock %}
|
||||
{% endcomment %}
|
||||
|
@ -190,7 +190,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 +204,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 +218,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 +232,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 +249,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 +275,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",
|
||||
@ -290,6 +290,7 @@ class TestValidateRegistration(TestCase):
|
||||
self.assertTrue(NoteUser.objects.filter(user=self.user).exists())
|
||||
self.assertTrue(Membership.objects.filter(club__name="BDE", user=self.user).exists())
|
||||
self.assertFalse(Membership.objects.filter(club__name="Kfet", user=self.user).exists())
|
||||
self.assertFalse(Membership.objects.filter(club__name__iexact="BDA", user=self.user).exists())
|
||||
self.assertFalse(SogeCredit.objects.filter(user=self.user).exists())
|
||||
self.assertEqual(Transaction.objects.filter(
|
||||
Q(source=self.user.note) | Q(destination=self.user.note)).count(), 2)
|
||||
@ -311,7 +312,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",
|
||||
@ -326,6 +327,7 @@ class TestValidateRegistration(TestCase):
|
||||
self.assertTrue(NoteUser.objects.filter(user=self.user).exists())
|
||||
self.assertTrue(Membership.objects.filter(club__name="BDE", user=self.user).exists())
|
||||
self.assertTrue(Membership.objects.filter(club__name="Kfet", user=self.user).exists())
|
||||
self.assertFalse(Membership.objects.filter(club__name__iexact="BDA", user=self.user).exists())
|
||||
self.assertFalse(SogeCredit.objects.filter(user=self.user).exists())
|
||||
self.assertEqual(Transaction.objects.filter(
|
||||
Q(source=self.user.note) | Q(destination=self.user.note)).count(), 3)
|
||||
@ -333,42 +335,43 @@ class TestValidateRegistration(TestCase):
|
||||
response = self.client.get(self.user.profile.get_absolute_url())
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
def test_validate_kfet_registration_with_soge(self):
|
||||
"""
|
||||
The user joins the BDE and the Kfet, but the membership is paid by the Société générale.
|
||||
"""
|
||||
response = self.client.get(reverse("registration:future_user_detail", args=(self.user.pk,)))
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
response = self.client.get(self.user.profile.get_absolute_url())
|
||||
self.assertEqual(response.status_code, 404)
|
||||
|
||||
self.user.profile.email_confirmed = True
|
||||
self.user.profile.save()
|
||||
|
||||
response = self.client.post(reverse("registration:future_user_detail", args=(self.user.pk,)), data=dict(
|
||||
soge=True,
|
||||
credit_type=NoteSpecial.objects.get(special_type="Espèces").id,
|
||||
credit_amount=4000,
|
||||
last_name="TOTO",
|
||||
first_name="Toto",
|
||||
bank="Société générale",
|
||||
join_bde=True,
|
||||
join_kfet=True,
|
||||
))
|
||||
self.assertRedirects(response, self.user.profile.get_absolute_url(), 302, 200)
|
||||
self.user.profile.refresh_from_db()
|
||||
self.assertTrue(self.user.profile.registration_valid)
|
||||
self.assertTrue(NoteUser.objects.filter(user=self.user).exists())
|
||||
self.assertTrue(Membership.objects.filter(club__name="BDE", user=self.user).exists())
|
||||
self.assertTrue(Membership.objects.filter(club__name="Kfet", user=self.user).exists())
|
||||
self.assertTrue(SogeCredit.objects.filter(user=self.user).exists())
|
||||
self.assertEqual(Transaction.objects.filter(
|
||||
Q(source=self.user.note) | Q(destination=self.user.note)).count(), 3)
|
||||
self.assertFalse(Transaction.objects.filter(valid=True).exists())
|
||||
|
||||
response = self.client.get(self.user.profile.get_absolute_url())
|
||||
self.assertEqual(response.status_code, 200)
|
||||
# def test_validate_kfet_registration_with_soge(self):
|
||||
# """
|
||||
# The user joins the BDE and the Kfet, but the membership is paid by the Société générale.
|
||||
# """
|
||||
# response = self.client.get(reverse("registration:future_user_detail", args=(self.user.pk,)))
|
||||
# self.assertEqual(response.status_code, 200)
|
||||
#
|
||||
# response = self.client.get(self.user.profile.get_absolute_url())
|
||||
# self.assertEqual(response.status_code, 404)
|
||||
#
|
||||
# self.user.profile.email_confirmed = True
|
||||
# self.user.profile.save()
|
||||
#
|
||||
# response = self.client.post(reverse("registration:future_user_detail", args=(self.user.pk,)), data=dict(
|
||||
# soge=True,
|
||||
# credit_type=NoteSpecial.objects.get(special_type="Espèces").id,
|
||||
# credit_amount=4000,
|
||||
# last_name="TOTO",
|
||||
# first_name="Toto",
|
||||
# bank="Société générale",
|
||||
# join_bde=True,
|
||||
# join_kfet=True,
|
||||
# ))
|
||||
# self.assertRedirects(response, self.user.profile.get_absolute_url(), 302, 200)
|
||||
# self.user.profile.refresh_from_db()
|
||||
# self.assertTrue(self.user.profile.registration_valid)
|
||||
# self.assertTrue(NoteUser.objects.filter(user=self.user).exists())
|
||||
# self.assertTrue(Membership.objects.filter(club__name="BDE", user=self.user).exists())
|
||||
# self.assertTrue(Membership.objects.filter(club__name="Kfet", user=self.user).exists())
|
||||
# self.assertFalse(Membership.objects.filter(club__name__iexact="BDA", user=self.user).exists())
|
||||
# self.assertTrue(SogeCredit.objects.filter(user=self.user).exists())
|
||||
# self.assertEqual(Transaction.objects.filter(
|
||||
# Q(source=self.user.note) | Q(destination=self.user.note)).count(), 3)
|
||||
# self.assertFalse(Transaction.objects.filter(valid=True).exists())
|
||||
#
|
||||
# response = self.client.get(self.user.profile.get_absolute_url())
|
||||
# self.assertEqual(response.status_code, 200)
|
||||
|
||||
def test_invalidate_registration(self):
|
||||
"""
|
||||
|
@ -24,7 +24,8 @@ 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
|
||||
|
||||
@ -42,7 +43,7 @@ class UserCreateView(CreateView):
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super().get_context_data(**kwargs)
|
||||
context["profile_form"] = self.second_form(self.request.POST if self.request.POST else None)
|
||||
context["soge_form"] = DeclareSogeAccountOpenedForm(self.request.POST if self.request.POST else None)
|
||||
# context["soge_form"] = DeclareSogeAccountOpenedForm(self.request.POST if self.request.POST else None)
|
||||
del context["profile_form"].fields["section"]
|
||||
del context["profile_form"].fields["report_frequency"]
|
||||
del context["profile_form"].fields["last_report"]
|
||||
@ -75,12 +76,12 @@ class UserCreateView(CreateView):
|
||||
|
||||
user.profile.send_email_validation_link()
|
||||
|
||||
soge_form = DeclareSogeAccountOpenedForm(self.request.POST)
|
||||
if "soge_account" in soge_form.data and soge_form.data["soge_account"]:
|
||||
# If the user declares that a bank account got opened, prepare the soge credit to warn treasurers
|
||||
soge_credit = SogeCredit(user=user)
|
||||
soge_credit._force_save = True
|
||||
soge_credit.save()
|
||||
# soge_form = DeclareSogeAccountOpenedForm(self.request.POST)
|
||||
# if "soge_account" in soge_form.data and soge_form.data["soge_account"]:
|
||||
# # If the user declares that a bank account got opened, prepare the soge credit to warn treasurers
|
||||
# soge_credit = SogeCredit(user=user)
|
||||
# soge_credit._force_save = True
|
||||
# soge_credit.save()
|
||||
|
||||
return super().form_valid(form)
|
||||
|
||||
@ -237,9 +238,12 @@ class FutureUserDetailView(ProtectQuerysetMixin, LoginRequiredMixin, FormMixin,
|
||||
fee += bde.membership_fee_paid if user.profile.paid else bde.membership_fee_unpaid
|
||||
kfet = Club.objects.get(name="Kfet")
|
||||
fee += kfet.membership_fee_paid if user.profile.paid else kfet.membership_fee_unpaid
|
||||
if Club.objects.filter(name__iexact="BDA").exists():
|
||||
bda = Club.objects.get(name__iexact="BDA")
|
||||
fee += bda.membership_fee_paid if user.profile.paid else bda.membership_fee_unpaid
|
||||
ctx["total_fee"] = "{:.02f}".format(fee / 100, )
|
||||
|
||||
ctx["declare_soge_account"] = SogeCredit.objects.filter(user=user).exists()
|
||||
# ctx["declare_soge_account"] = SogeCredit.objects.filter(user=user).exists()
|
||||
|
||||
return ctx
|
||||
|
||||
@ -262,8 +266,13 @@ class FutureUserDetailView(ProtectQuerysetMixin, LoginRequiredMixin, FormMixin,
|
||||
form.add_error(None, _("An alias with a similar name already exists."))
|
||||
return self.form_invalid(form)
|
||||
|
||||
# Check if BDA exist to propose membership at regisration
|
||||
bda_exists = False
|
||||
if Club.objects.filter(name__iexact="BDA").exists():
|
||||
bda_exists = True
|
||||
|
||||
# Get form data
|
||||
soge = form.cleaned_data["soge"]
|
||||
# soge = form.cleaned_data["soge"]
|
||||
credit_type = form.cleaned_data["credit_type"]
|
||||
credit_amount = form.cleaned_data["credit_amount"]
|
||||
last_name = form.cleaned_data["last_name"]
|
||||
@ -271,11 +280,13 @@ class FutureUserDetailView(ProtectQuerysetMixin, LoginRequiredMixin, FormMixin,
|
||||
bank = form.cleaned_data["bank"]
|
||||
join_bde = form.cleaned_data["join_bde"]
|
||||
join_kfet = form.cleaned_data["join_kfet"]
|
||||
if bda_exists:
|
||||
join_bda = form.cleaned_data["join_bda"]
|
||||
|
||||
if soge:
|
||||
# If Société Générale pays the inscription, the user automatically joins the two clubs.
|
||||
join_bde = True
|
||||
join_kfet = True
|
||||
# if soge:
|
||||
# # If Société Générale pays the inscription, the user automatically joins the two clubs.
|
||||
# join_bde = True
|
||||
# join_kfet = True
|
||||
|
||||
if not join_bde:
|
||||
# This software belongs to the BDE.
|
||||
@ -292,15 +303,21 @@ class FutureUserDetailView(ProtectQuerysetMixin, LoginRequiredMixin, FormMixin,
|
||||
kfet_fee = kfet.membership_fee_paid if user.profile.paid else kfet.membership_fee_unpaid
|
||||
# Add extra fee for the full membership
|
||||
fee += kfet_fee if join_kfet else 0
|
||||
if bda_exists:
|
||||
bda = Club.objects.get(name__iexact="BDA")
|
||||
bda_fee = bda.membership_fee_paid if user.profile.paid else bda.membership_fee_unpaid
|
||||
# Add extra fee for the bda membership
|
||||
fee += bda_fee if join_bda else 0
|
||||
|
||||
# If the bank pays, then we don't credit now. Treasurers will validate the transaction
|
||||
# and credit the note later.
|
||||
credit_type = None if soge else credit_type
|
||||
# # If the bank pays, then we don't credit now. Treasurers will validate the transaction
|
||||
# # and credit the note later.
|
||||
# credit_type = None if soge else credit_type
|
||||
|
||||
# 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 and not soge:
|
||||
if fee > credit_amount:
|
||||
# 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 {}")
|
||||
@ -320,12 +337,12 @@ class FutureUserDetailView(ProtectQuerysetMixin, LoginRequiredMixin, FormMixin,
|
||||
user.profile.save()
|
||||
user.refresh_from_db()
|
||||
|
||||
if not soge and SogeCredit.objects.filter(user=user).exists():
|
||||
# If the user declared that a bank account was opened but in the validation form the SoGé case was
|
||||
# unchecked, delete the associated credit
|
||||
soge_credit = SogeCredit.objects.get(user=user)
|
||||
soge_credit._force_delete = True
|
||||
soge_credit.delete()
|
||||
# if not soge and SogeCredit.objects.filter(user=user).exists():
|
||||
# # If the user declared that a bank account was opened but in the validation form the SoGé case was
|
||||
# # unchecked, delete the associated credit
|
||||
# soge_credit = SogeCredit.objects.get(user=user)
|
||||
# soge_credit._force_delete = True
|
||||
# soge_credit.delete()
|
||||
|
||||
if credit_type is not None and credit_amount > 0:
|
||||
# Credit the note
|
||||
@ -334,7 +351,8 @@ class FutureUserDetailView(ProtectQuerysetMixin, LoginRequiredMixin, FormMixin,
|
||||
destination=user.note,
|
||||
quantity=1,
|
||||
amount=credit_amount,
|
||||
reason="Crédit " + ("Société générale" if soge else credit_type.special_type) + " (Inscription)",
|
||||
reason="Crédit " + 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,
|
||||
@ -348,8 +366,8 @@ class FutureUserDetailView(ProtectQuerysetMixin, LoginRequiredMixin, FormMixin,
|
||||
user=user,
|
||||
fee=bde_fee,
|
||||
)
|
||||
if soge:
|
||||
membership._soge = True
|
||||
# if soge:
|
||||
# membership._soge = True
|
||||
membership.save()
|
||||
membership.refresh_from_db()
|
||||
membership.roles.add(Role.objects.get(name="Adhérent BDE"))
|
||||
@ -362,17 +380,29 @@ class FutureUserDetailView(ProtectQuerysetMixin, LoginRequiredMixin, FormMixin,
|
||||
user=user,
|
||||
fee=kfet_fee,
|
||||
)
|
||||
if soge:
|
||||
membership._soge = True
|
||||
# if soge:
|
||||
# membership._soge = True
|
||||
membership.save()
|
||||
membership.refresh_from_db()
|
||||
membership.roles.add(Role.objects.get(name="Adhérent Kfet"))
|
||||
membership.save()
|
||||
|
||||
if soge:
|
||||
soge_credit = SogeCredit.objects.get(user=user)
|
||||
# Update the credit transaction amount
|
||||
soge_credit.save()
|
||||
if bda_exists and join_bda:
|
||||
# Create membership for the user to the BDA starting today
|
||||
membership = Membership(
|
||||
club=bda,
|
||||
user=user,
|
||||
fee=bda_fee,
|
||||
)
|
||||
membership.save()
|
||||
membership.refresh_from_db()
|
||||
membership.roles.add(Role.objects.get(name="Membre de club"))
|
||||
membership.save()
|
||||
|
||||
# if soge:
|
||||
# soge_credit = SogeCredit.objects.get(user=user)
|
||||
# # Update the credit transaction amount
|
||||
# soge_credit.save()
|
||||
|
||||
return ret
|
||||
|
||||
|
@ -1,6 +1,5 @@
|
||||
# Copyright (C) 2018-2021 by BDE ENS Paris-Saclay
|
||||
# Copyright (C) 2018-2023 by BDE ENS Paris-Saclay
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
import datetime
|
||||
from datetime import date
|
||||
|
||||
from django.conf import settings
|
||||
@ -12,7 +11,8 @@ 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
|
||||
# from member.models import Club, Membership # Club unused because of disabled soge
|
||||
from member.models import 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
|
||||
|
||||
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 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)
|
||||
|
||||
## 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,7 +388,6 @@ 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
|
||||
@ -437,12 +436,11 @@ 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 iff the user declares that no bank account
|
||||
# There is a credit transaction if 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)"
|
||||
|
@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2018-2021 by BDE ENS Paris-Saclay
|
||||
# Copyright (C) 2018-2023 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', )
|
||||
exclude = ('wei', 'clothing_cut')
|
||||
widgets = {
|
||||
"user": Autocomplete(
|
||||
User,
|
||||
|
@ -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])
|
||||
|
@ -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])
|
||||
|
18
apps/wei/migrations/0006_unisex_clothing_cut.py
Normal file
18
apps/wei/migrations/0006_unisex_clothing_cut.py
Normal file
@ -0,0 +1,18 @@
|
||||
# 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'),
|
||||
),
|
||||
]
|
18
apps/wei/migrations/0007_help_text_emergency_contact.py
Normal file
18
apps/wei/migrations/0007_help_text_emergency_contact.py
Normal file
@ -0,0 +1,18 @@
|
||||
# Generated by Django 2.2.28 on 2023-07-09 12:46
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('wei', '0006_unisex_clothing_cut'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='weiregistration',
|
||||
name='emergency_contact_name',
|
||||
field=models.CharField(help_text='The emergency contact must not be a WEI participant', max_length=255, verbose_name='emergency contact name'),
|
||||
),
|
||||
]
|
@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2018-2021 by BDE ENS Paris-Saclay
|
||||
# Copyright (C) 2018-2023 by BDE ENS Paris-Saclay
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
import json
|
||||
@ -209,7 +209,9 @@ class WEIRegistration(models.Model):
|
||||
choices=(
|
||||
('male', _("Male")),
|
||||
('female', _("Female")),
|
||||
('unisex', _("Unisex")),
|
||||
),
|
||||
default='unisex',
|
||||
verbose_name=_("clothing cut"),
|
||||
)
|
||||
|
||||
@ -235,6 +237,7 @@ class WEIRegistration(models.Model):
|
||||
emergency_contact_name = models.CharField(
|
||||
max_length=255,
|
||||
verbose_name=_("emergency contact name"),
|
||||
help_text=_("The emergency contact must not be a WEI participant")
|
||||
)
|
||||
|
||||
emergency_contact_phone = PhoneNumberField(
|
||||
|
@ -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.clothing_cut }}</dd>
|
||||
<dd class="col-xl-6">{{ registration.get_clothing_cut_display }}</dd>
|
||||
|
||||
<dt class="col-xl-6">{% trans 'clothing size'|capfirst %}</dt>
|
||||
<dd class="col-xl-6">{{ registration.clothing_size }}</dd>
|
||||
|
@ -448,6 +448,10 @@ Options
|
||||
"value": "female",
|
||||
"display_name": "Femme"
|
||||
}
|
||||
{
|
||||
"value": "unisex",
|
||||
"display_name": "Unisexe"
|
||||
},
|
||||
]
|
||||
},
|
||||
"clothing_size": {
|
||||
|
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-03-31 17:08+0200\n"
|
||||
"POT-Creation-Date: 2023-07-09 14:46+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"
|
||||
@ -115,7 +115,7 @@ msgid "type"
|
||||
msgstr "Type"
|
||||
|
||||
#: apps/activity/models.py:89 apps/logs/models.py:22 apps/member/models.py:307
|
||||
#: apps/note/models/notes.py:148 apps/treasury/models.py:286
|
||||
#: apps/note/models/notes.py:148 apps/treasury/models.py:287
|
||||
#: apps/wei/models.py:173 apps/wei/templates/wei/attribute_bus_1A.html:13
|
||||
#: apps/wei/templates/wei/survey.html:15
|
||||
msgid "user"
|
||||
@ -258,19 +258,19 @@ msgstr "Eingetreten um "
|
||||
msgid "remove"
|
||||
msgstr "entfernen"
|
||||
|
||||
#: apps/activity/tables.py:82 apps/note/forms.py:68 apps/treasury/models.py:200
|
||||
#: apps/activity/tables.py:82 apps/note/forms.py:68 apps/treasury/models.py:201
|
||||
msgid "Type"
|
||||
msgstr "Type"
|
||||
|
||||
#: apps/activity/tables.py:84 apps/member/forms.py:186
|
||||
#: apps/registration/forms.py:91 apps/treasury/forms.py:131
|
||||
#: apps/registration/forms.py:92 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:96 apps/treasury/forms.py:133
|
||||
#: apps/registration/forms.py:97 apps/treasury/forms.py:133
|
||||
#: apps/wei/forms/registration.py:109
|
||||
msgid "First name"
|
||||
msgstr "Vorname"
|
||||
@ -549,24 +549,24 @@ 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:33 apps/registration/views.py:262
|
||||
#: apps/registration/forms.py:34 apps/registration/views.py:266
|
||||
msgid "An alias with a similar name already exists."
|
||||
msgstr "Ein ähnliches Alias ist schon benutzt."
|
||||
|
||||
#: apps/member/forms.py:165 apps/registration/forms.py:71
|
||||
#: apps/member/forms.py:165
|
||||
msgid "Inscription paid by Société Générale"
|
||||
msgstr "Mitgliedschaft von der Société Générale bezahlt"
|
||||
|
||||
#: apps/member/forms.py:167 apps/registration/forms.py:73
|
||||
#: apps/member/forms.py:167
|
||||
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:78
|
||||
#: apps/member/forms.py:172 apps/registration/forms.py:79
|
||||
#: apps/wei/forms/registration.py:91
|
||||
msgid "Credit type"
|
||||
msgstr "Kredittype"
|
||||
|
||||
#: apps/member/forms.py:173 apps/registration/forms.py:79
|
||||
#: apps/member/forms.py:173 apps/registration/forms.py:80
|
||||
#: 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:84
|
||||
#: apps/member/forms.py:179 apps/registration/forms.py:85
|
||||
#: 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:101 apps/treasury/forms.py:135
|
||||
#: apps/registration/forms.py:102 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:23
|
||||
#: apps/member/views.py:73 apps/registration/forms.py:24
|
||||
msgid "This address must be valid."
|
||||
msgstr "Diese Adresse muss gültig sein."
|
||||
|
||||
@ -1249,11 +1249,11 @@ msgstr "Die Mitgliedschaft muss nach {:%m-%d-Y} anfängen."
|
||||
msgid "The membership must begin before {:%m-%d-%Y}."
|
||||
msgstr "Die Mitgliedschaft muss vor {:%m-%d-Y} anfängen."
|
||||
|
||||
#: apps/member/views.py:876
|
||||
#: apps/member/views.py:880
|
||||
msgid "Manage roles of an user in the club"
|
||||
msgstr "Rollen in diesen Club bearbeiten"
|
||||
|
||||
#: apps/member/views.py:901
|
||||
#: apps/member/views.py:905
|
||||
msgid "Members of the club"
|
||||
msgstr "Mitlglieder dieses Club"
|
||||
|
||||
@ -1570,7 +1570,7 @@ msgstr "Sondertranskationen"
|
||||
msgid "membership transaction"
|
||||
msgstr "Mitgliedschafttransaktion"
|
||||
|
||||
#: apps/note/models/transactions.py:385 apps/treasury/models.py:293
|
||||
#: apps/note/models/transactions.py:385 apps/treasury/models.py:294
|
||||
msgid "membership transactions"
|
||||
msgstr "Mitgliedschaftttransaktionen"
|
||||
|
||||
@ -1689,7 +1689,7 @@ msgid "Amount"
|
||||
msgstr "Anzahl"
|
||||
|
||||
#: apps/note/templates/note/transaction_form.html:132
|
||||
#: apps/treasury/models.py:55
|
||||
#: apps/treasury/models.py:56
|
||||
msgid "Name"
|
||||
msgstr "Name"
|
||||
|
||||
@ -1982,29 +1982,15 @@ msgstr "Alle Rechten"
|
||||
msgid "registration"
|
||||
msgstr "Anmeldung"
|
||||
|
||||
#: apps/registration/forms.py:39
|
||||
#: apps/registration/forms.py:40
|
||||
msgid "This email address is already used."
|
||||
msgstr "Diese email adresse ist schon benutzt."
|
||||
|
||||
#: apps/registration/forms.py:49
|
||||
#, fuzzy
|
||||
#| msgid "You already opened an account in the Société générale."
|
||||
msgid ""
|
||||
"I declare that I opened or I will open soon a bank account in the Société "
|
||||
"générale with the BDE partnership."
|
||||
msgstr "Sie haben bereits ein Konto in der Société générale eröffnet."
|
||||
|
||||
#: apps/registration/forms.py:51
|
||||
msgid ""
|
||||
"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."
|
||||
msgstr ""
|
||||
|
||||
#: apps/registration/forms.py:59
|
||||
#: apps/registration/forms.py:60
|
||||
msgid "Register to the WEI"
|
||||
msgstr "Zu WEI anmelden"
|
||||
|
||||
#: apps/registration/forms.py:61
|
||||
#: apps/registration/forms.py:62
|
||||
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."
|
||||
@ -2013,14 +1999,18 @@ msgstr ""
|
||||
"falls Zweifel, können Sie sich später nach Bestätigung Ihres Kontos im Kfet "
|
||||
"registrieren."
|
||||
|
||||
#: apps/registration/forms.py:106
|
||||
#: apps/registration/forms.py:107
|
||||
msgid "Join BDE Club"
|
||||
msgstr "BDE Mitglieder werden"
|
||||
|
||||
#: apps/registration/forms.py:113
|
||||
#: apps/registration/forms.py:114
|
||||
msgid "Join Kfet Club"
|
||||
msgstr "Kfet Mitglieder werden"
|
||||
|
||||
#: apps/registration/forms.py:123
|
||||
msgid "Join BDA Club"
|
||||
msgstr "BDA Mitglieder werden"
|
||||
|
||||
#: apps/registration/templates/registration/email_validation_complete.html:15
|
||||
msgid "Your email have successfully been validated."
|
||||
msgstr "Ihre E-Mail wurde erfolgreich validiert."
|
||||
@ -2069,14 +2059,14 @@ msgstr "Registrierung löschen"
|
||||
msgid "Validate account"
|
||||
msgstr "Konto validieren"
|
||||
|
||||
#: apps/registration/templates/registration/future_profile_detail.html:62
|
||||
#: apps/registration/templates/registration/future_profile_detail.html:63
|
||||
#, fuzzy
|
||||
#| msgid "You already opened an account in the Société générale."
|
||||
msgid ""
|
||||
"The user declared that he/she opened a bank account in the Société générale."
|
||||
msgstr "Sie haben bereits ein Konto in der Société générale eröffnet."
|
||||
|
||||
#: apps/registration/templates/registration/future_profile_detail.html:71
|
||||
#: apps/registration/templates/registration/future_profile_detail.html:73
|
||||
#: apps/wei/templates/wei/weimembership_form.html:127
|
||||
#: apps/wei/templates/wei/weimembership_form.html:186
|
||||
msgid "Validate registration"
|
||||
@ -2128,54 +2118,54 @@ msgstr "Danke"
|
||||
msgid "The Note Kfet team."
|
||||
msgstr "Die NoteKfet Team."
|
||||
|
||||
#: apps/registration/views.py:40
|
||||
#: apps/registration/views.py:41
|
||||
msgid "Register new user"
|
||||
msgstr "Neuen User registrieren"
|
||||
|
||||
#: apps/registration/views.py:98
|
||||
#: apps/registration/views.py:99
|
||||
msgid "Email validation"
|
||||
msgstr "Email validierung"
|
||||
|
||||
#: apps/registration/views.py:100
|
||||
#: apps/registration/views.py:101
|
||||
msgid "Validate email"
|
||||
msgstr "Email validieren"
|
||||
|
||||
#: apps/registration/views.py:144
|
||||
#: apps/registration/views.py:145
|
||||
msgid "Email validation unsuccessful"
|
||||
msgstr "Email validierung unerfolgreich"
|
||||
|
||||
#: apps/registration/views.py:155
|
||||
#: apps/registration/views.py:156
|
||||
msgid "Email validation email sent"
|
||||
msgstr "Validierungsemail wurde gesendet"
|
||||
|
||||
#: apps/registration/views.py:163
|
||||
#: apps/registration/views.py:164
|
||||
msgid "Resend email validation link"
|
||||
msgstr "E-Mail-Validierungslink erneut senden"
|
||||
|
||||
#: apps/registration/views.py:181
|
||||
#: apps/registration/views.py:182
|
||||
msgid "Pre-registered users list"
|
||||
msgstr "Vorregistrierte Userliste"
|
||||
|
||||
#: apps/registration/views.py:205
|
||||
#: apps/registration/views.py:206
|
||||
msgid "Unregistered users"
|
||||
msgstr "Unregistrierte Users"
|
||||
|
||||
#: apps/registration/views.py:218
|
||||
#: apps/registration/views.py:219
|
||||
msgid "Registration detail"
|
||||
msgstr "Registrierung Detailen"
|
||||
|
||||
#: apps/registration/views.py:282
|
||||
#: apps/registration/views.py:293
|
||||
msgid "You must join the BDE."
|
||||
msgstr "Sie müssen die BDE beitreten."
|
||||
|
||||
#: apps/registration/views.py:306
|
||||
#: apps/registration/views.py:323
|
||||
msgid ""
|
||||
"The entered amount is not enough for the memberships, should be at least {}"
|
||||
msgstr ""
|
||||
"Der eingegebene Betrag reicht für die Mitgliedschaft nicht aus, sollte "
|
||||
"mindestens {} betragen"
|
||||
|
||||
#: apps/registration/views.py:387
|
||||
#: apps/registration/views.py:417
|
||||
msgid "Invalidate pre-registration"
|
||||
msgstr "Ungültige Vorregistrierung"
|
||||
|
||||
@ -2183,7 +2173,7 @@ msgstr "Ungültige Vorregistrierung"
|
||||
msgid "Treasury"
|
||||
msgstr "Quaestor"
|
||||
|
||||
#: apps/treasury/forms.py:26 apps/treasury/models.py:94
|
||||
#: apps/treasury/forms.py:26 apps/treasury/models.py:95
|
||||
#: apps/treasury/templates/treasury/invoice_form.html:22
|
||||
msgid "This invoice is locked and can no longer be edited."
|
||||
msgstr "Diese Rechnung ist gesperrt und kann nicht mehr bearbeitet werden."
|
||||
@ -2196,7 +2186,7 @@ msgstr "Überweisung ist bereits geschlossen."
|
||||
msgid "You can't change the type of the remittance."
|
||||
msgstr "Sie können die Art der Überweisung nicht ändern."
|
||||
|
||||
#: apps/treasury/forms.py:125 apps/treasury/models.py:268
|
||||
#: apps/treasury/forms.py:125 apps/treasury/models.py:269
|
||||
#: apps/treasury/tables.py:97 apps/treasury/tables.py:105
|
||||
#: apps/treasury/templates/treasury/invoice_list.html:16
|
||||
#: apps/treasury/templates/treasury/remittance_list.html:16
|
||||
@ -2212,112 +2202,112 @@ msgstr "Keine beigefügte Überweisung"
|
||||
msgid "Invoice identifier"
|
||||
msgstr "Rechnungskennung"
|
||||
|
||||
#: apps/treasury/models.py:41
|
||||
#: apps/treasury/models.py:42
|
||||
msgid "BDE"
|
||||
msgstr "BDE"
|
||||
|
||||
#: apps/treasury/models.py:46
|
||||
#: apps/treasury/models.py:47
|
||||
msgid "Object"
|
||||
msgstr "Objekt"
|
||||
|
||||
#: apps/treasury/models.py:50
|
||||
#: apps/treasury/models.py:51
|
||||
msgid "Description"
|
||||
msgstr "Beschreibung"
|
||||
|
||||
#: apps/treasury/models.py:59
|
||||
#: apps/treasury/models.py:60
|
||||
msgid "Address"
|
||||
msgstr "Adresse"
|
||||
|
||||
#: apps/treasury/models.py:64 apps/treasury/models.py:194
|
||||
#: apps/treasury/models.py:65 apps/treasury/models.py:195
|
||||
msgid "Date"
|
||||
msgstr "Datum"
|
||||
|
||||
#: apps/treasury/models.py:68
|
||||
#: apps/treasury/models.py:69
|
||||
msgid "Acquitted"
|
||||
msgstr "Bezahlt"
|
||||
|
||||
#: apps/treasury/models.py:73
|
||||
#: apps/treasury/models.py:74
|
||||
msgid "Locked"
|
||||
msgstr "Gesperrt"
|
||||
|
||||
#: apps/treasury/models.py:74
|
||||
#: apps/treasury/models.py:75
|
||||
msgid "An invoice can't be edited when it is locked."
|
||||
msgstr "Eine Rechnung kann nicht bearbeitet werden, wenn sie gesperrt ist."
|
||||
|
||||
#: apps/treasury/models.py:80
|
||||
#: apps/treasury/models.py:81
|
||||
msgid "tex source"
|
||||
msgstr "Tex Quelle"
|
||||
|
||||
#: apps/treasury/models.py:114 apps/treasury/models.py:130
|
||||
#: apps/treasury/models.py:115 apps/treasury/models.py:131
|
||||
msgid "invoice"
|
||||
msgstr "Rechnung"
|
||||
|
||||
#: apps/treasury/models.py:115
|
||||
#: apps/treasury/models.py:116
|
||||
msgid "invoices"
|
||||
msgstr "Rechnungen"
|
||||
|
||||
#: apps/treasury/models.py:118
|
||||
#: apps/treasury/models.py:119
|
||||
#, python-brace-format
|
||||
msgid "Invoice #{id}"
|
||||
msgstr "Rechnung #{id}"
|
||||
|
||||
#: apps/treasury/models.py:135
|
||||
#: apps/treasury/models.py:136
|
||||
msgid "Designation"
|
||||
msgstr "Bezeichnung"
|
||||
|
||||
#: apps/treasury/models.py:141
|
||||
#: apps/treasury/models.py:142
|
||||
msgid "Quantity"
|
||||
msgstr "Qualität"
|
||||
|
||||
#: apps/treasury/models.py:146
|
||||
#: apps/treasury/models.py:147
|
||||
msgid "Unit price"
|
||||
msgstr "Einzelpreis"
|
||||
|
||||
#: apps/treasury/models.py:162
|
||||
#: apps/treasury/models.py:163
|
||||
msgid "product"
|
||||
msgstr "Produkt"
|
||||
|
||||
#: apps/treasury/models.py:163
|
||||
#: apps/treasury/models.py:164
|
||||
msgid "products"
|
||||
msgstr "Produkten"
|
||||
|
||||
#: apps/treasury/models.py:183
|
||||
#: apps/treasury/models.py:184
|
||||
msgid "remittance type"
|
||||
msgstr "Überweisungstyp"
|
||||
|
||||
#: apps/treasury/models.py:184
|
||||
#: apps/treasury/models.py:185
|
||||
msgid "remittance types"
|
||||
msgstr "Überweisungstypen"
|
||||
|
||||
#: apps/treasury/models.py:205
|
||||
#: apps/treasury/models.py:206
|
||||
msgid "Comment"
|
||||
msgstr "Kommentar"
|
||||
|
||||
#: apps/treasury/models.py:210
|
||||
#: apps/treasury/models.py:211
|
||||
msgid "Closed"
|
||||
msgstr "Geschlossen"
|
||||
|
||||
#: apps/treasury/models.py:214
|
||||
#: apps/treasury/models.py:215
|
||||
msgid "remittance"
|
||||
msgstr "Überweisung"
|
||||
|
||||
#: apps/treasury/models.py:215
|
||||
#: apps/treasury/models.py:216
|
||||
msgid "remittances"
|
||||
msgstr "Überweisungen"
|
||||
|
||||
#: apps/treasury/models.py:248
|
||||
#: apps/treasury/models.py:249
|
||||
msgid "Remittance #{:d}: {}"
|
||||
msgstr "Überweisung #{:d}:{}"
|
||||
|
||||
#: apps/treasury/models.py:272
|
||||
#: apps/treasury/models.py:273
|
||||
msgid "special transaction proxy"
|
||||
msgstr "spezielle Transaktion Proxy"
|
||||
|
||||
#: apps/treasury/models.py:273
|
||||
#: apps/treasury/models.py:274
|
||||
msgid "special transaction proxies"
|
||||
msgstr "spezielle Transaktion Proxies"
|
||||
|
||||
#: apps/treasury/models.py:299
|
||||
#: apps/treasury/models.py:300
|
||||
msgid "credit transaction"
|
||||
msgstr "Kredit Transaktion"
|
||||
|
||||
@ -2329,16 +2319,16 @@ msgstr ""
|
||||
"Dieser Benutzer hat nicht genug Geld, um die Mitgliedschaften mit seiner "
|
||||
"Note zu bezahlen."
|
||||
|
||||
#: apps/treasury/models.py:453
|
||||
#: apps/treasury/models.py:452
|
||||
#: 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:454
|
||||
#: apps/treasury/models.py:453
|
||||
msgid "Credits from the Société générale"
|
||||
msgstr "Krediten von der Société générale"
|
||||
|
||||
#: apps/treasury/models.py:457
|
||||
#: apps/treasury/models.py:456
|
||||
#, python-brace-format
|
||||
msgid "Soge credit for {user}"
|
||||
msgstr "Kredit von der Société générale für {user}"
|
||||
@ -2602,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:323
|
||||
#: apps/wei/models.py:326
|
||||
msgid "bus"
|
||||
msgstr "Bus"
|
||||
|
||||
@ -2727,40 +2717,48 @@ msgstr "Nicht binär"
|
||||
msgid "gender"
|
||||
msgstr "Geschlecht"
|
||||
|
||||
#: apps/wei/models.py:213 apps/wei/templates/wei/weimembership_form.html:58
|
||||
#: apps/wei/models.py:212
|
||||
msgid "Unisex"
|
||||
msgstr "Unisex"
|
||||
|
||||
#: apps/wei/models.py:215 apps/wei/templates/wei/weimembership_form.html:58
|
||||
msgid "clothing cut"
|
||||
msgstr "Kleidung Schnitt"
|
||||
|
||||
#: apps/wei/models.py:226 apps/wei/templates/wei/weimembership_form.html:61
|
||||
#: apps/wei/models.py:228 apps/wei/templates/wei/weimembership_form.html:61
|
||||
msgid "clothing size"
|
||||
msgstr "Kleidergröße"
|
||||
|
||||
#: apps/wei/models.py:232 apps/wei/templates/wei/attribute_bus_1A.html:28
|
||||
#: apps/wei/models.py:234 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:237 apps/wei/templates/wei/weimembership_form.html:70
|
||||
#: apps/wei/models.py:239 apps/wei/templates/wei/weimembership_form.html:70
|
||||
msgid "emergency contact name"
|
||||
msgstr "Notfall-Kontakt"
|
||||
|
||||
#: apps/wei/models.py:242 apps/wei/templates/wei/weimembership_form.html:73
|
||||
#: apps/wei/models.py:240
|
||||
msgid "The emergency contact must not be a WEI participant"
|
||||
msgstr "Der Notfallkontakt darf kein WEI-Teilnehmer sein"
|
||||
|
||||
#: apps/wei/models.py:245 apps/wei/templates/wei/weimembership_form.html:73
|
||||
msgid "emergency contact phone"
|
||||
msgstr "Notfallkontakttelefon"
|
||||
|
||||
#: apps/wei/models.py:247 apps/wei/templates/wei/weimembership_form.html:52
|
||||
#: apps/wei/models.py:250 apps/wei/templates/wei/weimembership_form.html:52
|
||||
msgid "first year"
|
||||
msgstr "Erste Jahr"
|
||||
|
||||
#: apps/wei/models.py:248
|
||||
#: apps/wei/models.py:251
|
||||
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:253
|
||||
#: apps/wei/models.py:256
|
||||
msgid "registration information"
|
||||
msgstr "Registrierung Detailen"
|
||||
|
||||
#: apps/wei/models.py:254
|
||||
#: apps/wei/models.py:257
|
||||
msgid ""
|
||||
"Information about the registration (buses for old members, survey for the "
|
||||
"new members), encoded in JSON"
|
||||
@ -2768,27 +2766,27 @@ msgstr ""
|
||||
"Informationen zur Registrierung (Busse für alte Mitglieder, Umfrage für neue "
|
||||
"Mitglieder), verschlüsselt in JSON"
|
||||
|
||||
#: apps/wei/models.py:312
|
||||
#: apps/wei/models.py:315
|
||||
msgid "WEI User"
|
||||
msgstr "WEI User"
|
||||
|
||||
#: apps/wei/models.py:313
|
||||
#: apps/wei/models.py:316
|
||||
msgid "WEI Users"
|
||||
msgstr "WEI Users"
|
||||
|
||||
#: apps/wei/models.py:333
|
||||
#: apps/wei/models.py:336
|
||||
msgid "team"
|
||||
msgstr "Team"
|
||||
|
||||
#: apps/wei/models.py:343
|
||||
#: apps/wei/models.py:346
|
||||
msgid "WEI registration"
|
||||
msgstr "WEI Registrierung"
|
||||
|
||||
#: apps/wei/models.py:347
|
||||
#: apps/wei/models.py:350
|
||||
msgid "WEI membership"
|
||||
msgstr "WEI Mitgliedschaft"
|
||||
|
||||
#: apps/wei/models.py:348
|
||||
#: apps/wei/models.py:351
|
||||
msgid "WEI memberships"
|
||||
msgstr "WEI Mitgliedschaften"
|
||||
|
||||
@ -3612,6 +3610,13 @@ msgstr ""
|
||||
"müssen Ihre E-Mail-Adresse auch überprüfen, indem Sie dem Link folgen, den "
|
||||
"Sie erhalten haben."
|
||||
|
||||
#, fuzzy
|
||||
#~| msgid "You already opened an account in the Société générale."
|
||||
#~ msgid ""
|
||||
#~ "I declare that I opened or I will open soon a bank account in the Société "
|
||||
#~ "générale with the BDE partnership."
|
||||
#~ msgstr "Sie haben bereits ein Konto in der Société générale eröffnet."
|
||||
|
||||
#~ msgid "This user didn't give her/his caution check."
|
||||
#~ msgstr "Dieser User hat seine / ihre Vorsicht nicht überprüft."
|
||||
|
||||
|
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-03-31 17:08+0200\n"
|
||||
"POT-Creation-Date: 2023-07-09 14:46+0200\n"
|
||||
"PO-Revision-Date: 2022-04-11 23:12+0200\n"
|
||||
"Last-Translator: bleizi <bleizi@crans.org>\n"
|
||||
"Language-Team: \n"
|
||||
@ -114,7 +114,7 @@ msgid "type"
|
||||
msgstr "tipo"
|
||||
|
||||
#: apps/activity/models.py:89 apps/logs/models.py:22 apps/member/models.py:307
|
||||
#: apps/note/models/notes.py:148 apps/treasury/models.py:286
|
||||
#: apps/note/models/notes.py:148 apps/treasury/models.py:287
|
||||
#: apps/wei/models.py:173 apps/wei/templates/wei/attribute_bus_1A.html:13
|
||||
#: apps/wei/templates/wei/survey.html:15
|
||||
msgid "user"
|
||||
@ -257,19 +257,19 @@ msgstr "Entrado el "
|
||||
msgid "remove"
|
||||
msgstr "quitar"
|
||||
|
||||
#: apps/activity/tables.py:82 apps/note/forms.py:68 apps/treasury/models.py:200
|
||||
#: apps/activity/tables.py:82 apps/note/forms.py:68 apps/treasury/models.py:201
|
||||
msgid "Type"
|
||||
msgstr "Tipo"
|
||||
|
||||
#: apps/activity/tables.py:84 apps/member/forms.py:186
|
||||
#: apps/registration/forms.py:91 apps/treasury/forms.py:131
|
||||
#: apps/registration/forms.py:92 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:96 apps/treasury/forms.py:133
|
||||
#: apps/registration/forms.py:97 apps/treasury/forms.py:133
|
||||
#: apps/wei/forms/registration.py:109
|
||||
msgid "First name"
|
||||
msgstr "Nombre"
|
||||
@ -546,24 +546,24 @@ 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:33 apps/registration/views.py:262
|
||||
#: apps/registration/forms.py:34 apps/registration/views.py:266
|
||||
msgid "An alias with a similar name already exists."
|
||||
msgstr "Un alias similar ya existe."
|
||||
|
||||
#: apps/member/forms.py:165 apps/registration/forms.py:71
|
||||
#: apps/member/forms.py:165
|
||||
msgid "Inscription paid by Société Générale"
|
||||
msgstr "Registración pagadas por Société Générale"
|
||||
|
||||
#: apps/member/forms.py:167 apps/registration/forms.py:73
|
||||
#: apps/member/forms.py:167
|
||||
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:78
|
||||
#: apps/member/forms.py:172 apps/registration/forms.py:79
|
||||
#: apps/wei/forms/registration.py:91
|
||||
msgid "Credit type"
|
||||
msgstr "Tipo de crédito"
|
||||
|
||||
#: apps/member/forms.py:173 apps/registration/forms.py:79
|
||||
#: apps/member/forms.py:173 apps/registration/forms.py:80
|
||||
#: 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:84
|
||||
#: apps/member/forms.py:179 apps/registration/forms.py:85
|
||||
#: 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:101 apps/treasury/forms.py:135
|
||||
#: apps/registration/forms.py:102 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:23
|
||||
#: apps/member/views.py:73 apps/registration/forms.py:24
|
||||
msgid "This address must be valid."
|
||||
msgstr "Este correo tiene que ser valido."
|
||||
|
||||
@ -1236,11 +1236,11 @@ msgstr "La afiliación tiene que empezar después del {:%d-%m-%Y}."
|
||||
msgid "The membership must begin before {:%m-%d-%Y}."
|
||||
msgstr "La afiliación tiene que empezar antes del {:%d-%m-%Y}."
|
||||
|
||||
#: apps/member/views.py:876
|
||||
#: apps/member/views.py:880
|
||||
msgid "Manage roles of an user in the club"
|
||||
msgstr "Gestionar los papeles de un usuario en el club"
|
||||
|
||||
#: apps/member/views.py:901
|
||||
#: apps/member/views.py:905
|
||||
msgid "Members of the club"
|
||||
msgstr "Miembros del club"
|
||||
|
||||
@ -1557,7 +1557,7 @@ msgstr "Transacciones especiales"
|
||||
msgid "membership transaction"
|
||||
msgstr "transacción de afiliación"
|
||||
|
||||
#: apps/note/models/transactions.py:385 apps/treasury/models.py:293
|
||||
#: apps/note/models/transactions.py:385 apps/treasury/models.py:294
|
||||
msgid "membership transactions"
|
||||
msgstr "transacciones de afiliación"
|
||||
|
||||
@ -1676,7 +1676,7 @@ msgid "Amount"
|
||||
msgstr "Monto"
|
||||
|
||||
#: apps/note/templates/note/transaction_form.html:132
|
||||
#: apps/treasury/models.py:55
|
||||
#: apps/treasury/models.py:56
|
||||
msgid "Name"
|
||||
msgstr "Nombre"
|
||||
|
||||
@ -1963,31 +1963,15 @@ msgstr "Todos los permisos"
|
||||
msgid "registration"
|
||||
msgstr "afiliación"
|
||||
|
||||
#: apps/registration/forms.py:39
|
||||
#: apps/registration/forms.py:40
|
||||
msgid "This email address is already used."
|
||||
msgstr "Este correo electrónico ya esta utilizado."
|
||||
|
||||
#: apps/registration/forms.py:49
|
||||
msgid ""
|
||||
"I declare that I opened or I will open soon a bank account in the Société "
|
||||
"générale with the BDE partnership."
|
||||
msgstr ""
|
||||
"Declaro que ya abrió una cuenta a la Société Générale en colaboración con el "
|
||||
"BDE."
|
||||
|
||||
#: apps/registration/forms.py:51
|
||||
msgid ""
|
||||
"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."
|
||||
msgstr ""
|
||||
"Cuidado : esto le obliga abrir su cuenta bancaria. Si cambia de idea y no "
|
||||
"abre su cuenta bancaria, tendrá que pagar su afiliación al BDE."
|
||||
|
||||
#: apps/registration/forms.py:59
|
||||
#: apps/registration/forms.py:60
|
||||
msgid "Register to the WEI"
|
||||
msgstr "Registrarse en el WEI"
|
||||
|
||||
#: apps/registration/forms.py:61
|
||||
#: apps/registration/forms.py:62
|
||||
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."
|
||||
@ -1995,14 +1979,18 @@ 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:106
|
||||
#: apps/registration/forms.py:107
|
||||
msgid "Join BDE Club"
|
||||
msgstr "Afiliarse al club BDE"
|
||||
|
||||
#: apps/registration/forms.py:113
|
||||
#: apps/registration/forms.py:114
|
||||
msgid "Join Kfet Club"
|
||||
msgstr "Afiliarse al club Kfet"
|
||||
|
||||
#: apps/registration/forms.py:123
|
||||
msgid "Join BDA Club"
|
||||
msgstr "Afiliarse al club BDA"
|
||||
|
||||
#: apps/registration/templates/registration/email_validation_complete.html:15
|
||||
msgid "Your email have successfully been validated."
|
||||
msgstr "Su correo electrónico fue validado con éxito."
|
||||
@ -2051,12 +2039,12 @@ msgstr "Suprimir afiliación"
|
||||
msgid "Validate account"
|
||||
msgstr "Validar la cuenta"
|
||||
|
||||
#: apps/registration/templates/registration/future_profile_detail.html:62
|
||||
#: apps/registration/templates/registration/future_profile_detail.html:63
|
||||
msgid ""
|
||||
"The user declared that he/she opened a bank account in the Société générale."
|
||||
msgstr "El usuario declara que ya abrió una cuenta a la Société Générale."
|
||||
|
||||
#: apps/registration/templates/registration/future_profile_detail.html:71
|
||||
#: apps/registration/templates/registration/future_profile_detail.html:73
|
||||
#: apps/wei/templates/wei/weimembership_form.html:127
|
||||
#: apps/wei/templates/wei/weimembership_form.html:186
|
||||
msgid "Validate registration"
|
||||
@ -2108,54 +2096,54 @@ msgstr "Gracias"
|
||||
msgid "The Note Kfet team."
|
||||
msgstr "El equipo Note Kfet."
|
||||
|
||||
#: apps/registration/views.py:40
|
||||
#: apps/registration/views.py:41
|
||||
msgid "Register new user"
|
||||
msgstr "Registrar un nuevo usuario"
|
||||
|
||||
#: apps/registration/views.py:98
|
||||
#: apps/registration/views.py:99
|
||||
msgid "Email validation"
|
||||
msgstr "Validación del correo electrónico"
|
||||
|
||||
#: apps/registration/views.py:100
|
||||
#: apps/registration/views.py:101
|
||||
msgid "Validate email"
|
||||
msgstr "Validar el correo electrónico"
|
||||
|
||||
#: apps/registration/views.py:144
|
||||
#: apps/registration/views.py:145
|
||||
msgid "Email validation unsuccessful"
|
||||
msgstr "La validación del correo electrónico fracasó"
|
||||
|
||||
#: apps/registration/views.py:155
|
||||
#: apps/registration/views.py:156
|
||||
msgid "Email validation email sent"
|
||||
msgstr "Correo de validación enviado"
|
||||
|
||||
#: apps/registration/views.py:163
|
||||
#: apps/registration/views.py:164
|
||||
msgid "Resend email validation link"
|
||||
msgstr "Reenviar el enlace de validación"
|
||||
|
||||
#: apps/registration/views.py:181
|
||||
#: apps/registration/views.py:182
|
||||
msgid "Pre-registered users list"
|
||||
msgstr "Lista de los usuarios con afiliación pendiente"
|
||||
|
||||
#: apps/registration/views.py:205
|
||||
#: apps/registration/views.py:206
|
||||
msgid "Unregistered users"
|
||||
msgstr "Usuarios con afiliación pendiente"
|
||||
|
||||
#: apps/registration/views.py:218
|
||||
#: apps/registration/views.py:219
|
||||
msgid "Registration detail"
|
||||
msgstr "Detalles de la afiliación"
|
||||
|
||||
#: apps/registration/views.py:282
|
||||
#: apps/registration/views.py:293
|
||||
msgid "You must join the BDE."
|
||||
msgstr "Usted tiene que afiliarse al BDE."
|
||||
|
||||
#: apps/registration/views.py:306
|
||||
#: apps/registration/views.py:323
|
||||
msgid ""
|
||||
"The entered amount is not enough for the memberships, should be at least {}"
|
||||
msgstr ""
|
||||
"El monto dado no es suficiente para las afiliaciones, tiene que ser al menos "
|
||||
"{}"
|
||||
|
||||
#: apps/registration/views.py:387
|
||||
#: apps/registration/views.py:417
|
||||
msgid "Invalidate pre-registration"
|
||||
msgstr "Invalidar la afiliación"
|
||||
|
||||
@ -2163,7 +2151,7 @@ msgstr "Invalidar la afiliación"
|
||||
msgid "Treasury"
|
||||
msgstr "Tesorería"
|
||||
|
||||
#: apps/treasury/forms.py:26 apps/treasury/models.py:94
|
||||
#: apps/treasury/forms.py:26 apps/treasury/models.py:95
|
||||
#: apps/treasury/templates/treasury/invoice_form.html:22
|
||||
msgid "This invoice is locked and can no longer be edited."
|
||||
msgstr "Esta factura esta bloqueada y no puede ser modificada."
|
||||
@ -2176,7 +2164,7 @@ msgstr "El descuento ya esta cerrado."
|
||||
msgid "You can't change the type of the remittance."
|
||||
msgstr "No puede cambiar el tipo de descuento."
|
||||
|
||||
#: apps/treasury/forms.py:125 apps/treasury/models.py:268
|
||||
#: apps/treasury/forms.py:125 apps/treasury/models.py:269
|
||||
#: apps/treasury/tables.py:97 apps/treasury/tables.py:105
|
||||
#: apps/treasury/templates/treasury/invoice_list.html:16
|
||||
#: apps/treasury/templates/treasury/remittance_list.html:16
|
||||
@ -2192,112 +2180,112 @@ msgstr "No hay descuento relacionado"
|
||||
msgid "Invoice identifier"
|
||||
msgstr "Numero de factura"
|
||||
|
||||
#: apps/treasury/models.py:41
|
||||
#: apps/treasury/models.py:42
|
||||
msgid "BDE"
|
||||
msgstr "BDE"
|
||||
|
||||
#: apps/treasury/models.py:46
|
||||
#: apps/treasury/models.py:47
|
||||
msgid "Object"
|
||||
msgstr "Asunto"
|
||||
|
||||
#: apps/treasury/models.py:50
|
||||
#: apps/treasury/models.py:51
|
||||
msgid "Description"
|
||||
msgstr "Descripción"
|
||||
|
||||
#: apps/treasury/models.py:59
|
||||
#: apps/treasury/models.py:60
|
||||
msgid "Address"
|
||||
msgstr "Dirección"
|
||||
|
||||
#: apps/treasury/models.py:64 apps/treasury/models.py:194
|
||||
#: apps/treasury/models.py:65 apps/treasury/models.py:195
|
||||
msgid "Date"
|
||||
msgstr "Fecha"
|
||||
|
||||
#: apps/treasury/models.py:68
|
||||
#: apps/treasury/models.py:69
|
||||
msgid "Acquitted"
|
||||
msgstr "Pagada"
|
||||
|
||||
#: apps/treasury/models.py:73
|
||||
#: apps/treasury/models.py:74
|
||||
msgid "Locked"
|
||||
msgstr "Bloqueada"
|
||||
|
||||
#: apps/treasury/models.py:74
|
||||
#: apps/treasury/models.py:75
|
||||
msgid "An invoice can't be edited when it is locked."
|
||||
msgstr "Une factura no puede ser modificada cuando esta bloqueada."
|
||||
|
||||
#: apps/treasury/models.py:80
|
||||
#: apps/treasury/models.py:81
|
||||
msgid "tex source"
|
||||
msgstr "código fuente TeX"
|
||||
|
||||
#: apps/treasury/models.py:114 apps/treasury/models.py:130
|
||||
#: apps/treasury/models.py:115 apps/treasury/models.py:131
|
||||
msgid "invoice"
|
||||
msgstr "factura"
|
||||
|
||||
#: apps/treasury/models.py:115
|
||||
#: apps/treasury/models.py:116
|
||||
msgid "invoices"
|
||||
msgstr "facturas"
|
||||
|
||||
#: apps/treasury/models.py:118
|
||||
#: apps/treasury/models.py:119
|
||||
#, python-brace-format
|
||||
msgid "Invoice #{id}"
|
||||
msgstr "Factura n°{id}"
|
||||
|
||||
#: apps/treasury/models.py:135
|
||||
#: apps/treasury/models.py:136
|
||||
msgid "Designation"
|
||||
msgstr "Designación"
|
||||
|
||||
#: apps/treasury/models.py:141
|
||||
#: apps/treasury/models.py:142
|
||||
msgid "Quantity"
|
||||
msgstr "Cantidad"
|
||||
|
||||
#: apps/treasury/models.py:146
|
||||
#: apps/treasury/models.py:147
|
||||
msgid "Unit price"
|
||||
msgstr "Precio unitario"
|
||||
|
||||
#: apps/treasury/models.py:162
|
||||
#: apps/treasury/models.py:163
|
||||
msgid "product"
|
||||
msgstr "producto"
|
||||
|
||||
#: apps/treasury/models.py:163
|
||||
#: apps/treasury/models.py:164
|
||||
msgid "products"
|
||||
msgstr "productos"
|
||||
|
||||
#: apps/treasury/models.py:183
|
||||
#: apps/treasury/models.py:184
|
||||
msgid "remittance type"
|
||||
msgstr "tipo de descuento"
|
||||
|
||||
#: apps/treasury/models.py:184
|
||||
#: apps/treasury/models.py:185
|
||||
msgid "remittance types"
|
||||
msgstr "tipos de descuentos"
|
||||
|
||||
#: apps/treasury/models.py:205
|
||||
#: apps/treasury/models.py:206
|
||||
msgid "Comment"
|
||||
msgstr "Comentario"
|
||||
|
||||
#: apps/treasury/models.py:210
|
||||
#: apps/treasury/models.py:211
|
||||
msgid "Closed"
|
||||
msgstr "Cerrada"
|
||||
|
||||
#: apps/treasury/models.py:214
|
||||
#: apps/treasury/models.py:215
|
||||
msgid "remittance"
|
||||
msgstr "descuento"
|
||||
|
||||
#: apps/treasury/models.py:215
|
||||
#: apps/treasury/models.py:216
|
||||
msgid "remittances"
|
||||
msgstr "descuentos"
|
||||
|
||||
#: apps/treasury/models.py:248
|
||||
#: apps/treasury/models.py:249
|
||||
msgid "Remittance #{:d}: {}"
|
||||
msgstr "Descuento n°{:d} : {}"
|
||||
|
||||
#: apps/treasury/models.py:272
|
||||
#: apps/treasury/models.py:273
|
||||
msgid "special transaction proxy"
|
||||
msgstr "proxy de transacción especial"
|
||||
|
||||
#: apps/treasury/models.py:273
|
||||
#: apps/treasury/models.py:274
|
||||
msgid "special transaction proxies"
|
||||
msgstr "proxys de transacciones especiales"
|
||||
|
||||
#: apps/treasury/models.py:299
|
||||
#: apps/treasury/models.py:300
|
||||
msgid "credit transaction"
|
||||
msgstr "transacción de crédito"
|
||||
|
||||
@ -2310,16 +2298,16 @@ msgstr ""
|
||||
"afiliaciones. Por favor pídelo acreditar su note antes de invalidar este "
|
||||
"crédito."
|
||||
|
||||
#: apps/treasury/models.py:453
|
||||
#: apps/treasury/models.py:452
|
||||
#: 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:454
|
||||
#: apps/treasury/models.py:453
|
||||
msgid "Credits from the Société générale"
|
||||
msgstr "Créditos de la Société Générale"
|
||||
|
||||
#: apps/treasury/models.py:457
|
||||
#: apps/treasury/models.py:456
|
||||
#, python-brace-format
|
||||
msgid "Soge credit for {user}"
|
||||
msgstr "Crédito de la Société Générale para {user}"
|
||||
@ -2574,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:323
|
||||
#: apps/wei/models.py:326
|
||||
msgid "bus"
|
||||
msgstr "bus"
|
||||
|
||||
@ -2699,40 +2687,48 @@ msgstr "No binari@"
|
||||
msgid "gender"
|
||||
msgstr "género"
|
||||
|
||||
#: apps/wei/models.py:213 apps/wei/templates/wei/weimembership_form.html:58
|
||||
#: apps/wei/models.py:212
|
||||
msgid "Unisex"
|
||||
msgstr "Unisex"
|
||||
|
||||
#: apps/wei/models.py:215 apps/wei/templates/wei/weimembership_form.html:58
|
||||
msgid "clothing cut"
|
||||
msgstr "forma de ropa"
|
||||
|
||||
#: apps/wei/models.py:226 apps/wei/templates/wei/weimembership_form.html:61
|
||||
#: apps/wei/models.py:228 apps/wei/templates/wei/weimembership_form.html:61
|
||||
msgid "clothing size"
|
||||
msgstr "medida de ropa"
|
||||
|
||||
#: apps/wei/models.py:232 apps/wei/templates/wei/attribute_bus_1A.html:28
|
||||
#: apps/wei/models.py:234 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:237 apps/wei/templates/wei/weimembership_form.html:70
|
||||
#: apps/wei/models.py:239 apps/wei/templates/wei/weimembership_form.html:70
|
||||
msgid "emergency contact name"
|
||||
msgstr "nombre del contacto de emergencia"
|
||||
|
||||
#: apps/wei/models.py:242 apps/wei/templates/wei/weimembership_form.html:73
|
||||
#: apps/wei/models.py:240
|
||||
msgid "The emergency contact must not be a WEI participant"
|
||||
msgstr "El contacto de emergencia no debe ser un participante de WEI"
|
||||
|
||||
#: apps/wei/models.py:245 apps/wei/templates/wei/weimembership_form.html:73
|
||||
msgid "emergency contact phone"
|
||||
msgstr "teléfono del contacto de emergencia"
|
||||
|
||||
#: apps/wei/models.py:247 apps/wei/templates/wei/weimembership_form.html:52
|
||||
#: apps/wei/models.py:250 apps/wei/templates/wei/weimembership_form.html:52
|
||||
msgid "first year"
|
||||
msgstr "primer año"
|
||||
|
||||
#: apps/wei/models.py:248
|
||||
#: apps/wei/models.py:251
|
||||
msgid "Tells if the user is new in the school."
|
||||
msgstr "Indica si el usuario es nuevo en la escuela."
|
||||
|
||||
#: apps/wei/models.py:253
|
||||
#: apps/wei/models.py:256
|
||||
msgid "registration information"
|
||||
msgstr "informaciones sobre la afiliación"
|
||||
|
||||
#: apps/wei/models.py:254
|
||||
#: apps/wei/models.py:257
|
||||
msgid ""
|
||||
"Information about the registration (buses for old members, survey for the "
|
||||
"new members), encoded in JSON"
|
||||
@ -2740,27 +2736,27 @@ msgstr ""
|
||||
"Informaciones sobre la afiliacion (bus para miembros ancianos, cuestionario "
|
||||
"para los nuevos miembros), registrado en JSON"
|
||||
|
||||
#: apps/wei/models.py:312
|
||||
#: apps/wei/models.py:315
|
||||
msgid "WEI User"
|
||||
msgstr "Participante WEI"
|
||||
|
||||
#: apps/wei/models.py:313
|
||||
#: apps/wei/models.py:316
|
||||
msgid "WEI Users"
|
||||
msgstr "Participantes WEI"
|
||||
|
||||
#: apps/wei/models.py:333
|
||||
#: apps/wei/models.py:336
|
||||
msgid "team"
|
||||
msgstr "equipo"
|
||||
|
||||
#: apps/wei/models.py:343
|
||||
#: apps/wei/models.py:346
|
||||
msgid "WEI registration"
|
||||
msgstr "Apuntación al WEI"
|
||||
|
||||
#: apps/wei/models.py:347
|
||||
#: apps/wei/models.py:350
|
||||
msgid "WEI membership"
|
||||
msgstr "Afiliación al WEI"
|
||||
|
||||
#: apps/wei/models.py:348
|
||||
#: apps/wei/models.py:351
|
||||
msgid "WEI memberships"
|
||||
msgstr "Afiliaciones al WEI"
|
||||
|
||||
@ -3541,6 +3537,21 @@ msgstr ""
|
||||
"pagar su afiliación. Tambien tiene que validar su correo electronico con el "
|
||||
"enlace que recibió."
|
||||
|
||||
#~ msgid ""
|
||||
#~ "I declare that I opened or I will open soon a bank account in the Société "
|
||||
#~ "générale with the BDE partnership."
|
||||
#~ msgstr ""
|
||||
#~ "Declaro que ya abrió una cuenta a la Société Générale en colaboración con "
|
||||
#~ "el BDE."
|
||||
|
||||
#~ msgid ""
|
||||
#~ "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."
|
||||
#~ msgstr ""
|
||||
#~ "Cuidado : esto le obliga abrir su cuenta bancaria. Si cambia de idea y no "
|
||||
#~ "abre su cuenta bancaria, tendrá que pagar su afiliación al BDE."
|
||||
|
||||
#~ msgid "You are not a Kfet member, so you can't use your note account."
|
||||
#~ msgstr "Usted no es un miembro de la Kfet, no puede usar su cuenta note."
|
||||
|
||||
|
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-03-31 17:08+0200\n"
|
||||
"POT-Creation-Date: 2023-07-09 14:46+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"
|
||||
@ -115,7 +115,7 @@ msgid "type"
|
||||
msgstr "type"
|
||||
|
||||
#: apps/activity/models.py:89 apps/logs/models.py:22 apps/member/models.py:307
|
||||
#: apps/note/models/notes.py:148 apps/treasury/models.py:286
|
||||
#: apps/note/models/notes.py:148 apps/treasury/models.py:287
|
||||
#: apps/wei/models.py:173 apps/wei/templates/wei/attribute_bus_1A.html:13
|
||||
#: apps/wei/templates/wei/survey.html:15
|
||||
msgid "user"
|
||||
@ -258,19 +258,19 @@ msgstr "Entré le "
|
||||
msgid "remove"
|
||||
msgstr "supprimer"
|
||||
|
||||
#: apps/activity/tables.py:82 apps/note/forms.py:68 apps/treasury/models.py:200
|
||||
#: apps/activity/tables.py:82 apps/note/forms.py:68 apps/treasury/models.py:201
|
||||
msgid "Type"
|
||||
msgstr "Type"
|
||||
|
||||
#: apps/activity/tables.py:84 apps/member/forms.py:186
|
||||
#: apps/registration/forms.py:91 apps/treasury/forms.py:131
|
||||
#: apps/registration/forms.py:92 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:96 apps/treasury/forms.py:133
|
||||
#: apps/registration/forms.py:97 apps/treasury/forms.py:133
|
||||
#: apps/wei/forms/registration.py:109
|
||||
msgid "First name"
|
||||
msgstr "Prénom"
|
||||
@ -548,24 +548,24 @@ 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:33 apps/registration/views.py:262
|
||||
#: apps/registration/forms.py:34 apps/registration/views.py:266
|
||||
msgid "An alias with a similar name already exists."
|
||||
msgstr "Un alias avec un nom similaire existe déjà."
|
||||
|
||||
#: apps/member/forms.py:165 apps/registration/forms.py:71
|
||||
#: apps/member/forms.py:165
|
||||
msgid "Inscription paid by Société Générale"
|
||||
msgstr "Inscription payée par la Société générale"
|
||||
|
||||
#: apps/member/forms.py:167 apps/registration/forms.py:73
|
||||
#: apps/member/forms.py:167
|
||||
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:78
|
||||
#: apps/member/forms.py:172 apps/registration/forms.py:79
|
||||
#: apps/wei/forms/registration.py:91
|
||||
msgid "Credit type"
|
||||
msgstr "Type de rechargement"
|
||||
|
||||
#: apps/member/forms.py:173 apps/registration/forms.py:79
|
||||
#: apps/member/forms.py:173 apps/registration/forms.py:80
|
||||
#: 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:84
|
||||
#: apps/member/forms.py:179 apps/registration/forms.py:85
|
||||
#: 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:101 apps/treasury/forms.py:135
|
||||
#: apps/registration/forms.py:102 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:23
|
||||
#: apps/member/views.py:73 apps/registration/forms.py:24
|
||||
msgid "This address must be valid."
|
||||
msgstr "Cette adresse doit être valide."
|
||||
|
||||
@ -1239,11 +1239,11 @@ msgstr "L'adhésion doit commencer après le {:%d/%m/%Y}."
|
||||
msgid "The membership must begin before {:%m-%d-%Y}."
|
||||
msgstr "L'adhésion doit commencer avant le {:%d/%m/%Y}."
|
||||
|
||||
#: apps/member/views.py:876
|
||||
#: apps/member/views.py:880
|
||||
msgid "Manage roles of an user in the club"
|
||||
msgstr "Gérer les rôles d'un utilisateur dans le club"
|
||||
|
||||
#: apps/member/views.py:901
|
||||
#: apps/member/views.py:905
|
||||
msgid "Members of the club"
|
||||
msgstr "Membres du club"
|
||||
|
||||
@ -1563,7 +1563,7 @@ msgstr "Transactions de crédit/retrait"
|
||||
msgid "membership transaction"
|
||||
msgstr "transaction d'adhésion"
|
||||
|
||||
#: apps/note/models/transactions.py:385 apps/treasury/models.py:293
|
||||
#: apps/note/models/transactions.py:385 apps/treasury/models.py:294
|
||||
msgid "membership transactions"
|
||||
msgstr "transactions d'adhésion"
|
||||
|
||||
@ -1682,7 +1682,7 @@ msgid "Amount"
|
||||
msgstr "Montant"
|
||||
|
||||
#: apps/note/templates/note/transaction_form.html:132
|
||||
#: apps/treasury/models.py:55
|
||||
#: apps/treasury/models.py:56
|
||||
msgid "Name"
|
||||
msgstr "Nom"
|
||||
|
||||
@ -1972,31 +1972,15 @@ msgstr "Tous les droits"
|
||||
msgid "registration"
|
||||
msgstr "inscription"
|
||||
|
||||
#: apps/registration/forms.py:39
|
||||
#: apps/registration/forms.py:40
|
||||
msgid "This email address is already used."
|
||||
msgstr "Cet email est déjà pris."
|
||||
|
||||
#: apps/registration/forms.py:49
|
||||
msgid ""
|
||||
"I declare that I opened or I will open soon a bank account in the Société "
|
||||
"générale with the BDE partnership."
|
||||
msgstr ""
|
||||
"Je déclare avoir ouvert ou ouvrir prochainement un compte à la société "
|
||||
"générale avec le partenariat du BDE."
|
||||
|
||||
#: apps/registration/forms.py:51
|
||||
msgid ""
|
||||
"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."
|
||||
msgstr ""
|
||||
"Attention : cocher cette case vous engage à ouvrir votre compte. Si vous "
|
||||
"décidez de ne pas le faire, vous devrez payer l'adhésion au BDE."
|
||||
|
||||
#: apps/registration/forms.py:59
|
||||
#: apps/registration/forms.py:60
|
||||
msgid "Register to the WEI"
|
||||
msgstr "S'inscrire au WEI"
|
||||
|
||||
#: apps/registration/forms.py:61
|
||||
#: apps/registration/forms.py:62
|
||||
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."
|
||||
@ -2005,14 +1989,18 @@ msgstr ""
|
||||
"pourrez toujours vous inscrire plus tard, après avoir validé votre compte à "
|
||||
"la Kfet."
|
||||
|
||||
#: apps/registration/forms.py:106
|
||||
#: apps/registration/forms.py:107
|
||||
msgid "Join BDE Club"
|
||||
msgstr "Adhérer au club BDE"
|
||||
|
||||
#: apps/registration/forms.py:113
|
||||
#: apps/registration/forms.py:114
|
||||
msgid "Join Kfet Club"
|
||||
msgstr "Adhérer au club Kfet"
|
||||
|
||||
#: apps/registration/forms.py:123
|
||||
msgid "Join BDA Club"
|
||||
msgstr "Adhérer au club BDA"
|
||||
|
||||
#: apps/registration/templates/registration/email_validation_complete.html:15
|
||||
msgid "Your email have successfully been validated."
|
||||
msgstr "Votre adresse e-mail a bien été validée."
|
||||
@ -2061,12 +2049,12 @@ msgstr "Supprimer l'inscription"
|
||||
msgid "Validate account"
|
||||
msgstr "Valider le compte"
|
||||
|
||||
#: apps/registration/templates/registration/future_profile_detail.html:62
|
||||
#: apps/registration/templates/registration/future_profile_detail.html:63
|
||||
msgid ""
|
||||
"The user declared that he/she opened a bank account in the Société générale."
|
||||
msgstr "L'utilisateur a déclaré avoir ouvert un compte à la société générale."
|
||||
|
||||
#: apps/registration/templates/registration/future_profile_detail.html:71
|
||||
#: apps/registration/templates/registration/future_profile_detail.html:73
|
||||
#: apps/wei/templates/wei/weimembership_form.html:127
|
||||
#: apps/wei/templates/wei/weimembership_form.html:186
|
||||
msgid "Validate registration"
|
||||
@ -2116,54 +2104,54 @@ msgstr "Merci"
|
||||
msgid "The Note Kfet team."
|
||||
msgstr "L'équipe de la Note Kfet."
|
||||
|
||||
#: apps/registration/views.py:40
|
||||
#: apps/registration/views.py:41
|
||||
msgid "Register new user"
|
||||
msgstr "Enregistrer un nouvel utilisateur"
|
||||
|
||||
#: apps/registration/views.py:98
|
||||
#: apps/registration/views.py:99
|
||||
msgid "Email validation"
|
||||
msgstr "Validation de l'adresse mail"
|
||||
|
||||
#: apps/registration/views.py:100
|
||||
#: apps/registration/views.py:101
|
||||
msgid "Validate email"
|
||||
msgstr "Valider l'adresse e-mail"
|
||||
|
||||
#: apps/registration/views.py:144
|
||||
#: apps/registration/views.py:145
|
||||
msgid "Email validation unsuccessful"
|
||||
msgstr "La validation de l'adresse mail a échoué"
|
||||
|
||||
#: apps/registration/views.py:155
|
||||
#: apps/registration/views.py:156
|
||||
msgid "Email validation email sent"
|
||||
msgstr "L'email de vérification de l'adresse email a bien été envoyé"
|
||||
|
||||
#: apps/registration/views.py:163
|
||||
#: apps/registration/views.py:164
|
||||
msgid "Resend email validation link"
|
||||
msgstr "Renvoyer le lien de validation"
|
||||
|
||||
#: apps/registration/views.py:181
|
||||
#: apps/registration/views.py:182
|
||||
msgid "Pre-registered users list"
|
||||
msgstr "Liste des utilisateurs en attente d'inscription"
|
||||
|
||||
#: apps/registration/views.py:205
|
||||
#: apps/registration/views.py:206
|
||||
msgid "Unregistered users"
|
||||
msgstr "Utilisateurs en attente d'inscription"
|
||||
|
||||
#: apps/registration/views.py:218
|
||||
#: apps/registration/views.py:219
|
||||
msgid "Registration detail"
|
||||
msgstr "Détails de l'inscription"
|
||||
|
||||
#: apps/registration/views.py:282
|
||||
#: apps/registration/views.py:293
|
||||
msgid "You must join the BDE."
|
||||
msgstr "Vous devez adhérer au BDE."
|
||||
|
||||
#: apps/registration/views.py:306
|
||||
#: apps/registration/views.py:323
|
||||
msgid ""
|
||||
"The entered amount is not enough for the memberships, should be at least {}"
|
||||
msgstr ""
|
||||
"Le montant crédité est trop faible pour adhérer, il doit être au minimum de "
|
||||
"{}"
|
||||
|
||||
#: apps/registration/views.py:387
|
||||
#: apps/registration/views.py:417
|
||||
msgid "Invalidate pre-registration"
|
||||
msgstr "Invalider l'inscription"
|
||||
|
||||
@ -2171,7 +2159,7 @@ msgstr "Invalider l'inscription"
|
||||
msgid "Treasury"
|
||||
msgstr "Trésorerie"
|
||||
|
||||
#: apps/treasury/forms.py:26 apps/treasury/models.py:94
|
||||
#: apps/treasury/forms.py:26 apps/treasury/models.py:95
|
||||
#: apps/treasury/templates/treasury/invoice_form.html:22
|
||||
msgid "This invoice is locked and can no longer be edited."
|
||||
msgstr "Cette facture est verrouillée et ne peut plus être éditée."
|
||||
@ -2184,7 +2172,7 @@ msgstr "La remise est déjà fermée."
|
||||
msgid "You can't change the type of the remittance."
|
||||
msgstr "Vous ne pouvez pas changer le type de la remise."
|
||||
|
||||
#: apps/treasury/forms.py:125 apps/treasury/models.py:268
|
||||
#: apps/treasury/forms.py:125 apps/treasury/models.py:269
|
||||
#: apps/treasury/tables.py:97 apps/treasury/tables.py:105
|
||||
#: apps/treasury/templates/treasury/invoice_list.html:16
|
||||
#: apps/treasury/templates/treasury/remittance_list.html:16
|
||||
@ -2200,112 +2188,112 @@ msgstr "Pas de remise associée"
|
||||
msgid "Invoice identifier"
|
||||
msgstr "Numéro de facture"
|
||||
|
||||
#: apps/treasury/models.py:41
|
||||
#: apps/treasury/models.py:42
|
||||
msgid "BDE"
|
||||
msgstr "BDE"
|
||||
|
||||
#: apps/treasury/models.py:46
|
||||
#: apps/treasury/models.py:47
|
||||
msgid "Object"
|
||||
msgstr "Objet"
|
||||
|
||||
#: apps/treasury/models.py:50
|
||||
#: apps/treasury/models.py:51
|
||||
msgid "Description"
|
||||
msgstr "Description"
|
||||
|
||||
#: apps/treasury/models.py:59
|
||||
#: apps/treasury/models.py:60
|
||||
msgid "Address"
|
||||
msgstr "Adresse"
|
||||
|
||||
#: apps/treasury/models.py:64 apps/treasury/models.py:194
|
||||
#: apps/treasury/models.py:65 apps/treasury/models.py:195
|
||||
msgid "Date"
|
||||
msgstr "Date"
|
||||
|
||||
#: apps/treasury/models.py:68
|
||||
#: apps/treasury/models.py:69
|
||||
msgid "Acquitted"
|
||||
msgstr "Acquittée"
|
||||
|
||||
#: apps/treasury/models.py:73
|
||||
#: apps/treasury/models.py:74
|
||||
msgid "Locked"
|
||||
msgstr "Verrouillée"
|
||||
|
||||
#: apps/treasury/models.py:74
|
||||
#: apps/treasury/models.py:75
|
||||
msgid "An invoice can't be edited when it is locked."
|
||||
msgstr "Une facture ne peut plus être modifiée si elle est verrouillée."
|
||||
|
||||
#: apps/treasury/models.py:80
|
||||
#: apps/treasury/models.py:81
|
||||
msgid "tex source"
|
||||
msgstr "fichier TeX source"
|
||||
|
||||
#: apps/treasury/models.py:114 apps/treasury/models.py:130
|
||||
#: apps/treasury/models.py:115 apps/treasury/models.py:131
|
||||
msgid "invoice"
|
||||
msgstr "facture"
|
||||
|
||||
#: apps/treasury/models.py:115
|
||||
#: apps/treasury/models.py:116
|
||||
msgid "invoices"
|
||||
msgstr "factures"
|
||||
|
||||
#: apps/treasury/models.py:118
|
||||
#: apps/treasury/models.py:119
|
||||
#, python-brace-format
|
||||
msgid "Invoice #{id}"
|
||||
msgstr "Facture n°{id}"
|
||||
|
||||
#: apps/treasury/models.py:135
|
||||
#: apps/treasury/models.py:136
|
||||
msgid "Designation"
|
||||
msgstr "Désignation"
|
||||
|
||||
#: apps/treasury/models.py:141
|
||||
#: apps/treasury/models.py:142
|
||||
msgid "Quantity"
|
||||
msgstr "Quantité"
|
||||
|
||||
#: apps/treasury/models.py:146
|
||||
#: apps/treasury/models.py:147
|
||||
msgid "Unit price"
|
||||
msgstr "Prix unitaire"
|
||||
|
||||
#: apps/treasury/models.py:162
|
||||
#: apps/treasury/models.py:163
|
||||
msgid "product"
|
||||
msgstr "produit"
|
||||
|
||||
#: apps/treasury/models.py:163
|
||||
#: apps/treasury/models.py:164
|
||||
msgid "products"
|
||||
msgstr "produits"
|
||||
|
||||
#: apps/treasury/models.py:183
|
||||
#: apps/treasury/models.py:184
|
||||
msgid "remittance type"
|
||||
msgstr "type de remise"
|
||||
|
||||
#: apps/treasury/models.py:184
|
||||
#: apps/treasury/models.py:185
|
||||
msgid "remittance types"
|
||||
msgstr "types de remises"
|
||||
|
||||
#: apps/treasury/models.py:205
|
||||
#: apps/treasury/models.py:206
|
||||
msgid "Comment"
|
||||
msgstr "Commentaire"
|
||||
|
||||
#: apps/treasury/models.py:210
|
||||
#: apps/treasury/models.py:211
|
||||
msgid "Closed"
|
||||
msgstr "Fermée"
|
||||
|
||||
#: apps/treasury/models.py:214
|
||||
#: apps/treasury/models.py:215
|
||||
msgid "remittance"
|
||||
msgstr "remise"
|
||||
|
||||
#: apps/treasury/models.py:215
|
||||
#: apps/treasury/models.py:216
|
||||
msgid "remittances"
|
||||
msgstr "remises"
|
||||
|
||||
#: apps/treasury/models.py:248
|
||||
#: apps/treasury/models.py:249
|
||||
msgid "Remittance #{:d}: {}"
|
||||
msgstr "Remise n°{:d} : {}"
|
||||
|
||||
#: apps/treasury/models.py:272
|
||||
#: apps/treasury/models.py:273
|
||||
msgid "special transaction proxy"
|
||||
msgstr "proxy de transaction spéciale"
|
||||
|
||||
#: apps/treasury/models.py:273
|
||||
#: apps/treasury/models.py:274
|
||||
msgid "special transaction proxies"
|
||||
msgstr "proxys de transactions spéciales"
|
||||
|
||||
#: apps/treasury/models.py:299
|
||||
#: apps/treasury/models.py:300
|
||||
msgid "credit transaction"
|
||||
msgstr "transaction de crédit"
|
||||
|
||||
@ -2317,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:453
|
||||
#: apps/treasury/models.py:452
|
||||
#: 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:454
|
||||
#: apps/treasury/models.py:453
|
||||
msgid "Credits from the Société générale"
|
||||
msgstr "Crédits de la Société générale"
|
||||
|
||||
#: apps/treasury/models.py:457
|
||||
#: apps/treasury/models.py:456
|
||||
#, python-brace-format
|
||||
msgid "Soge credit for {user}"
|
||||
msgstr "Crédit de la société générale pour l'utilisateur {user}"
|
||||
@ -2586,7 +2574,7 @@ msgstr ""
|
||||
"compte"
|
||||
|
||||
#: apps/wei/forms/registration.py:59 apps/wei/models.py:126
|
||||
#: apps/wei/models.py:323
|
||||
#: apps/wei/models.py:326
|
||||
msgid "bus"
|
||||
msgstr "bus"
|
||||
|
||||
@ -2711,40 +2699,48 @@ msgstr "Non-binaire"
|
||||
msgid "gender"
|
||||
msgstr "genre"
|
||||
|
||||
#: apps/wei/models.py:213 apps/wei/templates/wei/weimembership_form.html:58
|
||||
#: apps/wei/models.py:212
|
||||
msgid "Unisex"
|
||||
msgstr "Unisexe"
|
||||
|
||||
#: apps/wei/models.py:215 apps/wei/templates/wei/weimembership_form.html:58
|
||||
msgid "clothing cut"
|
||||
msgstr "coupe de vêtement"
|
||||
|
||||
#: apps/wei/models.py:226 apps/wei/templates/wei/weimembership_form.html:61
|
||||
#: apps/wei/models.py:228 apps/wei/templates/wei/weimembership_form.html:61
|
||||
msgid "clothing size"
|
||||
msgstr "taille de vêtement"
|
||||
|
||||
#: apps/wei/models.py:232 apps/wei/templates/wei/attribute_bus_1A.html:28
|
||||
#: apps/wei/models.py:234 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:237 apps/wei/templates/wei/weimembership_form.html:70
|
||||
#: apps/wei/models.py:239 apps/wei/templates/wei/weimembership_form.html:70
|
||||
msgid "emergency contact name"
|
||||
msgstr "nom du contact en cas d'urgence"
|
||||
|
||||
#: apps/wei/models.py:242 apps/wei/templates/wei/weimembership_form.html:73
|
||||
#: apps/wei/models.py:240
|
||||
msgid "The emergency contact must not be a WEI participant"
|
||||
msgstr "Le contact en cas d'urgence ne doit pas être une personne qui participe au WEI"
|
||||
|
||||
#: apps/wei/models.py:245 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:247 apps/wei/templates/wei/weimembership_form.html:52
|
||||
#: apps/wei/models.py:250 apps/wei/templates/wei/weimembership_form.html:52
|
||||
msgid "first year"
|
||||
msgstr "première année"
|
||||
|
||||
#: apps/wei/models.py:248
|
||||
#: apps/wei/models.py:251
|
||||
msgid "Tells if the user is new in the school."
|
||||
msgstr "Indique si l'utilisateur est nouveau dans l'école."
|
||||
|
||||
#: apps/wei/models.py:253
|
||||
#: apps/wei/models.py:256
|
||||
msgid "registration information"
|
||||
msgstr "informations sur l'inscription"
|
||||
|
||||
#: apps/wei/models.py:254
|
||||
#: apps/wei/models.py:257
|
||||
msgid ""
|
||||
"Information about the registration (buses for old members, survey for the "
|
||||
"new members), encoded in JSON"
|
||||
@ -2752,27 +2748,27 @@ msgstr ""
|
||||
"Informations sur l'inscription (bus pour les 2A+, questionnaire pour les "
|
||||
"1A), encodées en JSON"
|
||||
|
||||
#: apps/wei/models.py:312
|
||||
#: apps/wei/models.py:315
|
||||
msgid "WEI User"
|
||||
msgstr "Participant au WEI"
|
||||
|
||||
#: apps/wei/models.py:313
|
||||
#: apps/wei/models.py:316
|
||||
msgid "WEI Users"
|
||||
msgstr "Participants au WEI"
|
||||
|
||||
#: apps/wei/models.py:333
|
||||
#: apps/wei/models.py:336
|
||||
msgid "team"
|
||||
msgstr "équipe"
|
||||
|
||||
#: apps/wei/models.py:343
|
||||
#: apps/wei/models.py:346
|
||||
msgid "WEI registration"
|
||||
msgstr "Inscription au WEI"
|
||||
|
||||
#: apps/wei/models.py:347
|
||||
#: apps/wei/models.py:350
|
||||
msgid "WEI membership"
|
||||
msgstr "Adhésion au WEI"
|
||||
|
||||
#: apps/wei/models.py:348
|
||||
#: apps/wei/models.py:351
|
||||
msgid "WEI memberships"
|
||||
msgstr "Adhésions au WEI"
|
||||
|
||||
@ -3566,3 +3562,18 @@ msgstr ""
|
||||
"vous connecter. Vous devez vous rendre à la Kfet et payer les frais "
|
||||
"d'adhésion. Vous devez également valider votre adresse email en suivant le "
|
||||
"lien que vous avez reçu."
|
||||
|
||||
#~ msgid ""
|
||||
#~ "I declare that I opened or I will open soon a bank account in the Société "
|
||||
#~ "générale with the BDE partnership."
|
||||
#~ msgstr ""
|
||||
#~ "Je déclare avoir ouvert ou ouvrir prochainement un compte à la société "
|
||||
#~ "générale avec le partenariat du BDE."
|
||||
|
||||
#~ msgid ""
|
||||
#~ "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."
|
||||
#~ msgstr ""
|
||||
#~ "Attention : cocher cette case vous engage à ouvrir votre compte. Si vous "
|
||||
#~ "décidez de ne pas le faire, vous devrez payer l'adhésion au BDE."
|
||||
|
Loading…
Reference in New Issue
Block a user