diff --git a/apps/permission/fixtures/initial.json b/apps/permission/fixtures/initial.json index 181f2540..28d47194 100644 --- a/apps/permission/fixtures/initial.json +++ b/apps/permission/fixtures/initial.json @@ -1695,7 +1695,7 @@ "wei", "weimembership" ], - "query": "[\"AND\", {\"club\": [\"club\"], \"club__weiclub__membership_end__gte\": [\"today\"]}, [\"OR\", {\"registration__soge_credit\": true}, {\"user__note__balance__gte\": {\"F\": [\"F\", \"fee\"]}}]]", + "query": "{\"club\": [\"club\"]}", "type": "add", "mask": 2, "field": "", @@ -3998,6 +3998,358 @@ "description": "Créer une transaction de ou vers la note d'un club tant que la source reste au dessus de -50 €" } }, + { + "model": "permission.permission", + "pk": 271, + "fields": { + "model": [ + "wei", + "bus" + ], + "query": "{\"wei\": [\"club\"]}", + "type": "change", + "mask": 3, + "field": "", + "permanent": false, + "description": "Modifier n'importe quel bus du wei" + } + }, + { + "model": "permission.permission", + "pk": 272, + "fields": { + "model": [ + "wei", + "bus" + ], + "query": "{\"wei\": [\"club\"]}", + "type": "view", + "mask": 3, + "field": "", + "permanent": false, + "description": "Voir tous les bus du wei" + } + }, + { + "model": "permission.permission", + "pk": 273, + "fields": { + "model": [ + "wei", + "busteam" + ], + "query": "{\"bus__wei\": [\"club\"], \"bus__wei__membership_end__gte\": [\"today\"]}", + "type": "view", + "mask": 3, + "field": "", + "permanent": false, + "description": "Voir toutes les équipes WEI" + } + }, + { + "model": "permission.permission", + "pk": 274, + "fields": { + "model": [ + "member", + "club" + ], + "query": "{\"bus__wei\": [\"club\"]}", + "type": "view", + "mask": 3, + "field": "", + "permanent": false, + "description": "Voir les informations de clubs des bus" + } + }, + { + "model": "permission.permission", + "pk": 275, + "fields": { + "model": [ + "member", + "club" + ], + "query": "{\"bus__wei\": [\"club\"]}", + "type": "change", + "mask": 3, + "field": "", + "permanent": false, + "description": "Modifier les clubs des bus" + } + }, + { + "model": "permission.permission", + "pk": 276, + "fields": { + "model": [ + "member", + "membership" + ], + "query": "{\"club__bus__wei\": [\"club\"]}", + "type": "add", + "mask": 3, + "field": "", + "permanent": false, + "description": "Ajouter un⋅e membre à un club de bus" + } + }, + { + "model": "permission.permission", + "pk": 277, + "fields": { + "model": [ + "member", + "membership" + ], + "query": "{\"club__bus__wei\": [\"club\"]}", + "type": "view", + "mask": 3, + "field": "", + "permanent": false, + "description": "Voir les adhérents d'un club de bus" + } + }, + { + "model": "permission.permission", + "pk": 278, + "fields": { + "model": [ + "member", + "membership" + ], + "query": "{\"club__bus__wei\": [\"club\"]}", + "type": "change", + "mask": 3, + "field": "", + "permanent": false, + "description": "Modifier l'adhésion d'un club de bus" + } + }, + { + "model": "permission.permission", + "pk": 279, + "fields": { + "model": [ + "note", + "note" + ], + "query": "{\"noteclub__club__bus__wei\": [\"club\"]}", + "type": "view", + "mask": 3, + "field": "", + "permanent": false, + "description": "Voir la note d'un club de bus" + } + }, + { + "model": "permission.permission", + "pk": 280, + "fields": { + "model": [ + "note", + "transaction" + ], + "query": "[\"OR\", {\"source__noteclub__club__bus__wei\": [\"club\"]}, {\"destination__noteclub__club__bus__wei\": [\"club\"]}]", + "type": "view", + "mask": 3, + "field": "", + "permanent": false, + "description": "Voir les transactions d'un club de bus" + } + }, + { + "model": "permission.permission", + "pk": 281, + "fields": { + "model": [ + "note", + "transaction" + ], + "query": "[\"AND\", [\"OR\", {\"source__noteclub__club__bus__wei\": [\"club\"]}, {\"destination__noteclub__club__bus__wei\": [\"club\"]}], [\"OR\", {\"source__balance__gte\": {\"F\": [\"SUB\", [\"MUL\", [\"F\", \"amount\"], [\"F\", \"quantity\"]], 2000]}}, {\"valid\": false}]]", + "type": "add", + "mask": 3, + "field": "", + "permanent": false, + "description": "Créer une transaction d'un club de bus tant que la source reste au dessus de -20 €" + } + }, + { + "model": "permission.permission", + "pk": 282, + "fields": { + "model": [ + "note", + "transaction" + ], + "query": "[\"AND\", [\"OR\", {\"source__noteclub__club\": [\"club\"]}, {\"destination__noteclub__club\": [\"club\"]}], [\"OR\", {\"source__balance__gte\": {\"F\": [\"SUB\", [\"MUL\", [\"F\", \"amount\"], [\"F\", \"quantity\"]], 2000]}}, {\"valid\": false}]]", + "type": "add", + "mask": 3, + "field": "", + "permanent": false, + "description": "Créer une transaction d'un WEI tant que la source reste au dessus de -20 €" + } + }, + { + "model": "permission.permission", + "pk": 283, + "fields": { + "model": [ + "auth", + "user" + ], + "query": "{\"memberships__club__name\": \"Kfet\", \"memberships__roles__name\": \"Adh\u00e9rent\u22c5e Kfet\", \"memberships__date_start__lte\": [\"today\"], \"memberships__date_end__gte\": [\"today\"]}", + "type": "view", + "mask": 3, + "field": "", + "permanent": false, + "description": "Voir n'importe quel⋅le utilisateur⋅rice qui est adhérent⋅e Kfet" + } + }, + { + "model": "permission.permission", + "pk": 284, + "fields": { + "model": [ + "member", + "club" + ], + "query": "{\"bus\": [\"membership\", \"weimembership\", \"bus\"]}", + "type": "view", + "mask": 3, + "field": "", + "permanent": false, + "description": "Voir les informations de club de son bus" + } + }, + { + "model": "permission.permission", + "pk": 285, + "fields": { + "model": [ + "member", + "club" + ], + "query": "{\"bus\": [\"membership\", \"weimembership\", \"bus\"]}", + "type": "change", + "mask": 3, + "field": "", + "permanent": false, + "description": "Modifier le club de son bus" + } + }, + { + "model": "permission.permission", + "pk": 286, + "fields": { + "model": [ + "member", + "membership" + ], + "query": "{\"club__bus\": [\"membership\", \"weimembership\", \"bus\"]}", + "type": "add", + "mask": 3, + "field": "", + "permanent": false, + "description": "Ajouter un⋅e membre au club de son bus" + } + }, + { + "model": "permission.permission", + "pk": 287, + "fields": { + "model": [ + "member", + "membership" + ], + "query": "{\"club__bus\": [\"membership\", \"weimembership\", \"bus\"]}", + "type": "view", + "mask": 3, + "field": "", + "permanent": false, + "description": "Voir les adhérents du club de son bus" + } + }, + { + "model": "permission.permission", + "pk": 288, + "fields": { + "model": [ + "member", + "membership" + ], + "query": "{\"club__bus\": [\"membership\", \"weimembership\", \"bus\"]}", + "type": "change", + "mask": 3, + "field": "", + "permanent": false, + "description": "Modifier l'adhésion au club de son bus" + } + }, + { + "model": "permission.permission", + "pk": 289, + "fields": { + "model": [ + "note", + "note" + ], + "query": "{\"noteclub__club__bus\": [\"membership\", \"weimembership\", \"bus\"]}", + "type": "view", + "mask": 3, + "field": "", + "permanent": false, + "description": "Voir la note du club de son bus" + } + }, + { + "model": "permission.permission", + "pk": 290, + "fields": { + "model": [ + "note", + "transaction" + ], + "query": "[\"OR\", {\"source__noteclub__club__bus\": [\"membership\", \"weimembership\", \"bus\"]}, {\"destination__noteclub__club__bus\": [\"membership\", \"weimembership\", \"bus\"]}]", + "type": "view", + "mask": 3, + "field": "", + "permanent": false, + "description": "Voir les transactions du club de son bus" + } + }, + { + "model": "permission.permission", + "pk": 291, + "fields": { + "model": [ + "wei", + "bus" + ], + "query": "{\"pk\": [\"membership\", \"weimembership\", \"bus\", \"pk\"], \"wei__date_end__gte\": [\"today\"]}", + "type": "view", + "mask": 3, + "field": "", + "permanent": false, + "description": "Voir mon bus" + } + }, + { + "model": "permission.permission", + "pk": 292, + "fields": { + "model": [ + "member", + "membership" + ], + "query": "{\"club__pk__lte\": 2}", + "type": "add", + "mask": 3, + "field": "", + "permanent": false, + "description": "Ajouter un membre au BDE ou à la Kfet" + } + }, { "model": "permission.role", "pk": 1, @@ -4358,6 +4710,8 @@ "name": "GC WEI", "permissions": [ 22, + 49, + 62, 70, 72, 76, @@ -4382,7 +4736,23 @@ 112, 113, 128, - 130 + 130, + 142, + 269, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 282, + 283, + 292 ] } }, @@ -4401,7 +4771,14 @@ 119, 120, 121, - 122 + 122, + 284, + 285, + 286, + 287, + 289, + 290, + 291 ] } }, @@ -4599,7 +4976,14 @@ 119, 120, 121, - 122 + 122, + 284, + 285, + 286, + 287, + 289, + 290, + 291 ] } }, diff --git a/apps/permission/tests/test_permission_denied.py b/apps/permission/tests/test_permission_denied.py index 792bd1de..c2f3ad3a 100644 --- a/apps/permission/tests/test_permission_denied.py +++ b/apps/permission/tests/test_permission_denied.py @@ -10,7 +10,7 @@ from django.utils import timezone from django.utils.crypto import get_random_string from activity.models import Activity from member.models import Club, Membership -from note.models import NoteUser +from note.models import NoteUser, NoteClub from wei.models import WEIClub, Bus, WEIRegistration @@ -122,10 +122,13 @@ class TestPermissionDenied(TestCase): def test_validate_weiregistration(self): wei = WEIClub.objects.create( + name="WEI Test", membership_start=date.today(), date_start=date.today() + timedelta(days=1), date_end=date.today() + timedelta(days=1), + parent_club=Club.objects.get(name="Kfet"), ) + NoteClub.objects.create(club=wei) registration = WEIRegistration.objects.create(wei=wei, user=self.user, birth_date="2000-01-01") response = self.client.get(reverse("wei:validate_registration", kwargs=dict(pk=registration.pk))) self.assertEqual(response.status_code, 403) diff --git a/apps/wei/forms/__init__.py b/apps/wei/forms/__init__.py index e1a09c3a..71fb2c5f 100644 --- a/apps/wei/forms/__init__.py +++ b/apps/wei/forms/__init__.py @@ -1,10 +1,11 @@ # Copyright (C) 2018-2025 by BDE ENS Paris-Saclay # SPDX-License-Identifier: GPL-3.0-or-later -from .registration import WEIForm, WEIRegistrationForm, WEIMembership1AForm, WEIMembershipForm, BusForm, BusTeamForm +from .registration import WEIForm, WEIRegistrationForm, WEIRegistration1AForm, WEIRegistration2AForm, WEIMembership1AForm, \ + WEIMembershipForm, BusForm, BusTeamForm from .surveys import WEISurvey, WEISurveyInformation, WEISurveyAlgorithm, CurrentSurvey __all__ = [ - 'WEIForm', 'WEIRegistrationForm', 'WEIMembership1AForm', 'WEIMembershipForm', 'BusForm', 'BusTeamForm', + 'WEIForm', 'WEIRegistrationForm', 'WEIRegistration1AForm', 'WEIRegistration2AForm', 'WEIMembership1AForm', 'WEIMembershipForm', 'BusForm', 'BusTeamForm', 'WEISurvey', 'WEISurveyInformation', 'WEISurveyAlgorithm', 'CurrentSurvey', ] diff --git a/apps/wei/forms/registration.py b/apps/wei/forms/registration.py index 38568b93..fd6fea2c 100644 --- a/apps/wei/forms/registration.py +++ b/apps/wei/forms/registration.py @@ -24,6 +24,7 @@ class WEIForm(forms.ModelForm): "membership_end": DatePickerInput(), "date_start": DatePickerInput(), "date_end": DatePickerInput(), + "caution_amount": AmountInput(), } @@ -39,7 +40,11 @@ class WEIRegistrationForm(forms.ModelForm): class Meta: model = WEIRegistration - exclude = ('wei', 'clothing_cut') + fields = [ + 'user', 'soge_credit', 'birth_date', 'gender', 'clothing_size', + 'health_issues', 'emergency_contact_name', 'emergency_contact_phone', + 'first_year', 'information_json', 'caution_check' + ] widgets = { "user": Autocomplete( User, @@ -49,11 +54,30 @@ class WEIRegistrationForm(forms.ModelForm): 'placeholder': 'Nom ...', }, ), - "birth_date": DatePickerInput(options={'minDate': '1900-01-01', - 'maxDate': '2100-01-01'}), + "birth_date": DatePickerInput(options={ + 'minDate': '1900-01-01', + 'maxDate': '2100-01-01' + }), + "caution_check": forms.BooleanField( + required=False, + ), } +class WEIRegistration2AForm(WEIRegistrationForm): + class Meta(WEIRegistrationForm.Meta): + fields = WEIRegistrationForm.Meta.fields + ['caution_type'] + widgets = WEIRegistrationForm.Meta.widgets.copy() + widgets.update({ + "caution_type": forms.RadioSelect(), + }) + + +class WEIRegistration1AForm(WEIRegistrationForm): + class Meta(WEIRegistrationForm.Meta): + fields = WEIRegistrationForm.Meta.fields + + class WEIChooseBusForm(forms.Form): bus = forms.ModelMultipleChoiceField( queryset=Bus.objects, @@ -72,7 +96,7 @@ class WEIChooseBusForm(forms.Form): ) roles = forms.ModelMultipleChoiceField( - queryset=WEIRole.objects.filter(~Q(name="1A")), + queryset=WEIRole.objects.filter(~Q(name="1A") & ~Q(name="GC WEI")), label=_("WEI Roles"), help_text=_("Select the roles that you are interested in."), initial=WEIRole.objects.filter(name="Adhérent⋅e WEI").all(), @@ -81,13 +105,8 @@ class WEIChooseBusForm(forms.Form): class WEIMembershipForm(forms.ModelForm): - caution_check = forms.BooleanField( - required=False, - label=_("Caution check given"), - ) - roles = forms.ModelMultipleChoiceField( - queryset=WEIRole.objects, + queryset=WEIRole.objects.filter(~Q(name="GC WEI")), label=_("WEI Roles"), widget=CheckboxSelectMultiple(), ) @@ -194,3 +213,4 @@ class BusTeamForm(forms.ModelForm): ), "color": ColorWidget(), } + # "color": ColorWidget(), diff --git a/apps/wei/migrations/0011_alter_weiclub_year.py b/apps/wei/migrations/0011_alter_weiclub_year.py new file mode 100644 index 00000000..086ea4eb --- /dev/null +++ b/apps/wei/migrations/0011_alter_weiclub_year.py @@ -0,0 +1,18 @@ +# Generated by Django 4.2.21 on 2025-05-25 12:23 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('wei', '0010_remove_weiregistration_specific_diet'), + ] + + operations = [ + migrations.AlterField( + model_name='weiclub', + name='year', + field=models.PositiveIntegerField(default=2025, unique=True, verbose_name='year'), + ), + ] diff --git a/apps/wei/migrations/0012_bus_club.py b/apps/wei/migrations/0012_bus_club.py new file mode 100644 index 00000000..80f2e14b --- /dev/null +++ b/apps/wei/migrations/0012_bus_club.py @@ -0,0 +1,20 @@ +# Generated by Django 4.2.21 on 2025-05-29 16:16 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('member', '0014_create_bda'), + ('wei', '0011_alter_weiclub_year'), + ] + + operations = [ + migrations.AddField( + model_name='bus', + name='club', + field=models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='bus', to='member.club', verbose_name='club'), + ), + ] diff --git a/apps/wei/migrations/0013_weiclub_caution_amount_weiregistration_caution_type.py b/apps/wei/migrations/0013_weiclub_caution_amount_weiregistration_caution_type.py new file mode 100644 index 00000000..49a9a4b6 --- /dev/null +++ b/apps/wei/migrations/0013_weiclub_caution_amount_weiregistration_caution_type.py @@ -0,0 +1,23 @@ +# Generated by Django 4.2.21 on 2025-06-01 21:43 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('wei', '0012_bus_club'), + ] + + operations = [ + migrations.AddField( + model_name='weiclub', + name='caution_amount', + field=models.PositiveIntegerField(default=0, verbose_name='caution amount'), + ), + migrations.AddField( + model_name='weiregistration', + name='caution_type', + field=models.CharField(choices=[('check', 'Check'), ('note', 'Note transaction')], default='check', max_length=16, verbose_name='caution type'), + ), + ] diff --git a/apps/wei/models.py b/apps/wei/models.py index f4169316..684feaf8 100644 --- a/apps/wei/models.py +++ b/apps/wei/models.py @@ -33,6 +33,11 @@ class WEIClub(Club): verbose_name=_("date end"), ) + caution_amount = models.PositiveIntegerField( + verbose_name=_("caution amount"), + default=0, + ) + class Meta: verbose_name = _("WEI") verbose_name_plural = _("WEI") @@ -72,6 +77,15 @@ class Bus(models.Model): default=50, ) + club = models.OneToOneField( + Club, + null=True, + blank=True, + on_delete=models.SET_NULL, + related_name="bus", + verbose_name=_("club"), + ) + description = models.TextField( blank=True, default="", @@ -188,6 +202,16 @@ class WEIRegistration(models.Model): verbose_name=_("Caution check given") ) + caution_type = models.CharField( + max_length=16, + choices=( + ('check', _("Check")), + ('note', _("Note transaction")), + ), + default='check', + verbose_name=_("caution type"), + ) + birth_date = models.DateField( verbose_name=_("birth date"), ) diff --git a/apps/wei/tables.py b/apps/wei/tables.py index de5c84af..c8837e44 100644 --- a/apps/wei/tables.py +++ b/apps/wei/tables.py @@ -98,7 +98,7 @@ class WEIRegistrationTable(tables.Table): if not hasperm: return format_html("") - url = reverse_lazy('wei:validate_registration', args=(record.pk,)) + url = reverse_lazy('wei:wei_update_registration', args=(record.pk,)) + '?validate=true' text = _('Validate') if record.fee > record.user.note.balance and not record.soge_credit: btn_class = 'btn-secondary' diff --git a/apps/wei/templates/wei/base.html b/apps/wei/templates/wei/base.html index 43d61797..975b71c8 100644 --- a/apps/wei/templates/wei/base.html +++ b/apps/wei/templates/wei/base.html @@ -40,22 +40,20 @@ SPDX-License-Identifier: GPL-3.0-or-later
{% trans 'membership fee'|capfirst %}
{{ club.membership_fee_paid|pretty_money }}
{% else %} - {% with bde_kfet_fee=club.parent_club.membership_fee_paid|add:club.parent_club.parent_club.membership_fee_paid %} -
{% trans 'WEI fee (paid students)'|capfirst %}
-
{{ club.membership_fee_paid|add:bde_kfet_fee|pretty_money }} -
- {% endwith %} - {% with bde_kfet_fee=club.parent_club.membership_fee_unpaid|add:club.parent_club.parent_club.membership_fee_unpaid %} +
{% trans 'WEI fee (paid students)'|capfirst %}
+
{{ club.membership_fee_paid|pretty_money }} +
{% trans 'WEI fee (unpaid students)'|capfirst %}
-
{{ club.membership_fee_unpaid|add:bde_kfet_fee|pretty_money }} -
- {% endwith %} +
{{ club.membership_fee_unpaid|pretty_money }} {% endif %} {% endif %} + {% if club.caution_amount > 0 %} +
{% trans 'Caution amount'|capfirst %}
+
{{ club.caution_amount|pretty_money }}
+ {% endif %} + {% if "note.view_note"|has_perm:club.note %}
{% trans 'balance'|capfirst %}
{{ club.note.balance | pretty_money }}
diff --git a/apps/wei/templates/wei/bus_detail.html b/apps/wei/templates/wei/bus_detail.html index c8f3ce20..04ef5f9a 100644 --- a/apps/wei/templates/wei/bus_detail.html +++ b/apps/wei/templates/wei/bus_detail.html @@ -16,6 +16,10 @@ SPDX-License-Identifier: GPL-3.0-or-later diff --git a/apps/wei/templates/wei/busteam_form.html b/apps/wei/templates/wei/busteam_form.html index c62fec40..24522a80 100644 --- a/apps/wei/templates/wei/busteam_form.html +++ b/apps/wei/templates/wei/busteam_form.html @@ -13,9 +13,17 @@ SPDX-License-Identifier: GPL-3.0-or-later
{% csrf_token %} + {{ form.media }} {{ form|crispy }}
+ {% endblock %} \ No newline at end of file diff --git a/apps/wei/templates/wei/weiclub_detail.html b/apps/wei/templates/wei/weiclub_detail.html index cd4b5efb..f7c18c9a 100644 --- a/apps/wei/templates/wei/weiclub_detail.html +++ b/apps/wei/templates/wei/weiclub_detail.html @@ -95,9 +95,11 @@ SPDX-License-Identifier: GPL-3.0-or-later {% endif %} - {% if can_validate_1a %} - {% trans "Attribute buses" %} - {% endif %} +{% if can_validate_1a %} + {% trans "Attribute buses" %} +{% endif %} + + {% endblock %} {% block extrajavascript %} diff --git a/apps/wei/templates/wei/weimembership_form.html b/apps/wei/templates/wei/weimembership_form.html index ff3024ca..f0f3d800 100644 --- a/apps/wei/templates/wei/weimembership_form.html +++ b/apps/wei/templates/wei/weimembership_form.html @@ -143,25 +143,35 @@ SPDX-License-Identifier: GPL-3.0-or-later {% endblocktrans %} {% else %} - {% if registration.user.note.balance < fee %} -
- {% with pretty_fee=fee|pretty_money %} - {% blocktrans trimmed with balance=registration.user.note.balance|pretty_money %} - The note don't have enough money ({{ balance }}, {{ pretty_fee }} required). - The registration may fail if you don't credit the note now. - {% endblocktrans %} - {% endwith %} -
- {% else %} -
- {% blocktrans trimmed with pretty_fee=fee|pretty_money %} - The note has enough money ({{ pretty_fee }} required), the registration is possible. - {% endblocktrans %} -
- {% endif %} +
+
{% trans "Required payments:" %}
+ +

{% blocktrans trimmed with balance=registration.user.note.balance|pretty_money %} + Current balance: {{ balance }} + {% endblocktrans %}

+
{% endif %} - {% if not registration.caution_check and not registration.first_year %} + {% if not registration.caution_check and not registration.first_year and registration.caution_type == 'check' %}
{% trans "The user didn't give her/his caution check." %}
diff --git a/apps/wei/tests/test_wei_registration.py b/apps/wei/tests/test_wei_registration.py index ffff04c9..f7ce5ac0 100644 --- a/apps/wei/tests/test_wei_registration.py +++ b/apps/wei/tests/test_wei_registration.py @@ -126,6 +126,7 @@ class TestWEIRegistration(TestCase): year=self.year + 1, date_start=str(self.year + 1) + "-09-01", date_end=str(self.year + 1) + "-09-03", + caution_amount=12000, )) qs = WEIClub.objects.filter(name="Create WEI Test", year=self.year + 1) self.assertTrue(qs.exists()) @@ -160,6 +161,7 @@ class TestWEIRegistration(TestCase): membership_end="2000-09-30", date_start="2000-09-01", date_end="2000-09-03", + caution_amount=12000, )) qs = WEIClub.objects.filter(name="Update WEI Test", id=self.wei.id) self.assertRedirects(response, reverse("wei:wei_detail", kwargs=dict(pk=self.wei.pk)), 302, 200) @@ -318,6 +320,7 @@ class TestWEIRegistration(TestCase): bus=[], team=[], roles=[], + caution_type='check' )) self.assertEqual(response.status_code, 200) self.assertFalse(response.context["membership_form"].is_valid()) @@ -334,7 +337,8 @@ class TestWEIRegistration(TestCase): emergency_contact_phone='+33123456789', bus=[self.bus.id], team=[self.team.id], - roles=[role.id for role in WEIRole.objects.filter(~Q(name="1A")).all()], + roles=[role.id for role in WEIRole.objects.filter(~Q(name="1A") & ~Q(name="GC WEI")).all()], + caution_type='check' )) qs = WEIRegistration.objects.filter(user_id=user.id) self.assertTrue(qs.exists()) @@ -354,6 +358,7 @@ class TestWEIRegistration(TestCase): bus=[self.bus.id], team=[self.team.id], roles=[role.id for role in WEIRole.objects.filter(~Q(name="1A")).all()], + caution_type='check' )) self.assertEqual(response.status_code, 200) self.assertTrue("This user is already registered to this WEI." in str(response.context["form"].errors)) @@ -506,11 +511,12 @@ class TestWEIRegistration(TestCase): team=[self.team.id], roles=[role.id for role in WEIRole.objects.filter(name="Adhérent⋅e WEI").all()], information_json=self.registration.information_json, + caution_type='check' ) ) qs = WEIRegistration.objects.filter(user_id=self.user.id, soge_credit=False, clothing_size="M") self.assertTrue(qs.exists()) - self.assertRedirects(response, reverse("wei:validate_registration", kwargs=dict(pk=qs.get().pk)), 302, 200) + self.assertRedirects(response, reverse("wei:wei_detail", kwargs=dict(pk=qs.get().wei.pk)), 302, 200) # Check the page when the registration is already validated membership = WEIMembership( @@ -560,11 +566,12 @@ class TestWEIRegistration(TestCase): team=[self.team.id], roles=[role.id for role in WEIRole.objects.filter(name="Adhérent⋅e WEI").all()], information_json=self.registration.information_json, + caution_type='check' ) ) qs = WEIRegistration.objects.filter(user_id=self.user.id, clothing_size="L") self.assertTrue(qs.exists()) - self.assertRedirects(response, reverse("wei:validate_registration", kwargs=dict(pk=qs.get().pk)), 302, 200) + self.assertRedirects(response, reverse("wei:wei_detail", kwargs=dict(pk=qs.get().wei.pk)), 302, 200) # Test invalid form response = self.client.post( @@ -583,6 +590,7 @@ class TestWEIRegistration(TestCase): team=[], roles=[], information_json=self.registration.information_json, + caution_type='check' ) ) self.assertFalse(response.context["membership_form"].is_valid()) @@ -624,7 +632,7 @@ class TestWEIRegistration(TestCase): second_bus = Bus.objects.create(wei=self.wei, name="Second bus") second_team = BusTeam.objects.create(bus=second_bus, name="Second team", color=42) response = self.client.post(reverse("wei:validate_registration", kwargs=dict(pk=self.registration.pk)), dict( - roles=[WEIRole.objects.get(name="GC WEI").id], + roles=[WEIRole.objects.get(name="Adhérent⋅e WEI").id], bus=self.bus.pk, team=second_team.pk, credit_type=4, # Bank transfer @@ -632,13 +640,14 @@ class TestWEIRegistration(TestCase): last_name="admin", first_name="admin", bank="Société générale", + caution_check=True, )) self.assertEqual(response.status_code, 200) self.assertFalse(response.context["form"].is_valid()) self.assertTrue("This team doesn't belong to the given bus." in str(response.context["form"].errors)) response = self.client.post(reverse("wei:validate_registration", kwargs=dict(pk=self.registration.pk)), dict( - roles=[WEIRole.objects.get(name="GC WEI").id], + roles=[WEIRole.objects.get(name="Adhérent⋅e WEI").id], bus=self.bus.pk, team=self.team.pk, credit_type=4, # Bank transfer @@ -646,8 +655,10 @@ class TestWEIRegistration(TestCase): last_name="admin", first_name="admin", bank="Société générale", + caution_check=True, )) self.assertRedirects(response, reverse("wei:wei_registrations", kwargs=dict(pk=self.registration.wei.pk)), 302, 200) + # Check if the membership is successfully created membership = WEIMembership.objects.filter(user_id=self.user.id, club=self.wei) self.assertTrue(membership.exists()) diff --git a/apps/wei/views.py b/apps/wei/views.py index a2e8ccff..34b274a2 100644 --- a/apps/wei/views.py +++ b/apps/wei/views.py @@ -4,16 +4,18 @@ import os import shutil import subprocess -from datetime import date, timedelta +from datetime import date from tempfile import mkdtemp from django.conf import settings +from django.contrib import messages from django.contrib.auth.mixins import LoginRequiredMixin from django.contrib.auth.models import User from django.core.exceptions import PermissionDenied from django.db import transaction from django.db.models import Q, Count from django.db.models.functions.text import Lower +from django import forms from django.http import HttpResponse, Http404 from django.shortcuts import redirect from django.template.loader import render_to_string @@ -33,7 +35,7 @@ from permission.views import ProtectQuerysetMixin, ProtectedCreateView from .forms.registration import WEIChooseBusForm from .models import WEIClub, WEIRegistration, WEIMembership, Bus, BusTeam, WEIRole -from .forms import WEIForm, WEIRegistrationForm, BusForm, BusTeamForm, WEIMembership1AForm, \ +from .forms import WEIForm, WEIRegistrationForm, WEIRegistration1AForm, WEIRegistration2AForm, BusForm, BusTeamForm, WEIMembership1AForm, \ WEIMembershipForm, CurrentSurvey from .tables import BusRepartitionTable, BusTable, BusTeamTable, WEITable, WEIRegistrationTable, \ WEIRegistration1ATable, WEIMembershipTable @@ -441,6 +443,10 @@ class BusTeamCreateView(ProtectQuerysetMixin, ProtectedCreateView): self.object.refresh_from_db() return reverse_lazy("wei:manage_bus_team", kwargs={"pk": self.object.pk}) + def get_template_names(self): + names = super().get_template_names() + return names + class BusTeamUpdateView(ProtectQuerysetMixin, LoginRequiredMixin, UpdateView): """ @@ -473,6 +479,10 @@ class BusTeamUpdateView(ProtectQuerysetMixin, LoginRequiredMixin, UpdateView): self.object.refresh_from_db() return reverse_lazy("wei:manage_bus_team", kwargs={"pk": self.object.pk}) + def get_template_names(self): + names = super().get_template_names() + return names + class BusTeamManageView(ProtectQuerysetMixin, LoginRequiredMixin, DetailView): """ @@ -500,7 +510,7 @@ class WEIRegister1AView(ProtectQuerysetMixin, ProtectedCreateView): Register a new user to the WEI """ model = WEIRegistration - form_class = WEIRegistrationForm + form_class = WEIRegistration1AForm extra_context = {"title": _("Register first year student to the WEI")} def get_sample_object(self): @@ -546,9 +556,17 @@ class WEIRegister1AView(ProtectQuerysetMixin, ProtectedCreateView): def get_form(self, form_class=None): form = super().get_form(form_class) form.fields["user"].initial = self.request.user - del form.fields["first_year"] - del form.fields["caution_check"] - del form.fields["information_json"] + + # Cacher les champs pendant l'inscription initiale + if "first_year" in form.fields: + del form.fields["first_year"] + if "caution_check" in form.fields: + del form.fields["caution_check"] + if "information_json" in form.fields: + del form.fields["information_json"] + if "caution_type" in form.fields: + del form.fields["caution_type"] + return form @transaction.atomic @@ -586,7 +604,7 @@ class WEIRegister2AView(ProtectQuerysetMixin, ProtectedCreateView): Register an old user to the WEI """ model = WEIRegistration - form_class = WEIRegistrationForm + form_class = WEIRegistration2AForm extra_context = {"title": _("Register old student to the WEI")} def get_sample_object(self): @@ -644,9 +662,19 @@ class WEIRegister2AView(ProtectQuerysetMixin, ProtectedCreateView): form.fields["soge_credit"].disabled = True form.fields["soge_credit"].help_text = _("You already opened an account in the Société générale.") - del form.fields["caution_check"] - del form.fields["first_year"] - del form.fields["information_json"] + # Cacher les champs pendant l'inscription initiale + if "first_year" in form.fields: + del form.fields["first_year"] + if "caution_check" in form.fields: + del form.fields["caution_check"] + if "information_json" in form.fields: + del form.fields["information_json"] + + # S'assurer que le champ caution_type est obligatoire + if "caution_type" in form.fields: + form.fields["caution_type"].required = True + form.fields["caution_type"].help_text = _("Choose how you want to pay the deposit") + form.fields["caution_type"].widget = forms.RadioSelect(choices=form.fields["caution_type"].choices) return form @@ -673,6 +701,9 @@ class WEIRegister2AView(ProtectQuerysetMixin, ProtectedCreateView): information["preferred_roles_pk"] = [role.pk for role in choose_bus_form.cleaned_data["roles"]] information["preferred_roles_name"] = [role.name for role in choose_bus_form.cleaned_data["roles"]] form.instance.information = information + + # Sauvegarder le type de caution + form.instance.caution_type = form.cleaned_data["caution_type"] form.instance.save() if 'treasury' in settings.INSTALLED_APPS: @@ -702,11 +733,15 @@ class WEIUpdateRegistrationView(ProtectQuerysetMixin, LoginRequiredMixin, Update # We can't update a registration once the WEI is started and before the membership start date if today >= wei.date_start or today < wei.membership_start: return redirect(reverse_lazy('wei:wei_closed', args=(wei.pk,))) + # Store the validate parameter in the view's state + self.should_validate = request.GET.get('validate', False) return super().dispatch(request, *args, **kwargs) def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) context["club"] = self.object.wei + # Pass the validate parameter to the template + context["should_validate"] = self.should_validate if self.object.is_validated: membership_form = self.get_membership_form(instance=self.object.membership, @@ -740,6 +775,16 @@ class WEIUpdateRegistrationView(ProtectQuerysetMixin, LoginRequiredMixin, Update # The auto-json-format may cause issues with the default field remove if not PermissionBackend.check_perm(self.request, 'wei.change_weiregistration_information_json', self.object): del form.fields["information_json"] + # Masquer le champ caution_check pour tout le monde dans le formulaire de modification + if "caution_check" in form.fields: + del form.fields["caution_check"] + + # S'assurer que le champ caution_type est obligatoire pour les 2A+ + if not self.object.first_year and "caution_type" in form.fields: + form.fields["caution_type"].required = True + form.fields["caution_type"].help_text = _("Choose how you want to pay the deposit") + form.fields["caution_type"].widget = forms.RadioSelect(choices=form.fields["caution_type"].choices) + return form def get_membership_form(self, data=None, instance=None): @@ -759,10 +804,30 @@ class WEIUpdateRegistrationView(ProtectQuerysetMixin, LoginRequiredMixin, Update def form_valid(self, form): # If the membership is already validated, then we update the bus and the team (and the roles) if form.instance.is_validated: - membership_form = self.get_membership_form(self.request.POST, form.instance.membership) - if not membership_form.is_valid(): + try: + membership = form.instance.membership + if membership is None: + raise ValueError(_("No membership found for this registration")) + + membership_form = self.get_membership_form(self.request.POST, instance=membership) + if not membership_form.is_valid(): + return self.form_invalid(form) + + # Vérifier que l'utilisateur a la permission de modifier le membership + # On vérifie d'abord si l'utilisateur a la permission générale de modification + if not self.request.user.has_perm("wei.change_weimembership"): + raise PermissionDenied(_("You don't have the permission to update memberships")) + + # On vérifie ensuite les permissions spécifiques pour chaque champ modifié + for field_name in membership_form.changed_data: + perm = f"wei.change_weimembership_{field_name}" + if not self.request.user.has_perm(perm): + raise PermissionDenied(_("You don't have the permission to update the field %(field)s") % {'field': field_name}) + + membership_form.save() + except (WEIMembership.DoesNotExist, ValueError, PermissionDenied) as e: + form.add_error(None, str(e)) return self.form_invalid(form) - membership_form.save() # If it is not validated and if this is an old member, then we update the choices elif not form.instance.first_year and PermissionBackend.check_perm( self.request, "wei.change_weiregistration_information_json", self.object): @@ -777,6 +842,10 @@ class WEIUpdateRegistrationView(ProtectQuerysetMixin, LoginRequiredMixin, Update information["preferred_roles_pk"] = [role.pk for role in choose_bus_form.cleaned_data["roles"]] information["preferred_roles_name"] = [role.name for role in choose_bus_form.cleaned_data["roles"]] form.instance.information = information + + # Sauvegarder le type de caution pour les 2A+ + if "caution_type" in form.cleaned_data: + form.instance.caution_type = form.cleaned_data["caution_type"] form.instance.save() return super().form_valid(form) @@ -787,14 +856,8 @@ class WEIUpdateRegistrationView(ProtectQuerysetMixin, LoginRequiredMixin, Update survey = CurrentSurvey(self.object) if not survey.is_complete(): return reverse_lazy("wei:wei_survey", kwargs={"pk": self.object.pk}) - if PermissionBackend.check_perm(self.request, "wei.add_weimembership", WEIMembership( - club=self.object.wei, - user=self.object.user, - date_start=date.today(), - date_end=date.today(), - fee=0, - registration=self.object, - )): + # On redirige vers la validation uniquement si c'est explicitement demandé (et stocké dans la vue) + if self.should_validate and self.request.user.has_perm("wei.add_weimembership"): return reverse_lazy("wei:validate_registration", kwargs={"pk": self.object.pk}) return reverse_lazy("wei:wei_detail", kwargs={"pk": self.object.wei.pk}) @@ -836,18 +899,23 @@ class WEIValidateRegistrationView(ProtectQuerysetMixin, ProtectedCreateView): extra_context = {"title": _("Validate WEI registration")} def get_sample_object(self): + """ + Return a sample object for permission checking + """ registration = WEIRegistration.objects.get(pk=self.kwargs["pk"]) return WEIMembership( - club=registration.wei, user=registration.user, - date_start=date.today(), - date_end=date.today() + timedelta(days=1), - fee=0, + club=registration.wei, + date_start=registration.wei.date_start, + fee=registration.wei.membership_fee_paid if registration.user.profile.paid else registration.wei.membership_fee_unpaid, + # Add any fields needed for proper permission checking registration=registration, ) def dispatch(self, request, *args, **kwargs): - wei = WEIRegistration.objects.get(pk=self.kwargs["pk"]).wei + registration = WEIRegistration.objects.get(pk=self.kwargs["pk"]) + + wei = registration.wei today = date.today() # We can't validate anyone once the WEI is started and before the membership start date if today >= wei.date_start or today < wei.membership_start: @@ -878,7 +946,14 @@ class WEIValidateRegistrationView(ProtectQuerysetMixin, ProtectedCreateView): date_start__gte=bde.membership_start, ).exists() - context["fee"] = registration.fee + fee = registration.fee + context["fee"] = fee + + # Calculer le montant total nécessaire (frais + caution si transaction) + total_needed = fee + if registration.caution_type == 'note': + total_needed += registration.wei.caution_amount + context["total_needed"] = total_needed form = context["form"] if registration.soge_credit: @@ -890,7 +965,7 @@ class WEIValidateRegistrationView(ProtectQuerysetMixin, ProtectedCreateView): def get_form_class(self): registration = WEIRegistration.objects.get(pk=self.kwargs["pk"]) - if registration.first_year and 'sleected_bus_pk' not in registration.information: + if registration.first_year and 'selected_bus_pk' not in registration.information: return WEIMembership1AForm return WEIMembershipForm @@ -900,8 +975,24 @@ class WEIValidateRegistrationView(ProtectQuerysetMixin, ProtectedCreateView): form.fields["last_name"].initial = registration.user.last_name form.fields["first_name"].initial = registration.user.first_name - if "caution_check" in form.fields: - form.fields["caution_check"].initial = registration.caution_check + # Ajouter le champ caution_check uniquement pour les non-première année et le rendre obligatoire + if not registration.first_year: + if registration.caution_type == 'check': + form.fields["caution_check"] = forms.BooleanField( + required=True, + initial=registration.caution_check, + label=_("Caution check given"), + help_text=_("Please make sure the check is given before validating the registration") + ) + else: + form.fields["caution_check"] = forms.BooleanField( + required=True, + initial=False, + label=_("Create deposit transaction"), + help_text=_("A transaction of %(amount).2f€ will be created from the user's Note account") % { + 'amount': registration.wei.caution_amount / 100 + } + ) if registration.soge_credit: form.fields["credit_type"].disabled = True @@ -985,10 +1076,20 @@ class WEIValidateRegistrationView(ProtectQuerysetMixin, ProtectedCreateView): if credit_type is None or registration.soge_credit: credit_amount = 0 - if not registration.soge_credit and user.note.balance + credit_amount < fee: - # Users must have money before registering to the WEI. + # Calculer le montant total nécessaire (frais + caution si transaction) + total_needed = fee + if registration.caution_type == 'note': + total_needed += club.caution_amount + + # Vérifier que l'utilisateur a assez d'argent pour tout payer + if not registration.soge_credit and user.note.balance + credit_amount < total_needed: form.add_error('credit_type', - _("This user don't have enough money to join this club, and can't have a negative balance.")) + _("This user doesn't have enough money to join this club and pay the deposit. " + "Current balance: %(balance)d€, credit: %(credit)d€, needed: %(needed)d€") % { + 'balance': user.note.balance, + 'credit': credit_amount, + 'needed': total_needed} + ) return super().form_invalid(form) if credit_amount: @@ -1028,6 +1129,18 @@ class WEIValidateRegistrationView(ProtectQuerysetMixin, ProtectedCreateView): membership.refresh_from_db() membership.roles.add(WEIRole.objects.get(name="Adhérent⋅e WEI")) + # Créer la transaction de caution si nécessaire + if registration.caution_type == 'note': + from note.models import Transaction + Transaction.objects.create( + source=user.note, + destination=club.note, + quantity=1, + amount=club.caution_amount, + reason=_("Caution %(name)s") % {'name': club.name}, + valid=True, + ) + return super().form_valid(form) def get_success_url(self): @@ -1247,6 +1360,7 @@ class WEI1AListView(LoginRequiredMixin, ProtectQuerysetMixin, SingleTableView): def get_queryset(self, filter_permissions=True, **kwargs): qs = super().get_queryset(filter_permissions, **kwargs) qs = qs.filter(first_year=True, membership__isnull=False) + qs = qs.filter(wei=self.club) qs = qs.order_by('-membership__bus') return qs @@ -1289,8 +1403,22 @@ class WEIAttributeBus1ANextView(LoginRequiredMixin, RedirectView): if not wei.exists(): raise Http404 wei = wei.get() - qs = WEIRegistration.objects.filter(wei=wei, membership__isnull=False, membership__bus__isnull=True) - qs = qs.filter(information_json__contains='selected_bus_pk') # not perfect, but works... - if qs.exists(): - return reverse_lazy('wei:wei_bus_1A', args=(qs.first().pk, )) - return reverse_lazy('wei:wei_1A_list', args=(wei.pk, )) + + # On cherche d'abord les 1A qui ont une inscription validée (membership) mais pas de bus + qs = WEIRegistration.objects.filter( + wei=wei, + first_year=True, + membership__isnull=False, + membership__bus__isnull=True + ) + + # Parmi eux, on prend ceux qui ont répondu au questionnaire (ont un bus préféré) + qs = qs.filter(information_json__contains='selected_bus_pk') + + if not qs.exists(): + # Si on ne trouve personne, on affiche un message et on retourne à la liste + messages.info(self.request, _("No first year student without a bus found. Either all of them have a bus, or none has filled the survey yet.")) + return reverse_lazy('wei:wei_1A_list', args=(wei.pk,)) + + # On redirige vers la page d'attribution pour le premier étudiant trouvé + return reverse_lazy('wei:wei_bus_1A', args=(qs.first().pk,)) diff --git a/locale/de/LC_MESSAGES/django.po b/locale/de/LC_MESSAGES/django.po index 055b0093..f4698e23 100644 --- a/locale/de/LC_MESSAGES/django.po +++ b/locale/de/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-08-17 11:57+0200\n" +"POT-Creation-Date: 2025-06-02 00:58+0200\n" "PO-Revision-Date: 2020-11-16 20:02+0000\n" "Last-Translator: bleizi \n" "Language-Team: German \n" @@ -18,51 +18,57 @@ msgstr "" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.3.2\n" +#: apps/activity/api/serializers.py:77 +#, fuzzy +#| msgid "This credit is already validated." +msgid "This opener already exists" +msgstr "Dieser Kredit ist bereits validiert." + #: apps/activity/apps.py:10 apps/activity/models.py:129 -#: apps/activity/models.py:169 +#: apps/activity/models.py:169 apps/activity/models.py:329 msgid "activity" msgstr "Veranstaltung" -#: apps/activity/forms.py:34 +#: apps/activity/forms.py:35 msgid "The note of this club is inactive." msgstr "" -#: apps/activity/forms.py:41 apps/activity/models.py:142 +#: apps/activity/forms.py:42 apps/activity/models.py:142 msgid "The end date must be after the start date." msgstr "Das Abschlussdatum muss nach das Anfangsdatum sein." -#: apps/activity/forms.py:82 apps/activity/models.py:271 +#: apps/activity/forms.py:83 apps/activity/models.py:277 msgid "You can't invite someone once the activity is started." msgstr "" "Sie dürfen nicht jemandem einladen wenn die Veranstaltung angefangen hat." -#: apps/activity/forms.py:85 apps/activity/models.py:274 +#: apps/activity/forms.py:86 apps/activity/models.py:280 msgid "This activity is not validated yet." msgstr "Diese Veranstaltung ist noch nicht bestätigt." -#: apps/activity/forms.py:95 apps/activity/models.py:282 +#: apps/activity/forms.py:96 apps/activity/models.py:288 msgid "This person has been already invited 5 times this year." msgstr "Diese Person wurde schon 5 mal dieses Jahr eingeladen." -#: apps/activity/forms.py:99 apps/activity/models.py:286 +#: apps/activity/forms.py:100 apps/activity/models.py:292 msgid "This person is already invited." msgstr "Diese Person wurde schon eingeladen." -#: apps/activity/forms.py:103 apps/activity/models.py:290 +#: apps/activity/forms.py:104 apps/activity/models.py:296 msgid "You can't invite more than 3 people to this activity." msgstr "Sie dürfen höchstens 3 Leute zu dieser Veranstaltung einladen." -#: apps/activity/models.py:28 apps/activity/models.py:63 apps/food/models.py:42 -#: apps/food/models.py:56 apps/member/models.py:203 +#: apps/activity/models.py:28 apps/activity/models.py:63 apps/food/models.py:18 +#: apps/food/models.py:35 apps/member/models.py:203 #: apps/member/templates/member/includes/club_info.html:4 #: apps/member/templates/member/includes/profile_info.html:4 #: apps/note/models/notes.py:263 apps/note/models/transactions.py:26 #: apps/note/models/transactions.py:46 apps/note/models/transactions.py:299 #: apps/permission/models.py:329 #: apps/registration/templates/registration/future_profile_detail.html:16 -#: apps/wei/models.py:67 apps/wei/models.py:131 apps/wei/tables.py:282 +#: apps/wei/models.py:72 apps/wei/models.py:145 apps/wei/tables.py:282 #: apps/wei/templates/wei/base.html:26 -#: apps/wei/templates/wei/weimembership_form.html:14 +#: apps/wei/templates/wei/weimembership_form.html:14 apps/wrapped/models.py:16 msgid "name" msgstr "Name" @@ -95,7 +101,7 @@ msgstr "Vearnstaltungarte" #: apps/activity/models.py:68 #: apps/activity/templates/activity/includes/activity_info.html:19 #: apps/note/models/transactions.py:82 apps/permission/models.py:109 -#: apps/permission/models.py:188 apps/wei/models.py:78 apps/wei/models.py:142 +#: apps/permission/models.py:188 apps/wei/models.py:92 apps/wei/models.py:156 msgid "description" msgstr "Beschreibung" @@ -114,9 +120,9 @@ msgstr "Wo findet die Veranstaltung statt ? (z.B Kfet)." msgid "type" msgstr "Type" -#: apps/activity/models.py:91 apps/logs/models.py:22 apps/member/models.py:318 -#: apps/note/models/notes.py:148 apps/treasury/models.py:293 -#: apps/wei/models.py:171 apps/wei/templates/wei/attribute_bus_1A.html:13 +#: apps/activity/models.py:91 apps/logs/models.py:22 apps/member/models.py:325 +#: apps/note/models/notes.py:148 apps/treasury/models.py:294 +#: apps/wei/models.py:185 apps/wei/templates/wei/attribute_bus_1A.html:13 #: apps/wei/templates/wei/survey.html:15 msgid "user" msgstr "User" @@ -171,7 +177,7 @@ msgid "entry time" msgstr "Eintrittzeit" #: apps/activity/models.py:180 apps/note/apps.py:14 -#: apps/note/models/notes.py:77 +#: apps/note/models/notes.py:77 apps/wrapped/models.py:60 msgid "note" msgstr "Note" @@ -199,21 +205,21 @@ msgstr "Eintritt von {note} zur Veranstaltung {activity}" msgid "Already entered on " msgstr "Schon eingetretten " -#: apps/activity/models.py:204 apps/activity/tables.py:56 +#: apps/activity/models.py:205 apps/activity/tables.py:58 msgid "{:%Y-%m-%d %H:%M:%S}" msgstr "{:%Y-%m-%d %H:%M:%S}" -#: apps/activity/models.py:212 +#: apps/activity/models.py:213 msgid "The balance is negative." msgstr "Kontostand ist im Rot." -#: apps/activity/models.py:242 +#: apps/activity/models.py:243 #: apps/treasury/templates/treasury/sogecredit_detail.html:14 #: apps/wei/templates/wei/attribute_bus_1A.html:16 msgid "last name" msgstr "Nachname" -#: apps/activity/models.py:247 +#: apps/activity/models.py:248 #: apps/member/templates/member/includes/profile_info.html:4 #: apps/registration/templates/registration/future_profile_detail.html:16 #: apps/treasury/templates/treasury/sogecredit_detail.html:17 @@ -222,79 +228,144 @@ msgstr "Nachname" msgid "first name" msgstr "Vorname" -#: apps/activity/models.py:254 +#: apps/activity/models.py:253 +msgid "school" +msgstr "" + +#: apps/activity/models.py:260 msgid "inviter" msgstr "Einlader" -#: apps/activity/models.py:258 +#: apps/activity/models.py:264 msgid "guest" msgstr "Gast" -#: apps/activity/models.py:259 +#: apps/activity/models.py:265 msgid "guests" msgstr "Gäste" -#: apps/activity/models.py:312 +#: apps/activity/models.py:318 msgid "Invitation" msgstr "Einladung" -#: apps/activity/tables.py:27 +#: apps/activity/models.py:336 apps/activity/models.py:340 +#, fuzzy +#| msgid "opened" +msgid "Opener" +msgstr "geöffnet" + +#: apps/activity/models.py:341 +#: apps/activity/templates/activity/activity_detail.html:16 +#, fuzzy +#| msgid "opened" +msgid "Openers" +msgstr "geöffnet" + +#: apps/activity/models.py:345 +#, fuzzy, python-brace-format +#| msgid "Entry for {note} to the activity {activity}" +msgid "{opener} is opener of activity {acivity}" +msgstr "Eintritt von {note} zur Veranstaltung {activity}" + +#: apps/activity/tables.py:29 msgid "The activity is currently open." msgstr "Die Veranstaltung ist geöffnet." -#: apps/activity/tables.py:28 +#: apps/activity/tables.py:30 msgid "The validation of the activity is pending." msgstr "Diese Veranstaltung ist noch nicht bestätigt." -#: apps/activity/tables.py:43 +#: apps/activity/tables.py:45 #: apps/member/templates/member/picture_update.html:18 -#: apps/treasury/tables.py:107 +#: apps/treasury/tables.py:110 msgid "Remove" msgstr "Entfernen" -#: apps/activity/tables.py:56 +#: apps/activity/tables.py:58 msgid "Entered on " msgstr "Eingetreten um " -#: apps/activity/tables.py:58 +#: apps/activity/tables.py:60 msgid "remove" msgstr "entfernen" -#: apps/activity/tables.py:82 apps/note/forms.py:68 apps/treasury/models.py:208 +#: apps/activity/tables.py:84 apps/note/forms.py:69 apps/treasury/models.py:209 msgid "Type" msgstr "Type" -#: apps/activity/tables.py:84 apps/member/forms.py:196 +#: apps/activity/tables.py:86 apps/member/forms.py:199 #: apps/registration/forms.py:91 apps/treasury/forms.py:131 -#: apps/wei/forms/registration.py:104 +#: apps/wei/forms/registration.py:116 msgid "Last name" msgstr "Nachname" -#: apps/activity/tables.py:86 apps/member/forms.py:201 +#: apps/activity/tables.py:88 apps/member/forms.py:204 #: apps/note/templates/note/transaction_form.html:138 #: apps/registration/forms.py:96 apps/treasury/forms.py:133 -#: apps/wei/forms/registration.py:109 +#: apps/wei/forms/registration.py:121 msgid "First name" msgstr "Vorname" -#: apps/activity/tables.py:88 apps/note/models/notes.py:86 +#: apps/activity/tables.py:90 apps/note/models/notes.py:86 msgid "Note" msgstr "Note" -#: apps/activity/tables.py:90 apps/member/tables.py:50 +#: apps/activity/tables.py:92 apps/member/tables.py:50 msgid "Balance" msgstr "Kontostand" -#: apps/activity/templates/activity/activity_detail.html:15 +#: apps/activity/tables.py:141 apps/activity/tables.py:148 +#: apps/note/tables.py:166 apps/note/tables.py:173 apps/note/tables.py:234 +#: apps/note/tables.py:281 apps/treasury/tables.py:39 +#: apps/treasury/templates/treasury/invoice_confirm_delete.html:30 +#: apps/treasury/templates/treasury/sogecredit_detail.html:65 +#: apps/wei/tables.py:75 apps/wei/tables.py:118 +#: apps/wei/templates/wei/weiregistration_confirm_delete.html:31 +#: env/lib/python3.11/site-packages/django/forms/formsets.py:499 +#: env/lib/python3.11/site-packages/oauth2_provider/templates/oauth2_provider/application_confirm_delete.html:13 +#: env/lib/python3.11/site-packages/oauth2_provider/templates/oauth2_provider/application_detail.html:38 +#: env/lib/python3.11/site-packages/oauth2_provider/templates/oauth2_provider/authorized-token-delete.html:7 +#: note_kfet/templates/oauth2_provider/application_confirm_delete.html:18 +#: note_kfet/templates/oauth2_provider/application_detail.html:39 +#: note_kfet/templates/oauth2_provider/authorized-token-delete.html:12 +msgid "Delete" +msgstr "Löschen" + +#: apps/activity/templates/activity/activity_detail.html:24 +#: apps/member/templates/member/club_alias.html:20 +#: apps/member/templates/member/profile_alias.html:19 +#: apps/member/templates/member/profile_trust.html:19 +#: apps/treasury/tables.py:101 +#: apps/treasury/templates/treasury/sogecredit_list.html:34 +#: apps/treasury/templates/treasury/sogecredit_list.html:73 +msgid "Add" +msgstr "Neue" + +#: apps/activity/templates/activity/activity_detail.html:35 msgid "Guests list" msgstr "Gastliste" -#: apps/activity/templates/activity/activity_detail.html:33 +#: apps/activity/templates/activity/activity_detail.html:55 #, fuzzy #| msgid "Guests list" msgid "Guest deleted" msgstr "Gastliste" +#: apps/activity/templates/activity/activity_detail.html:99 +#, fuzzy +#| msgid "" +#| "Are you sure you want to delete this invoice? This action can't be undone." +msgid "Are you sure you want to delete this activity?" +msgstr "" +"Möchten Sie diese Rechnung wirklich löschen? Diese Aktion kann nicht " +"rückgängig gemacht werden." + +#: apps/activity/templates/activity/activity_detail.html:110 +#, fuzzy +#| msgid "Activity detail" +msgid "Activity deleted" +msgstr "Veranstaltunginfo" + #: apps/activity/templates/activity/activity_entry.html:14 #: apps/note/models/transactions.py:261 #: apps/note/templates/note/transaction_form.html:17 @@ -336,17 +407,17 @@ msgid "Entry done!" msgstr "Eintrittseite" #: apps/activity/templates/activity/activity_form.html:16 -#: apps/food/templates/food/add_ingredient_form.html:16 -#: apps/food/templates/food/basicfood_form.html:16 -#: apps/food/templates/food/create_qrcode_form.html:19 -#: apps/food/templates/food/transformedfood_form.html:16 +#: apps/food/templates/food/food_update.html:17 +#: apps/food/templates/food/manage_ingredients.html:48 +#: apps/food/templates/food/qrcode.html:18 +#: apps/food/templates/food/transformedfood_update.html:45 #: apps/member/templates/member/add_members.html:46 #: apps/member/templates/member/club_form.html:16 #: apps/note/templates/note/transactiontemplate_form.html:18 #: apps/treasury/forms.py:89 apps/treasury/forms.py:143 #: apps/treasury/templates/treasury/invoice_form.html:74 #: apps/wei/templates/wei/bus_form.html:17 -#: apps/wei/templates/wei/busteam_form.html:17 +#: apps/wei/templates/wei/busteam_form.html:18 #: apps/wei/templates/wei/weiclub_form.html:17 #: apps/wei/templates/wei/weiregistration_form.html:18 msgid "Submit" @@ -402,42 +473,62 @@ msgid "edit" msgstr "bearbeiten" #: apps/activity/templates/activity/includes/activity_info.html:74 +#: apps/logs/models.py:65 apps/note/tables.py:230 apps/note/tables.py:279 +#: apps/permission/models.py:126 apps/treasury/tables.py:38 +#: apps/wei/tables.py:74 +msgid "delete" +msgstr "entfernen" + +#: apps/activity/templates/activity/includes/activity_info.html:77 msgid "Invite" msgstr "Einladen" -#: apps/activity/views.py:37 +#: apps/activity/views.py:38 msgid "Create new activity" msgstr "Neue Veranstaltung schaffen" -#: apps/activity/views.py:67 note_kfet/templates/base.html:96 +#: apps/activity/views.py:71 note_kfet/templates/base.html:96 msgid "Activities" msgstr "Veranstaltungen" -#: apps/activity/views.py:108 +#: apps/activity/views.py:105 msgid "Activity detail" msgstr "Veranstaltunginfo" -#: apps/activity/views.py:128 +#: apps/activity/views.py:150 msgid "Update activity" msgstr "Veranstaltung bearbeiten" -#: apps/activity/views.py:155 +#: apps/activity/views.py:177 +#, fuzzy +#| msgid "" +#| "You are not allowed to display the entry interface for this activity." +msgid "You are not allowed to delete this activity." +msgstr "Sie haben nicht das Recht diese Seite zu benuzten." + +#: apps/activity/views.py:180 +#, fuzzy +#| msgid "This activity is closed." +msgid "This activity is valid." +msgstr "Diese Veranstaltung ist geschlossen." + +#: apps/activity/views.py:206 msgid "Invite guest to the activity \"{}\"" msgstr "Gast zur Veranstaltung \"{}\" einladen" -#: apps/activity/views.py:193 +#: apps/activity/views.py:246 msgid "You are not allowed to display the entry interface for this activity." msgstr "Sie haben nicht das Recht diese Seite zu benuzten." -#: apps/activity/views.py:196 +#: apps/activity/views.py:249 msgid "This activity does not support activity entries." msgstr "Diese Veranstaltung braucht nicht Eintritt." -#: apps/activity/views.py:199 +#: apps/activity/views.py:252 msgid "This activity is closed." msgstr "Diese Veranstaltung ist geschlossen." -#: apps/activity/views.py:295 +#: apps/activity/views.py:357 msgid "Entry for activity \"{}\"" msgstr "Eintritt zur Veranstaltung \"{}\"" @@ -445,297 +536,365 @@ msgstr "Eintritt zur Veranstaltung \"{}\"" msgid "API" msgstr "API" -#: apps/food/apps.py:11 apps/food/models.py:105 +#: apps/food/apps.py:11 msgid "food" msgstr "" -#: apps/food/forms.py:32 -msgid "Fully used" -msgstr "" - -#: apps/food/forms.py:50 +#: apps/food/forms.py:49 msgid "Pasta METRO 5kg" msgstr "" -#: apps/food/forms.py:96 +#: apps/food/forms.py:53 apps/food/forms.py:81 +msgid "Specific order given to GCKs" +msgstr "" + +#: apps/food/forms.py:77 msgid "Lasagna" msgstr "" -#: apps/food/models.py:18 +#: apps/food/forms.py:116 +msgid "Shelf life (in hours)" +msgstr "" + +#: apps/food/forms.py:138 apps/food/forms.py:162 +#: apps/food/templates/food/transformedfood_update.html:25 +msgid "Fully used" +msgstr "" + +#: apps/food/forms.py:171 apps/food/templates/food/qrcode.html:29 +#: apps/food/templates/food/transformedfood_update.html:23 +#: apps/note/templates/note/transaction_form.html:132 +#: apps/treasury/models.py:61 +msgid "Name" +msgstr "Name" + +#: apps/food/forms.py:181 #, fuzzy #| msgid "phone number" -msgid "QR-code number" +msgid "QR code number" msgstr "Telefonnummer" -#: apps/food/models.py:26 -msgid "food container" -msgstr "" - -#: apps/food/models.py:30 -msgid "QR-code" -msgstr "" - -#: apps/food/models.py:31 -msgid "QR-codes" -msgstr "" - -#: apps/food/models.py:34 -#, python-brace-format -msgid "QR-code number {qr_code_number}" -msgstr "" - -#: apps/food/models.py:47 +#: apps/food/models.py:23 msgid "Allergen" msgstr "" -#: apps/food/models.py:48 apps/food/templates/food/basicfood_detail.html:17 -#: apps/food/templates/food/transformedfood_detail.html:20 +#: apps/food/models.py:24 msgid "Allergens" msgstr "" -#: apps/food/models.py:64 +#: apps/food/models.py:43 msgid "owner" msgstr "" -#: apps/food/models.py:70 -msgid "allergen" +#: apps/food/models.py:49 +msgid "allergens" msgstr "" -#: apps/food/models.py:74 +#: apps/food/models.py:53 #, fuzzy #| msgid "birth date" msgid "expiry date" msgstr "Geburtsdatum" -#: apps/food/models.py:80 -msgid "was eaten" +#: apps/food/models.py:59 +msgid "end of life" msgstr "" -#: apps/food/models.py:89 +#: apps/food/models.py:64 msgid "is ready" msgstr "" -#: apps/food/models.py:94 -#, fuzzy -#| msgid "active" -msgid "is active" -msgstr "Aktiv" - -#: apps/food/models.py:106 -msgid "foods" +#: apps/food/models.py:70 +msgid "order" msgstr "" -#: apps/food/models.py:122 +#: apps/food/models.py:107 apps/food/views.py:34 +#: note_kfet/templates/base.html:72 +msgid "Food" +msgstr "" + +#: apps/food/models.py:108 +msgid "Foods" +msgstr "" + +#: apps/food/models.py:117 #, fuzzy #| msgid "start date" msgid "arrival date" msgstr "Anfangsdatum" -#: apps/food/models.py:152 +#: apps/food/models.py:169 msgid "Basic food" msgstr "" -#: apps/food/models.py:153 +#: apps/food/models.py:170 msgid "Basic foods" msgstr "" -#: apps/food/models.py:161 +#: apps/food/models.py:182 #, fuzzy #| msgid "created at" msgid "creation date" msgstr "erschafft am" -#: apps/food/models.py:169 -msgid "transformed ingredient" -msgstr "" - -#: apps/food/models.py:174 +#: apps/food/models.py:188 msgid "shelf life" msgstr "" -#: apps/food/models.py:225 apps/food/views.py:365 +#: apps/food/models.py:196 +msgid "transformed ingredient" +msgstr "" + +#: apps/food/models.py:258 #, fuzzy #| msgid "Transfer money" msgid "Transformed food" msgstr "Geld überweisen" -#: apps/food/models.py:226 +#: apps/food/models.py:259 msgid "Transformed foods" msgstr "" -#: apps/food/templates/food/basicfood_detail.html:14 -#: apps/food/templates/food/qrcode_detail.html:15 -#: apps/food/templates/food/transformedfood_detail.html:14 +#: apps/food/models.py:271 #, fuzzy -#| msgid "Owned" -msgid "Owner" -msgstr "Besetzt" +#| msgid "phone number" +msgid "qr code number" +msgstr "Telefonnummer" -#: apps/food/templates/food/basicfood_detail.html:15 -#, fuzzy -#| msgid "start date" -msgid "Arrival date" -msgstr "Anfangsdatum" - -#: apps/food/templates/food/basicfood_detail.html:16 -#: apps/food/templates/food/qrcode_detail.html:16 -#: apps/food/templates/food/transformedfood_detail.html:19 -#, fuzzy -#| msgid "birth date" -msgid "Expiry date" -msgstr "Geburtsdatum" - -#: apps/food/templates/food/basicfood_detail.html:24 -#: apps/food/templates/food/transformedfood_detail.html:36 -#, fuzzy -#| msgid "active" -msgid "Active" -msgstr "Aktiv" - -#: apps/food/templates/food/basicfood_detail.html:25 -#: apps/food/templates/food/transformedfood_detail.html:37 -msgid "Eaten" +#: apps/food/models.py:278 +msgid "food container" msgstr "" -#: apps/food/templates/food/basicfood_detail.html:28 -#: apps/food/templates/food/qrcode_detail.html:20 -#: apps/food/templates/food/qrcode_detail.html:24 -#: apps/food/templates/food/transformedfood_detail.html:41 +#: apps/food/models.py:282 +msgid "QR-code" +msgstr "" + +#: apps/food/models.py:283 +msgid "QR-codes" +msgstr "" + +#: apps/food/models.py:286 +#: apps/food/templates/food/transformedfood_update.html:24 +#, fuzzy +#| msgid "phone number" +msgid "QR-code number" +msgstr "Telefonnummer" + +#: apps/food/templates/food/food_detail.html:19 +msgid "Contained in" +msgstr "" + +#: apps/food/templates/food/food_detail.html:26 +msgid "Contain" +msgstr "" + +#: apps/food/templates/food/food_detail.html:35 #, fuzzy #| msgid "Update bus" msgid "Update" msgstr "Bus bearbeiten" -#: apps/food/templates/food/basicfood_detail.html:32 -#: apps/food/templates/food/qrcode_detail.html:34 -#: apps/food/templates/food/transformedfood_detail.html:46 +#: apps/food/templates/food/food_detail.html:40 #, fuzzy #| msgid "Add team" msgid "Add to a meal" msgstr "Neue Team" -#: apps/food/templates/food/create_qrcode_form.html:14 +#: apps/food/templates/food/food_detail.html:45 #, fuzzy -#| msgid "Transfer money" -msgid "New basic food" -msgstr "Geld überweisen" +#| msgid "manage entries" +msgid "Manage ingredients" +msgstr "Einträge verwalten" -#: apps/food/templates/food/qrcode_detail.html:10 +#: apps/food/templates/food/food_detail.html:49 #, fuzzy -#| msgid "phone number" -msgid "number" -msgstr "Telefonnummer" +#| msgid "Return to credit list" +msgid "Return to the food list" +msgstr "Zurück zur Kreditlist" -#: apps/food/templates/food/qrcode_detail.html:14 -#: apps/note/templates/note/transaction_form.html:132 -#: apps/treasury/models.py:60 -msgid "Name" -msgstr "Name" - -#: apps/food/templates/food/qrcode_detail.html:29 -#, fuzzy -#| msgid "Profile detail" -msgid "View details" -msgstr "Profile detail" - -#: apps/food/templates/food/transformedfood_detail.html:16 -#: apps/food/templates/food/transformedfood_detail.html:35 -msgid "Ready" -msgstr "" - -#: apps/food/templates/food/transformedfood_detail.html:18 -#, fuzzy -#| msgid "created at" -msgid "Creation date" -msgstr "erschafft am" - -#: apps/food/templates/food/transformedfood_detail.html:27 -msgid "Ingredients" -msgstr "" - -#: apps/food/templates/food/transformedfood_detail.html:34 -msgid "Shelf life" -msgstr "" - -#: apps/food/templates/food/transformedfood_list.html:11 +#: apps/food/templates/food/food_list.html:14 msgid "Meal served" msgstr "" -#: apps/food/templates/food/transformedfood_list.html:16 +#: apps/food/templates/food/food_list.html:19 #, fuzzy #| msgid "New user" msgid "New meal" msgstr "Neue User" -#: apps/food/templates/food/transformedfood_list.html:25 +#: apps/food/templates/food/food_list.html:28 #, fuzzy #| msgid "There is no results." msgid "There is no meal served." msgstr "Es gibt keine Ergebnisse." -#: apps/food/templates/food/transformedfood_list.html:33 -msgid "Open" +#: apps/food/templates/food/food_list.html:35 +msgid "Free food" msgstr "" -#: apps/food/templates/food/transformedfood_list.html:40 +#: apps/food/templates/food/food_list.html:42 #, fuzzy #| msgid "There is no results." -msgid "There is no free meal." +msgid "There is no free food." msgstr "Es gibt keine Ergebnisse." -#: apps/food/templates/food/transformedfood_list.html:48 -msgid "All meals" +#: apps/food/templates/food/food_list.html:50 +#, fuzzy +#| msgid "for club" +msgid "Food of your clubs" +msgstr "Für Club" + +#: apps/food/templates/food/food_list.html:56 +#, fuzzy +#| msgid "for club" +msgid "Food of club" +msgstr "Für Club" + +#: apps/food/templates/food/food_list.html:63 +msgid "Yours club has not food yet." msgstr "" -#: apps/food/templates/food/transformedfood_list.html:55 -#, fuzzy -#| msgid "There is no results." -msgid "There is no meal." -msgstr "Es gibt keine Ergebnisse." - -#: apps/food/views.py:28 -msgid "Add the ingredient" +#: apps/food/templates/food/manage_ingredients.html:45 +#: apps/food/templates/food/transformedfood_update.html:42 +msgid "Add ingredient" msgstr "" -#: apps/food/views.py:42 +#: apps/food/templates/food/manage_ingredients.html:46 +#: apps/food/templates/food/transformedfood_update.html:43 #, fuzzy -#| msgid "This credit is already validated." -msgid "The product is already prepared" -msgstr "Dieser Kredit ist bereits validiert." +#| msgid "Remove product" +msgid "Remove ingredient" +msgstr "Produkt entfernen" -#: apps/food/views.py:70 +#: apps/food/templates/food/qrcode.html:22 +msgid "Copy constructor" +msgstr "" + +#: apps/food/templates/food/qrcode.html:23 +#, fuzzy +#| msgid "Transfer money" +msgid "New food" +msgstr "Geld überweisen" + +#: apps/food/templates/food/qrcode.html:32 +#, fuzzy +#| msgid "Owned" +msgid "Owner" +msgstr "Besetzt" + +#: apps/food/templates/food/qrcode.html:35 +#, fuzzy +#| msgid "birth date" +msgid "Expiry date" +msgstr "Geburtsdatum" + +#: apps/food/utils.py:6 +msgid "second" +msgstr "" + +#: apps/food/utils.py:6 +msgid "seconds" +msgstr "" + +#: apps/food/utils.py:7 +msgid "minute" +msgstr "" + +#: apps/food/utils.py:7 +msgid "minutes" +msgstr "" + +#: apps/food/utils.py:8 +msgid "hour" +msgstr "" + +#: apps/food/utils.py:8 +msgid "hours" +msgstr "" + +#: apps/food/utils.py:9 +#, fuzzy +#| msgid "days" +msgid "day" +msgstr "Tagen" + +#: apps/food/utils.py:9 apps/member/templates/member/includes/club_info.html:27 +msgid "days" +msgstr "Tagen" + +#: apps/food/utils.py:10 +msgid "week" +msgstr "" + +#: apps/food/utils.py:10 +msgid "weeks" +msgstr "" + +#: apps/food/utils.py:53 +#: env/lib/python3.11/site-packages/django/db/models/base.py:1423 +#: env/lib/python3.11/site-packages/django/forms/models.py:893 +#, fuzzy +#| msgid "add" +msgid "and" +msgstr "hinzufügen" + +#: apps/food/views.py:118 +msgid "Add a new QRCode" +msgstr "" + +#: apps/food/views.py:167 +#, fuzzy +#| msgid "Update an invoice" +msgid "Add an aliment" +msgstr "Rechnung bearbeiten" + +#: apps/food/views.py:235 +#, fuzzy +#| msgid "Add team" +msgid "Add a meal" +msgstr "Neue Team" + +#: apps/food/views.py:275 +#, fuzzy +#| msgid "manage entries" +msgid "Manage ingredients of:" +msgstr "Einträge verwalten" + +#: apps/food/views.py:289 apps/food/views.py:297 +#, python-brace-format +msgid "Fully used in {meal}" +msgstr "" + +#: apps/food/views.py:344 +msgid "Add the ingredient:" +msgstr "" + +#: apps/food/views.py:370 +#, python-brace-format +msgid "Food fully used in : {meal.name}" +msgstr "" + +#: apps/food/views.py:389 #, fuzzy #| msgid "Update an invoice" msgid "Update an aliment" msgstr "Rechnung bearbeiten" -#: apps/food/views.py:97 +#: apps/food/views.py:437 #, fuzzy #| msgid "WEI Detail" msgid "Details of:" msgstr "WEI Infos" -#: apps/food/views.py:121 -msgid "Add a new basic food with QRCode" -msgstr "" +#: apps/food/views.py:447 apps/treasury/tables.py:149 +#: env/lib/python3.11/site-packages/django/forms/widgets.py:795 +msgid "Yes" +msgstr "Ja" -#: apps/food/views.py:185 -msgid "Add a new QRCode" -msgstr "" - -#: apps/food/views.py:235 -msgid "QRCode" -msgstr "" - -#: apps/food/views.py:271 -msgid "Add a new meal" -msgstr "" - -#: apps/food/views.py:337 -#, fuzzy -#| msgid "Update team" -msgid "Update a meal" -msgstr "Team bearbeiten" +#: apps/food/views.py:449 apps/member/models.py:99 apps/treasury/tables.py:149 +#: env/lib/python3.11/site-packages/django/forms/widgets.py:796 +msgid "No" +msgstr "Nein" #: apps/logs/apps.py:11 msgid "Logs" @@ -765,12 +924,6 @@ msgstr "neue Daten" msgid "create" msgstr "schaffen" -#: apps/logs/models.py:65 apps/note/tables.py:230 apps/note/tables.py:277 -#: apps/permission/models.py:126 apps/treasury/tables.py:38 -#: apps/wei/tables.py:74 -msgid "delete" -msgstr "entfernen" - #: apps/logs/models.py:68 msgid "action" msgstr "Aktion" @@ -806,11 +959,11 @@ msgstr "Mitgliedschaftpreis (bezahlte Studenten)" msgid "membership fee (unpaid students)" msgstr "Mitgliedschaftpreis (unbezahlte Studenten)" -#: apps/member/admin.py:65 apps/member/models.py:330 +#: apps/member/admin.py:65 apps/member/models.py:337 msgid "roles" msgstr "Rollen" -#: apps/member/admin.py:66 apps/member/models.py:344 +#: apps/member/admin.py:66 apps/member/models.py:351 msgid "fee" msgstr "Preis" @@ -818,26 +971,26 @@ msgstr "Preis" msgid "member" msgstr "Mitglied" -#: apps/member/forms.py:24 +#: apps/member/forms.py:25 msgid "Permission mask" msgstr "Berechtigungsmaske" -#: apps/member/forms.py:46 +#: apps/member/forms.py:48 msgid "Report frequency" msgstr "Bericht Frequenz" -#: apps/member/forms.py:48 +#: apps/member/forms.py:50 msgid "Last report date" msgstr "Letzen Bericht Datum" -#: apps/member/forms.py:52 +#: apps/member/forms.py:54 msgid "" "Anti-VSS (Violences Sexistes et Sexuelles) charter read and approved" msgstr "" "Anti-VSS (Violences Sexistes et Sexuelles) Charta gelesen und " "angenommen" -#: apps/member/forms.py:53 +#: apps/member/forms.py:55 msgid "" "Tick after having read and accepted the anti-VSS charter " @@ -847,65 +1000,65 @@ msgstr "" "haben, die hier als pdf-Datei verfügbar ist" -#: apps/member/forms.py:60 +#: apps/member/forms.py:62 msgid "You can't register to the note if you come from the future." msgstr "Sie dürfen nicht einloggen wenn sie aus der Zukunft kommen." -#: apps/member/forms.py:86 +#: apps/member/forms.py:89 msgid "select an image" msgstr "Wählen sie ein Bild aus" -#: apps/member/forms.py:87 +#: apps/member/forms.py:90 msgid "Maximal size: 2MB" msgstr "Maximal Größe: 2MB" -#: apps/member/forms.py:112 +#: apps/member/forms.py:115 msgid "This image cannot be loaded." msgstr "Dieses Bild kann nicht geladen werden." -#: apps/member/forms.py:151 apps/member/views.py:102 -#: apps/registration/forms.py:33 apps/registration/views.py:276 +#: apps/member/forms.py:154 apps/member/views.py:117 +#: apps/registration/forms.py:33 apps/registration/views.py:282 msgid "An alias with a similar name already exists." msgstr "Ein ähnliches Alias ist schon benutzt." -#: apps/member/forms.py:175 +#: apps/member/forms.py:178 msgid "Inscription paid by Société Générale" msgstr "Mitgliedschaft von der Société Générale bezahlt" -#: apps/member/forms.py:177 +#: apps/member/forms.py:180 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:182 apps/registration/forms.py:78 -#: apps/wei/forms/registration.py:91 +#: apps/member/forms.py:185 apps/registration/forms.py:78 +#: apps/wei/forms/registration.py:103 msgid "Credit type" msgstr "Kredittype" -#: apps/member/forms.py:183 apps/registration/forms.py:79 -#: apps/wei/forms/registration.py:92 +#: apps/member/forms.py:186 apps/registration/forms.py:79 +#: apps/wei/forms/registration.py:104 msgid "No credit" msgstr "Kein Kredit" -#: apps/member/forms.py:185 +#: apps/member/forms.py:188 msgid "You can credit the note of the user." msgstr "Sie dûrfen diese Note kreditieren." -#: apps/member/forms.py:189 apps/registration/forms.py:84 -#: apps/wei/forms/registration.py:97 +#: apps/member/forms.py:192 apps/registration/forms.py:84 +#: apps/wei/forms/registration.py:109 msgid "Credit amount" msgstr "Kreditanzahl" -#: apps/member/forms.py:206 apps/note/templates/note/transaction_form.html:144 +#: apps/member/forms.py:209 apps/note/templates/note/transaction_form.html:144 #: apps/registration/forms.py:101 apps/treasury/forms.py:135 -#: apps/wei/forms/registration.py:114 +#: apps/wei/forms/registration.py:126 msgid "Bank" msgstr "Bank" -#: apps/member/forms.py:233 +#: apps/member/forms.py:236 msgid "User" msgstr "User" -#: apps/member/forms.py:247 +#: apps/member/forms.py:250 msgid "Roles" msgstr "Rollen" @@ -1040,10 +1193,6 @@ msgstr "bezahlt" msgid "Tells if the user receive a salary." msgstr "User ist bezahlt." -#: apps/member/models.py:99 apps/treasury/tables.py:143 -msgid "No" -msgstr "Nein" - #: apps/member/models.py:100 msgid "Yes (receive them in french)" msgstr "Ja (auf Fränzosich)" @@ -1108,7 +1257,7 @@ msgstr "Ihre Note Kfet Konto bestätigen" #: apps/member/templates/member/includes/club_info.html:55 #: apps/member/templates/member/includes/profile_info.html:40 #: apps/registration/templates/registration/future_profile_detail.html:22 -#: apps/wei/templates/wei/base.html:70 +#: apps/wei/templates/wei/base.html:68 #: apps/wei/templates/wei/weimembership_form.html:20 msgid "email" msgstr "Email" @@ -1161,8 +1310,8 @@ msgstr "" msgid "add to registration form" msgstr "Registrierung validieren" -#: apps/member/models.py:268 apps/member/models.py:324 -#: apps/note/models/notes.py:176 +#: apps/member/models.py:268 apps/member/models.py:331 +#: apps/note/models/notes.py:176 apps/wei/models.py:86 msgid "club" msgstr "Club" @@ -1170,37 +1319,37 @@ msgstr "Club" msgid "clubs" msgstr "Clubs" -#: apps/member/models.py:335 +#: apps/member/models.py:342 msgid "membership starts on" msgstr "Mitgliedschaft fängt an" -#: apps/member/models.py:339 +#: apps/member/models.py:346 msgid "membership ends on" msgstr "Mitgliedschaft endet am" -#: apps/member/models.py:348 apps/note/models/transactions.py:385 +#: apps/member/models.py:355 apps/note/models/transactions.py:385 msgid "membership" msgstr "Mitgliedschaft" -#: apps/member/models.py:349 +#: apps/member/models.py:356 msgid "memberships" msgstr "Mitgliedschaften" -#: apps/member/models.py:353 +#: apps/member/models.py:360 #, python-brace-format msgid "Membership of {user} for the club {club}" msgstr "Mitgliedschaft von {user} für das Club {club}" -#: apps/member/models.py:372 +#: apps/member/models.py:379 #, python-brace-format msgid "The role {role} does not apply to the club {club}." msgstr "Die Rolle {role} ist nicht erlaubt für das Club {club}." -#: apps/member/models.py:381 apps/member/views.py:715 +#: apps/member/models.py:388 apps/member/views.py:759 msgid "User is already a member of the club" msgstr "User ist schon ein Mitglied dieser club" -#: apps/member/models.py:393 apps/member/views.py:724 +#: apps/member/models.py:400 apps/member/views.py:768 msgid "User is not a member of the parent club" msgstr "User ist noch nicht Mitglied des Urclubs" @@ -1255,7 +1404,7 @@ msgid "Account #" msgstr "Konto #" #: apps/member/templates/member/base.html:48 -#: apps/member/templates/member/base.html:62 apps/member/views.py:59 +#: apps/member/templates/member/base.html:62 apps/member/views.py:61 #: apps/registration/templates/registration/future_profile_detail.html:48 #: apps/wei/templates/wei/weimembership_form.html:117 msgid "Update Profile" @@ -1316,20 +1465,11 @@ msgstr "" "erlaubt." #: apps/member/templates/member/club_alias.html:10 -#: apps/member/templates/member/profile_alias.html:10 apps/member/views.py:287 -#: apps/member/views.py:520 +#: apps/member/templates/member/profile_alias.html:10 apps/member/views.py:318 +#: apps/member/views.py:559 msgid "Note aliases" msgstr "Note Aliases" -#: apps/member/templates/member/club_alias.html:20 -#: apps/member/templates/member/profile_alias.html:19 -#: apps/member/templates/member/profile_trust.html:19 -#: apps/treasury/tables.py:99 -#: apps/treasury/templates/treasury/sogecredit_list.html:34 -#: apps/treasury/templates/treasury/sogecredit_list.html:73 -msgid "Add" -msgstr "Neue" - #: apps/member/templates/member/club_detail.html:13 #: apps/permission/templates/permission/all_rights.html:32 msgid "Club managers" @@ -1366,10 +1506,6 @@ msgstr "Keine Mitgliedschaft mit diesem pattern gefunden." msgid "Club Parent" msgstr "Urclub" -#: apps/member/templates/member/includes/club_info.html:27 -msgid "days" -msgstr "Tagen" - #: apps/member/templates/member/includes/club_info.html:31 #: apps/wei/templates/wei/base.html:40 msgid "membership fee" @@ -1378,13 +1514,13 @@ msgstr "Mitgliedsachftpreis" #: apps/member/templates/member/includes/club_info.html:43 #: apps/member/templates/member/includes/profile_info.html:55 #: apps/treasury/templates/treasury/sogecredit_detail.html:24 -#: apps/wei/templates/wei/base.html:60 +#: apps/wei/templates/wei/base.html:58 msgid "balance" msgstr "Kontostand" #: apps/member/templates/member/includes/club_info.html:47 #: apps/member/templates/member/includes/profile_info.html:20 -#: apps/note/models/notes.py:287 apps/wei/templates/wei/base.html:66 +#: apps/note/models/notes.py:287 apps/wei/templates/wei/base.html:64 msgid "aliases" msgstr "Aliases" @@ -1473,11 +1609,11 @@ msgstr "" msgid "Show my applications" msgstr "" -#: apps/member/templates/member/picture_update.html:38 +#: apps/member/templates/member/picture_update.html:40 msgid "Nevermind" msgstr "Vergessen" -#: apps/member/templates/member/picture_update.html:39 +#: apps/member/templates/member/picture_update.html:41 msgid "Crop and upload" msgstr "Beschneiden und hochladen" @@ -1522,51 +1658,51 @@ msgstr "Speichern" msgid "Registrations" msgstr "Anmeldung" -#: apps/member/views.py:72 apps/registration/forms.py:23 +#: apps/member/views.py:74 apps/registration/forms.py:23 msgid "This address must be valid." msgstr "Diese Adresse muss gültig sein." -#: apps/member/views.py:139 +#: apps/member/views.py:154 msgid "Profile detail" msgstr "Profile detail" -#: apps/member/views.py:205 +#: apps/member/views.py:220 msgid "Search user" msgstr "User finden" -#: apps/member/views.py:253 +#: apps/member/views.py:272 msgid "Note friendships" msgstr "" -#: apps/member/views.py:308 +#: apps/member/views.py:342 msgid "Update note picture" msgstr "Notebild ändern" -#: apps/member/views.py:357 +#: apps/member/views.py:391 msgid "Manage auth token" msgstr "Auth token bearbeiten" -#: apps/member/views.py:384 +#: apps/member/views.py:418 msgid "Create new club" msgstr "Neue Club" -#: apps/member/views.py:403 +#: apps/member/views.py:437 msgid "Search club" msgstr "Club finden" -#: apps/member/views.py:436 +#: apps/member/views.py:475 msgid "Club detail" msgstr "Club Details" -#: apps/member/views.py:543 +#: apps/member/views.py:587 msgid "Update club" msgstr "Club bearbeiten" -#: apps/member/views.py:577 +#: apps/member/views.py:621 msgid "Add new member to the club" msgstr "Neue Mitglieder" -#: apps/member/views.py:706 apps/wei/views.py:973 +#: apps/member/views.py:750 msgid "" "This user don't have enough money to join this club, and can't have a " "negative balance." @@ -1574,19 +1710,19 @@ msgstr "" "Diese User hat nicht genug Geld um Mitglied zu werden, und darf nich im Rot " "sein." -#: apps/member/views.py:728 +#: apps/member/views.py:772 msgid "The membership must start after {:%m-%d-%Y}." msgstr "Die Mitgliedschaft muss nach {:%m-%d-Y} anfängen." -#: apps/member/views.py:733 +#: apps/member/views.py:777 msgid "The membership must begin before {:%m-%d-%Y}." msgstr "Die Mitgliedschaft muss vor {:%m-%d-Y} anfängen." -#: apps/member/views.py:883 +#: apps/member/views.py:927 msgid "Manage roles of an user in the club" msgstr "Rollen in diesen Club bearbeiten" -#: apps/member/views.py:908 +#: apps/member/views.py:952 msgid "Members of the club" msgstr "Mitlglieder dieses Club" @@ -1619,35 +1755,35 @@ msgstr "" "Diese Transaktion ist nicht möglich weil die Note des Sender oder des " "Empfänger inaktiv ist." -#: apps/note/forms.py:39 +#: apps/note/forms.py:40 msgid "Source" msgstr "Sender" -#: apps/note/forms.py:53 +#: apps/note/forms.py:54 msgid "Destination" msgstr "Empfänger" -#: apps/note/forms.py:74 apps/note/templates/note/transaction_form.html:123 +#: apps/note/forms.py:75 apps/note/templates/note/transaction_form.html:123 msgid "Reason" msgstr "Grund" -#: apps/note/forms.py:79 apps/treasury/tables.py:136 +#: apps/note/forms.py:80 apps/treasury/tables.py:141 msgid "Valid" msgstr "Gültig" -#: apps/note/forms.py:85 +#: apps/note/forms.py:86 msgid "Total amount greater than" msgstr "Totalanzahl größer als" -#: apps/note/forms.py:93 +#: apps/note/forms.py:94 msgid "Total amount less than" msgstr "Totalanzahl kleiner als" -#: apps/note/forms.py:99 +#: apps/note/forms.py:100 msgid "Created after" msgstr "Erschafft nacht" -#: apps/note/forms.py:106 +#: apps/note/forms.py:107 msgid "Created before" msgstr "Erschafft vor" @@ -1752,7 +1888,7 @@ msgstr "" #: apps/note/models/notes.py:243 #, fuzzy #| msgid "Manage aliases" -msgid "friendship" +msgid "frienship" msgstr "Aliases bearbeiten" #: apps/note/models/notes.py:248 @@ -1902,8 +2038,9 @@ msgstr "" "Zahlungsmethode zugeordnet ist, und einem User oder einem Club möglich" #: apps/note/models/transactions.py:357 apps/note/models/transactions.py:360 -#: apps/note/models/transactions.py:363 apps/wei/views.py:978 -#: apps/wei/views.py:982 +#: apps/note/models/transactions.py:363 apps/wei/views.py:1097 +#: apps/wei/views.py:1101 +#: env/lib/python3.11/site-packages/django/forms/fields.py:91 msgid "This field is required." msgstr "Dies ist ein Pflichtfeld." @@ -1911,7 +2048,7 @@ msgstr "Dies ist ein Pflichtfeld." msgid "membership transaction" msgstr "Mitgliedschafttransaktion" -#: apps/note/models/transactions.py:381 apps/treasury/models.py:300 +#: apps/note/models/transactions.py:381 apps/treasury/models.py:301 msgid "membership transactions" msgstr "Mitgliedschaftttransaktionen" @@ -1927,18 +2064,6 @@ msgstr "Klicken Sie zum gültigmachen" msgid "No reason specified" msgstr "Kein Grund gegeben" -#: apps/note/tables.py:166 apps/note/tables.py:173 apps/note/tables.py:234 -#: apps/note/tables.py:279 apps/treasury/tables.py:39 -#: apps/treasury/templates/treasury/invoice_confirm_delete.html:30 -#: apps/treasury/templates/treasury/sogecredit_detail.html:65 -#: apps/wei/tables.py:75 apps/wei/tables.py:118 -#: apps/wei/templates/wei/weiregistration_confirm_delete.html:31 -#: note_kfet/templates/oauth2_provider/application_confirm_delete.html:18 -#: note_kfet/templates/oauth2_provider/application_detail.html:39 -#: note_kfet/templates/oauth2_provider/authorized-token-delete.html:12 -msgid "Delete" -msgstr "Löschen" - #: apps/note/tables.py:191 msgid "Trust back" msgstr "" @@ -1951,15 +2076,16 @@ msgstr "Neue Bus" #: apps/note/tables.py:262 apps/note/templates/note/conso_form.html:151 #: apps/wei/tables.py:49 apps/wei/tables.py:50 -#: apps/wei/templates/wei/base.html:89 -#: apps/wei/templates/wei/bus_detail.html:20 +#: apps/wei/templates/wei/base.html:87 +#: apps/wei/templates/wei/bus_detail.html:24 #: apps/wei/templates/wei/busteam_detail.html:20 -#: apps/wei/templates/wei/busteam_detail.html:40 +#: apps/wei/templates/wei/busteam_detail.html:42 +#: env/lib/python3.11/site-packages/oauth2_provider/templates/oauth2_provider/application_detail.html:37 #: note_kfet/templates/oauth2_provider/application_detail.html:38 msgid "Edit" msgstr "Bearbeiten" -#: apps/note/tables.py:266 apps/note/tables.py:293 +#: apps/note/tables.py:267 apps/note/tables.py:296 msgid "Hide/Show" msgstr "" @@ -2045,8 +2171,8 @@ msgid "Action" msgstr "Aktion" #: apps/note/templates/note/transaction_form.html:116 -#: apps/treasury/forms.py:137 apps/treasury/tables.py:67 -#: apps/treasury/tables.py:132 +#: apps/treasury/forms.py:137 apps/treasury/tables.py:68 +#: apps/treasury/tables.py:136 #: apps/treasury/templates/treasury/remittance_form.html:23 msgid "Amount" msgstr "Anzahl" @@ -2112,34 +2238,35 @@ msgid "Button displayed" msgstr "Tastenliste" #: apps/note/templates/note/transactiontemplate_list.html:100 +#: apps/wrapped/templates/wrapped/wrapped_list.html:70 msgid "An error occured" msgstr "" -#: apps/note/views.py:36 +#: apps/note/views.py:37 msgid "Transfer money" msgstr "Geld überweisen" -#: apps/note/views.py:74 +#: apps/note/views.py:75 msgid "Create new button" msgstr "Neue Tatse berstellen" -#: apps/note/views.py:83 +#: apps/note/views.py:84 msgid "Search button" msgstr "Tatsen finden" -#: apps/note/views.py:111 +#: apps/note/views.py:116 msgid "Update button" msgstr "Tatse bearbeiten" -#: apps/note/views.py:151 note_kfet/templates/base.html:66 +#: apps/note/views.py:156 note_kfet/templates/base.html:66 msgid "Consumptions" msgstr "Verbräuche" -#: apps/note/views.py:165 +#: apps/note/views.py:170 msgid "You can't see any button." msgstr "Sie können keine Taste sehen." -#: apps/note/views.py:204 +#: apps/note/views.py:209 msgid "Search transactions" msgstr "Transaktion finden" @@ -2231,7 +2358,7 @@ msgstr "" "Sie haben nicht die Berechtigung, das Feld {field} in dieser Instanz von " "Modell {app_label} zu ändern. {model_name}" -#: apps/permission/signals.py:83 apps/permission/views.py:105 +#: apps/permission/signals.py:83 apps/permission/views.py:104 #, python-brace-format msgid "" "You don't have the permission to add an instance of model {app_label}." @@ -2294,21 +2421,24 @@ msgid "Available scopes" msgstr "" #: apps/permission/templates/permission/scopes.html:42 +#: env/lib/python3.11/site-packages/oauth2_provider/templates/oauth2_provider/application_list.html:17 #: note_kfet/templates/oauth2_provider/application_list.html:24 msgid "No applications defined" msgstr "" #: apps/permission/templates/permission/scopes.html:43 +#: env/lib/python3.11/site-packages/oauth2_provider/templates/oauth2_provider/application_list.html:17 #: note_kfet/templates/oauth2_provider/application_list.html:25 msgid "Click here" msgstr "" #: apps/permission/templates/permission/scopes.html:43 +#: env/lib/python3.11/site-packages/oauth2_provider/templates/oauth2_provider/application_list.html:17 #: note_kfet/templates/oauth2_provider/application_list.html:25 msgid "if you want to register a new one" msgstr "" -#: apps/permission/views.py:72 +#: apps/permission/views.py:71 #, python-brace-format msgid "" "You don't have the permission to update this instance of the model " @@ -2318,7 +2448,7 @@ msgstr "" "diesen Parametern zu aktualisieren. Bitte korrigieren Sie Ihre Daten und " "versuchen Sie es erneut." -#: apps/permission/views.py:76 +#: apps/permission/views.py:75 #, python-brace-format msgid "" "You don't have the permission to create an instance of the model \"{model}\" " @@ -2328,11 +2458,11 @@ msgstr "" "diesen Parametern zu erstellen. Bitte korrigieren Sie Ihre Daten und " "versuchen Sie es erneut." -#: apps/permission/views.py:112 note_kfet/templates/base.html:114 +#: apps/permission/views.py:111 note_kfet/templates/base.html:120 msgid "Rights" msgstr "Rechten" -#: apps/permission/views.py:117 +#: apps/permission/views.py:137 msgid "All rights" msgstr "Alle Rechten" @@ -2422,7 +2552,7 @@ msgstr "Sie haben bereits ein Konto in der Société générale eröffnet." #: 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 +#: apps/wei/templates/wei/weimembership_form.html:196 msgid "Validate registration" msgstr "Registrierung validieren" @@ -2472,60 +2602,68 @@ msgstr "Danke" msgid "The Note Kfet team." msgstr "Die NoteKfet Team." -#: apps/registration/views.py:42 +#: apps/registration/views.py:43 msgid "Register new user" msgstr "Neuen User registrieren" -#: apps/registration/views.py:100 +#: apps/registration/views.py:101 msgid "Email validation" msgstr "Email validierung" -#: apps/registration/views.py:102 +#: apps/registration/views.py:103 msgid "Validate email" msgstr "Email validieren" -#: apps/registration/views.py:146 +#: apps/registration/views.py:147 msgid "Email validation unsuccessful" msgstr "Email validierung unerfolgreich" -#: apps/registration/views.py:157 +#: apps/registration/views.py:158 msgid "Email validation email sent" msgstr "Validierungsemail wurde gesendet" -#: apps/registration/views.py:165 +#: apps/registration/views.py:166 msgid "Resend email validation link" msgstr "E-Mail-Validierungslink erneut senden" -#: apps/registration/views.py:183 +#: apps/registration/views.py:184 msgid "Pre-registered users list" msgstr "Vorregistrierte Userliste" -#: apps/registration/views.py:207 +#: apps/registration/views.py:213 msgid "Unregistered users" msgstr "Unregistrierte Users" -#: apps/registration/views.py:220 +#: apps/registration/views.py:226 msgid "Registration detail" msgstr "Registrierung Detailen" -#: apps/registration/views.py:256 +#: apps/registration/views.py:262 #, fuzzy, python-format #| msgid "Note of %(club)s club" msgid "Join %(club)s Club" msgstr "%(club)s Note" -#: apps/registration/views.py:299 -msgid "You must join the BDE." +#: apps/registration/views.py:305 +#, fuzzy +#| msgid "You must join the BDE." +msgid "You must join a club." msgstr "Sie müssen die BDE beitreten." -#: apps/registration/views.py:330 +#: apps/registration/views.py:309 +#, fuzzy +#| msgid "You must join the BDE." +msgid "You must also join the parent club BDE." +msgstr "Sie müssen die BDE beitreten." + +#: apps/registration/views.py:340 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:425 +#: apps/registration/views.py:435 msgid "Invalidate pre-registration" msgstr "Ungültige Vorregistrierung" @@ -2533,7 +2671,7 @@ msgstr "Ungültige Vorregistrierung" msgid "Treasury" msgstr "Quaestor" -#: apps/treasury/forms.py:26 apps/treasury/models.py:112 +#: apps/treasury/forms.py:26 apps/treasury/models.py:113 #: 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." @@ -2546,8 +2684,8 @@ 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:275 -#: apps/treasury/tables.py:97 apps/treasury/tables.py:105 +#: apps/treasury/forms.py:125 apps/treasury/models.py:276 +#: apps/treasury/tables.py:99 apps/treasury/tables.py:108 #: apps/treasury/templates/treasury/invoice_list.html:16 #: apps/treasury/templates/treasury/remittance_list.html:16 #: apps/treasury/templates/treasury/sogecredit_list.html:17 @@ -2562,142 +2700,143 @@ msgstr "Keine beigefügte Überweisung" msgid "Invoice identifier" msgstr "Rechnungskennung" -#: apps/treasury/models.py:42 +#: apps/treasury/models.py:43 apps/wrapped/models.py:28 +#: apps/wrapped/models.py:29 msgid "BDE" msgstr "BDE" -#: apps/treasury/models.py:46 +#: apps/treasury/models.py:47 #, fuzzy #| msgid "location" msgid "Quotation" msgstr "Ort" -#: apps/treasury/models.py:51 +#: apps/treasury/models.py:52 msgid "Object" msgstr "Objekt" -#: apps/treasury/models.py:55 +#: apps/treasury/models.py:56 msgid "Description" msgstr "Beschreibung" -#: apps/treasury/models.py:64 +#: apps/treasury/models.py:65 msgid "Address" msgstr "Adresse" -#: apps/treasury/models.py:69 apps/treasury/models.py:202 +#: apps/treasury/models.py:70 apps/treasury/models.py:203 msgid "Date" msgstr "Datum" -#: apps/treasury/models.py:75 +#: apps/treasury/models.py:76 #, fuzzy #| msgid "end date" msgid "Payment date" msgstr "Abschlussdatum" -#: apps/treasury/models.py:79 +#: apps/treasury/models.py:80 msgid "Acquitted" msgstr "Bezahlt" -#: apps/treasury/models.py:84 +#: apps/treasury/models.py:85 msgid "Locked" msgstr "Gesperrt" -#: apps/treasury/models.py:85 +#: apps/treasury/models.py:86 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:91 +#: apps/treasury/models.py:92 msgid "tex source" msgstr "Tex Quelle" -#: apps/treasury/models.py:95 apps/treasury/models.py:140 +#: apps/treasury/models.py:96 apps/treasury/models.py:141 msgid "invoice" msgstr "Rechnung" -#: apps/treasury/models.py:96 +#: apps/treasury/models.py:97 msgid "invoices" msgstr "Rechnungen" -#: apps/treasury/models.py:99 +#: apps/treasury/models.py:100 #, python-brace-format msgid "Invoice #{id}" msgstr "Rechnung #{id}" -#: apps/treasury/models.py:145 +#: apps/treasury/models.py:146 msgid "Designation" msgstr "Bezeichnung" -#: apps/treasury/models.py:151 +#: apps/treasury/models.py:152 msgid "Quantity" msgstr "Qualität" -#: apps/treasury/models.py:156 +#: apps/treasury/models.py:157 msgid "Unit price" msgstr "Einzelpreis" -#: apps/treasury/models.py:160 +#: apps/treasury/models.py:161 msgid "product" msgstr "Produkt" -#: apps/treasury/models.py:161 +#: apps/treasury/models.py:162 msgid "products" msgstr "Produkten" -#: apps/treasury/models.py:189 +#: apps/treasury/models.py:190 msgid "remittance type" msgstr "Überweisungstyp" -#: apps/treasury/models.py:190 +#: apps/treasury/models.py:191 msgid "remittance types" msgstr "Überweisungstypen" -#: apps/treasury/models.py:213 +#: apps/treasury/models.py:214 msgid "Comment" msgstr "Kommentar" -#: apps/treasury/models.py:218 +#: apps/treasury/models.py:219 msgid "Closed" msgstr "Geschlossen" -#: apps/treasury/models.py:222 +#: apps/treasury/models.py:223 msgid "remittance" msgstr "Überweisung" -#: apps/treasury/models.py:223 +#: apps/treasury/models.py:224 msgid "remittances" msgstr "Überweisungen" -#: apps/treasury/models.py:226 +#: apps/treasury/models.py:227 msgid "Remittance #{:d}: {}" msgstr "Überweisung #{:d}:{}" -#: apps/treasury/models.py:279 +#: apps/treasury/models.py:280 msgid "special transaction proxy" msgstr "spezielle Transaktion Proxy" -#: apps/treasury/models.py:280 +#: apps/treasury/models.py:281 msgid "special transaction proxies" msgstr "spezielle Transaktion Proxies" -#: apps/treasury/models.py:306 +#: apps/treasury/models.py:307 msgid "credit transaction" msgstr "Kredit Transaktion" -#: apps/treasury/models.py:311 +#: apps/treasury/models.py:312 #: 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:312 +#: apps/treasury/models.py:313 msgid "Credits from the Société générale" msgstr "Krediten von der Société générale" -#: apps/treasury/models.py:315 +#: apps/treasury/models.py:316 #, python-brace-format msgid "Soge credit for {user}" msgstr "Kredit von der Société générale für {user}" -#: apps/treasury/models.py:445 +#: apps/treasury/models.py:446 msgid "" "This user doesn't have enough money to pay the memberships with its note. " "Please ask her/him to credit the note before invalidating this credit." @@ -2716,25 +2855,22 @@ msgstr "Rechnung #{:d}" msgid "Invoice" msgstr "Rechnung" -#: apps/treasury/tables.py:65 +#: apps/treasury/tables.py:66 msgid "Transaction count" msgstr "Transaktionanzahl" -#: apps/treasury/tables.py:70 apps/treasury/tables.py:72 +#: apps/treasury/tables.py:71 apps/treasury/tables.py:73 +#: apps/wei/templates/wei/busteam_detail.html:22 apps/wrapped/tables.py:42 msgid "View" msgstr "Schauen" -#: apps/treasury/tables.py:143 -msgid "Yes" -msgstr "Ja" - #: apps/treasury/templates/treasury/invoice_confirm_delete.html:10 -#: apps/treasury/views.py:173 +#: apps/treasury/views.py:174 msgid "Delete invoice" msgstr "Rechnung löschen" #: apps/treasury/templates/treasury/invoice_confirm_delete.html:15 -#: apps/treasury/views.py:177 +#: apps/treasury/views.py:178 msgid "This invoice is locked and can't be deleted." msgstr "Eine Rechnung kann nicht gelöscht werden, wenn sie gesperrt ist." @@ -2912,63 +3048,63 @@ msgstr "Kredit von der Société générale" msgid "Credit successfully registered" msgstr "Taste erfolgreich gelöscht " -#: apps/treasury/views.py:40 +#: apps/treasury/views.py:41 msgid "Create new invoice" msgstr "Neue Rechnung" -#: apps/treasury/views.py:97 +#: apps/treasury/views.py:98 msgid "Invoices list" msgstr "Rechnunglist" -#: apps/treasury/views.py:105 apps/treasury/views.py:275 -#: apps/treasury/views.py:401 +#: apps/treasury/views.py:106 apps/treasury/views.py:281 +#: apps/treasury/views.py:394 msgid "You are not able to see the treasury interface." msgstr "Sie können die Quaestor-App nicht sehen." -#: apps/treasury/views.py:115 +#: apps/treasury/views.py:116 msgid "Update an invoice" msgstr "Rechnung bearbeiten" -#: apps/treasury/views.py:240 +#: apps/treasury/views.py:241 msgid "Create a new remittance" msgstr "Neue Überweisung" -#: apps/treasury/views.py:267 +#: apps/treasury/views.py:265 msgid "Remittances list" msgstr "Überweisungliste" -#: apps/treasury/views.py:326 +#: apps/treasury/views.py:320 msgid "Update a remittance" msgstr "Überweisung bearbeiten" -#: apps/treasury/views.py:349 +#: apps/treasury/views.py:342 msgid "Attach a transaction to a remittance" msgstr "Fügen Sie einer Überweisung eine Transaktion hinzu" -#: apps/treasury/views.py:393 +#: apps/treasury/views.py:386 msgid "List of credits from the Société générale" msgstr "Kreditliste von Société générale" -#: apps/treasury/views.py:438 +#: apps/treasury/views.py:436 msgid "Manage credits from the Société générale" msgstr "Krediten von der Société générale handeln" -#: apps/wei/apps.py:10 apps/wei/models.py:37 apps/wei/models.py:38 -#: apps/wei/models.py:62 apps/wei/models.py:178 +#: apps/wei/apps.py:10 apps/wei/models.py:42 apps/wei/models.py:43 +#: apps/wei/models.py:67 apps/wei/models.py:192 #: note_kfet/templates/base.html:108 msgid "WEI" msgstr "WEI" -#: apps/wei/forms/registration.py:35 +#: apps/wei/forms/registration.py:37 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:324 +#: apps/wei/forms/registration.py:71 apps/wei/models.py:140 +#: apps/wei/models.py:348 msgid "bus" msgstr "Bus" -#: apps/wei/forms/registration.py:60 +#: apps/wei/forms/registration.py:72 msgid "" "This choice is not definitive. The WEI organizers are free to attribute for " "you a bus and a team, in particular if you are a free eletron." @@ -2977,11 +3113,11 @@ msgstr "" "einen Bus und ein Team zuzuweisen, insbesondere wenn Sie ein freies Elektron " "sind." -#: apps/wei/forms/registration.py:67 +#: apps/wei/forms/registration.py:79 msgid "Team" msgstr "Team" -#: apps/wei/forms/registration.py:69 +#: apps/wei/forms/registration.py:81 msgid "" "Leave this field empty if you won't be in a team (staff, bus chief, free " "electron)" @@ -2989,16 +3125,16 @@ msgstr "" "Lassen Sie dieses Feld leer, wenn Sie nicht in einem Team sind (Mitarbeiter, " "Buschef, freies Elektron)" -#: apps/wei/forms/registration.py:75 apps/wei/forms/registration.py:85 -#: apps/wei/models.py:160 +#: apps/wei/forms/registration.py:87 apps/wei/forms/registration.py:97 +#: apps/wei/models.py:174 msgid "WEI Roles" msgstr "WEI Rollen" -#: apps/wei/forms/registration.py:76 +#: apps/wei/forms/registration.py:88 msgid "Select the roles that you are interested in." msgstr "Wählen Sie die Rollen aus, an denen Sie interessiert sind." -#: apps/wei/forms/registration.py:122 +#: apps/wei/forms/registration.py:134 msgid "This team doesn't belong to the given bus." msgstr "Dieses Team gehört nicht zum angegebenen Bus." @@ -3011,126 +3147,149 @@ msgid "year" msgstr "Jahr" #: apps/wei/models.py:29 apps/wei/templates/wei/base.html:30 +#: apps/wrapped/models.py:20 msgid "date start" msgstr "Anfangsdatum" #: apps/wei/models.py:33 apps/wei/templates/wei/base.html:33 +#: apps/wrapped/models.py:24 msgid "date end" msgstr "Abschlussdatum" -#: apps/wei/models.py:71 apps/wei/tables.py:305 +#: apps/wei/models.py:37 +#, fuzzy +#| msgid "total amount" +msgid "caution amount" +msgstr "Totalanzahlt" + +#: apps/wei/models.py:76 apps/wei/tables.py:305 #, fuzzy #| msgid "The user joined the bus" msgid "seat count in the bus" msgstr "Der Benutzer ist dem Bus beigetreten" -#: apps/wei/models.py:83 +#: apps/wei/models.py:97 msgid "survey information" msgstr "Umfrage Infos" -#: apps/wei/models.py:84 +#: apps/wei/models.py:98 msgid "Information about the survey for new members, encoded in JSON" msgstr "Informationen zur Umfrage für neue Mitglieder, codiert in JSON" -#: apps/wei/models.py:88 +#: apps/wei/models.py:102 msgid "Bus" msgstr "Bus" -#: apps/wei/models.py:89 apps/wei/templates/wei/weiclub_detail.html:51 +#: apps/wei/models.py:103 apps/wei/templates/wei/weiclub_detail.html:51 msgid "Buses" msgstr "Buses" -#: apps/wei/models.py:135 +#: apps/wei/models.py:149 msgid "color" msgstr "Farbe" -#: apps/wei/models.py:136 +#: apps/wei/models.py:150 msgid "The color of the T-Shirt, stored with its number equivalent" msgstr "Die Farbe des T-Shirts, gespeichert mit der entsprechenden Nummer" -#: apps/wei/models.py:147 +#: apps/wei/models.py:161 msgid "Bus team" msgstr "Bus Team" -#: apps/wei/models.py:148 +#: apps/wei/models.py:162 msgid "Bus teams" msgstr "Bus Teams" -#: apps/wei/models.py:159 +#: apps/wei/models.py:173 msgid "WEI Role" msgstr "WEI Rolle" -#: apps/wei/models.py:183 +#: apps/wei/models.py:197 msgid "Credit from Société générale" msgstr "Kredit von der Société générale" -#: apps/wei/models.py:188 +#: apps/wei/models.py:202 apps/wei/views.py:984 msgid "Caution check given" msgstr "Caution check given" -#: apps/wei/models.py:192 apps/wei/templates/wei/weimembership_form.html:64 +#: apps/wei/models.py:208 +msgid "Check" +msgstr "" + +#: apps/wei/models.py:209 +#, fuzzy +#| msgid "transactions" +msgid "Note transaction" +msgstr "Transaktionen" + +#: apps/wei/models.py:212 +#, fuzzy +#| msgid "created at" +msgid "caution type" +msgstr "erschafft am" + +#: apps/wei/models.py:216 apps/wei/templates/wei/weimembership_form.html:64 msgid "birth date" msgstr "Geburtsdatum" -#: apps/wei/models.py:198 apps/wei/models.py:208 +#: apps/wei/models.py:222 apps/wei/models.py:232 msgid "Male" msgstr "Männlich" -#: apps/wei/models.py:199 apps/wei/models.py:209 +#: apps/wei/models.py:223 apps/wei/models.py:233 msgid "Female" msgstr "Weiblich" -#: apps/wei/models.py:200 +#: apps/wei/models.py:224 msgid "Non binary" msgstr "Nicht binär" -#: apps/wei/models.py:202 apps/wei/templates/wei/attribute_bus_1A.html:22 +#: apps/wei/models.py:226 apps/wei/templates/wei/attribute_bus_1A.html:22 #: apps/wei/templates/wei/weimembership_form.html:55 msgid "gender" msgstr "Geschlecht" -#: apps/wei/models.py:210 +#: apps/wei/models.py:234 msgid "Unisex" msgstr "Unisex" -#: apps/wei/models.py:213 apps/wei/templates/wei/weimembership_form.html:58 +#: apps/wei/models.py:237 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:250 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/templates/wei/weimembership_form.html:67 +#: apps/wei/models.py:256 msgid "health issues" msgstr "Gesundheitsprobleme" -#: apps/wei/models.py:237 apps/wei/templates/wei/weimembership_form.html:70 +#: apps/wei/models.py:261 apps/wei/templates/wei/weimembership_form.html:70 msgid "emergency contact name" msgstr "Notfall-Kontakt" -#: apps/wei/models.py:238 +#: apps/wei/models.py:262 msgid "The emergency contact must not be a WEI participant" msgstr "Der Notfallkontakt darf kein WEI-Teilnehmer sein" -#: apps/wei/models.py:243 apps/wei/templates/wei/weimembership_form.html:73 +#: apps/wei/models.py:267 apps/wei/templates/wei/weimembership_form.html:73 msgid "emergency contact phone" msgstr "Notfallkontakttelefon" -#: apps/wei/models.py:248 apps/wei/templates/wei/weimembership_form.html:52 +#: apps/wei/models.py:272 apps/wei/templates/wei/weimembership_form.html:52 msgid "first year" msgstr "Erste Jahr" -#: apps/wei/models.py:249 +#: apps/wei/models.py:273 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:254 +#: apps/wei/models.py:278 msgid "registration information" msgstr "Registrierung Detailen" -#: apps/wei/models.py:255 +#: apps/wei/models.py:279 msgid "" "Information about the registration (buses for old members, survey for the " "new members), encoded in JSON" @@ -3138,27 +3297,27 @@ msgstr "" "Informationen zur Registrierung (Busse für alte Mitglieder, Umfrage für neue " "Mitglieder), verschlüsselt in JSON" -#: apps/wei/models.py:261 +#: apps/wei/models.py:285 msgid "WEI User" msgstr "WEI User" -#: apps/wei/models.py:262 +#: apps/wei/models.py:286 msgid "WEI Users" msgstr "WEI Users" -#: apps/wei/models.py:334 +#: apps/wei/models.py:358 msgid "team" msgstr "Team" -#: apps/wei/models.py:344 +#: apps/wei/models.py:368 msgid "WEI registration" msgstr "WEI Registrierung" -#: apps/wei/models.py:348 +#: apps/wei/models.py:372 msgid "WEI membership" msgstr "WEI Mitgliedschaft" -#: apps/wei/models.py:349 +#: apps/wei/models.py:373 msgid "WEI memberships" msgstr "WEI Mitgliedschaften" @@ -3190,8 +3349,8 @@ msgstr "Jahr" msgid "preferred bus" msgstr "bevorzugter Bus" -#: apps/wei/tables.py:210 apps/wei/templates/wei/bus_detail.html:32 -#: apps/wei/templates/wei/busteam_detail.html:50 +#: apps/wei/tables.py:210 apps/wei/templates/wei/bus_detail.html:36 +#: apps/wei/templates/wei/busteam_detail.html:52 msgid "Teams" msgstr "Teams" @@ -3230,13 +3389,20 @@ msgid "Attribute first year members into buses" msgstr "" #: apps/wei/templates/wei/1A_list.html:15 -msgid "Start attribution!" +msgid "Start attribution !" msgstr "" #: apps/wei/templates/wei/attribute_bus_1A.html:8 msgid "Bus attribution" msgstr "" +#: apps/wei/templates/wei/attribute_bus_1A.html:28 +#: apps/wei/templates/wei/weimembership_form.html:67 +#, fuzzy +#| msgid "health issues" +msgid "health issues or specific diet" +msgstr "Gesundheitsprobleme" + #: apps/wei/templates/wei/attribute_bus_1A.html:31 msgid "suggested bus" msgstr "" @@ -3257,53 +3423,61 @@ msgstr "Tastenliste" msgid "WEI fee (paid students)" msgstr "WEI Preis (bezahlte Studenten)" -#: apps/wei/templates/wei/base.html:47 apps/wei/templates/wei/base.html:54 -msgid "The BDE membership is included in the WEI registration." -msgstr "Die BDE-Mitgliedschaft ist in der WEI-Registrierung enthalten." - -#: apps/wei/templates/wei/base.html:51 +#: apps/wei/templates/wei/base.html:47 msgid "WEI fee (unpaid students)" msgstr "WEI Preis (unbezahlte Studenten)" -#: apps/wei/templates/wei/base.html:76 +#: apps/wei/templates/wei/base.html:53 +#, fuzzy +#| msgid "total amount" +msgid "Caution amount" +msgstr "Totalanzahlt" + +#: apps/wei/templates/wei/base.html:74 msgid "WEI list" msgstr "WEI Liste" -#: apps/wei/templates/wei/base.html:81 apps/wei/views.py:528 +#: apps/wei/templates/wei/base.html:79 apps/wei/views.py:550 msgid "Register 1A" msgstr "1A Registrieren" -#: apps/wei/templates/wei/base.html:85 apps/wei/views.py:614 +#: apps/wei/templates/wei/base.html:83 apps/wei/views.py:644 msgid "Register 2A+" msgstr "2A+ Registrieren" -#: apps/wei/templates/wei/base.html:93 +#: apps/wei/templates/wei/base.html:91 msgid "Add bus" msgstr "Neue Bus" -#: apps/wei/templates/wei/base.html:97 +#: apps/wei/templates/wei/base.html:95 msgid "View WEI" msgstr "WEI schauen" -#: apps/wei/templates/wei/bus_detail.html:22 -#: apps/wei/templates/wei/busteam_detail.html:22 +#: apps/wei/templates/wei/bus_detail.html:21 +#, fuzzy +#| msgid "club" +msgid "View club" +msgstr "Club" + +#: apps/wei/templates/wei/bus_detail.html:26 +#: apps/wei/templates/wei/busteam_detail.html:24 msgid "Add team" msgstr "Neue Team" -#: apps/wei/templates/wei/bus_detail.html:45 +#: apps/wei/templates/wei/bus_detail.html:49 msgid "Members" msgstr "Mitglied" -#: apps/wei/templates/wei/bus_detail.html:54 -#: apps/wei/templates/wei/busteam_detail.html:60 +#: apps/wei/templates/wei/bus_detail.html:58 +#: apps/wei/templates/wei/busteam_detail.html:62 #: apps/wei/templates/wei/weimembership_list.html:31 msgid "View as PDF" msgstr "Als PDF schauen" #: apps/wei/templates/wei/survey.html:11 #: apps/wei/templates/wei/survey_closed.html:11 -#: apps/wei/templates/wei/survey_end.html:11 apps/wei/views.py:1028 -#: apps/wei/views.py:1083 apps/wei/views.py:1130 +#: apps/wei/templates/wei/survey_end.html:11 apps/wei/views.py:1159 +#: apps/wei/views.py:1214 apps/wei/views.py:1261 msgid "Survey WEI" msgstr "WEI Umfrage" @@ -3347,7 +3521,7 @@ msgstr "Unvalidierte Registrierungen" msgid "Attribute buses" msgstr "" -#: apps/wei/templates/wei/weiclub_list.html:14 apps/wei/views.py:79 +#: apps/wei/templates/wei/weiclub_list.html:14 apps/wei/views.py:82 msgid "Create WEI" msgstr "Neue WEI" @@ -3431,29 +3605,42 @@ msgstr "" "validieren, sobald die Bank die Erstellung des Kontos validiert hat, oder " "die Zahlungsmethode ändern." +#: apps/wei/templates/wei/weimembership_form.html:147 +msgid "Required payments:" +msgstr "" + #: apps/wei/templates/wei/weimembership_form.html:149 -#, python-format -msgid "" -"The note don't have enough money (%(balance)s, %(pretty_fee)s required). The " -"registration may fail if you don't credit the note now." -msgstr "" -"Die Note hat nicht genug Geld (%(balance)s,%(pretty_fee)s erforderlich). Die " -"Registrierung kann fehlschlagen, wenn Sie die Note jetzt nicht gutschreiben." +#, fuzzy, python-format +#| msgid "membership fee (paid students)" +msgid "Membership fees: %(amount)s" +msgstr "Mitgliedschaftpreis (bezahlte Studenten)" -#: apps/wei/templates/wei/weimembership_form.html:157 +#: apps/wei/templates/wei/weimembership_form.html:153 #, python-format -msgid "" -"The note has enough money (%(pretty_fee)s required), the registration is " -"possible." +msgid "Deposit (by Note transaction): %(amount)s" msgstr "" -"Die Note hat genug Geld (%(pretty_fee)s erforderlich), die Registrierung ist " -"möglich." -#: apps/wei/templates/wei/weimembership_form.html:166 +#: apps/wei/templates/wei/weimembership_form.html:156 +#: apps/wei/templates/wei/weimembership_form.html:163 +#, python-format +msgid "Total needed: %(total)s" +msgstr "" + +#: apps/wei/templates/wei/weimembership_form.html:160 +#, python-format +msgid "Deposit (by check): %(amount)s" +msgstr "" + +#: apps/wei/templates/wei/weimembership_form.html:168 +#, python-format +msgid "Current balance: %(balance)s" +msgstr "" + +#: apps/wei/templates/wei/weimembership_form.html:176 msgid "The user didn't give her/his caution check." msgstr "Der User hat nicht sein Vorsichtsprüfung gegeben." -#: apps/wei/templates/wei/weimembership_form.html:174 +#: apps/wei/templates/wei/weimembership_form.html:184 msgid "" "This user is not a member of the Kfet club for the coming year. The " "membership will be processed automatically, the WEI registration includes " @@ -3489,67 +3676,67 @@ msgstr "Bei diesem Muster wurde keine Vorregistrierung gefunden." msgid "View validated memberships..." msgstr "Validierte Mitgliedschaften anzeigen ..." -#: apps/wei/views.py:58 +#: apps/wei/views.py:61 msgid "Search WEI" msgstr "WEI finden" -#: apps/wei/views.py:109 +#: apps/wei/views.py:112 msgid "WEI Detail" msgstr "WEI Infos" -#: apps/wei/views.py:208 +#: apps/wei/views.py:212 msgid "View members of the WEI" msgstr "Mitglied der WEI schauen" -#: apps/wei/views.py:236 +#: apps/wei/views.py:245 msgid "Find WEI Membership" msgstr "WEI Mitgliedschaft finden" -#: apps/wei/views.py:246 +#: apps/wei/views.py:255 msgid "View registrations to the WEI" msgstr "Mitglied der WEI schauen" -#: apps/wei/views.py:270 +#: apps/wei/views.py:284 msgid "Find WEI Registration" msgstr "WEI Registrierung finden" -#: apps/wei/views.py:281 +#: apps/wei/views.py:295 msgid "Update the WEI" msgstr "WEI bearbeiten" -#: apps/wei/views.py:302 +#: apps/wei/views.py:316 msgid "Create new bus" msgstr "Neue Bus" -#: apps/wei/views.py:340 +#: apps/wei/views.py:354 msgid "Update bus" msgstr "Bus bearbeiten" -#: apps/wei/views.py:372 +#: apps/wei/views.py:386 msgid "Manage bus" msgstr "Bus ändern" -#: apps/wei/views.py:399 +#: apps/wei/views.py:413 msgid "Create new team" msgstr "Neue Bus Team" -#: apps/wei/views.py:439 +#: apps/wei/views.py:457 msgid "Update team" msgstr "Team bearbeiten" -#: apps/wei/views.py:470 +#: apps/wei/views.py:492 msgid "Manage WEI team" msgstr "WEI Team bearbeiten" -#: apps/wei/views.py:492 +#: apps/wei/views.py:514 msgid "Register first year student to the WEI" msgstr "Registrieren Sie den Erstsemester beim WEI" -#: apps/wei/views.py:550 apps/wei/views.py:649 +#: apps/wei/views.py:580 apps/wei/views.py:689 msgid "This user is already registered to this WEI." msgstr "Dieser Benutzer ist bereits bei dieser WEI registriert." -#: apps/wei/views.py:555 +#: apps/wei/views.py:585 msgid "" "This user can't be in her/his first year since he/she has already " "participated to a WEI." @@ -3557,51 +3744,1819 @@ msgstr "" "Dieser Benutzer kann nicht in seinem ersten Jahr sein, da er bereits an " "einer WEI teilgenommen hat." -#: apps/wei/views.py:578 +#: apps/wei/views.py:608 msgid "Register old student to the WEI" msgstr "Registrieren Sie einen alten Studenten beim WEI" -#: apps/wei/views.py:633 apps/wei/views.py:721 +#: apps/wei/views.py:663 apps/wei/views.py:768 msgid "You already opened an account in the Société générale." msgstr "Sie haben bereits ein Konto in der Société générale eröffnet." -#: apps/wei/views.py:685 +#: apps/wei/views.py:676 apps/wei/views.py:785 +msgid "Choose how you want to pay the deposit" +msgstr "" + +#: apps/wei/views.py:728 msgid "Update WEI Registration" msgstr "WEI Registrierung aktualisieren" -#: apps/wei/views.py:795 +#: apps/wei/views.py:810 +#, fuzzy +#| msgid "The BDE membership is included in the WEI registration." +msgid "No membership found for this registration" +msgstr "Die BDE-Mitgliedschaft ist in der WEI-Registrierung enthalten." + +#: apps/wei/views.py:819 +#, fuzzy +#| msgid "" +#| "You don't have the permission to add an instance of model {app_label}." +#| "{model_name}." +msgid "You don't have the permission to update memberships" +msgstr "" +"Sie haben nicht die Berechtigung, eine Instanz von model {app_label}. " +"{model_name} hinzufügen." + +#: apps/wei/views.py:825 +#, fuzzy, python-format +#| msgid "" +#| "You don't have the permission to delete this instance of model " +#| "{app_label}.{model_name}." +msgid "You don't have the permission to update the field %(field)s" +msgstr "" +"Sie haben nicht die Berechtigung, eine Instanz von model {app_label}. " +"{model_name} zulöschen." + +#: apps/wei/views.py:870 msgid "Delete WEI registration" msgstr "WEI Registrierung löschen" -#: apps/wei/views.py:806 +#: apps/wei/views.py:881 msgid "You don't have the right to delete this WEI registration." msgstr "Sie haben nicht das Recht, diese WEI-Registrierung zu löschen." -#: apps/wei/views.py:824 +#: apps/wei/views.py:899 msgid "Validate WEI registration" msgstr "Überprüfen Sie die WEI-Registrierung" -#: apps/wei/views.py:1223 +#: apps/wei/views.py:985 +#, fuzzy +#| msgid "Please ask the user to credit its note before deleting this credit." +msgid "Please make sure the check is given before validating the registration" +msgstr "" +"Bitte bitten Sie den Benutzer, seine Note gutzuschreiben, bevor Sie diese " +"Kredit löschen." + +#: apps/wei/views.py:991 +#, fuzzy +#| msgid "credit transaction" +msgid "Create deposit transaction" +msgstr "Kredit Transaktion" + +#: apps/wei/views.py:992 +#, python-format +msgid "" +"A transaction of %(amount).2f€ will be created from the user's Note account" +msgstr "" + +#: apps/wei/views.py:1087 +#, fuzzy, python-format +#| msgid "" +#| "This user don't have enough money to join this club, and can't have a " +#| "negative balance." +msgid "" +"This user doesn't have enough money to join this club and pay the deposit. " +"Current balance: %(balance)d€, credit: %(credit)d€, needed: %(needed)d€" +msgstr "" +"Diese User hat nicht genug Geld um Mitglied zu werden, und darf nich im Rot " +"sein." + +#: apps/wei/views.py:1140 +#, fuzzy, python-format +#| msgid "created at" +msgid "Caution %(name)s" +msgstr "erschafft am" + +#: apps/wei/views.py:1354 msgid "Attribute buses to first year members" msgstr "" -#: apps/wei/views.py:1248 +#: apps/wei/views.py:1379 msgid "Attribute bus" msgstr "" -#: note_kfet/settings/base.py:173 +#: apps/wei/views.py:1419 +msgid "" +"No first year student without a bus found. Either all of them have a bus, or " +"none has filled the survey yet." +msgstr "" + +#: apps/wrapped/apps.py:10 +msgid "wrapped" +msgstr "" + +#: apps/wrapped/models.py:40 +#, fuzzy +#| msgid "Regenerate token" +msgid "generated" +msgstr "Token erneuern" + +#: apps/wrapped/models.py:45 +msgid "public" +msgstr "" + +#: apps/wrapped/models.py:53 +msgid "bde" +msgstr "" + +#: apps/wrapped/models.py:65 +msgid "data json" +msgstr "" + +#: apps/wrapped/models.py:66 +msgid "data in the wrapped and generated by the script generate_wrapped" +msgstr "" + +#: apps/wrapped/models.py:70 note_kfet/templates/base.html:114 +msgid "Wrapped" +msgstr "" + +#: apps/wrapped/models.py:71 +msgid "Wrappeds" +msgstr "" + +#: apps/wrapped/tables.py:40 +msgid "view the wrapped" +msgstr "" + +#: apps/wrapped/tables.py:55 +msgid "Click to make this wrapped private" +msgstr "" + +#: apps/wrapped/tables.py:56 +msgid "Click to make this wrapped public" +msgstr "" + +#: apps/wrapped/tables.py:67 +msgid "Share" +msgstr "" + +#: apps/wrapped/tables.py:73 +msgid "Click to copy the link in the press paper" +msgstr "" + +#: apps/wrapped/tables.py:81 +msgid "Copy link" +msgstr "" + +#: apps/wrapped/templates/wrapped/1/wrapped_base.html:16 +#: note_kfet/templates/base.html:14 +msgid "The ENS Paris-Saclay BDE note." +msgstr "Die BDE ENS-Paris-Saclay Note." + +#: apps/wrapped/templates/wrapped/1/wrapped_base.html:58 +#, fuzzy +#| msgid "The Note Kfet team." +msgid "The NoteKfet this year it's also" +msgstr "Die NoteKfet Team." + +#: apps/wrapped/templates/wrapped/1/wrapped_base.html:60 +#, fuzzy +#| msgid "transactions" +msgid " transactions" +msgstr "Transaktionen" + +#: apps/wrapped/templates/wrapped/1/wrapped_base.html:61 +msgid " parties" +msgstr "" + +#: apps/wrapped/templates/wrapped/1/wrapped_base.html:62 +#, fuzzy +#| msgid "entries" +msgid " Pot entries" +msgstr "Eintritte" + +#: apps/wrapped/templates/wrapped/1/wrapped_base.html:72 +msgid " old dickhead behind the bar" +msgstr "" + +#: apps/wrapped/templates/wrapped/1/wrapped_view_club.html:9 +#: apps/wrapped/templates/wrapped/1/wrapped_view_user.html:9 +msgid "NoteKfet Wrapped" +msgstr "" + +#: apps/wrapped/templates/wrapped/1/wrapped_view_club.html:11 +msgid "Your best consumer:" +msgstr "" + +#: apps/wrapped/templates/wrapped/1/wrapped_view_club.html:13 +msgid "Your worst creditor:" +msgstr "" + +#: apps/wrapped/templates/wrapped/1/wrapped_view_club.html:16 +msgid "party·ies organised" +msgstr "" + +#: apps/wrapped/templates/wrapped/1/wrapped_view_club.html:17 +#, fuzzy +#| msgid "Add member" +msgid "distinct members" +msgstr "Neue Mitglied" + +#: apps/wrapped/templates/wrapped/1/wrapped_view_club.html:26 +msgid "Infortunately, you doesn't have consumer this year" +msgstr "" + +#: apps/wrapped/templates/wrapped/1/wrapped_view_club.html:28 +msgid "Congratulations you are a real rat !" +msgstr "" + +#: apps/wrapped/templates/wrapped/1/wrapped_view_user.html:13 +msgid "You participate to the wei: " +msgstr "" + +#: apps/wrapped/templates/wrapped/1/wrapped_view_user.html:13 +#, fuzzy +#| msgid "in the team" +msgid "in the" +msgstr "In der Team" + +#: apps/wrapped/templates/wrapped/1/wrapped_view_user.html:18 +msgid "pots !" +msgstr "" + +#: apps/wrapped/templates/wrapped/1/wrapped_view_user.html:27 +msgid "Your first conso of the year: " +msgstr "" + +#: apps/wrapped/templates/wrapped/1/wrapped_view_user.html:28 +msgid "Your prefered consumtion category: " +msgstr "" + +#: apps/wrapped/templates/wrapped/1/wrapped_view_user.html:41 +msgid ": it's the number of time your reload your note" +msgstr "" + +#: apps/wrapped/templates/wrapped/1/wrapped_view_user.html:44 +msgid "Your overall expenses: " +msgstr "" + +#: apps/wrapped/templates/wrapped/1/wrapped_view_user.html:47 +#: apps/wrapped/templates/wrapped/1/wrapped_view_user.html:60 +msgid "with" +msgstr "" + +#: apps/wrapped/templates/wrapped/1/wrapped_view_user.html:57 +msgid "Your expenses to BDE: " +msgstr "" + +#: apps/wrapped/templates/wrapped/wrapped_list.html:13 +msgid "My wrapped" +msgstr "" + +#: apps/wrapped/templates/wrapped/wrapped_list.html:22 +msgid "Public wrapped" +msgstr "" + +#: apps/wrapped/templates/wrapped/wrapped_list.html:33 +msgid "" +"Do not forget to ask permission to people who are in your wrapped before to " +"make them public" +msgstr "" + +#: apps/wrapped/templates/wrapped/wrapped_list.html:40 +msgid "Link copied" +msgstr "" + +#: apps/wrapped/templates/wrapped/wrapped_list.html:65 +msgid "Wrapped is private" +msgstr "" + +#: apps/wrapped/templates/wrapped/wrapped_list.html:66 +msgid "Wrapped is public" +msgstr "" + +#: apps/wrapped/views.py:28 +msgid "List of wrapped" +msgstr "" + +#: env/lib/python3.11/site-packages/django/contrib/messages/apps.py:15 +msgid "Messages" +msgstr "" + +#: env/lib/python3.11/site-packages/django/contrib/sitemaps/apps.py:8 +msgid "Site Maps" +msgstr "" + +#: env/lib/python3.11/site-packages/django/contrib/staticfiles/apps.py:9 +msgid "Static Files" +msgstr "" + +#: env/lib/python3.11/site-packages/django/contrib/syndication/apps.py:7 +#, fuzzy +#| msgid "Invitation" +msgid "Syndication" +msgstr "Einladung" + +#. Translators: String used to replace omitted page numbers in elided page +#. range generated by paginators, e.g. [1, 2, '…', 5, 6, 7, '…', 9, 10]. +#: env/lib/python3.11/site-packages/django/core/paginator.py:30 +msgid "…" +msgstr "" + +#: env/lib/python3.11/site-packages/django/core/paginator.py:50 +msgid "That page number is not an integer" +msgstr "" + +#: env/lib/python3.11/site-packages/django/core/paginator.py:52 +msgid "That page number is less than 1" +msgstr "" + +#: env/lib/python3.11/site-packages/django/core/paginator.py:54 +#, fuzzy +#| msgid "There is no results." +msgid "That page contains no results" +msgstr "Es gibt keine Ergebnisse." + +#: env/lib/python3.11/site-packages/django/core/validators.py:22 +#, fuzzy +#| msgid "Email validation" +msgid "Enter a valid value." +msgstr "Email validierung" + +#: env/lib/python3.11/site-packages/django/core/validators.py:104 +#: env/lib/python3.11/site-packages/django/forms/fields.py:752 +#, fuzzy +#| msgid "Email validation" +msgid "Enter a valid URL." +msgstr "Email validierung" + +#: env/lib/python3.11/site-packages/django/core/validators.py:165 +#, fuzzy +#| msgid "Email validation" +msgid "Enter a valid integer." +msgstr "Email validierung" + +#: env/lib/python3.11/site-packages/django/core/validators.py:176 +#, fuzzy +#| msgid "Email validation" +msgid "Enter a valid email address." +msgstr "Email validierung" + +#. Translators: "letters" means latin letters: a-z and A-Z. +#: env/lib/python3.11/site-packages/django/core/validators.py:259 +msgid "" +"Enter a valid “slug” consisting of letters, numbers, underscores or hyphens." +msgstr "" + +#: env/lib/python3.11/site-packages/django/core/validators.py:267 +msgid "" +"Enter a valid “slug” consisting of Unicode letters, numbers, underscores, or " +"hyphens." +msgstr "" + +#: env/lib/python3.11/site-packages/django/core/validators.py:281 +#: env/lib/python3.11/site-packages/django/core/validators.py:289 +#: env/lib/python3.11/site-packages/django/core/validators.py:318 +#, fuzzy +#| msgid "This activity is not validated yet." +msgid "Enter a valid IPv4 address." +msgstr "Diese Veranstaltung ist noch nicht bestätigt." + +#: env/lib/python3.11/site-packages/django/core/validators.py:298 +#: env/lib/python3.11/site-packages/django/core/validators.py:319 +#, fuzzy +#| msgid "This activity is not validated yet." +msgid "Enter a valid IPv6 address." +msgstr "Diese Veranstaltung ist noch nicht bestätigt." + +#: env/lib/python3.11/site-packages/django/core/validators.py:310 +#: env/lib/python3.11/site-packages/django/core/validators.py:317 +#, fuzzy +#| msgid "This activity is not validated yet." +msgid "Enter a valid IPv4 or IPv6 address." +msgstr "Diese Veranstaltung ist noch nicht bestätigt." + +#: env/lib/python3.11/site-packages/django/core/validators.py:353 +msgid "Enter only digits separated by commas." +msgstr "" + +#: env/lib/python3.11/site-packages/django/core/validators.py:359 +#, python-format +msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)." +msgstr "" + +#: env/lib/python3.11/site-packages/django/core/validators.py:394 +#, python-format +msgid "Ensure this value is less than or equal to %(limit_value)s." +msgstr "" + +#: env/lib/python3.11/site-packages/django/core/validators.py:403 +#, python-format +msgid "Ensure this value is greater than or equal to %(limit_value)s." +msgstr "" + +#: env/lib/python3.11/site-packages/django/core/validators.py:412 +#, python-format +msgid "Ensure this value is a multiple of step size %(limit_value)s." +msgstr "" + +#: env/lib/python3.11/site-packages/django/core/validators.py:422 +#, python-format +msgid "" +"Ensure this value has at least %(limit_value)d character (it has " +"%(show_value)d)." +msgid_plural "" +"Ensure this value has at least %(limit_value)d characters (it has " +"%(show_value)d)." +msgstr[0] "" +msgstr[1] "" + +#: env/lib/python3.11/site-packages/django/core/validators.py:440 +#, python-format +msgid "" +"Ensure this value has at most %(limit_value)d character (it has " +"%(show_value)d)." +msgid_plural "" +"Ensure this value has at most %(limit_value)d characters (it has " +"%(show_value)d)." +msgstr[0] "" +msgstr[1] "" + +#: env/lib/python3.11/site-packages/django/core/validators.py:463 +#: env/lib/python3.11/site-packages/django/forms/fields.py:347 +#: env/lib/python3.11/site-packages/django/forms/fields.py:386 +#, fuzzy +#| msgid "phone number" +msgid "Enter a number." +msgstr "Telefonnummer" + +#: env/lib/python3.11/site-packages/django/core/validators.py:465 +#, python-format +msgid "Ensure that there are no more than %(max)s digit in total." +msgid_plural "Ensure that there are no more than %(max)s digits in total." +msgstr[0] "" +msgstr[1] "" + +#: env/lib/python3.11/site-packages/django/core/validators.py:470 +#, python-format +msgid "Ensure that there are no more than %(max)s decimal place." +msgid_plural "Ensure that there are no more than %(max)s decimal places." +msgstr[0] "" +msgstr[1] "" + +#: env/lib/python3.11/site-packages/django/core/validators.py:475 +#, python-format +msgid "" +"Ensure that there are no more than %(max)s digit before the decimal point." +msgid_plural "" +"Ensure that there are no more than %(max)s digits before the decimal point." +msgstr[0] "" +msgstr[1] "" + +#: env/lib/python3.11/site-packages/django/core/validators.py:546 +#, python-format +msgid "" +"File extension “%(extension)s” is not allowed. Allowed extensions are: " +"%(allowed_extensions)s." +msgstr "" + +#: env/lib/python3.11/site-packages/django/core/validators.py:607 +msgid "Null characters are not allowed." +msgstr "" + +#: env/lib/python3.11/site-packages/django/db/models/base.py:1425 +#, fuzzy, python-format +#| msgid "A template with this name already exist" +msgid "%(model_name)s with this %(field_labels)s already exists." +msgstr "Eine Vorlage mit diesem Namen ist bereits vorhanden" + +#: env/lib/python3.11/site-packages/django/db/models/constraints.py:17 +#, python-format +msgid "Constraint “%(name)s” is violated." +msgstr "" + +#: env/lib/python3.11/site-packages/django/db/models/fields/__init__.py:128 +#, fuzzy, python-format +#| msgid "This activity is not validated yet." +msgid "Value %(value)r is not a valid choice." +msgstr "Diese Veranstaltung ist noch nicht bestätigt." + +#: env/lib/python3.11/site-packages/django/db/models/fields/__init__.py:129 +#, fuzzy +#| msgid "This image cannot be loaded." +msgid "This field cannot be null." +msgstr "Dieses Bild kann nicht geladen werden." + +#: env/lib/python3.11/site-packages/django/db/models/fields/__init__.py:130 +#, fuzzy +#| msgid "This image cannot be loaded." +msgid "This field cannot be blank." +msgstr "Dieses Bild kann nicht geladen werden." + +#: env/lib/python3.11/site-packages/django/db/models/fields/__init__.py:131 +#, fuzzy, python-format +#| msgid "A template with this name already exist" +msgid "%(model_name)s with this %(field_label)s already exists." +msgstr "Eine Vorlage mit diesem Namen ist bereits vorhanden" + +#. Translators: The 'lookup_type' is one of 'date', 'year' or +#. 'month'. Eg: "Title must be unique for pub_date year" +#: env/lib/python3.11/site-packages/django/db/models/fields/__init__.py:135 +#, python-format +msgid "" +"%(field_label)s must be unique for %(date_field_label)s %(lookup_type)s." +msgstr "" + +#: env/lib/python3.11/site-packages/django/db/models/fields/__init__.py:173 +#, python-format +msgid "Field of type: %(field_type)s" +msgstr "" + +#: env/lib/python3.11/site-packages/django/db/models/fields/__init__.py:1094 +#, python-format +msgid "“%(value)s” value must be either True or False." +msgstr "" + +#: env/lib/python3.11/site-packages/django/db/models/fields/__init__.py:1095 +#, python-format +msgid "“%(value)s” value must be either True, False, or None." +msgstr "" + +#: env/lib/python3.11/site-packages/django/db/models/fields/__init__.py:1097 +msgid "Boolean (Either True or False)" +msgstr "" + +#: env/lib/python3.11/site-packages/django/db/models/fields/__init__.py:1147 +#, python-format +msgid "String (up to %(max_length)s)" +msgstr "" + +#: env/lib/python3.11/site-packages/django/db/models/fields/__init__.py:1149 +msgid "String (unlimited)" +msgstr "" + +#: env/lib/python3.11/site-packages/django/db/models/fields/__init__.py:1253 +msgid "Comma-separated integers" +msgstr "" + +#: env/lib/python3.11/site-packages/django/db/models/fields/__init__.py:1354 +#, python-format +msgid "" +"“%(value)s” value has an invalid date format. It must be in YYYY-MM-DD " +"format." +msgstr "" + +#: env/lib/python3.11/site-packages/django/db/models/fields/__init__.py:1358 +#: env/lib/python3.11/site-packages/django/db/models/fields/__init__.py:1493 +#, python-format +msgid "" +"“%(value)s” value has the correct format (YYYY-MM-DD) but it is an invalid " +"date." +msgstr "" + +#: env/lib/python3.11/site-packages/django/db/models/fields/__init__.py:1362 +msgid "Date (without time)" +msgstr "" + +#: env/lib/python3.11/site-packages/django/db/models/fields/__init__.py:1489 +#, python-format +msgid "" +"“%(value)s” value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[." +"uuuuuu]][TZ] format." +msgstr "" + +#: env/lib/python3.11/site-packages/django/db/models/fields/__init__.py:1497 +#, python-format +msgid "" +"“%(value)s” value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]" +"[TZ]) but it is an invalid date/time." +msgstr "" + +#: env/lib/python3.11/site-packages/django/db/models/fields/__init__.py:1502 +msgid "Date (with time)" +msgstr "" + +#: env/lib/python3.11/site-packages/django/db/models/fields/__init__.py:1626 +#, python-format +msgid "“%(value)s” value must be a decimal number." +msgstr "" + +#: env/lib/python3.11/site-packages/django/db/models/fields/__init__.py:1628 +#, fuzzy +#| msgid "phone number" +msgid "Decimal number" +msgstr "Telefonnummer" + +#: env/lib/python3.11/site-packages/django/db/models/fields/__init__.py:1789 +#, python-format +msgid "" +"“%(value)s” value has an invalid format. It must be in [DD] [[HH:]MM:]ss[." +"uuuuuu] format." +msgstr "" + +#: env/lib/python3.11/site-packages/django/db/models/fields/__init__.py:1793 +#, fuzzy +#| msgid "action" +msgid "Duration" +msgstr "Aktion" + +#: env/lib/python3.11/site-packages/django/db/models/fields/__init__.py:1845 +#, fuzzy +#| msgid "address" +msgid "Email address" +msgstr "Adresse" + +#: env/lib/python3.11/site-packages/django/db/models/fields/__init__.py:1870 +msgid "File path" +msgstr "" + +#: env/lib/python3.11/site-packages/django/db/models/fields/__init__.py:1948 +#, python-format +msgid "“%(value)s” value must be a float." +msgstr "" + +#: env/lib/python3.11/site-packages/django/db/models/fields/__init__.py:1950 +#, fuzzy +#| msgid "phone number" +msgid "Floating point number" +msgstr "Telefonnummer" + +#: env/lib/python3.11/site-packages/django/db/models/fields/__init__.py:1990 +#, python-format +msgid "“%(value)s” value must be an integer." +msgstr "" + +#: env/lib/python3.11/site-packages/django/db/models/fields/__init__.py:1992 +msgid "Integer" +msgstr "" + +#: env/lib/python3.11/site-packages/django/db/models/fields/__init__.py:2088 +msgid "Big (8 byte) integer" +msgstr "" + +#: env/lib/python3.11/site-packages/django/db/models/fields/__init__.py:2105 +msgid "Small integer" +msgstr "" + +#: env/lib/python3.11/site-packages/django/db/models/fields/__init__.py:2113 +#, fuzzy +#| msgid "IP Address" +msgid "IPv4 address" +msgstr "IP Adresse" + +#: env/lib/python3.11/site-packages/django/db/models/fields/__init__.py:2144 +#, fuzzy +#| msgid "IP Address" +msgid "IP address" +msgstr "IP Adresse" + +#: env/lib/python3.11/site-packages/django/db/models/fields/__init__.py:2237 +#: env/lib/python3.11/site-packages/django/db/models/fields/__init__.py:2238 +#, python-format +msgid "“%(value)s” value must be either None, True or False." +msgstr "" + +#: env/lib/python3.11/site-packages/django/db/models/fields/__init__.py:2240 +msgid "Boolean (Either True, False or None)" +msgstr "" + +#: env/lib/python3.11/site-packages/django/db/models/fields/__init__.py:2291 +msgid "Positive big integer" +msgstr "" + +#: env/lib/python3.11/site-packages/django/db/models/fields/__init__.py:2306 +msgid "Positive integer" +msgstr "" + +#: env/lib/python3.11/site-packages/django/db/models/fields/__init__.py:2321 +msgid "Positive small integer" +msgstr "" + +#: env/lib/python3.11/site-packages/django/db/models/fields/__init__.py:2337 +#, python-format +msgid "Slug (up to %(max_length)s)" +msgstr "" + +#: env/lib/python3.11/site-packages/django/db/models/fields/__init__.py:2373 +msgid "Text" +msgstr "" + +#: env/lib/python3.11/site-packages/django/db/models/fields/__init__.py:2448 +#, python-format +msgid "" +"“%(value)s” value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] " +"format." +msgstr "" + +#: env/lib/python3.11/site-packages/django/db/models/fields/__init__.py:2452 +#, python-format +msgid "" +"“%(value)s” value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an " +"invalid time." +msgstr "" + +#: env/lib/python3.11/site-packages/django/db/models/fields/__init__.py:2456 +msgid "Time" +msgstr "" + +#: env/lib/python3.11/site-packages/django/db/models/fields/__init__.py:2564 +msgid "URL" +msgstr "" + +#: env/lib/python3.11/site-packages/django/db/models/fields/__init__.py:2588 +msgid "Raw binary data" +msgstr "" + +#: env/lib/python3.11/site-packages/django/db/models/fields/__init__.py:2653 +#, fuzzy, python-format +#| msgid "This activity is not validated yet." +msgid "“%(value)s” is not a valid UUID." +msgstr "Diese Veranstaltung ist noch nicht bestätigt." + +#: env/lib/python3.11/site-packages/django/db/models/fields/__init__.py:2655 +#, fuzzy +#| msgid "Invoice identifier" +msgid "Universally unique identifier" +msgstr "Rechnungskennung" + +#: env/lib/python3.11/site-packages/django/db/models/fields/files.py:232 +msgid "File" +msgstr "" + +#: env/lib/python3.11/site-packages/django/db/models/fields/files.py:393 +msgid "Image" +msgstr "" + +#: env/lib/python3.11/site-packages/django/db/models/fields/json.py:26 +#, fuzzy +#| msgid "Object" +msgid "A JSON object" +msgstr "Objekt" + +#: env/lib/python3.11/site-packages/django/db/models/fields/json.py:28 +#, fuzzy +#| msgid "This address must be valid." +msgid "Value must be valid JSON." +msgstr "Diese Adresse muss gültig sein." + +#: env/lib/python3.11/site-packages/django/db/models/fields/related.py:919 +#, fuzzy, python-format +#| msgid "A template with this name already exist" +msgid "%(model)s instance with %(field)s %(value)r does not exist." +msgstr "Eine Vorlage mit diesem Namen ist bereits vorhanden" + +#: env/lib/python3.11/site-packages/django/db/models/fields/related.py:921 +msgid "Foreign Key (type determined by related field)" +msgstr "" + +#: env/lib/python3.11/site-packages/django/db/models/fields/related.py:1212 +msgid "One-to-one relationship" +msgstr "" + +#: env/lib/python3.11/site-packages/django/db/models/fields/related.py:1269 +#, python-format +msgid "%(from)s-%(to)s relationship" +msgstr "" + +#: env/lib/python3.11/site-packages/django/db/models/fields/related.py:1271 +#, python-format +msgid "%(from)s-%(to)s relationships" +msgstr "" + +#: env/lib/python3.11/site-packages/django/db/models/fields/related.py:1319 +msgid "Many-to-many relationship" +msgstr "" + +#. Translators: If found as last label character, these punctuation +#. characters will prevent the default label_suffix to be appended to the label +#: env/lib/python3.11/site-packages/django/forms/boundfield.py:184 +msgid ":?.!" +msgstr "" + +#: env/lib/python3.11/site-packages/django/forms/fields.py:298 +#, fuzzy +#| msgid "phone number" +msgid "Enter a whole number." +msgstr "Telefonnummer" + +#: env/lib/python3.11/site-packages/django/forms/fields.py:467 +#: env/lib/python3.11/site-packages/django/forms/fields.py:1241 +#, fuzzy +#| msgid "Email validation" +msgid "Enter a valid date." +msgstr "Email validierung" + +#: env/lib/python3.11/site-packages/django/forms/fields.py:490 +#: env/lib/python3.11/site-packages/django/forms/fields.py:1242 +#, fuzzy +#| msgid "Email validation" +msgid "Enter a valid time." +msgstr "Email validierung" + +#: env/lib/python3.11/site-packages/django/forms/fields.py:517 +#, fuzzy +#| msgid "Email validation" +msgid "Enter a valid date/time." +msgstr "Email validierung" + +#: env/lib/python3.11/site-packages/django/forms/fields.py:551 +#, fuzzy +#| msgid "Email validation" +msgid "Enter a valid duration." +msgstr "Email validierung" + +#: env/lib/python3.11/site-packages/django/forms/fields.py:552 +#, python-brace-format +msgid "The number of days must be between {min_days} and {max_days}." +msgstr "" + +#: env/lib/python3.11/site-packages/django/forms/fields.py:621 +msgid "No file was submitted. Check the encoding type on the form." +msgstr "" + +#: env/lib/python3.11/site-packages/django/forms/fields.py:622 +msgid "No file was submitted." +msgstr "" + +#: env/lib/python3.11/site-packages/django/forms/fields.py:623 +msgid "The submitted file is empty." +msgstr "" + +#: env/lib/python3.11/site-packages/django/forms/fields.py:625 +#, python-format +msgid "Ensure this filename has at most %(max)d character (it has %(length)d)." +msgid_plural "" +"Ensure this filename has at most %(max)d characters (it has %(length)d)." +msgstr[0] "" +msgstr[1] "" + +#: env/lib/python3.11/site-packages/django/forms/fields.py:630 +msgid "Please either submit a file or check the clear checkbox, not both." +msgstr "" + +#: env/lib/python3.11/site-packages/django/forms/fields.py:694 +msgid "" +"Upload a valid image. The file you uploaded was either not an image or a " +"corrupted image." +msgstr "" + +#: env/lib/python3.11/site-packages/django/forms/fields.py:857 +#: env/lib/python3.11/site-packages/django/forms/fields.py:949 +#: env/lib/python3.11/site-packages/django/forms/models.py:1566 +#, python-format +msgid "Select a valid choice. %(value)s is not one of the available choices." +msgstr "" + +#: env/lib/python3.11/site-packages/django/forms/fields.py:951 +#: env/lib/python3.11/site-packages/django/forms/fields.py:1070 +#: env/lib/python3.11/site-packages/django/forms/models.py:1564 +#, fuzzy +#| msgid "Email validation" +msgid "Enter a list of values." +msgstr "Email validierung" + +#: env/lib/python3.11/site-packages/django/forms/fields.py:1071 +#, fuzzy +#| msgid "phone number" +msgid "Enter a complete value." +msgstr "Telefonnummer" + +#: env/lib/python3.11/site-packages/django/forms/fields.py:1313 +#, fuzzy +#| msgid "Email validation" +msgid "Enter a valid UUID." +msgstr "Email validierung" + +#: env/lib/python3.11/site-packages/django/forms/fields.py:1343 +#, fuzzy +#| msgid "Email validation" +msgid "Enter a valid JSON." +msgstr "Email validierung" + +#. Translators: This is the default suffix added to form field labels +#: env/lib/python3.11/site-packages/django/forms/forms.py:98 +msgid ":" +msgstr "" + +#: env/lib/python3.11/site-packages/django/forms/forms.py:244 +#: env/lib/python3.11/site-packages/django/forms/forms.py:328 +#, python-format +msgid "(Hidden field %(name)s) %(error)s" +msgstr "" + +#: env/lib/python3.11/site-packages/django/forms/formsets.py:63 +#, python-format +msgid "" +"ManagementForm data is missing or has been tampered with. Missing fields: " +"%(field_names)s. You may need to file a bug report if the issue persists." +msgstr "" + +#: env/lib/python3.11/site-packages/django/forms/formsets.py:67 +#, python-format +msgid "Please submit at most %(num)d form." +msgid_plural "Please submit at most %(num)d forms." +msgstr[0] "" +msgstr[1] "" + +#: env/lib/python3.11/site-packages/django/forms/formsets.py:72 +#, python-format +msgid "Please submit at least %(num)d form." +msgid_plural "Please submit at least %(num)d forms." +msgstr[0] "" +msgstr[1] "" + +#: env/lib/python3.11/site-packages/django/forms/formsets.py:484 +#: env/lib/python3.11/site-packages/django/forms/formsets.py:491 +msgid "Order" +msgstr "" + +#: env/lib/python3.11/site-packages/django/forms/models.py:886 +#, python-format +msgid "Please correct the duplicate data for %(field)s." +msgstr "" + +#: env/lib/python3.11/site-packages/django/forms/models.py:891 +#, python-format +msgid "Please correct the duplicate data for %(field)s, which must be unique." +msgstr "" + +#: env/lib/python3.11/site-packages/django/forms/models.py:898 +#, python-format +msgid "" +"Please correct the duplicate data for %(field_name)s which must be unique " +"for the %(lookup)s in %(date_field)s." +msgstr "" + +#: env/lib/python3.11/site-packages/django/forms/models.py:907 +msgid "Please correct the duplicate values below." +msgstr "" + +#: env/lib/python3.11/site-packages/django/forms/models.py:1338 +msgid "The inline value did not match the parent instance." +msgstr "" + +#: env/lib/python3.11/site-packages/django/forms/models.py:1429 +msgid "Select a valid choice. That choice is not one of the available choices." +msgstr "" + +#: env/lib/python3.11/site-packages/django/forms/models.py:1568 +#, fuzzy, python-format +#| msgid "This activity is not validated yet." +msgid "“%(pk)s” is not a valid value." +msgstr "Diese Veranstaltung ist noch nicht bestätigt." + +#: env/lib/python3.11/site-packages/django/forms/utils.py:226 +#, python-format +msgid "" +"%(datetime)s couldn’t be interpreted in time zone %(current_timezone)s; it " +"may be ambiguous or it may not exist." +msgstr "" + +#: env/lib/python3.11/site-packages/django/forms/widgets.py:463 +msgid "Clear" +msgstr "" + +#: env/lib/python3.11/site-packages/django/forms/widgets.py:464 +#, fuzzy +#| msgid "Current activity" +msgid "Currently" +msgstr "Aktuelle Veranstaltung" + +#: env/lib/python3.11/site-packages/django/forms/widgets.py:465 +#, fuzzy +#| msgid "change" +msgid "Change" +msgstr "bearbeiten" + +#: env/lib/python3.11/site-packages/django/forms/widgets.py:794 +msgid "Unknown" +msgstr "" + +#. Translators: Please do not add spaces around commas. +#: env/lib/python3.11/site-packages/django/template/defaultfilters.py:874 +msgid "yes,no,maybe" +msgstr "" + +#: env/lib/python3.11/site-packages/django/template/defaultfilters.py:904 +#: env/lib/python3.11/site-packages/django/template/defaultfilters.py:921 +#, python-format +msgid "%(size)d byte" +msgid_plural "%(size)d bytes" +msgstr[0] "" +msgstr[1] "" + +#: env/lib/python3.11/site-packages/django/template/defaultfilters.py:923 +#, python-format +msgid "%s KB" +msgstr "" + +#: env/lib/python3.11/site-packages/django/template/defaultfilters.py:925 +#, python-format +msgid "%s MB" +msgstr "" + +#: env/lib/python3.11/site-packages/django/template/defaultfilters.py:927 +#, python-format +msgid "%s GB" +msgstr "" + +#: env/lib/python3.11/site-packages/django/template/defaultfilters.py:929 +#, python-format +msgid "%s TB" +msgstr "" + +#: env/lib/python3.11/site-packages/django/template/defaultfilters.py:931 +#, python-format +msgid "%s PB" +msgstr "" + +#: env/lib/python3.11/site-packages/django/utils/dateformat.py:73 +msgid "p.m." +msgstr "" + +#: env/lib/python3.11/site-packages/django/utils/dateformat.py:74 +msgid "a.m." +msgstr "" + +#: env/lib/python3.11/site-packages/django/utils/dateformat.py:79 +msgid "PM" +msgstr "" + +#: env/lib/python3.11/site-packages/django/utils/dateformat.py:80 +msgid "AM" +msgstr "" + +#: env/lib/python3.11/site-packages/django/utils/dateformat.py:152 +msgid "midnight" +msgstr "" + +#: env/lib/python3.11/site-packages/django/utils/dateformat.py:154 +msgid "noon" +msgstr "" + +#: env/lib/python3.11/site-packages/django/utils/dates.py:7 +msgid "Monday" +msgstr "" + +#: env/lib/python3.11/site-packages/django/utils/dates.py:8 +msgid "Tuesday" +msgstr "" + +#: env/lib/python3.11/site-packages/django/utils/dates.py:9 +msgid "Wednesday" +msgstr "" + +#: env/lib/python3.11/site-packages/django/utils/dates.py:10 +msgid "Thursday" +msgstr "" + +#: env/lib/python3.11/site-packages/django/utils/dates.py:11 +msgid "Friday" +msgstr "" + +#: env/lib/python3.11/site-packages/django/utils/dates.py:12 +msgid "Saturday" +msgstr "" + +#: env/lib/python3.11/site-packages/django/utils/dates.py:13 +msgid "Sunday" +msgstr "" + +#: env/lib/python3.11/site-packages/django/utils/dates.py:16 +msgid "Mon" +msgstr "" + +#: env/lib/python3.11/site-packages/django/utils/dates.py:17 +msgid "Tue" +msgstr "" + +#: env/lib/python3.11/site-packages/django/utils/dates.py:18 +msgid "Wed" +msgstr "" + +#: env/lib/python3.11/site-packages/django/utils/dates.py:19 +msgid "Thu" +msgstr "" + +#: env/lib/python3.11/site-packages/django/utils/dates.py:20 +msgid "Fri" +msgstr "" + +#: env/lib/python3.11/site-packages/django/utils/dates.py:21 +msgid "Sat" +msgstr "" + +#: env/lib/python3.11/site-packages/django/utils/dates.py:22 +msgid "Sun" +msgstr "" + +#: env/lib/python3.11/site-packages/django/utils/dates.py:25 +msgid "January" +msgstr "" + +#: env/lib/python3.11/site-packages/django/utils/dates.py:26 +msgid "February" +msgstr "" + +#: env/lib/python3.11/site-packages/django/utils/dates.py:27 +#, fuzzy +#| msgid "Search WEI" +msgid "March" +msgstr "WEI finden" + +#: env/lib/python3.11/site-packages/django/utils/dates.py:28 +msgid "April" +msgstr "" + +#: env/lib/python3.11/site-packages/django/utils/dates.py:29 +msgid "May" +msgstr "" + +#: env/lib/python3.11/site-packages/django/utils/dates.py:30 +msgid "June" +msgstr "" + +#: env/lib/python3.11/site-packages/django/utils/dates.py:31 +msgid "July" +msgstr "" + +#: env/lib/python3.11/site-packages/django/utils/dates.py:32 +msgid "August" +msgstr "" + +#: env/lib/python3.11/site-packages/django/utils/dates.py:33 +#, fuzzy +#| msgid "member" +msgid "September" +msgstr "Mitglied" + +#: env/lib/python3.11/site-packages/django/utils/dates.py:34 +msgid "October" +msgstr "" + +#: env/lib/python3.11/site-packages/django/utils/dates.py:35 +#, fuzzy +#| msgid "member" +msgid "November" +msgstr "Mitglied" + +#: env/lib/python3.11/site-packages/django/utils/dates.py:36 +#, fuzzy +#| msgid "member" +msgid "December" +msgstr "Mitglied" + +#: env/lib/python3.11/site-packages/django/utils/dates.py:39 +#, fuzzy +#| msgid "add" +msgid "jan" +msgstr "hinzufügen" + +#: env/lib/python3.11/site-packages/django/utils/dates.py:40 +#, fuzzy +#| msgid "fee" +msgid "feb" +msgstr "Preis" + +#: env/lib/python3.11/site-packages/django/utils/dates.py:41 +msgid "mar" +msgstr "" + +#: env/lib/python3.11/site-packages/django/utils/dates.py:42 +msgid "apr" +msgstr "" + +#: env/lib/python3.11/site-packages/django/utils/dates.py:43 +msgid "may" +msgstr "" + +#: env/lib/python3.11/site-packages/django/utils/dates.py:44 +#, fuzzy +#| msgid "add" +msgid "jun" +msgstr "hinzufügen" + +#: env/lib/python3.11/site-packages/django/utils/dates.py:45 +msgid "jul" +msgstr "" + +#: env/lib/python3.11/site-packages/django/utils/dates.py:46 +msgid "aug" +msgstr "" + +#: env/lib/python3.11/site-packages/django/utils/dates.py:47 +msgid "sep" +msgstr "" + +#: env/lib/python3.11/site-packages/django/utils/dates.py:48 +#, fuzzy +#| msgid "product" +msgid "oct" +msgstr "Produkt" + +#: env/lib/python3.11/site-packages/django/utils/dates.py:49 +msgid "nov" +msgstr "" + +#: env/lib/python3.11/site-packages/django/utils/dates.py:50 +msgid "dec" +msgstr "" + +#: env/lib/python3.11/site-packages/django/utils/dates.py:53 +msgctxt "abbrev. month" +msgid "Jan." +msgstr "" + +#: env/lib/python3.11/site-packages/django/utils/dates.py:54 +msgctxt "abbrev. month" +msgid "Feb." +msgstr "" + +#: env/lib/python3.11/site-packages/django/utils/dates.py:55 +#, fuzzy +#| msgid "Search WEI" +msgctxt "abbrev. month" +msgid "March" +msgstr "WEI finden" + +#: env/lib/python3.11/site-packages/django/utils/dates.py:56 +msgctxt "abbrev. month" +msgid "April" +msgstr "" + +#: env/lib/python3.11/site-packages/django/utils/dates.py:57 +msgctxt "abbrev. month" +msgid "May" +msgstr "" + +#: env/lib/python3.11/site-packages/django/utils/dates.py:58 +msgctxt "abbrev. month" +msgid "June" +msgstr "" + +#: env/lib/python3.11/site-packages/django/utils/dates.py:59 +msgctxt "abbrev. month" +msgid "July" +msgstr "" + +#: env/lib/python3.11/site-packages/django/utils/dates.py:60 +msgctxt "abbrev. month" +msgid "Aug." +msgstr "" + +#: env/lib/python3.11/site-packages/django/utils/dates.py:61 +msgctxt "abbrev. month" +msgid "Sept." +msgstr "" + +#: env/lib/python3.11/site-packages/django/utils/dates.py:62 +msgctxt "abbrev. month" +msgid "Oct." +msgstr "" + +#: env/lib/python3.11/site-packages/django/utils/dates.py:63 +msgctxt "abbrev. month" +msgid "Nov." +msgstr "" + +#: env/lib/python3.11/site-packages/django/utils/dates.py:64 +msgctxt "abbrev. month" +msgid "Dec." +msgstr "" + +#: env/lib/python3.11/site-packages/django/utils/dates.py:67 +msgctxt "alt. month" +msgid "January" +msgstr "" + +#: env/lib/python3.11/site-packages/django/utils/dates.py:68 +msgctxt "alt. month" +msgid "February" +msgstr "" + +#: env/lib/python3.11/site-packages/django/utils/dates.py:69 +#, fuzzy +#| msgid "Search WEI" +msgctxt "alt. month" +msgid "March" +msgstr "WEI finden" + +#: env/lib/python3.11/site-packages/django/utils/dates.py:70 +msgctxt "alt. month" +msgid "April" +msgstr "" + +#: env/lib/python3.11/site-packages/django/utils/dates.py:71 +msgctxt "alt. month" +msgid "May" +msgstr "" + +#: env/lib/python3.11/site-packages/django/utils/dates.py:72 +msgctxt "alt. month" +msgid "June" +msgstr "" + +#: env/lib/python3.11/site-packages/django/utils/dates.py:73 +msgctxt "alt. month" +msgid "July" +msgstr "" + +#: env/lib/python3.11/site-packages/django/utils/dates.py:74 +msgctxt "alt. month" +msgid "August" +msgstr "" + +#: env/lib/python3.11/site-packages/django/utils/dates.py:75 +#, fuzzy +#| msgid "member" +msgctxt "alt. month" +msgid "September" +msgstr "Mitglied" + +#: env/lib/python3.11/site-packages/django/utils/dates.py:76 +msgctxt "alt. month" +msgid "October" +msgstr "" + +#: env/lib/python3.11/site-packages/django/utils/dates.py:77 +#, fuzzy +#| msgid "member" +msgctxt "alt. month" +msgid "November" +msgstr "Mitglied" + +#: env/lib/python3.11/site-packages/django/utils/dates.py:78 +#, fuzzy +#| msgid "member" +msgctxt "alt. month" +msgid "December" +msgstr "Mitglied" + +#: env/lib/python3.11/site-packages/django/utils/ipv6.py:20 +#, fuzzy +#| msgid "This activity is not validated yet." +msgid "This is not a valid IPv6 address." +msgstr "Diese Veranstaltung ist noch nicht bestätigt." + +#: env/lib/python3.11/site-packages/django/utils/text.py:138 +#, python-format +msgctxt "String to return when truncating text" +msgid "%(truncated_text)s…" +msgstr "" + +#: env/lib/python3.11/site-packages/django/utils/text.py:323 +msgid "or" +msgstr "" + +#. Translators: This string is used as a separator between list elements +#: env/lib/python3.11/site-packages/django/utils/text.py:342 +#: env/lib/python3.11/site-packages/django/utils/timesince.py:135 +msgid ", " +msgstr "" + +#: env/lib/python3.11/site-packages/django/utils/timesince.py:8 +#, fuzzy, python-format +#| msgid "year" +msgid "%(num)d year" +msgid_plural "%(num)d years" +msgstr[0] "Jahr" +msgstr[1] "Jahr" + +#: env/lib/python3.11/site-packages/django/utils/timesince.py:9 +#, python-format +msgid "%(num)d month" +msgid_plural "%(num)d months" +msgstr[0] "" +msgstr[1] "" + +#: env/lib/python3.11/site-packages/django/utils/timesince.py:10 +#, python-format +msgid "%(num)d week" +msgid_plural "%(num)d weeks" +msgstr[0] "" +msgstr[1] "" + +#: env/lib/python3.11/site-packages/django/utils/timesince.py:11 +#, python-format +msgid "%(num)d day" +msgid_plural "%(num)d days" +msgstr[0] "" +msgstr[1] "" + +#: env/lib/python3.11/site-packages/django/utils/timesince.py:12 +#, python-format +msgid "%(num)d hour" +msgid_plural "%(num)d hours" +msgstr[0] "" +msgstr[1] "" + +#: env/lib/python3.11/site-packages/django/utils/timesince.py:13 +#, python-format +msgid "%(num)d minute" +msgid_plural "%(num)d minutes" +msgstr[0] "" +msgstr[1] "" + +#: env/lib/python3.11/site-packages/django/views/csrf.py:111 +msgid "Forbidden" +msgstr "" + +#: env/lib/python3.11/site-packages/django/views/csrf.py:112 +msgid "CSRF verification failed. Request aborted." +msgstr "" + +#: env/lib/python3.11/site-packages/django/views/csrf.py:116 +msgid "" +"You are seeing this message because this HTTPS site requires a “Referer " +"header” to be sent by your web browser, but none was sent. This header is " +"required for security reasons, to ensure that your browser is not being " +"hijacked by third parties." +msgstr "" + +#: env/lib/python3.11/site-packages/django/views/csrf.py:122 +msgid "" +"If you have configured your browser to disable “Referer” headers, please re-" +"enable them, at least for this site, or for HTTPS connections, or for “same-" +"origin” requests." +msgstr "" + +#: env/lib/python3.11/site-packages/django/views/csrf.py:127 +msgid "" +"If you are using the tag or " +"including the “Referrer-Policy: no-referrer” header, please remove them. The " +"CSRF protection requires the “Referer” header to do strict referer checking. " +"If you’re concerned about privacy, use alternatives like for links to third-party sites." +msgstr "" + +#: env/lib/python3.11/site-packages/django/views/csrf.py:136 +msgid "" +"You are seeing this message because this site requires a CSRF cookie when " +"submitting forms. This cookie is required for security reasons, to ensure " +"that your browser is not being hijacked by third parties." +msgstr "" + +#: env/lib/python3.11/site-packages/django/views/csrf.py:142 +msgid "" +"If you have configured your browser to disable cookies, please re-enable " +"them, at least for this site, or for “same-origin” requests." +msgstr "" + +#: env/lib/python3.11/site-packages/django/views/csrf.py:148 +msgid "More information is available with DEBUG=True." +msgstr "" + +#: env/lib/python3.11/site-packages/django/views/generic/dates.py:44 +#, fuzzy +#| msgid "No reason specified" +msgid "No year specified" +msgstr "Kein Grund gegeben" + +#: env/lib/python3.11/site-packages/django/views/generic/dates.py:64 +#: env/lib/python3.11/site-packages/django/views/generic/dates.py:115 +#: env/lib/python3.11/site-packages/django/views/generic/dates.py:214 +msgid "Date out of range" +msgstr "" + +#: env/lib/python3.11/site-packages/django/views/generic/dates.py:94 +#, fuzzy +#| msgid "No reason specified" +msgid "No month specified" +msgstr "Kein Grund gegeben" + +#: env/lib/python3.11/site-packages/django/views/generic/dates.py:147 +#, fuzzy +#| msgid "No reason specified" +msgid "No day specified" +msgstr "Kein Grund gegeben" + +#: env/lib/python3.11/site-packages/django/views/generic/dates.py:194 +#, fuzzy +#| msgid "No reason specified" +msgid "No week specified" +msgstr "Kein Grund gegeben" + +#: env/lib/python3.11/site-packages/django/views/generic/dates.py:349 +#: env/lib/python3.11/site-packages/django/views/generic/dates.py:380 +#, python-format +msgid "No %(verbose_name_plural)s available" +msgstr "" + +#: env/lib/python3.11/site-packages/django/views/generic/dates.py:652 +#, python-format +msgid "" +"Future %(verbose_name_plural)s not available because %(class_name)s." +"allow_future is False." +msgstr "" + +#: env/lib/python3.11/site-packages/django/views/generic/dates.py:692 +#, python-format +msgid "Invalid date string “%(datestr)s” given format “%(format)s”" +msgstr "" + +#: env/lib/python3.11/site-packages/django/views/generic/detail.py:56 +#, python-format +msgid "No %(verbose_name)s found matching the query" +msgstr "" + +#: env/lib/python3.11/site-packages/django/views/generic/list.py:70 +msgid "Page is not “last”, nor can it be converted to an int." +msgstr "" + +#: env/lib/python3.11/site-packages/django/views/generic/list.py:77 +#, python-format +msgid "Invalid page (%(page_number)s): %(message)s" +msgstr "" + +#: env/lib/python3.11/site-packages/django/views/generic/list.py:169 +#, python-format +msgid "Empty list and “%(class_name)s.allow_empty” is False." +msgstr "" + +#: env/lib/python3.11/site-packages/django/views/static.py:38 +msgid "Directory indexes are not allowed here." +msgstr "" + +#: env/lib/python3.11/site-packages/django/views/static.py:40 +#, python-format +msgid "“%(path)s” does not exist" +msgstr "" + +#: env/lib/python3.11/site-packages/django/views/static.py:79 +#, python-format +msgid "Index of %(directory)s" +msgstr "" + +#: env/lib/python3.11/site-packages/django/views/templates/default_urlconf.html:7 +#: env/lib/python3.11/site-packages/django/views/templates/default_urlconf.html:220 +msgid "The install worked successfully! Congratulations!" +msgstr "" + +#: env/lib/python3.11/site-packages/django/views/templates/default_urlconf.html:206 +#, python-format +msgid "" +"View release notes for Django %(version)s" +msgstr "" + +#: env/lib/python3.11/site-packages/django/views/templates/default_urlconf.html:221 +#, python-format +msgid "" +"You are seeing this page because DEBUG=True is in your settings file and you have not " +"configured any URLs." +msgstr "" + +#: env/lib/python3.11/site-packages/django/views/templates/default_urlconf.html:229 +msgid "Django Documentation" +msgstr "" + +#: env/lib/python3.11/site-packages/django/views/templates/default_urlconf.html:230 +msgid "Topics, references, & how-to’s" +msgstr "" + +#: env/lib/python3.11/site-packages/django/views/templates/default_urlconf.html:238 +msgid "Tutorial: A Polling App" +msgstr "" + +#: env/lib/python3.11/site-packages/django/views/templates/default_urlconf.html:239 +msgid "Get started with Django" +msgstr "" + +#: env/lib/python3.11/site-packages/django/views/templates/default_urlconf.html:247 +msgid "Django Community" +msgstr "" + +#: env/lib/python3.11/site-packages/django/views/templates/default_urlconf.html:248 +msgid "Connect, get help, or contribute" +msgstr "" + +#: env/lib/python3.11/site-packages/oauth2_provider/models.py:69 +msgid "Confidential" +msgstr "" + +#: env/lib/python3.11/site-packages/oauth2_provider/models.py:70 +msgid "Public" +msgstr "" + +#: env/lib/python3.11/site-packages/oauth2_provider/models.py:79 +msgid "Authorization code" +msgstr "" + +#: env/lib/python3.11/site-packages/oauth2_provider/models.py:80 +msgid "Implicit" +msgstr "" + +#: env/lib/python3.11/site-packages/oauth2_provider/models.py:81 +#, fuzzy +#| msgid "Reset my password" +msgid "Resource owner password-based" +msgstr "Mein Passwort zurücksetzen" + +#: env/lib/python3.11/site-packages/oauth2_provider/models.py:82 +msgid "Client credentials" +msgstr "" + +#: env/lib/python3.11/site-packages/oauth2_provider/models.py:83 +msgid "OpenID connect hybrid" +msgstr "" + +#: env/lib/python3.11/site-packages/oauth2_provider/models.py:90 +msgid "No OIDC support" +msgstr "" + +#: env/lib/python3.11/site-packages/oauth2_provider/models.py:91 +msgid "RSA with SHA-2 256" +msgstr "" + +#: env/lib/python3.11/site-packages/oauth2_provider/models.py:92 +msgid "HMAC with SHA-2 256" +msgstr "" + +#: env/lib/python3.11/site-packages/oauth2_provider/models.py:107 +msgid "Allowed URIs list, space separated" +msgstr "" + +#: env/lib/python3.11/site-packages/oauth2_provider/models.py:111 +msgid "Allowed Post Logout URIs list, space separated" +msgstr "" + +#: env/lib/python3.11/site-packages/oauth2_provider/models.py:120 +msgid "Hashed on Save. Copy it now if this is a new secret." +msgstr "" + +#: env/lib/python3.11/site-packages/oauth2_provider/models.py:190 +#, python-brace-format +msgid "Unauthorized redirect scheme: {scheme}" +msgstr "" + +#: env/lib/python3.11/site-packages/oauth2_provider/models.py:194 +#, python-brace-format +msgid "redirect_uris cannot be empty with grant_type {grant_type}" +msgstr "" + +#: env/lib/python3.11/site-packages/oauth2_provider/models.py:200 +msgid "You must set OIDC_RSA_PRIVATE_KEY to use RSA algorithm" +msgstr "" + +#: env/lib/python3.11/site-packages/oauth2_provider/models.py:209 +msgid "You cannot use HS256 with public grants or clients" +msgstr "" + +#: env/lib/python3.11/site-packages/oauth2_provider/oauth2_validators.py:211 +#, fuzzy +#| msgid "This address must be valid." +msgid "The access token is invalid." +msgstr "Diese Adresse muss gültig sein." + +#: env/lib/python3.11/site-packages/oauth2_provider/oauth2_validators.py:218 +#, fuzzy +#| msgid "This address must be valid." +msgid "The access token has expired." +msgstr "Diese Adresse muss gültig sein." + +#: env/lib/python3.11/site-packages/oauth2_provider/oauth2_validators.py:225 +#, fuzzy +#| msgid "This address must be valid." +msgid "The access token is valid but does not have enough scope." +msgstr "Diese Adresse muss gültig sein." + +#: env/lib/python3.11/site-packages/oauth2_provider/templates/oauth2_provider/application_confirm_delete.html:6 +#: note_kfet/templates/oauth2_provider/application_confirm_delete.html:8 +#, fuzzy +#| msgid "" +#| "Are you sure you want to delete this invoice? This action can't be undone." +msgid "Are you sure to delete the application" +msgstr "" +"Möchten Sie diese Rechnung wirklich löschen? Diese Aktion kann nicht " +"rückgängig gemacht werden." + +#: env/lib/python3.11/site-packages/oauth2_provider/templates/oauth2_provider/application_confirm_delete.html:12 +#: env/lib/python3.11/site-packages/oauth2_provider/templates/oauth2_provider/authorize.html:29 +#: note_kfet/templates/oauth2_provider/application_confirm_delete.html:17 +#: note_kfet/templates/oauth2_provider/authorize.html:28 +#, fuzzy +#| msgid "Balance" +msgid "Cancel" +msgstr "Kontostand" + +#: env/lib/python3.11/site-packages/oauth2_provider/templates/oauth2_provider/application_detail.html:10 +#: note_kfet/templates/oauth2_provider/application_detail.html:11 +msgid "Client id" +msgstr "" + +#: env/lib/python3.11/site-packages/oauth2_provider/templates/oauth2_provider/application_detail.html:15 +#: note_kfet/templates/oauth2_provider/application_detail.html:14 +msgid "Client secret" +msgstr "" + +#: env/lib/python3.11/site-packages/oauth2_provider/templates/oauth2_provider/application_detail.html:20 +#: note_kfet/templates/oauth2_provider/application_detail.html:17 +#, fuzzy +#| msgid "Credit type" +msgid "Client type" +msgstr "Kredittype" + +#: env/lib/python3.11/site-packages/oauth2_provider/templates/oauth2_provider/application_detail.html:25 +#: note_kfet/templates/oauth2_provider/application_detail.html:20 +msgid "Authorization Grant Type" +msgstr "" + +#: env/lib/python3.11/site-packages/oauth2_provider/templates/oauth2_provider/application_detail.html:30 +#: note_kfet/templates/oauth2_provider/application_detail.html:23 +msgid "Redirect Uris" +msgstr "" + +#: env/lib/python3.11/site-packages/oauth2_provider/templates/oauth2_provider/application_detail.html:36 +#: env/lib/python3.11/site-packages/oauth2_provider/templates/oauth2_provider/application_form.html:35 +#: note_kfet/templates/oauth2_provider/application_detail.html:37 +#: note_kfet/templates/oauth2_provider/application_form.html:23 +msgid "Go Back" +msgstr "" + +#: env/lib/python3.11/site-packages/oauth2_provider/templates/oauth2_provider/application_form.html:9 +#: note_kfet/templates/oauth2_provider/application_form.html:12 +#, fuzzy +#| msgid "Email validation" +msgid "Edit application" +msgstr "Email validierung" + +#: env/lib/python3.11/site-packages/oauth2_provider/templates/oauth2_provider/application_form.html:37 +msgid "Save" +msgstr "" + +#: env/lib/python3.11/site-packages/oauth2_provider/templates/oauth2_provider/application_list.html:6 +#: note_kfet/templates/oauth2_provider/application_list.html:7 +msgid "Your applications" +msgstr "" + +#: env/lib/python3.11/site-packages/oauth2_provider/templates/oauth2_provider/application_list.html:14 +#: note_kfet/templates/oauth2_provider/application_list.html:30 +#, fuzzy +#| msgid "location" +msgid "New Application" +msgstr "Ort" + +#: env/lib/python3.11/site-packages/oauth2_provider/templates/oauth2_provider/application_registration_form.html:5 +#: note_kfet/templates/oauth2_provider/application_registration_form.html:5 +#, fuzzy +#| msgid "Registrations" +msgid "Register a new application" +msgstr "Anmeldung" + +#: env/lib/python3.11/site-packages/oauth2_provider/templates/oauth2_provider/authorize.html:8 +#: env/lib/python3.11/site-packages/oauth2_provider/templates/oauth2_provider/authorize.html:30 +#: note_kfet/templates/oauth2_provider/authorize.html:9 +#: note_kfet/templates/oauth2_provider/authorize.html:29 +msgid "Authorize" +msgstr "" + +#: env/lib/python3.11/site-packages/oauth2_provider/templates/oauth2_provider/authorize.html:17 +msgid "Application requires the following permissions" +msgstr "" + +#: env/lib/python3.11/site-packages/oauth2_provider/templates/oauth2_provider/authorized-token-delete.html:6 +#: note_kfet/templates/oauth2_provider/authorized-token-delete.html:9 +#, fuzzy +#| msgid "" +#| "Are you sure you want to delete this invoice? This action can't be undone." +msgid "Are you sure you want to delete this token?" +msgstr "" +"Möchten Sie diese Rechnung wirklich löschen? Diese Aktion kann nicht " +"rückgängig gemacht werden." + +#: env/lib/python3.11/site-packages/oauth2_provider/templates/oauth2_provider/authorized-tokens.html:6 +#: note_kfet/templates/oauth2_provider/authorized-tokens.html:7 +#, fuzzy +#| msgid "Token" +msgid "Tokens" +msgstr "Token" + +#: env/lib/python3.11/site-packages/oauth2_provider/templates/oauth2_provider/authorized-tokens.html:11 +msgid "revoke" +msgstr "" + +#: env/lib/python3.11/site-packages/oauth2_provider/templates/oauth2_provider/authorized-tokens.html:19 +#: note_kfet/templates/oauth2_provider/authorized-tokens.html:22 +#, fuzzy +#| msgid "There is no closed remittance yet." +msgid "There are no authorized tokens yet." +msgstr "Es gibt noch keine geschlossene Überweisung." + +#: note_kfet/settings/base.py:177 msgid "German" msgstr "Deutsch" -#: note_kfet/settings/base.py:174 +#: note_kfet/settings/base.py:178 msgid "English" msgstr "English" -#: note_kfet/settings/base.py:175 +#: note_kfet/settings/base.py:179 msgid "Spanish" msgstr "Spanisch" -#: note_kfet/settings/base.py:176 +#: note_kfet/settings/base.py:180 msgid "French" msgstr "Französich" @@ -3661,14 +5616,6 @@ msgstr "" msgid "Reset" msgstr "Reset" -#: note_kfet/templates/base.html:14 -msgid "The ENS Paris-Saclay BDE note." -msgstr "Die BDE ENS-Paris-Saclay Note." - -#: note_kfet/templates/base.html:72 -msgid "Food" -msgstr "" - #: note_kfet/templates/base.html:84 msgid "Users" msgstr "Users" @@ -3677,26 +5624,26 @@ msgstr "Users" msgid "Clubs" msgstr "Clubs" -#: note_kfet/templates/base.html:119 +#: note_kfet/templates/base.html:125 msgid "Admin" msgstr "Admin" -#: note_kfet/templates/base.html:133 +#: note_kfet/templates/base.html:139 msgid "My account" msgstr "Mein Konto" -#: note_kfet/templates/base.html:136 +#: note_kfet/templates/base.html:142 msgid "Log out" msgstr "Abmelden" -#: note_kfet/templates/base.html:144 +#: note_kfet/templates/base.html:150 #: note_kfet/templates/registration/signup.html:6 #: note_kfet/templates/registration/signup.html:11 #: note_kfet/templates/registration/signup.html:28 msgid "Sign up" msgstr "Registrieren" -#: note_kfet/templates/base.html:151 +#: note_kfet/templates/base.html:157 #: note_kfet/templates/registration/login.html:6 #: note_kfet/templates/registration/login.html:15 #: note_kfet/templates/registration/login.html:38 @@ -3704,13 +5651,13 @@ msgstr "Registrieren" msgid "Log in" msgstr "Anmelden" -#: note_kfet/templates/base.html:165 +#: note_kfet/templates/base.html:171 msgid "" "You are not a BDE member anymore. Please renew your membership if you want " "to use the note." msgstr "" -#: note_kfet/templates/base.html:171 +#: note_kfet/templates/base.html:177 msgid "" "Your e-mail address is not validated. Please check your mail inbox and click " "on the validation link." @@ -3718,7 +5665,7 @@ msgstr "" "Ihre E-Mail-Adresse ist nicht validiert. Bitte überprüfen Sie Ihren " "Posteingang und klicken Sie auf den Validierungslink." -#: note_kfet/templates/base.html:177 +#: note_kfet/templates/base.html:183 msgid "" "You declared that you opened a bank account in the Société générale. The " "bank did not validate the creation of the account to the BDE, so the " @@ -3727,19 +5674,19 @@ msgid "" "creation." msgstr "" -#: note_kfet/templates/base.html:200 +#: note_kfet/templates/base.html:206 msgid "Contact us" msgstr "Kontakt" -#: note_kfet/templates/base.html:202 +#: note_kfet/templates/base.html:208 msgid "Technical Support" msgstr "" -#: note_kfet/templates/base.html:204 +#: note_kfet/templates/base.html:210 msgid "Charte Info (FR)" msgstr "" -#: note_kfet/templates/base.html:206 +#: note_kfet/templates/base.html:212 msgid "FAQ (FR)" msgstr "FAQ (FR)" @@ -3751,44 +5698,6 @@ msgstr "Suche nach Attributen wie Name..." msgid "There is no results." msgstr "Es gibt keine Ergebnisse." -#: note_kfet/templates/oauth2_provider/application_confirm_delete.html:8 -#, fuzzy -#| msgid "" -#| "Are you sure you want to delete this invoice? This action can't be undone." -msgid "Are you sure to delete the application" -msgstr "" -"Möchten Sie diese Rechnung wirklich löschen? Diese Aktion kann nicht " -"rückgängig gemacht werden." - -#: note_kfet/templates/oauth2_provider/application_confirm_delete.html:17 -#: note_kfet/templates/oauth2_provider/authorize.html:28 -#, fuzzy -#| msgid "Balance" -msgid "Cancel" -msgstr "Kontostand" - -#: note_kfet/templates/oauth2_provider/application_detail.html:11 -msgid "Client id" -msgstr "" - -#: note_kfet/templates/oauth2_provider/application_detail.html:14 -msgid "Client secret" -msgstr "" - -#: note_kfet/templates/oauth2_provider/application_detail.html:17 -#, fuzzy -#| msgid "Credit type" -msgid "Client type" -msgstr "Kredittype" - -#: note_kfet/templates/oauth2_provider/application_detail.html:20 -msgid "Authorization Grant Type" -msgstr "" - -#: note_kfet/templates/oauth2_provider/application_detail.html:23 -msgid "Redirect Uris" -msgstr "" - #: note_kfet/templates/oauth2_provider/application_detail.html:29 #, python-format msgid "" @@ -3797,48 +5706,16 @@ msgid "" "that you want to grant for your application." msgstr "" -#: note_kfet/templates/oauth2_provider/application_detail.html:37 -#: note_kfet/templates/oauth2_provider/application_form.html:23 -msgid "Go Back" -msgstr "" - -#: note_kfet/templates/oauth2_provider/application_form.html:12 -#, fuzzy -#| msgid "Email validation" -msgid "Edit application" -msgstr "Email validierung" - -#: note_kfet/templates/oauth2_provider/application_list.html:7 -msgid "Your applications" -msgstr "" - #: note_kfet/templates/oauth2_provider/application_list.html:11 msgid "" "You can find on this page the list of the applications that you already " "registered." msgstr "" -#: note_kfet/templates/oauth2_provider/application_list.html:30 -#, fuzzy -#| msgid "location" -msgid "New Application" -msgstr "Ort" - #: note_kfet/templates/oauth2_provider/application_list.html:31 msgid "Authorized Tokens" msgstr "" -#: note_kfet/templates/oauth2_provider/application_registration_form.html:5 -#, fuzzy -#| msgid "Registrations" -msgid "Register a new application" -msgstr "Anmeldung" - -#: note_kfet/templates/oauth2_provider/authorize.html:9 -#: note_kfet/templates/oauth2_provider/authorize.html:29 -msgid "Authorize" -msgstr "" - #: note_kfet/templates/oauth2_provider/authorize.html:14 msgid "Application requires following permissions:" msgstr "" @@ -3856,27 +5733,6 @@ msgstr "" msgid "Please return to your application and enter this code:" msgstr "" -#: note_kfet/templates/oauth2_provider/authorized-token-delete.html:9 -#, fuzzy -#| msgid "" -#| "Are you sure you want to delete this invoice? This action can't be undone." -msgid "Are you sure you want to delete this token?" -msgstr "" -"Möchten Sie diese Rechnung wirklich löschen? Diese Aktion kann nicht " -"rückgängig gemacht werden." - -#: note_kfet/templates/oauth2_provider/authorized-tokens.html:7 -#, fuzzy -#| msgid "Token" -msgid "Tokens" -msgstr "Token" - -#: note_kfet/templates/oauth2_provider/authorized-tokens.html:22 -#, fuzzy -#| msgid "There is no closed remittance yet." -msgid "There are no authorized tokens yet." -msgstr "Es gibt noch keine geschlossene Überweisung." - #: note_kfet/templates/registration/logged_out.html:13 msgid "Thanks for spending some quality time with the Web site today." msgstr "" @@ -3990,293 +5846,76 @@ msgstr "" "müssen Ihre E-Mail-Adresse auch überprüfen, indem Sie dem Link folgen, den " "Sie erhalten haben." +#~ msgid "The BDE membership is included in the WEI registration." +#~ msgstr "Die BDE-Mitgliedschaft ist in der WEI-Registrierung enthalten." + +#, python-format +#~ msgid "" +#~ "The note don't have enough money (%(balance)s, %(pretty_fee)s required). " +#~ "The registration may fail if you don't credit the note now." +#~ msgstr "" +#~ "Die Note hat nicht genug Geld (%(balance)s,%(pretty_fee)s erforderlich). " +#~ "Die Registrierung kann fehlschlagen, wenn Sie die Note jetzt nicht " +#~ "gutschreiben." + +#, python-format +#~ msgid "" +#~ "The note has enough money (%(pretty_fee)s required), the registration is " +#~ "possible." +#~ msgstr "" +#~ "Die Note hat genug Geld (%(pretty_fee)s erforderlich), die Registrierung " +#~ "ist möglich." + +#, fuzzy +#~| msgid "You don't have the right to delete this WEI registration." +#~ msgid "You don't have the permission to validate registrations" +#~ msgstr "Sie haben nicht das Recht, diese WEI-Registrierung zu löschen." + +#, fuzzy +#~| msgid "active" +#~ msgid "is active" +#~ msgstr "Aktiv" + +#, fuzzy +#~| msgid "start date" +#~ msgid "Arrival date" +#~ msgstr "Anfangsdatum" + +#, fuzzy +#~| msgid "active" +#~ msgid "Active" +#~ msgstr "Aktiv" + +#, fuzzy +#~| msgid "phone number" +#~ msgid "number" +#~ msgstr "Telefonnummer" + +#, fuzzy +#~| msgid "Profile detail" +#~ msgid "View details" +#~ msgstr "Profile detail" + +#, fuzzy +#~| msgid "There is no results." +#~ msgid "There is no meal." +#~ msgstr "Es gibt keine Ergebnisse." + +#, fuzzy +#~| msgid "This credit is already validated." +#~ msgid "The product is already prepared" +#~ msgstr "Dieser Kredit ist bereits validiert." + +#, fuzzy +#~| msgid "Update team" +#~ msgid "Update a meal" +#~ msgstr "Team bearbeiten" + #, fuzzy #~| msgid "Email validation" #~ msgid "Enter a valid color." #~ msgstr "Email validierung" -#, fuzzy -#~| msgid "Email validation" -#~ msgid "Enter a valid value." -#~ msgstr "Email validierung" - -#, fuzzy -#~| msgid "Invitation" -#~ msgid "Syndication" -#~ msgstr "Einladung" - -#, fuzzy -#~| msgid "There is no results." -#~ msgid "That page contains no results" -#~ msgstr "Es gibt keine Ergebnisse." - -#, fuzzy -#~| msgid "Email validation" -#~ msgid "Enter a valid URL." -#~ msgstr "Email validierung" - -#, fuzzy -#~| msgid "Email validation" -#~ msgid "Enter a valid integer." -#~ msgstr "Email validierung" - -#, fuzzy -#~| msgid "Email validation" -#~ msgid "Enter a valid email address." -#~ msgstr "Email validierung" - -#, fuzzy -#~| msgid "This activity is not validated yet." -#~ msgid "Enter a valid IPv4 address." -#~ msgstr "Diese Veranstaltung ist noch nicht bestätigt." - -#, fuzzy -#~| msgid "This activity is not validated yet." -#~ msgid "Enter a valid IPv6 address." -#~ msgstr "Diese Veranstaltung ist noch nicht bestätigt." - -#, fuzzy -#~| msgid "This activity is not validated yet." -#~ msgid "Enter a valid IPv4 or IPv6 address." -#~ msgstr "Diese Veranstaltung ist noch nicht bestätigt." - -#, fuzzy -#~| msgid "phone number" -#~ msgid "Enter a number." -#~ msgstr "Telefonnummer" - -#, fuzzy -#~| msgid "add" -#~ msgid "and" -#~ msgstr "hinzufügen" - -#, fuzzy, python-format -#~| msgid "A template with this name already exist" -#~ msgid "%(model_name)s with this %(field_labels)s already exists." -#~ msgstr "Eine Vorlage mit diesem Namen ist bereits vorhanden" - -#, fuzzy -#~| msgid "This image cannot be loaded." -#~ msgid "This field cannot be null." -#~ msgstr "Dieses Bild kann nicht geladen werden." - -#, fuzzy -#~| msgid "This image cannot be loaded." -#~ msgid "This field cannot be blank." -#~ msgstr "Dieses Bild kann nicht geladen werden." - -#, fuzzy, python-format -#~| msgid "A template with this name already exist" -#~ msgid "%(model_name)s with this %(field_label)s already exists." -#~ msgstr "Eine Vorlage mit diesem Namen ist bereits vorhanden" - -#, fuzzy -#~| msgid "phone number" -#~ msgid "Decimal number" -#~ msgstr "Telefonnummer" - -#, fuzzy -#~| msgid "action" -#~ msgid "Duration" -#~ msgstr "Aktion" - -#, fuzzy -#~| msgid "address" -#~ msgid "Email address" -#~ msgstr "Adresse" - -#, fuzzy -#~| msgid "phone number" -#~ msgid "Floating point number" -#~ msgstr "Telefonnummer" - -#, fuzzy -#~| msgid "IP Address" -#~ msgid "IPv4 address" -#~ msgstr "IP Adresse" - -#, fuzzy -#~| msgid "IP Address" -#~ msgid "IP address" -#~ msgstr "IP Adresse" - -#, fuzzy -#~| msgid "Invoice identifier" -#~ msgid "Universally unique identifier" -#~ msgstr "Rechnungskennung" - -#, fuzzy, python-format -#~| msgid "A template with this name already exist" -#~ msgid "%(model)s instance with %(field)s %(value)r does not exist." -#~ msgstr "Eine Vorlage mit diesem Namen ist bereits vorhanden" - -#, fuzzy -#~| msgid "phone number" -#~ msgid "Enter a whole number." -#~ msgstr "Telefonnummer" - -#, fuzzy -#~| msgid "Email validation" -#~ msgid "Enter a valid date." -#~ msgstr "Email validierung" - -#, fuzzy -#~| msgid "Email validation" -#~ msgid "Enter a valid time." -#~ msgstr "Email validierung" - -#, fuzzy -#~| msgid "Email validation" -#~ msgid "Enter a valid date/time." -#~ msgstr "Email validierung" - -#, fuzzy -#~| msgid "Email validation" -#~ msgid "Enter a valid duration." -#~ msgstr "Email validierung" - -#, fuzzy -#~| msgid "phone number" -#~ msgid "Enter a complete value." -#~ msgstr "Telefonnummer" - -#, fuzzy -#~| msgid "Email validation" -#~ msgid "Enter a valid UUID." -#~ msgstr "Email validierung" - -#, fuzzy, python-format -#~| msgid "This activity is not validated yet." -#~ msgid "\"%(pk)s\" is not a valid value." -#~ msgstr "Diese Veranstaltung ist noch nicht bestätigt." - -#, fuzzy -#~| msgid "Current activity" -#~ msgid "Currently" -#~ msgstr "Aktuelle Veranstaltung" - -#, fuzzy -#~| msgid "change" -#~ msgid "Change" -#~ msgstr "bearbeiten" - -#, fuzzy -#~| msgid "Search WEI" -#~ msgid "March" -#~ msgstr "WEI finden" - -#, fuzzy -#~| msgid "member" -#~ msgid "September" -#~ msgstr "Mitglied" - -#, fuzzy -#~| msgid "member" -#~ msgid "November" -#~ msgstr "Mitglied" - -#, fuzzy -#~| msgid "member" -#~ msgid "December" -#~ msgstr "Mitglied" - -#, fuzzy -#~| msgid "add" -#~ msgid "jan" -#~ msgstr "hinzufügen" - -#, fuzzy -#~| msgid "fee" -#~ msgid "feb" -#~ msgstr "Preis" - -#, fuzzy -#~| msgid "product" -#~ msgid "oct" -#~ msgstr "Produkt" - -#, fuzzy -#~| msgid "Search WEI" -#~ msgctxt "abbrev. month" -#~ msgid "March" -#~ msgstr "WEI finden" - -#, fuzzy -#~| msgid "Search WEI" -#~ msgctxt "alt. month" -#~ msgid "March" -#~ msgstr "WEI finden" - -#, fuzzy -#~| msgid "member" -#~ msgctxt "alt. month" -#~ msgid "September" -#~ msgstr "Mitglied" - -#, fuzzy -#~| msgid "member" -#~ msgctxt "alt. month" -#~ msgid "November" -#~ msgstr "Mitglied" - -#, fuzzy -#~| msgid "member" -#~ msgctxt "alt. month" -#~ msgid "December" -#~ msgstr "Mitglied" - -#, fuzzy -#~| msgid "This activity is not validated yet." -#~ msgid "This is not a valid IPv6 address." -#~ msgstr "Diese Veranstaltung ist noch nicht bestätigt." - -#, fuzzy, python-format -#~| msgid "year" -#~ msgid "%d year" -#~ msgid_plural "%d years" -#~ msgstr[0] "Jahr" -#~ msgstr[1] "Jahr" - -#, fuzzy -#~| msgid "No reason specified" -#~ msgid "No year specified" -#~ msgstr "Kein Grund gegeben" - -#, fuzzy -#~| msgid "No reason specified" -#~ msgid "No month specified" -#~ msgstr "Kein Grund gegeben" - -#, fuzzy -#~| msgid "No reason specified" -#~ msgid "No day specified" -#~ msgstr "Kein Grund gegeben" - -#, fuzzy -#~| msgid "No reason specified" -#~ msgid "No week specified" -#~ msgstr "Kein Grund gegeben" - -#, fuzzy -#~| msgid "Reset my password" -#~ msgid "Resource owner password-based" -#~ msgstr "Mein Passwort zurücksetzen" - -#, fuzzy -#~| msgid "This address must be valid." -#~ msgid "The access token is invalid." -#~ msgstr "Diese Adresse muss gültig sein." - -#, fuzzy -#~| msgid "This address must be valid." -#~ msgid "The access token has expired." -#~ msgstr "Diese Adresse muss gültig sein." - -#, fuzzy -#~| msgid "This address must be valid." -#~ msgid "The access token is valid but does not have enough scope." -#~ msgstr "Diese Adresse muss gültig sein." - #, fuzzy #~| msgid "WEI registration" #~ msgid "In preparation" diff --git a/locale/es/LC_MESSAGES/django.po b/locale/es/LC_MESSAGES/django.po index 6dcf73a1..3baa260d 100644 --- a/locale/es/LC_MESSAGES/django.po +++ b/locale/es/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-08-17 11:57+0200\n" +"POT-Creation-Date: 2025-06-20 14:02+0200\n" "PO-Revision-Date: 2022-04-11 23:12+0200\n" "Last-Translator: bleizi \n" "Language-Team: \n" @@ -18,50 +18,56 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Poedit 3.0.1\n" +#: apps/activity/api/serializers.py:77 +#, fuzzy +#| msgid "This credit is already validated." +msgid "This opener already exists" +msgstr "Este crédito ya fue validado." + #: apps/activity/apps.py:10 apps/activity/models.py:129 -#: apps/activity/models.py:169 +#: apps/activity/models.py:169 apps/activity/models.py:329 msgid "activity" msgstr "actividad" -#: apps/activity/forms.py:34 +#: apps/activity/forms.py:35 msgid "The note of this club is inactive." msgstr "La note del club está inactiva." -#: apps/activity/forms.py:41 apps/activity/models.py:142 +#: apps/activity/forms.py:42 apps/activity/models.py:142 msgid "The end date must be after the start date." msgstr "La fecha final tiene que ser después de la fecha de inicio." -#: apps/activity/forms.py:82 apps/activity/models.py:271 +#: apps/activity/forms.py:83 apps/activity/models.py:277 msgid "You can't invite someone once the activity is started." msgstr "No se puede invitar a alguien una vez que arrancó la actividad." -#: apps/activity/forms.py:85 apps/activity/models.py:274 +#: apps/activity/forms.py:86 apps/activity/models.py:280 msgid "This activity is not validated yet." msgstr "Esta actividad no fue validada por ahora." -#: apps/activity/forms.py:95 apps/activity/models.py:282 +#: apps/activity/forms.py:96 apps/activity/models.py:288 msgid "This person has been already invited 5 times this year." msgstr "Esta persona ya fue invitada 5 veces este año." -#: apps/activity/forms.py:99 apps/activity/models.py:286 +#: apps/activity/forms.py:100 apps/activity/models.py:292 msgid "This person is already invited." msgstr "Esta persona ya está invitada." -#: apps/activity/forms.py:103 apps/activity/models.py:290 +#: apps/activity/forms.py:104 apps/activity/models.py:296 msgid "You can't invite more than 3 people to this activity." msgstr "Usted no puede invitar más de 3 persona a esta actividad." -#: apps/activity/models.py:28 apps/activity/models.py:63 apps/food/models.py:42 -#: apps/food/models.py:56 apps/member/models.py:203 +#: apps/activity/models.py:28 apps/activity/models.py:63 apps/food/models.py:18 +#: apps/food/models.py:35 apps/member/models.py:203 #: apps/member/templates/member/includes/club_info.html:4 #: apps/member/templates/member/includes/profile_info.html:4 #: apps/note/models/notes.py:263 apps/note/models/transactions.py:26 #: apps/note/models/transactions.py:46 apps/note/models/transactions.py:299 #: apps/permission/models.py:329 #: apps/registration/templates/registration/future_profile_detail.html:16 -#: apps/wei/models.py:67 apps/wei/models.py:131 apps/wei/tables.py:282 +#: apps/wei/models.py:72 apps/wei/models.py:145 apps/wei/tables.py:282 #: apps/wei/templates/wei/base.html:26 -#: apps/wei/templates/wei/weimembership_form.html:14 +#: apps/wei/templates/wei/weimembership_form.html:14 apps/wrapped/models.py:16 msgid "name" msgstr "nombre" @@ -94,7 +100,7 @@ msgstr "tipos de actividad" #: apps/activity/models.py:68 #: apps/activity/templates/activity/includes/activity_info.html:19 #: apps/note/models/transactions.py:82 apps/permission/models.py:109 -#: apps/permission/models.py:188 apps/wei/models.py:78 apps/wei/models.py:142 +#: apps/permission/models.py:188 apps/wei/models.py:92 apps/wei/models.py:156 msgid "description" msgstr "descripción" @@ -113,9 +119,9 @@ msgstr "Lugar donde se organiza la actividad, por ejemplo la Kfet." msgid "type" msgstr "tipo" -#: apps/activity/models.py:91 apps/logs/models.py:22 apps/member/models.py:318 -#: apps/note/models/notes.py:148 apps/treasury/models.py:293 -#: apps/wei/models.py:171 apps/wei/templates/wei/attribute_bus_1A.html:13 +#: apps/activity/models.py:91 apps/logs/models.py:22 apps/member/models.py:325 +#: apps/note/models/notes.py:148 apps/treasury/models.py:294 +#: apps/wei/models.py:185 apps/wei/templates/wei/attribute_bus_1A.html:13 #: apps/wei/templates/wei/survey.html:15 msgid "user" msgstr "usuario" @@ -170,7 +176,7 @@ msgid "entry time" msgstr "hora de entrada" #: apps/activity/models.py:180 apps/note/apps.py:14 -#: apps/note/models/notes.py:77 +#: apps/note/models/notes.py:77 apps/wrapped/models.py:60 msgid "note" msgstr "note" @@ -198,21 +204,21 @@ msgstr "Entrada para {note} en la actividad {activity}" msgid "Already entered on " msgstr "Entrado ya el " -#: apps/activity/models.py:204 apps/activity/tables.py:56 +#: apps/activity/models.py:205 apps/activity/tables.py:58 msgid "{:%Y-%m-%d %H:%M:%S}" msgstr "{:%d/%m/%Y %H:%M:%S}" -#: apps/activity/models.py:212 +#: apps/activity/models.py:213 msgid "The balance is negative." msgstr "El saldo es negativo." -#: apps/activity/models.py:242 +#: apps/activity/models.py:243 #: apps/treasury/templates/treasury/sogecredit_detail.html:14 #: apps/wei/templates/wei/attribute_bus_1A.html:16 msgid "last name" msgstr "apellido" -#: apps/activity/models.py:247 +#: apps/activity/models.py:248 #: apps/member/templates/member/includes/profile_info.html:4 #: apps/registration/templates/registration/future_profile_detail.html:16 #: apps/treasury/templates/treasury/sogecredit_detail.html:17 @@ -221,77 +227,135 @@ msgstr "apellido" msgid "first name" msgstr "nombre" -#: apps/activity/models.py:254 +#: apps/activity/models.py:253 +msgid "school" +msgstr "" + +#: apps/activity/models.py:260 msgid "inviter" msgstr "huésped" -#: apps/activity/models.py:258 +#: apps/activity/models.py:264 msgid "guest" msgstr "invitado" -#: apps/activity/models.py:259 +#: apps/activity/models.py:265 msgid "guests" msgstr "invitados" -#: apps/activity/models.py:312 +#: apps/activity/models.py:318 msgid "Invitation" msgstr "Invitación" -#: apps/activity/tables.py:27 +#: apps/activity/models.py:336 apps/activity/models.py:340 +#, fuzzy +#| msgid "opened" +msgid "Opener" +msgstr "abierto" + +#: apps/activity/models.py:341 +#: apps/activity/templates/activity/activity_detail.html:16 +#, fuzzy +#| msgid "opened" +msgid "Openers" +msgstr "abierto" + +#: apps/activity/models.py:345 +#, fuzzy, python-brace-format +#| msgid "Entry for {note} to the activity {activity}" +msgid "{opener} is opener of activity {acivity}" +msgstr "Entrada para {note} en la actividad {activity}" + +#: apps/activity/tables.py:29 msgid "The activity is currently open." msgstr "La actividad está actualmente abierta." -#: apps/activity/tables.py:28 +#: apps/activity/tables.py:30 msgid "The validation of the activity is pending." msgstr "La validación de esta actividad es pendiente." -#: apps/activity/tables.py:43 +#: apps/activity/tables.py:45 #: apps/member/templates/member/picture_update.html:18 -#: apps/treasury/tables.py:107 +#: apps/treasury/tables.py:110 msgid "Remove" msgstr "Quitar" -#: apps/activity/tables.py:56 +#: apps/activity/tables.py:58 msgid "Entered on " msgstr "Entrado el " -#: apps/activity/tables.py:58 +#: apps/activity/tables.py:60 msgid "remove" msgstr "quitar" -#: apps/activity/tables.py:82 apps/note/forms.py:68 apps/treasury/models.py:208 +#: apps/activity/tables.py:84 apps/note/forms.py:69 apps/treasury/models.py:209 msgid "Type" msgstr "Tipo" -#: apps/activity/tables.py:84 apps/member/forms.py:196 +#: apps/activity/tables.py:86 apps/member/forms.py:199 #: apps/registration/forms.py:91 apps/treasury/forms.py:131 -#: apps/wei/forms/registration.py:104 +#: apps/wei/forms/registration.py:129 msgid "Last name" msgstr "Apellido" -#: apps/activity/tables.py:86 apps/member/forms.py:201 +#: apps/activity/tables.py:88 apps/member/forms.py:204 #: apps/note/templates/note/transaction_form.html:138 #: apps/registration/forms.py:96 apps/treasury/forms.py:133 -#: apps/wei/forms/registration.py:109 +#: apps/wei/forms/registration.py:134 msgid "First name" msgstr "Nombre" -#: apps/activity/tables.py:88 apps/note/models/notes.py:86 +#: apps/activity/tables.py:90 apps/note/models/notes.py:86 msgid "Note" msgstr "Note" -#: apps/activity/tables.py:90 apps/member/tables.py:50 +#: apps/activity/tables.py:92 apps/member/tables.py:50 msgid "Balance" msgstr "Saldo de la cuenta" -#: apps/activity/templates/activity/activity_detail.html:15 +#: apps/activity/tables.py:141 apps/activity/tables.py:148 +#: apps/note/tables.py:166 apps/note/tables.py:173 apps/note/tables.py:234 +#: apps/note/tables.py:281 apps/treasury/tables.py:39 +#: apps/treasury/templates/treasury/invoice_confirm_delete.html:30 +#: apps/treasury/templates/treasury/sogecredit_detail.html:65 +#: apps/wei/tables.py:75 apps/wei/tables.py:118 +#: apps/wei/templates/wei/weiregistration_confirm_delete.html:31 +#: note_kfet/templates/oauth2_provider/application_confirm_delete.html:18 +#: note_kfet/templates/oauth2_provider/application_detail.html:39 +#: note_kfet/templates/oauth2_provider/authorized-token-delete.html:12 +msgid "Delete" +msgstr "Suprimir" + +#: apps/activity/templates/activity/activity_detail.html:24 +#: apps/member/templates/member/club_alias.html:20 +#: apps/member/templates/member/profile_alias.html:19 +#: apps/member/templates/member/profile_trust.html:19 +#: apps/treasury/tables.py:101 +#: apps/treasury/templates/treasury/sogecredit_list.html:34 +#: apps/treasury/templates/treasury/sogecredit_list.html:73 +msgid "Add" +msgstr "Añadir" + +#: apps/activity/templates/activity/activity_detail.html:35 msgid "Guests list" msgstr "Lista de los invitados" -#: apps/activity/templates/activity/activity_detail.html:33 +#: apps/activity/templates/activity/activity_detail.html:55 msgid "Guest deleted" msgstr "Invitados suprimidos" +#: apps/activity/templates/activity/activity_detail.html:99 +#, fuzzy +#| msgid "Are you sure you want to delete this token?" +msgid "Are you sure you want to delete this activity?" +msgstr "¿ Usted está seguro de querer suprimir este token ?" + +#: apps/activity/templates/activity/activity_detail.html:110 +#, fuzzy +#| msgid "Activity detail" +msgid "Activity deleted" +msgstr "Detalles de la actividad" + #: apps/activity/templates/activity/activity_entry.html:14 #: apps/note/models/transactions.py:261 #: apps/note/templates/note/transaction_form.html:17 @@ -331,17 +395,17 @@ msgid "Entry done!" msgstr "Entrada echa !" #: apps/activity/templates/activity/activity_form.html:16 -#: apps/food/templates/food/add_ingredient_form.html:16 -#: apps/food/templates/food/basicfood_form.html:16 -#: apps/food/templates/food/create_qrcode_form.html:19 -#: apps/food/templates/food/transformedfood_form.html:16 +#: apps/food/templates/food/food_update.html:17 +#: apps/food/templates/food/manage_ingredients.html:48 +#: apps/food/templates/food/qrcode.html:18 +#: apps/food/templates/food/transformedfood_update.html:45 #: apps/member/templates/member/add_members.html:46 #: apps/member/templates/member/club_form.html:16 #: apps/note/templates/note/transactiontemplate_form.html:18 #: apps/treasury/forms.py:89 apps/treasury/forms.py:143 #: apps/treasury/templates/treasury/invoice_form.html:74 #: apps/wei/templates/wei/bus_form.html:17 -#: apps/wei/templates/wei/busteam_form.html:17 +#: apps/wei/templates/wei/busteam_form.html:18 #: apps/wei/templates/wei/weiclub_form.html:17 #: apps/wei/templates/wei/weiregistration_form.html:18 msgid "Submit" @@ -397,44 +461,66 @@ msgid "edit" msgstr "modificar" #: apps/activity/templates/activity/includes/activity_info.html:74 +#: apps/logs/models.py:65 apps/note/tables.py:230 apps/note/tables.py:279 +#: apps/permission/models.py:126 apps/treasury/tables.py:38 +#: apps/wei/tables.py:74 +msgid "delete" +msgstr "suprimir" + +#: apps/activity/templates/activity/includes/activity_info.html:77 msgid "Invite" msgstr "Invitar" -#: apps/activity/views.py:37 +#: apps/activity/views.py:38 msgid "Create new activity" msgstr "Crear una nueva actividad" -#: apps/activity/views.py:67 note_kfet/templates/base.html:96 +#: apps/activity/views.py:71 note_kfet/templates/base.html:96 msgid "Activities" msgstr "Actividades" -#: apps/activity/views.py:108 +#: apps/activity/views.py:105 msgid "Activity detail" msgstr "Detalles de la actividad" -#: apps/activity/views.py:128 +#: apps/activity/views.py:150 msgid "Update activity" msgstr "Modificar la actividad" -#: apps/activity/views.py:155 +#: apps/activity/views.py:177 +#, fuzzy +#| msgid "" +#| "You are not allowed to display the entry interface for this activity." +msgid "You are not allowed to delete this activity." +msgstr "" +"Usted no tiene derecho a mostrar la interfaz de las entradas para esta " +"actividad." + +#: apps/activity/views.py:180 +#, fuzzy +#| msgid "This activity is closed." +msgid "This activity is valid." +msgstr "Esta actividad esta cerrada." + +#: apps/activity/views.py:206 msgid "Invite guest to the activity \"{}\"" msgstr "Invitar alguien para la actividad \"{}\"" -#: apps/activity/views.py:193 +#: apps/activity/views.py:246 msgid "You are not allowed to display the entry interface for this activity." msgstr "" "Usted no tiene derecho a mostrar la interfaz de las entradas para esta " "actividad." -#: apps/activity/views.py:196 +#: apps/activity/views.py:249 msgid "This activity does not support activity entries." msgstr "Esta actividad no necesita entradas." -#: apps/activity/views.py:199 +#: apps/activity/views.py:252 msgid "This activity is closed." msgstr "Esta actividad esta cerrada." -#: apps/activity/views.py:295 +#: apps/activity/views.py:357 msgid "Entry for activity \"{}\"" msgstr "Entradas para la actividad \"{}\"" @@ -442,297 +528,363 @@ msgstr "Entradas para la actividad \"{}\"" msgid "API" msgstr "API" -#: apps/food/apps.py:11 apps/food/models.py:105 +#: apps/food/apps.py:11 msgid "food" msgstr "" -#: apps/food/forms.py:32 -msgid "Fully used" -msgstr "" - -#: apps/food/forms.py:50 +#: apps/food/forms.py:49 msgid "Pasta METRO 5kg" msgstr "" -#: apps/food/forms.py:96 +#: apps/food/forms.py:53 apps/food/forms.py:81 +msgid "Specific order given to GCKs" +msgstr "" + +#: apps/food/forms.py:77 msgid "Lasagna" msgstr "" -#: apps/food/models.py:18 +#: apps/food/forms.py:116 +msgid "Shelf life (in hours)" +msgstr "" + +#: apps/food/forms.py:138 apps/food/forms.py:162 +#: apps/food/templates/food/transformedfood_update.html:25 +msgid "Fully used" +msgstr "" + +#: apps/food/forms.py:171 apps/food/templates/food/qrcode.html:29 +#: apps/food/templates/food/transformedfood_update.html:23 +#: apps/note/templates/note/transaction_form.html:132 +#: apps/treasury/models.py:61 +msgid "Name" +msgstr "Nombre" + +#: apps/food/forms.py:181 #, fuzzy #| msgid "phone number" -msgid "QR-code number" +msgid "QR code number" msgstr "número de teléfono" -#: apps/food/models.py:26 -msgid "food container" -msgstr "" - -#: apps/food/models.py:30 -msgid "QR-code" -msgstr "" - -#: apps/food/models.py:31 -msgid "QR-codes" -msgstr "" - -#: apps/food/models.py:34 -#, python-brace-format -msgid "QR-code number {qr_code_number}" -msgstr "" - -#: apps/food/models.py:47 +#: apps/food/models.py:23 msgid "Allergen" msgstr "" -#: apps/food/models.py:48 apps/food/templates/food/basicfood_detail.html:17 -#: apps/food/templates/food/transformedfood_detail.html:20 +#: apps/food/models.py:24 msgid "Allergens" msgstr "" -#: apps/food/models.py:64 +#: apps/food/models.py:43 msgid "owner" msgstr "" -#: apps/food/models.py:70 -msgid "allergen" +#: apps/food/models.py:49 +msgid "allergens" msgstr "" -#: apps/food/models.py:74 +#: apps/food/models.py:53 #, fuzzy #| msgid "birth date" msgid "expiry date" msgstr "fecha de nacimiento" -#: apps/food/models.py:80 -msgid "was eaten" +#: apps/food/models.py:59 +msgid "end of life" msgstr "" -#: apps/food/models.py:89 +#: apps/food/models.py:64 msgid "is ready" msgstr "" -#: apps/food/models.py:94 -#, fuzzy -#| msgid "active" -msgid "is active" -msgstr "activo" - -#: apps/food/models.py:106 -msgid "foods" +#: apps/food/models.py:70 +msgid "order" msgstr "" -#: apps/food/models.py:122 +#: apps/food/models.py:107 apps/food/views.py:34 +#: note_kfet/templates/base.html:72 +msgid "Food" +msgstr "" + +#: apps/food/models.py:108 +msgid "Foods" +msgstr "" + +#: apps/food/models.py:117 #, fuzzy #| msgid "invalidate" msgid "arrival date" msgstr "invalidar" -#: apps/food/models.py:152 +#: apps/food/models.py:169 msgid "Basic food" msgstr "" -#: apps/food/models.py:153 +#: apps/food/models.py:170 msgid "Basic foods" msgstr "" -#: apps/food/models.py:161 +#: apps/food/models.py:182 #, fuzzy #| msgid "created at" msgid "creation date" msgstr "creada el" -#: apps/food/models.py:169 -msgid "transformed ingredient" -msgstr "" - -#: apps/food/models.py:174 +#: apps/food/models.py:188 msgid "shelf life" msgstr "" -#: apps/food/models.py:225 apps/food/views.py:365 +#: apps/food/models.py:196 +msgid "transformed ingredient" +msgstr "" + +#: apps/food/models.py:258 #, fuzzy #| msgid "Transfer money" msgid "Transformed food" msgstr "Transferir dinero" -#: apps/food/models.py:226 +#: apps/food/models.py:259 msgid "Transformed foods" msgstr "" -#: apps/food/templates/food/basicfood_detail.html:14 -#: apps/food/templates/food/qrcode_detail.html:15 -#: apps/food/templates/food/transformedfood_detail.html:14 +#: apps/food/models.py:271 #, fuzzy -#| msgid "Owned" -msgid "Owner" -msgstr "Tenido" +#| msgid "phone number" +msgid "qr code number" +msgstr "número de teléfono" -#: apps/food/templates/food/basicfood_detail.html:15 -#, fuzzy -#| msgid "invalidate" -msgid "Arrival date" -msgstr "invalidar" - -#: apps/food/templates/food/basicfood_detail.html:16 -#: apps/food/templates/food/qrcode_detail.html:16 -#: apps/food/templates/food/transformedfood_detail.html:19 -#, fuzzy -#| msgid "birth date" -msgid "Expiry date" -msgstr "fecha de nacimiento" - -#: apps/food/templates/food/basicfood_detail.html:24 -#: apps/food/templates/food/transformedfood_detail.html:36 -#, fuzzy -#| msgid "active" -msgid "Active" -msgstr "activo" - -#: apps/food/templates/food/basicfood_detail.html:25 -#: apps/food/templates/food/transformedfood_detail.html:37 -msgid "Eaten" +#: apps/food/models.py:278 +msgid "food container" msgstr "" -#: apps/food/templates/food/basicfood_detail.html:28 -#: apps/food/templates/food/qrcode_detail.html:20 -#: apps/food/templates/food/qrcode_detail.html:24 -#: apps/food/templates/food/transformedfood_detail.html:41 +#: apps/food/models.py:282 +msgid "QR-code" +msgstr "" + +#: apps/food/models.py:283 +msgid "QR-codes" +msgstr "" + +#: apps/food/models.py:286 +#: apps/food/templates/food/transformedfood_update.html:24 +#, fuzzy +#| msgid "phone number" +msgid "QR-code number" +msgstr "número de teléfono" + +#: apps/food/templates/food/food_detail.html:19 +msgid "Contained in" +msgstr "" + +#: apps/food/templates/food/food_detail.html:26 +msgid "Contain" +msgstr "" + +#: apps/food/templates/food/food_detail.html:35 #, fuzzy #| msgid "Update bus" msgid "Update" msgstr "Modificar el bus" -#: apps/food/templates/food/basicfood_detail.html:32 -#: apps/food/templates/food/qrcode_detail.html:34 -#: apps/food/templates/food/transformedfood_detail.html:46 +#: apps/food/templates/food/food_detail.html:40 #, fuzzy #| msgid "Add team" msgid "Add to a meal" msgstr "Añadir un equipo" -#: apps/food/templates/food/create_qrcode_form.html:14 +#: apps/food/templates/food/food_detail.html:45 #, fuzzy -#| msgid "Transfer money" -msgid "New basic food" -msgstr "Transferir dinero" +#| msgid "manage entries" +msgid "Manage ingredients" +msgstr "gestionar las entradas" -#: apps/food/templates/food/qrcode_detail.html:10 +#: apps/food/templates/food/food_detail.html:49 #, fuzzy -#| msgid "phone number" -msgid "number" -msgstr "número de teléfono" +#| msgid "Return to credit list" +msgid "Return to the food list" +msgstr "Regresar a la lista de los créditos" -#: apps/food/templates/food/qrcode_detail.html:14 -#: apps/note/templates/note/transaction_form.html:132 -#: apps/treasury/models.py:60 -msgid "Name" -msgstr "Nombre" - -#: apps/food/templates/food/qrcode_detail.html:29 -#, fuzzy -#| msgid "Profile detail" -msgid "View details" -msgstr "Detalles del usuario" - -#: apps/food/templates/food/transformedfood_detail.html:16 -#: apps/food/templates/food/transformedfood_detail.html:35 -msgid "Ready" -msgstr "" - -#: apps/food/templates/food/transformedfood_detail.html:18 -#, fuzzy -#| msgid "created at" -msgid "Creation date" -msgstr "creada el" - -#: apps/food/templates/food/transformedfood_detail.html:27 -msgid "Ingredients" -msgstr "" - -#: apps/food/templates/food/transformedfood_detail.html:34 -msgid "Shelf life" -msgstr "" - -#: apps/food/templates/food/transformedfood_list.html:11 +#: apps/food/templates/food/food_list.html:14 msgid "Meal served" msgstr "" -#: apps/food/templates/food/transformedfood_list.html:16 +#: apps/food/templates/food/food_list.html:19 #, fuzzy #| msgid "New user" msgid "New meal" msgstr "Nuevo usuario" -#: apps/food/templates/food/transformedfood_list.html:25 +#: apps/food/templates/food/food_list.html:28 #, fuzzy #| msgid "There is no results." msgid "There is no meal served." msgstr "No hay resultado." -#: apps/food/templates/food/transformedfood_list.html:33 -msgid "Open" +#: apps/food/templates/food/food_list.html:35 +msgid "Free food" msgstr "" -#: apps/food/templates/food/transformedfood_list.html:40 +#: apps/food/templates/food/food_list.html:42 #, fuzzy #| msgid "There is no results." -msgid "There is no free meal." +msgid "There is no free food." msgstr "No hay resultado." -#: apps/food/templates/food/transformedfood_list.html:48 -msgid "All meals" +#: apps/food/templates/food/food_list.html:50 +#, fuzzy +#| msgid "for club" +msgid "Food of your clubs" +msgstr "interesa el club" + +#: apps/food/templates/food/food_list.html:56 +#, fuzzy +#| msgid "for club" +msgid "Food of club" +msgstr "interesa el club" + +#: apps/food/templates/food/food_list.html:63 +msgid "Yours club has not food yet." msgstr "" -#: apps/food/templates/food/transformedfood_list.html:55 +#: apps/food/templates/food/manage_ingredients.html:45 +#: apps/food/templates/food/transformedfood_update.html:42 #, fuzzy -#| msgid "There is no results." -msgid "There is no meal." -msgstr "No hay resultado." +#| msgid "Add friends" +msgid "Add ingredient" +msgstr "Añadir amig@s" -#: apps/food/views.py:28 -msgid "Add the ingredient" +#: apps/food/templates/food/manage_ingredients.html:46 +#: apps/food/templates/food/transformedfood_update.html:43 +#, fuzzy +#| msgid "Remove product" +msgid "Remove ingredient" +msgstr "Quitar un producto" + +#: apps/food/templates/food/qrcode.html:22 +msgid "Copy constructor" msgstr "" -#: apps/food/views.py:42 +#: apps/food/templates/food/qrcode.html:23 #, fuzzy -#| msgid "This credit is already validated." -msgid "The product is already prepared" -msgstr "Este crédito ya fue validado." +#| msgid "Transfer money" +msgid "New food" +msgstr "Transferir dinero" -#: apps/food/views.py:70 +#: apps/food/templates/food/qrcode.html:32 +#, fuzzy +#| msgid "Owned" +msgid "Owner" +msgstr "Tenido" + +#: apps/food/templates/food/qrcode.html:35 +#, fuzzy +#| msgid "birth date" +msgid "Expiry date" +msgstr "fecha de nacimiento" + +#: apps/food/utils.py:6 +msgid "second" +msgstr "" + +#: apps/food/utils.py:6 +msgid "seconds" +msgstr "" + +#: apps/food/utils.py:7 +msgid "minute" +msgstr "" + +#: apps/food/utils.py:7 +msgid "minutes" +msgstr "" + +#: apps/food/utils.py:8 +msgid "hour" +msgstr "" + +#: apps/food/utils.py:8 +msgid "hours" +msgstr "" + +#: apps/food/utils.py:9 +#, fuzzy +#| msgid "days" +msgid "day" +msgstr "días" + +#: apps/food/utils.py:9 apps/member/templates/member/includes/club_info.html:27 +msgid "days" +msgstr "días" + +#: apps/food/utils.py:10 +msgid "week" +msgstr "" + +#: apps/food/utils.py:10 +msgid "weeks" +msgstr "" + +#: apps/food/utils.py:53 +#, fuzzy +#| msgid "add" +msgid "and" +msgstr "añadir" + +#: apps/food/views.py:118 +msgid "Add a new QRCode" +msgstr "" + +#: apps/food/views.py:167 +#, fuzzy +#| msgid "Update an invoice" +msgid "Add an aliment" +msgstr "Modificar una factura" + +#: apps/food/views.py:235 +#, fuzzy +#| msgid "Add team" +msgid "Add a meal" +msgstr "Añadir un equipo" + +#: apps/food/views.py:275 +#, fuzzy +#| msgid "manage entries" +msgid "Manage ingredients of:" +msgstr "gestionar las entradas" + +#: apps/food/views.py:289 apps/food/views.py:297 +#, python-brace-format +msgid "Fully used in {meal}" +msgstr "" + +#: apps/food/views.py:344 +msgid "Add the ingredient:" +msgstr "" + +#: apps/food/views.py:370 +#, python-brace-format +msgid "Food fully used in : {meal.name}" +msgstr "" + +#: apps/food/views.py:389 #, fuzzy #| msgid "Update an invoice" msgid "Update an aliment" msgstr "Modificar una factura" -#: apps/food/views.py:97 +#: apps/food/views.py:437 #, fuzzy #| msgid "WEI Detail" msgid "Details of:" msgstr "Detalles del WEI" -#: apps/food/views.py:121 -msgid "Add a new basic food with QRCode" -msgstr "" +#: apps/food/views.py:447 apps/treasury/tables.py:149 +msgid "Yes" +msgstr "Sí" -#: apps/food/views.py:185 -msgid "Add a new QRCode" -msgstr "" - -#: apps/food/views.py:235 -msgid "QRCode" -msgstr "" - -#: apps/food/views.py:271 -msgid "Add a new meal" -msgstr "" - -#: apps/food/views.py:337 -#, fuzzy -#| msgid "Update team" -msgid "Update a meal" -msgstr "Modificar el equipo" +#: apps/food/views.py:449 apps/member/models.py:99 apps/treasury/tables.py:149 +msgid "No" +msgstr "No" #: apps/logs/apps.py:11 msgid "Logs" @@ -762,12 +914,6 @@ msgstr "nuevos datos" msgid "create" msgstr "crear" -#: apps/logs/models.py:65 apps/note/tables.py:230 apps/note/tables.py:277 -#: apps/permission/models.py:126 apps/treasury/tables.py:38 -#: apps/wei/tables.py:74 -msgid "delete" -msgstr "suprimir" - #: apps/logs/models.py:68 msgid "action" msgstr "acción" @@ -803,11 +949,11 @@ msgstr "pago de afiliación (estudiantes pagados)" msgid "membership fee (unpaid students)" msgstr "pago de afiliación (estudiantes no pagados)" -#: apps/member/admin.py:65 apps/member/models.py:330 +#: apps/member/admin.py:65 apps/member/models.py:337 msgid "roles" msgstr "papel" -#: apps/member/admin.py:66 apps/member/models.py:344 +#: apps/member/admin.py:66 apps/member/models.py:351 msgid "fee" msgstr "pago" @@ -815,25 +961,25 @@ msgstr "pago" msgid "member" msgstr "miembro" -#: apps/member/forms.py:24 +#: apps/member/forms.py:25 msgid "Permission mask" msgstr "Antifaz de permisos" -#: apps/member/forms.py:46 +#: apps/member/forms.py:48 msgid "Report frequency" msgstr "Frecuencia de los informes (en días)" -#: apps/member/forms.py:48 +#: apps/member/forms.py:50 msgid "Last report date" msgstr "Fecha del último informe" -#: apps/member/forms.py:52 +#: apps/member/forms.py:54 msgid "" "Anti-VSS (Violences Sexistes et Sexuelles) charter read and approved" msgstr "" "Carta Anti-VSS (Violences Sexistes et Sexuelles) leída y aprobada" -#: apps/member/forms.py:53 +#: apps/member/forms.py:55 msgid "" "Tick after having read and accepted the anti-VSS charter " @@ -843,65 +989,65 @@ msgstr "" "perso.crans.org/club-bde/Charte-anti-VSS.pdf target=_blank> disponible en " "pdf aquí" -#: apps/member/forms.py:60 +#: apps/member/forms.py:62 msgid "You can't register to the note if you come from the future." msgstr "Usted no puede registrar si viene del futuro." -#: apps/member/forms.py:86 +#: apps/member/forms.py:89 msgid "select an image" msgstr "elegir una imagen" -#: apps/member/forms.py:87 +#: apps/member/forms.py:90 msgid "Maximal size: 2MB" msgstr "Tamaño máximo : 2Mo" -#: apps/member/forms.py:112 +#: apps/member/forms.py:115 msgid "This image cannot be loaded." msgstr "Esta imagen no puede ser cargada." -#: apps/member/forms.py:151 apps/member/views.py:102 -#: apps/registration/forms.py:33 apps/registration/views.py:276 +#: apps/member/forms.py:154 apps/member/views.py:117 +#: apps/registration/forms.py:33 apps/registration/views.py:282 msgid "An alias with a similar name already exists." msgstr "Un alias similar ya existe." -#: apps/member/forms.py:175 +#: apps/member/forms.py:178 msgid "Inscription paid by Société Générale" msgstr "Registración pagadas por Société Générale" -#: apps/member/forms.py:177 +#: apps/member/forms.py:180 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:182 apps/registration/forms.py:78 -#: apps/wei/forms/registration.py:91 +#: apps/member/forms.py:185 apps/registration/forms.py:78 +#: apps/wei/forms/registration.py:116 msgid "Credit type" msgstr "Tipo de crédito" -#: apps/member/forms.py:183 apps/registration/forms.py:79 -#: apps/wei/forms/registration.py:92 +#: apps/member/forms.py:186 apps/registration/forms.py:79 +#: apps/wei/forms/registration.py:117 msgid "No credit" msgstr "No crédito" -#: apps/member/forms.py:185 +#: apps/member/forms.py:188 msgid "You can credit the note of the user." msgstr "Usted puede acreditar la note del usuario." -#: apps/member/forms.py:189 apps/registration/forms.py:84 -#: apps/wei/forms/registration.py:97 +#: apps/member/forms.py:192 apps/registration/forms.py:84 +#: apps/wei/forms/registration.py:122 msgid "Credit amount" msgstr "Valor del crédito" -#: apps/member/forms.py:206 apps/note/templates/note/transaction_form.html:144 +#: apps/member/forms.py:209 apps/note/templates/note/transaction_form.html:144 #: apps/registration/forms.py:101 apps/treasury/forms.py:135 -#: apps/wei/forms/registration.py:114 +#: apps/wei/forms/registration.py:139 msgid "Bank" msgstr "Banco" -#: apps/member/forms.py:233 +#: apps/member/forms.py:236 msgid "User" msgstr "Usuario" -#: apps/member/forms.py:247 +#: apps/member/forms.py:250 msgid "Roles" msgstr "Papeles" @@ -1034,10 +1180,6 @@ msgstr "pagado" msgid "Tells if the user receive a salary." msgstr "Indica si el usuario percibe un salario." -#: apps/member/models.py:99 apps/treasury/tables.py:143 -msgid "No" -msgstr "No" - #: apps/member/models.py:100 msgid "Yes (receive them in french)" msgstr "Si (recibirles en francés)" @@ -1102,7 +1244,7 @@ msgstr "Active su cuenta Note Kfet" #: apps/member/templates/member/includes/club_info.html:55 #: apps/member/templates/member/includes/profile_info.html:40 #: apps/registration/templates/registration/future_profile_detail.html:22 -#: apps/wei/templates/wei/base.html:70 +#: apps/wei/templates/wei/base.html:68 #: apps/wei/templates/wei/weimembership_form.html:20 msgid "email" msgstr "correo electrónico" @@ -1154,8 +1296,8 @@ msgstr "" msgid "add to registration form" msgstr "Validar la afiliación" -#: apps/member/models.py:268 apps/member/models.py:324 -#: apps/note/models/notes.py:176 +#: apps/member/models.py:268 apps/member/models.py:331 +#: apps/note/models/notes.py:176 apps/wei/models.py:86 msgid "club" msgstr "club" @@ -1163,37 +1305,37 @@ msgstr "club" msgid "clubs" msgstr "clubs" -#: apps/member/models.py:335 +#: apps/member/models.py:342 msgid "membership starts on" msgstr "afiliación empezá el" -#: apps/member/models.py:339 +#: apps/member/models.py:346 msgid "membership ends on" msgstr "afiliación termina el" -#: apps/member/models.py:348 apps/note/models/transactions.py:385 +#: apps/member/models.py:355 apps/note/models/transactions.py:385 msgid "membership" msgstr "afiliación" -#: apps/member/models.py:349 +#: apps/member/models.py:356 msgid "memberships" msgstr "afiliaciones" -#: apps/member/models.py:353 +#: apps/member/models.py:360 #, python-brace-format msgid "Membership of {user} for the club {club}" msgstr "Afiliación of {user} for the club {club}" -#: apps/member/models.py:372 +#: apps/member/models.py:379 #, python-brace-format msgid "The role {role} does not apply to the club {club}." msgstr "El papel {role} no se encuentra en el club {club}." -#: apps/member/models.py:381 apps/member/views.py:715 +#: apps/member/models.py:388 apps/member/views.py:759 msgid "User is already a member of the club" msgstr "Usuario ya esta un miembro del club" -#: apps/member/models.py:393 apps/member/views.py:724 +#: apps/member/models.py:400 apps/member/views.py:768 msgid "User is not a member of the parent club" msgstr "Usuario no es un miembro del club pariente" @@ -1245,7 +1387,7 @@ msgid "Account #" msgstr "Cuenta n°" #: apps/member/templates/member/base.html:48 -#: apps/member/templates/member/base.html:62 apps/member/views.py:59 +#: apps/member/templates/member/base.html:62 apps/member/views.py:61 #: apps/registration/templates/registration/future_profile_detail.html:48 #: apps/wei/templates/wei/weimembership_form.html:117 msgid "Update Profile" @@ -1306,20 +1448,11 @@ msgstr "" "nuevo posibles." #: apps/member/templates/member/club_alias.html:10 -#: apps/member/templates/member/profile_alias.html:10 apps/member/views.py:287 -#: apps/member/views.py:520 +#: apps/member/templates/member/profile_alias.html:10 apps/member/views.py:318 +#: apps/member/views.py:559 msgid "Note aliases" msgstr "Alias de la note" -#: apps/member/templates/member/club_alias.html:20 -#: apps/member/templates/member/profile_alias.html:19 -#: apps/member/templates/member/profile_trust.html:19 -#: apps/treasury/tables.py:99 -#: apps/treasury/templates/treasury/sogecredit_list.html:34 -#: apps/treasury/templates/treasury/sogecredit_list.html:73 -msgid "Add" -msgstr "Añadir" - #: apps/member/templates/member/club_detail.html:13 #: apps/permission/templates/permission/all_rights.html:32 msgid "Club managers" @@ -1356,10 +1489,6 @@ msgstr "No hay afiliación encontrada con esta entrada." msgid "Club Parent" msgstr "Club pariente" -#: apps/member/templates/member/includes/club_info.html:27 -msgid "days" -msgstr "días" - #: apps/member/templates/member/includes/club_info.html:31 #: apps/wei/templates/wei/base.html:40 msgid "membership fee" @@ -1368,13 +1497,13 @@ msgstr "pago de afiliación" #: apps/member/templates/member/includes/club_info.html:43 #: apps/member/templates/member/includes/profile_info.html:55 #: apps/treasury/templates/treasury/sogecredit_detail.html:24 -#: apps/wei/templates/wei/base.html:60 +#: apps/wei/templates/wei/base.html:58 msgid "balance" msgstr "saldo de la cuenta" #: apps/member/templates/member/includes/club_info.html:47 #: apps/member/templates/member/includes/profile_info.html:20 -#: apps/note/models/notes.py:287 apps/wei/templates/wei/base.html:66 +#: apps/note/models/notes.py:287 apps/wei/templates/wei/base.html:64 msgid "aliases" msgstr "alias" @@ -1455,11 +1584,11 @@ msgstr "Introspección :" msgid "Show my applications" msgstr "Mostrar mis aplicaciones" -#: apps/member/templates/member/picture_update.html:38 +#: apps/member/templates/member/picture_update.html:40 msgid "Nevermind" msgstr "No importa" -#: apps/member/templates/member/picture_update.html:39 +#: apps/member/templates/member/picture_update.html:41 msgid "Crop and upload" msgstr "Podar y subir" @@ -1508,51 +1637,51 @@ msgstr "Guardar cambios" msgid "Registrations" msgstr "Registraciones" -#: apps/member/views.py:72 apps/registration/forms.py:23 +#: apps/member/views.py:74 apps/registration/forms.py:23 msgid "This address must be valid." msgstr "Este correo tiene que ser valido." -#: apps/member/views.py:139 +#: apps/member/views.py:154 msgid "Profile detail" msgstr "Detalles del usuario" -#: apps/member/views.py:205 +#: apps/member/views.py:220 msgid "Search user" msgstr "Buscar un usuario" -#: apps/member/views.py:253 +#: apps/member/views.py:272 msgid "Note friendships" msgstr "Amistades de note" -#: apps/member/views.py:308 +#: apps/member/views.py:342 msgid "Update note picture" msgstr "Modificar la imagen de la note" -#: apps/member/views.py:357 +#: apps/member/views.py:391 msgid "Manage auth token" msgstr "Gestionar los token de autentificación" -#: apps/member/views.py:384 +#: apps/member/views.py:418 msgid "Create new club" msgstr "Crear un nuevo club" -#: apps/member/views.py:403 +#: apps/member/views.py:437 msgid "Search club" msgstr "Buscar un club" -#: apps/member/views.py:436 +#: apps/member/views.py:475 msgid "Club detail" msgstr "Detalles del club" -#: apps/member/views.py:543 +#: apps/member/views.py:587 msgid "Update club" msgstr "Modificar el club" -#: apps/member/views.py:577 +#: apps/member/views.py:621 msgid "Add new member to the club" msgstr "Añadir un nuevo miembro al club" -#: apps/member/views.py:706 apps/wei/views.py:973 +#: apps/member/views.py:750 msgid "" "This user don't have enough money to join this club, and can't have a " "negative balance." @@ -1560,19 +1689,19 @@ msgstr "" "Este usuario no tiene suficiente dinero para unirse a este club, y no puede " "tener un saldo negativo." -#: apps/member/views.py:728 +#: apps/member/views.py:772 msgid "The membership must start after {:%m-%d-%Y}." msgstr "La afiliación tiene que empezar después del {:%d-%m-%Y}." -#: apps/member/views.py:733 +#: apps/member/views.py:777 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:883 +#: apps/member/views.py:927 msgid "Manage roles of an user in the club" msgstr "Gestionar los papeles de un usuario en el club" -#: apps/member/views.py:908 +#: apps/member/views.py:952 msgid "Members of the club" msgstr "Miembros del club" @@ -1605,35 +1734,35 @@ msgstr "" "La transacción no puede ser guardada puesto que la note fuente o la note " "destino no esta activa." -#: apps/note/forms.py:39 +#: apps/note/forms.py:40 msgid "Source" msgstr "Fuente" -#: apps/note/forms.py:53 +#: apps/note/forms.py:54 msgid "Destination" msgstr "Destino" -#: apps/note/forms.py:74 apps/note/templates/note/transaction_form.html:123 +#: apps/note/forms.py:75 apps/note/templates/note/transaction_form.html:123 msgid "Reason" msgstr "Motivo" -#: apps/note/forms.py:79 apps/treasury/tables.py:136 +#: apps/note/forms.py:80 apps/treasury/tables.py:141 msgid "Valid" msgstr "Valido" -#: apps/note/forms.py:85 +#: apps/note/forms.py:86 msgid "Total amount greater than" msgstr "Monto total mayor que" -#: apps/note/forms.py:93 +#: apps/note/forms.py:94 msgid "Total amount less than" msgstr "Monto total menor que" -#: apps/note/forms.py:99 +#: apps/note/forms.py:100 msgid "Created after" msgstr "Creado después" -#: apps/note/forms.py:106 +#: apps/note/forms.py:107 msgid "Created before" msgstr "Creado antes" @@ -1739,7 +1868,7 @@ msgstr "amigo" #: apps/note/models/notes.py:243 #, fuzzy #| msgid "friendships" -msgid "friendship" +msgid "frienship" msgstr "amistades" #: apps/note/models/notes.py:248 @@ -1888,8 +2017,8 @@ msgstr "" "pago y un usuario o un club" #: apps/note/models/transactions.py:357 apps/note/models/transactions.py:360 -#: apps/note/models/transactions.py:363 apps/wei/views.py:978 -#: apps/wei/views.py:982 +#: apps/note/models/transactions.py:363 apps/wei/views.py:1097 +#: apps/wei/views.py:1101 msgid "This field is required." msgstr "Este campo es obligatorio." @@ -1897,7 +2026,7 @@ msgstr "Este campo es obligatorio." msgid "membership transaction" msgstr "transacción de afiliación" -#: apps/note/models/transactions.py:381 apps/treasury/models.py:300 +#: apps/note/models/transactions.py:381 apps/treasury/models.py:301 msgid "membership transactions" msgstr "transacciones de afiliación" @@ -1913,18 +2042,6 @@ msgstr "Hacer clic para validar" msgid "No reason specified" msgstr "Ningún motivo dado" -#: apps/note/tables.py:166 apps/note/tables.py:173 apps/note/tables.py:234 -#: apps/note/tables.py:279 apps/treasury/tables.py:39 -#: apps/treasury/templates/treasury/invoice_confirm_delete.html:30 -#: apps/treasury/templates/treasury/sogecredit_detail.html:65 -#: apps/wei/tables.py:75 apps/wei/tables.py:118 -#: apps/wei/templates/wei/weiregistration_confirm_delete.html:31 -#: note_kfet/templates/oauth2_provider/application_confirm_delete.html:18 -#: note_kfet/templates/oauth2_provider/application_detail.html:39 -#: note_kfet/templates/oauth2_provider/authorized-token-delete.html:12 -msgid "Delete" -msgstr "Suprimir" - #: apps/note/tables.py:191 msgid "Trust back" msgstr "Añadir como amig@" @@ -1935,15 +2052,15 @@ msgstr "Añadir en retorno" #: apps/note/tables.py:262 apps/note/templates/note/conso_form.html:151 #: apps/wei/tables.py:49 apps/wei/tables.py:50 -#: apps/wei/templates/wei/base.html:89 -#: apps/wei/templates/wei/bus_detail.html:20 +#: apps/wei/templates/wei/base.html:87 +#: apps/wei/templates/wei/bus_detail.html:24 #: apps/wei/templates/wei/busteam_detail.html:20 -#: apps/wei/templates/wei/busteam_detail.html:40 +#: apps/wei/templates/wei/busteam_detail.html:42 #: note_kfet/templates/oauth2_provider/application_detail.html:38 msgid "Edit" msgstr "Editar" -#: apps/note/tables.py:266 apps/note/tables.py:293 +#: apps/note/tables.py:267 apps/note/tables.py:296 msgid "Hide/Show" msgstr "Ocultar/Mostrar" @@ -2029,8 +2146,8 @@ msgid "Action" msgstr "Acción" #: apps/note/templates/note/transaction_form.html:116 -#: apps/treasury/forms.py:137 apps/treasury/tables.py:67 -#: apps/treasury/tables.py:132 +#: apps/treasury/forms.py:137 apps/treasury/tables.py:68 +#: apps/treasury/tables.py:136 #: apps/treasury/templates/treasury/remittance_form.html:23 msgid "Amount" msgstr "Monto" @@ -2092,34 +2209,35 @@ msgid "Button displayed" msgstr "Botón mostrado" #: apps/note/templates/note/transactiontemplate_list.html:100 +#: apps/wrapped/templates/wrapped/wrapped_list.html:70 msgid "An error occured" msgstr "Un error ocurrió" -#: apps/note/views.py:36 +#: apps/note/views.py:37 msgid "Transfer money" msgstr "Transferir dinero" -#: apps/note/views.py:74 +#: apps/note/views.py:75 msgid "Create new button" msgstr "Crear un nuevo botón" -#: apps/note/views.py:83 +#: apps/note/views.py:84 msgid "Search button" msgstr "Buscar un botón" -#: apps/note/views.py:111 +#: apps/note/views.py:116 msgid "Update button" msgstr "Modificar el botón" -#: apps/note/views.py:151 note_kfet/templates/base.html:66 +#: apps/note/views.py:156 note_kfet/templates/base.html:66 msgid "Consumptions" msgstr "Consumiciones" -#: apps/note/views.py:165 +#: apps/note/views.py:170 msgid "You can't see any button." msgstr "Usted no puede ver ningún botón." -#: apps/note/views.py:204 +#: apps/note/views.py:209 msgid "Search transactions" msgstr "Buscar transacciones" @@ -2213,7 +2331,7 @@ msgstr "" "Usted no tiene permiso a cambiar el campo {field} on this instance of model " "{app_label}.{model_name}." -#: apps/permission/signals.py:83 apps/permission/views.py:105 +#: apps/permission/signals.py:83 apps/permission/views.py:104 #, python-brace-format msgid "" "You don't have the permission to add an instance of model {app_label}." @@ -2292,25 +2410,25 @@ msgstr "Pulsar aquí" msgid "if you want to register a new one" msgstr "si quiere crear una nueva" -#: apps/permission/views.py:72 +#: apps/permission/views.py:71 #, python-brace-format msgid "" "You don't have the permission to update this instance of the model " "\"{model}\" with these parameters. Please correct your data and retry." msgstr "" -#: apps/permission/views.py:76 +#: apps/permission/views.py:75 #, python-brace-format msgid "" "You don't have the permission to create an instance of the model \"{model}\" " "with these parameters. Please correct your data and retry." msgstr "" -#: apps/permission/views.py:112 note_kfet/templates/base.html:114 +#: apps/permission/views.py:111 note_kfet/templates/base.html:120 msgid "Rights" msgstr "Permisos" -#: apps/permission/views.py:117 +#: apps/permission/views.py:137 msgid "All rights" msgstr "Todos los permisos" @@ -2397,7 +2515,7 @@ msgstr "El usuario declara que ya abrió una cuenta a la Société Générale." #: 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 +#: apps/wei/templates/wei/weimembership_form.html:196 msgid "Validate registration" msgstr "Validar la afiliación" @@ -2447,60 +2565,68 @@ msgstr "Gracias" msgid "The Note Kfet team." msgstr "El equipo Note Kfet." -#: apps/registration/views.py:42 +#: apps/registration/views.py:43 msgid "Register new user" msgstr "Registrar un nuevo usuario" -#: apps/registration/views.py:100 +#: apps/registration/views.py:101 msgid "Email validation" msgstr "Validación del correo electrónico" -#: apps/registration/views.py:102 +#: apps/registration/views.py:103 msgid "Validate email" msgstr "Validar el correo electrónico" -#: apps/registration/views.py:146 +#: apps/registration/views.py:147 msgid "Email validation unsuccessful" msgstr "La validación del correo electrónico fracasó" -#: apps/registration/views.py:157 +#: apps/registration/views.py:158 msgid "Email validation email sent" msgstr "Correo de validación enviado" -#: apps/registration/views.py:165 +#: apps/registration/views.py:166 msgid "Resend email validation link" msgstr "Reenviar el enlace de validación" -#: apps/registration/views.py:183 +#: apps/registration/views.py:184 msgid "Pre-registered users list" msgstr "Lista de los usuarios con afiliación pendiente" -#: apps/registration/views.py:207 +#: apps/registration/views.py:213 msgid "Unregistered users" msgstr "Usuarios con afiliación pendiente" -#: apps/registration/views.py:220 +#: apps/registration/views.py:226 msgid "Registration detail" msgstr "Detalles de la afiliación" -#: apps/registration/views.py:256 +#: apps/registration/views.py:262 #, fuzzy, python-format #| msgid "Note of %(club)s club" msgid "Join %(club)s Club" msgstr "Note del club %(club)s" -#: apps/registration/views.py:299 -msgid "You must join the BDE." +#: apps/registration/views.py:305 +#, fuzzy +#| msgid "You must join the BDE." +msgid "You must join a club." msgstr "Usted tiene que afiliarse al BDE." -#: apps/registration/views.py:330 +#: apps/registration/views.py:309 +#, fuzzy +#| msgid "You must join the BDE." +msgid "You must also join the parent club BDE." +msgstr "Usted tiene que afiliarse al BDE." + +#: apps/registration/views.py:340 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:425 +#: apps/registration/views.py:435 msgid "Invalidate pre-registration" msgstr "Invalidar la afiliación" @@ -2508,7 +2634,7 @@ msgstr "Invalidar la afiliación" msgid "Treasury" msgstr "Tesorería" -#: apps/treasury/forms.py:26 apps/treasury/models.py:112 +#: apps/treasury/forms.py:26 apps/treasury/models.py:113 #: 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." @@ -2521,8 +2647,8 @@ 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:275 -#: apps/treasury/tables.py:97 apps/treasury/tables.py:105 +#: apps/treasury/forms.py:125 apps/treasury/models.py:276 +#: apps/treasury/tables.py:99 apps/treasury/tables.py:108 #: apps/treasury/templates/treasury/invoice_list.html:16 #: apps/treasury/templates/treasury/remittance_list.html:16 #: apps/treasury/templates/treasury/sogecredit_list.html:17 @@ -2537,142 +2663,143 @@ msgstr "No hay descuento relacionado" msgid "Invoice identifier" msgstr "Numero de factura" -#: apps/treasury/models.py:42 +#: apps/treasury/models.py:43 apps/wrapped/models.py:28 +#: apps/wrapped/models.py:29 msgid "BDE" msgstr "BDE" -#: apps/treasury/models.py:46 +#: apps/treasury/models.py:47 #, fuzzy #| msgid "location" msgid "Quotation" msgstr "ubicación" -#: apps/treasury/models.py:51 +#: apps/treasury/models.py:52 msgid "Object" msgstr "Asunto" -#: apps/treasury/models.py:55 +#: apps/treasury/models.py:56 msgid "Description" msgstr "Descripción" -#: apps/treasury/models.py:64 +#: apps/treasury/models.py:65 msgid "Address" msgstr "Dirección" -#: apps/treasury/models.py:69 apps/treasury/models.py:202 +#: apps/treasury/models.py:70 apps/treasury/models.py:203 msgid "Date" msgstr "Fecha" -#: apps/treasury/models.py:75 +#: apps/treasury/models.py:76 #, fuzzy #| msgid "end date" msgid "Payment date" msgstr "fecha de fin" -#: apps/treasury/models.py:79 +#: apps/treasury/models.py:80 msgid "Acquitted" msgstr "Pagada" -#: apps/treasury/models.py:84 +#: apps/treasury/models.py:85 msgid "Locked" msgstr "Bloqueada" -#: apps/treasury/models.py:85 +#: apps/treasury/models.py:86 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:91 +#: apps/treasury/models.py:92 msgid "tex source" msgstr "código fuente TeX" -#: apps/treasury/models.py:95 apps/treasury/models.py:140 +#: apps/treasury/models.py:96 apps/treasury/models.py:141 msgid "invoice" msgstr "factura" -#: apps/treasury/models.py:96 +#: apps/treasury/models.py:97 msgid "invoices" msgstr "facturas" -#: apps/treasury/models.py:99 +#: apps/treasury/models.py:100 #, python-brace-format msgid "Invoice #{id}" msgstr "Factura n°{id}" -#: apps/treasury/models.py:145 +#: apps/treasury/models.py:146 msgid "Designation" msgstr "Designación" -#: apps/treasury/models.py:151 +#: apps/treasury/models.py:152 msgid "Quantity" msgstr "Cantidad" -#: apps/treasury/models.py:156 +#: apps/treasury/models.py:157 msgid "Unit price" msgstr "Precio unitario" -#: apps/treasury/models.py:160 +#: apps/treasury/models.py:161 msgid "product" msgstr "producto" -#: apps/treasury/models.py:161 +#: apps/treasury/models.py:162 msgid "products" msgstr "productos" -#: apps/treasury/models.py:189 +#: apps/treasury/models.py:190 msgid "remittance type" msgstr "tipo de descuento" -#: apps/treasury/models.py:190 +#: apps/treasury/models.py:191 msgid "remittance types" msgstr "tipos de descuentos" -#: apps/treasury/models.py:213 +#: apps/treasury/models.py:214 msgid "Comment" msgstr "Comentario" -#: apps/treasury/models.py:218 +#: apps/treasury/models.py:219 msgid "Closed" msgstr "Cerrada" -#: apps/treasury/models.py:222 +#: apps/treasury/models.py:223 msgid "remittance" msgstr "descuento" -#: apps/treasury/models.py:223 +#: apps/treasury/models.py:224 msgid "remittances" msgstr "descuentos" -#: apps/treasury/models.py:226 +#: apps/treasury/models.py:227 msgid "Remittance #{:d}: {}" msgstr "Descuento n°{:d} : {}" -#: apps/treasury/models.py:279 +#: apps/treasury/models.py:280 msgid "special transaction proxy" msgstr "proxy de transacción especial" -#: apps/treasury/models.py:280 +#: apps/treasury/models.py:281 msgid "special transaction proxies" msgstr "proxys de transacciones especiales" -#: apps/treasury/models.py:306 +#: apps/treasury/models.py:307 msgid "credit transaction" msgstr "transacción de crédito" -#: apps/treasury/models.py:311 +#: apps/treasury/models.py:312 #: 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:312 +#: apps/treasury/models.py:313 msgid "Credits from the Société générale" msgstr "Créditos de la Société Générale" -#: apps/treasury/models.py:315 +#: apps/treasury/models.py:316 #, python-brace-format msgid "Soge credit for {user}" msgstr "Crédito de la Société Générale para {user}" -#: apps/treasury/models.py:445 +#: apps/treasury/models.py:446 msgid "" "This user doesn't have enough money to pay the memberships with its note. " "Please ask her/him to credit the note before invalidating this credit." @@ -2692,25 +2819,22 @@ msgstr "Factura n°{:d}" msgid "Invoice" msgstr "Factura" -#: apps/treasury/tables.py:65 +#: apps/treasury/tables.py:66 msgid "Transaction count" msgstr "Cantidad de transacciones" -#: apps/treasury/tables.py:70 apps/treasury/tables.py:72 +#: apps/treasury/tables.py:71 apps/treasury/tables.py:73 +#: apps/wei/templates/wei/busteam_detail.html:22 apps/wrapped/tables.py:42 msgid "View" msgstr "Ver" -#: apps/treasury/tables.py:143 -msgid "Yes" -msgstr "Sí" - #: apps/treasury/templates/treasury/invoice_confirm_delete.html:10 -#: apps/treasury/views.py:173 +#: apps/treasury/views.py:174 msgid "Delete invoice" msgstr "Suprimir la factura" #: apps/treasury/templates/treasury/invoice_confirm_delete.html:15 -#: apps/treasury/views.py:177 +#: apps/treasury/views.py:178 msgid "This invoice is locked and can't be deleted." msgstr "Esta factura esta bloqueada y no puede ser suprimida." @@ -2878,64 +3002,64 @@ msgstr "Anãdir un crédito de la Société Générale" msgid "Credit successfully registered" msgstr "Crédito creado con éxito" -#: apps/treasury/views.py:40 +#: apps/treasury/views.py:41 msgid "Create new invoice" msgstr "Crear una nueva factura" -#: apps/treasury/views.py:97 +#: apps/treasury/views.py:98 msgid "Invoices list" msgstr "Lista de las facturas" -#: apps/treasury/views.py:105 apps/treasury/views.py:275 -#: apps/treasury/views.py:401 +#: apps/treasury/views.py:106 apps/treasury/views.py:281 +#: apps/treasury/views.py:394 msgid "You are not able to see the treasury interface." msgstr "Usted no tiene derecho a ver la interfaz de tesorería." -#: apps/treasury/views.py:115 +#: apps/treasury/views.py:116 msgid "Update an invoice" msgstr "Modificar una factura" -#: apps/treasury/views.py:240 +#: apps/treasury/views.py:241 msgid "Create a new remittance" msgstr "Crear un nuevo descuento" -#: apps/treasury/views.py:267 +#: apps/treasury/views.py:265 msgid "Remittances list" msgstr "Lista de los descuentos" -#: apps/treasury/views.py:326 +#: apps/treasury/views.py:320 msgid "Update a remittance" msgstr "Modificar un descuento" -#: apps/treasury/views.py:349 +#: apps/treasury/views.py:342 msgid "Attach a transaction to a remittance" msgstr "Unir una transacción con un descuento" -#: apps/treasury/views.py:393 +#: apps/treasury/views.py:386 msgid "List of credits from the Société générale" msgstr "Lista de los créditos de la Société Générale" -#: apps/treasury/views.py:438 +#: apps/treasury/views.py:436 msgid "Manage credits from the Société générale" msgstr "Gestionar los créditos de la Société Générale" -#: apps/wei/apps.py:10 apps/wei/models.py:37 apps/wei/models.py:38 -#: apps/wei/models.py:62 apps/wei/models.py:178 +#: apps/wei/apps.py:10 apps/wei/models.py:42 apps/wei/models.py:43 +#: apps/wei/models.py:67 apps/wei/models.py:192 #: note_kfet/templates/base.html:108 msgid "WEI" msgstr "WEI" -#: apps/wei/forms/registration.py:35 +#: apps/wei/forms/registration.py:37 msgid "The selected user is not validated. Please validate its account first" 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:324 +#: apps/wei/forms/registration.py:84 apps/wei/models.py:140 +#: apps/wei/models.py:348 msgid "bus" msgstr "bus" -#: apps/wei/forms/registration.py:60 +#: apps/wei/forms/registration.py:85 msgid "" "This choice is not definitive. The WEI organizers are free to attribute for " "you a bus and a team, in particular if you are a free eletron." @@ -2944,11 +3068,11 @@ msgstr "" "derecho de imponer su bus y su equipo, en particular para los electrones " "libres." -#: apps/wei/forms/registration.py:67 +#: apps/wei/forms/registration.py:92 msgid "Team" msgstr "Equipo" -#: apps/wei/forms/registration.py:69 +#: apps/wei/forms/registration.py:94 msgid "" "Leave this field empty if you won't be in a team (staff, bus chief, free " "electron)" @@ -2956,16 +3080,16 @@ msgstr "" "Deje este campo vacío si no quiere estar en un equipo (staff, jefe de bus, " "electrón libre)" -#: apps/wei/forms/registration.py:75 apps/wei/forms/registration.py:85 -#: apps/wei/models.py:160 +#: apps/wei/forms/registration.py:100 apps/wei/forms/registration.py:110 +#: apps/wei/models.py:174 msgid "WEI Roles" msgstr "Papeles en el WEI" -#: apps/wei/forms/registration.py:76 +#: apps/wei/forms/registration.py:101 msgid "Select the roles that you are interested in." msgstr "Elegir los papeles que le interesa." -#: apps/wei/forms/registration.py:122 +#: apps/wei/forms/registration.py:147 msgid "This team doesn't belong to the given bus." msgstr "Este equipo no pertenece al bus dado." @@ -2978,126 +3102,149 @@ msgid "year" msgstr "año" #: apps/wei/models.py:29 apps/wei/templates/wei/base.html:30 +#: apps/wrapped/models.py:20 msgid "date start" msgstr "fecha de inicio" #: apps/wei/models.py:33 apps/wei/templates/wei/base.html:33 +#: apps/wrapped/models.py:24 msgid "date end" msgstr "fecha de fin" -#: apps/wei/models.py:71 apps/wei/tables.py:305 +#: apps/wei/models.py:37 +#, fuzzy +#| msgid "total amount" +msgid "caution amount" +msgstr "monto total" + +#: apps/wei/models.py:76 apps/wei/tables.py:305 msgid "seat count in the bus" msgstr "cantidad de asientos en el bus" -#: apps/wei/models.py:83 +#: apps/wei/models.py:97 msgid "survey information" msgstr "informaciones sobre el cuestionario" -#: apps/wei/models.py:84 +#: apps/wei/models.py:98 msgid "Information about the survey for new members, encoded in JSON" msgstr "" "Informaciones sobre el cuestionario para los nuevos miembros, registrado en " "JSON" -#: apps/wei/models.py:88 +#: apps/wei/models.py:102 msgid "Bus" msgstr "Bus" -#: apps/wei/models.py:89 apps/wei/templates/wei/weiclub_detail.html:51 +#: apps/wei/models.py:103 apps/wei/templates/wei/weiclub_detail.html:51 msgid "Buses" msgstr "Bus" -#: apps/wei/models.py:135 +#: apps/wei/models.py:149 msgid "color" msgstr "color" -#: apps/wei/models.py:136 +#: apps/wei/models.py:150 msgid "The color of the T-Shirt, stored with its number equivalent" msgstr "El color de la camiseta, registrado con su número equivalente" -#: apps/wei/models.py:147 +#: apps/wei/models.py:161 msgid "Bus team" msgstr "Equipo de bus" -#: apps/wei/models.py:148 +#: apps/wei/models.py:162 msgid "Bus teams" msgstr "Equipos de bus" -#: apps/wei/models.py:159 +#: apps/wei/models.py:173 msgid "WEI Role" msgstr "Papeles en el WEI" -#: apps/wei/models.py:183 +#: apps/wei/models.py:197 msgid "Credit from Société générale" msgstr "Crédito de la Société Générale" -#: apps/wei/models.py:188 +#: apps/wei/models.py:202 apps/wei/views.py:984 msgid "Caution check given" msgstr "Cheque de garantía dado" -#: apps/wei/models.py:192 apps/wei/templates/wei/weimembership_form.html:64 +#: apps/wei/models.py:208 +msgid "Check" +msgstr "" + +#: apps/wei/models.py:209 +#, fuzzy +#| msgid "transactions" +msgid "Note transaction" +msgstr "Transacción" + +#: apps/wei/models.py:212 +#, fuzzy +#| msgid "created at" +msgid "caution type" +msgstr "tipo de fianza" + +#: apps/wei/models.py:216 apps/wei/templates/wei/weimembership_form.html:64 msgid "birth date" msgstr "fecha de nacimiento" -#: apps/wei/models.py:198 apps/wei/models.py:208 +#: apps/wei/models.py:222 apps/wei/models.py:232 msgid "Male" msgstr "Hombre" -#: apps/wei/models.py:199 apps/wei/models.py:209 +#: apps/wei/models.py:223 apps/wei/models.py:233 msgid "Female" msgstr "Mujer" -#: apps/wei/models.py:200 +#: apps/wei/models.py:224 msgid "Non binary" msgstr "No binari@" -#: apps/wei/models.py:202 apps/wei/templates/wei/attribute_bus_1A.html:22 +#: apps/wei/models.py:226 apps/wei/templates/wei/attribute_bus_1A.html:22 #: apps/wei/templates/wei/weimembership_form.html:55 msgid "gender" msgstr "género" -#: apps/wei/models.py:210 +#: apps/wei/models.py:234 msgid "Unisex" msgstr "Unisex" -#: apps/wei/models.py:213 apps/wei/templates/wei/weimembership_form.html:58 +#: apps/wei/models.py:237 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:250 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/templates/wei/weimembership_form.html:67 +#: apps/wei/models.py:256 msgid "health issues" msgstr "problemas de salud" -#: apps/wei/models.py:237 apps/wei/templates/wei/weimembership_form.html:70 +#: apps/wei/models.py:261 apps/wei/templates/wei/weimembership_form.html:70 msgid "emergency contact name" msgstr "nombre del contacto de emergencia" -#: apps/wei/models.py:238 +#: apps/wei/models.py:262 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:243 apps/wei/templates/wei/weimembership_form.html:73 +#: apps/wei/models.py:267 apps/wei/templates/wei/weimembership_form.html:73 msgid "emergency contact phone" msgstr "teléfono del contacto de emergencia" -#: apps/wei/models.py:248 apps/wei/templates/wei/weimembership_form.html:52 +#: apps/wei/models.py:272 apps/wei/templates/wei/weimembership_form.html:52 msgid "first year" msgstr "primer año" -#: apps/wei/models.py:249 +#: apps/wei/models.py:273 msgid "Tells if the user is new in the school." msgstr "Indica si el usuario es nuevo en la escuela." -#: apps/wei/models.py:254 +#: apps/wei/models.py:278 msgid "registration information" msgstr "informaciones sobre la afiliación" -#: apps/wei/models.py:255 +#: apps/wei/models.py:279 msgid "" "Information about the registration (buses for old members, survey for the " "new members), encoded in JSON" @@ -3105,27 +3252,27 @@ msgstr "" "Informaciones sobre la afiliacion (bus para miembros ancianos, cuestionario " "para los nuevos miembros), registrado en JSON" -#: apps/wei/models.py:261 +#: apps/wei/models.py:285 msgid "WEI User" msgstr "Participante WEI" -#: apps/wei/models.py:262 +#: apps/wei/models.py:286 msgid "WEI Users" msgstr "Participantes WEI" -#: apps/wei/models.py:334 +#: apps/wei/models.py:358 msgid "team" msgstr "equipo" -#: apps/wei/models.py:344 +#: apps/wei/models.py:368 msgid "WEI registration" msgstr "Apuntación al WEI" -#: apps/wei/models.py:348 +#: apps/wei/models.py:372 msgid "WEI membership" msgstr "Afiliación al WEI" -#: apps/wei/models.py:349 +#: apps/wei/models.py:373 msgid "WEI memberships" msgstr "Afiliaciones al WEI" @@ -3153,8 +3300,8 @@ msgstr "Año" msgid "preferred bus" msgstr "bus preferido" -#: apps/wei/tables.py:210 apps/wei/templates/wei/bus_detail.html:32 -#: apps/wei/templates/wei/busteam_detail.html:50 +#: apps/wei/tables.py:210 apps/wei/templates/wei/bus_detail.html:36 +#: apps/wei/templates/wei/busteam_detail.html:52 msgid "Teams" msgstr "Equipos" @@ -3187,13 +3334,22 @@ msgid "Attribute first year members into buses" msgstr "Repartir los primer años en los buses" #: apps/wei/templates/wei/1A_list.html:15 -msgid "Start attribution!" +#, fuzzy +#| msgid "Start attribution!" +msgid "Start attribution !" msgstr "Empezar repartición !" #: apps/wei/templates/wei/attribute_bus_1A.html:8 msgid "Bus attribution" msgstr "Repartición de los buses" +#: apps/wei/templates/wei/attribute_bus_1A.html:28 +#: apps/wei/templates/wei/weimembership_form.html:67 +#, fuzzy +#| msgid "health issues" +msgid "health issues or specific diet" +msgstr "problemas de salud" + #: apps/wei/templates/wei/attribute_bus_1A.html:31 msgid "suggested bus" msgstr "bus sugerido" @@ -3210,53 +3366,59 @@ msgstr "Volver a la lista principal" msgid "WEI fee (paid students)" msgstr "Pago de entrada del WEI (estudiantes pagados)" -#: apps/wei/templates/wei/base.html:47 apps/wei/templates/wei/base.html:54 -msgid "The BDE membership is included in the WEI registration." -msgstr "La afiliación al BDE esta incluida en la afiliación WEI." - -#: apps/wei/templates/wei/base.html:51 +#: apps/wei/templates/wei/base.html:47 msgid "WEI fee (unpaid students)" msgstr "Pago de entrada del WEI (estudiantes no pagados)" -#: apps/wei/templates/wei/base.html:76 +#: apps/wei/templates/wei/base.html:53 +#, fuzzy +#| msgid "total amount" +msgid "Caution amount" +msgstr "monto total" + +#: apps/wei/templates/wei/base.html:74 msgid "WEI list" msgstr "Lista de los WEI" -#: apps/wei/templates/wei/base.html:81 apps/wei/views.py:528 +#: apps/wei/templates/wei/base.html:79 apps/wei/views.py:550 msgid "Register 1A" msgstr "Apuntar un 1A" -#: apps/wei/templates/wei/base.html:85 apps/wei/views.py:614 +#: apps/wei/templates/wei/base.html:83 apps/wei/views.py:644 msgid "Register 2A+" msgstr "Apuntar un 2A+" -#: apps/wei/templates/wei/base.html:93 +#: apps/wei/templates/wei/base.html:91 msgid "Add bus" msgstr "Añadir un bus" -#: apps/wei/templates/wei/base.html:97 +#: apps/wei/templates/wei/base.html:95 msgid "View WEI" msgstr "Ver un WEI" -#: apps/wei/templates/wei/bus_detail.html:22 -#: apps/wei/templates/wei/busteam_detail.html:22 +#: apps/wei/templates/wei/bus_detail.html:21 +msgid "View club" +msgstr "Ver club" + +#: apps/wei/templates/wei/bus_detail.html:26 +#: apps/wei/templates/wei/busteam_detail.html:24 msgid "Add team" msgstr "Añadir un equipo" -#: apps/wei/templates/wei/bus_detail.html:45 +#: apps/wei/templates/wei/bus_detail.html:49 msgid "Members" msgstr "Miembros" -#: apps/wei/templates/wei/bus_detail.html:54 -#: apps/wei/templates/wei/busteam_detail.html:60 +#: apps/wei/templates/wei/bus_detail.html:58 +#: apps/wei/templates/wei/busteam_detail.html:62 #: apps/wei/templates/wei/weimembership_list.html:31 msgid "View as PDF" msgstr "Descargar un PDF" #: apps/wei/templates/wei/survey.html:11 #: apps/wei/templates/wei/survey_closed.html:11 -#: apps/wei/templates/wei/survey_end.html:11 apps/wei/views.py:1028 -#: apps/wei/views.py:1083 apps/wei/views.py:1130 +#: apps/wei/templates/wei/survey_end.html:11 apps/wei/views.py:1159 +#: apps/wei/views.py:1214 apps/wei/views.py:1261 msgid "Survey WEI" msgstr "Cuestionario WEI" @@ -3300,7 +3462,7 @@ msgstr "Inscripciones sin validación" msgid "Attribute buses" msgstr "Repartición en los buses" -#: apps/wei/templates/wei/weiclub_list.html:14 apps/wei/views.py:79 +#: apps/wei/templates/wei/weiclub_list.html:14 apps/wei/views.py:82 msgid "Create WEI" msgstr "Crear un WEI" @@ -3381,29 +3543,42 @@ msgstr "" "resultará invalida. Tendrá que validarla una vez que el banco confirmará la " "creación de la cuenta, o cambiará el método de pago." +#: apps/wei/templates/wei/weimembership_form.html:147 +msgid "Required payments:" +msgstr "" + #: apps/wei/templates/wei/weimembership_form.html:149 -#, python-format -msgid "" -"The note don't have enough money (%(balance)s, %(pretty_fee)s required). The " -"registration may fail if you don't credit the note now." -msgstr "" -"La note no tiene suficiente dinero (%(balance)s, %(pretty_fee)s pedidos). La " -"afiliación puede fallar si usted no acredita la note ahora." +#, fuzzy, python-format +#| msgid "membership fee (paid students)" +msgid "Membership fees: %(amount)s" +msgstr "Pagos de afiliación (estudiantes pagados)" -#: apps/wei/templates/wei/weimembership_form.html:157 +#: apps/wei/templates/wei/weimembership_form.html:153 #, python-format -msgid "" -"The note has enough money (%(pretty_fee)s required), the registration is " -"possible." -msgstr "" -"La note tiene suficiente dinero (%(pretty_fee)s pedidos), la afiliación es " -"posible." +msgid "Deposit (by Note transaction): %(amount)s" +msgstr "Fianza (transacción) : %(amount)s" -#: apps/wei/templates/wei/weimembership_form.html:166 +#: apps/wei/templates/wei/weimembership_form.html:156 +#: apps/wei/templates/wei/weimembership_form.html:163 +#, python-format +msgid "Total needed: %(total)s" +msgstr "Total necesario : %(total)s" + +#: apps/wei/templates/wei/weimembership_form.html:160 +#, python-format +msgid "Deposit (by check): %(amount)s" +msgstr "Fianza (cheque) : %(amount)s" + +#: apps/wei/templates/wei/weimembership_form.html:168 +#, python-format +msgid "Current balance: %(balance)s" +msgstr "Saldo actual : %(balance)s" + +#: apps/wei/templates/wei/weimembership_form.html:176 msgid "The user didn't give her/his caution check." msgstr "El usuario no dio su cheque de garantía." -#: apps/wei/templates/wei/weimembership_form.html:174 +#: apps/wei/templates/wei/weimembership_form.html:184 msgid "" "This user is not a member of the Kfet club for the coming year. The " "membership will be processed automatically, the WEI registration includes " @@ -3437,117 +3612,373 @@ msgstr "No hay pre-inscripción encontrada con esta entrada." msgid "View validated memberships..." msgstr "Ver las inscripciones validadas..." -#: apps/wei/views.py:58 +#: apps/wei/views.py:61 msgid "Search WEI" msgstr "Buscar un WEI" -#: apps/wei/views.py:109 +#: apps/wei/views.py:112 msgid "WEI Detail" msgstr "Detalles del WEI" -#: apps/wei/views.py:208 +#: apps/wei/views.py:212 msgid "View members of the WEI" msgstr "Ver los miembros del WEI" -#: apps/wei/views.py:236 +#: apps/wei/views.py:245 msgid "Find WEI Membership" msgstr "Buscar una afiliación al WEI" -#: apps/wei/views.py:246 +#: apps/wei/views.py:255 msgid "View registrations to the WEI" msgstr "Ver las inscripciones al WEI" -#: apps/wei/views.py:270 +#: apps/wei/views.py:284 msgid "Find WEI Registration" msgstr "Buscar una inscripción al WEI" -#: apps/wei/views.py:281 +#: apps/wei/views.py:295 msgid "Update the WEI" msgstr "Modificar el WEI" -#: apps/wei/views.py:302 +#: apps/wei/views.py:316 msgid "Create new bus" msgstr "Añadir un bus" -#: apps/wei/views.py:340 +#: apps/wei/views.py:354 msgid "Update bus" msgstr "Modificar el bus" -#: apps/wei/views.py:372 +#: apps/wei/views.py:386 msgid "Manage bus" msgstr "Gestionar el bus" -#: apps/wei/views.py:399 +#: apps/wei/views.py:413 msgid "Create new team" msgstr "Añadir un equipo" -#: apps/wei/views.py:439 +#: apps/wei/views.py:457 msgid "Update team" msgstr "Modificar el equipo" -#: apps/wei/views.py:470 +#: apps/wei/views.py:492 msgid "Manage WEI team" msgstr "Gestionar el equipo" -#: apps/wei/views.py:492 +#: apps/wei/views.py:514 msgid "Register first year student to the WEI" msgstr "Registrar un 1A al WEI" -#: apps/wei/views.py:550 apps/wei/views.py:649 +#: apps/wei/views.py:580 apps/wei/views.py:689 msgid "This user is already registered to this WEI." msgstr "Este usuario ya afilió a este WEI." -#: apps/wei/views.py:555 +#: apps/wei/views.py:585 msgid "" "This user can't be in her/his first year since he/she has already " "participated to a WEI." msgstr "Este usuario no puede ser un 1A porque ya participó en un WEI." -#: apps/wei/views.py:578 +#: apps/wei/views.py:608 msgid "Register old student to the WEI" msgstr "Registrar un 2A+ al WEI" -#: apps/wei/views.py:633 apps/wei/views.py:721 +#: apps/wei/views.py:663 apps/wei/views.py:768 msgid "You already opened an account in the Société générale." msgstr "Usted ya abrió una cuenta a la Société Générale." -#: apps/wei/views.py:685 +#: apps/wei/views.py:676 apps/wei/views.py:785 +msgid "Choose how you want to pay the deposit" +msgstr "" + +#: apps/wei/views.py:728 msgid "Update WEI Registration" msgstr "Modificar la inscripción WEI" -#: apps/wei/views.py:795 +#: apps/wei/views.py:810 +#, fuzzy +#| msgid "The BDE membership is included in the WEI registration." +msgid "No membership found for this registration" +msgstr "La afiliación al BDE esta incluida en la afiliación WEI." + +#: apps/wei/views.py:819 +#| msgid "" +#| "You don't have the permission to add an instance of model {app_label}." +#| "{model_name}." +msgid "You don't have the permission to update memberships" +msgstr "" +"Usted no tiene permiso a añadir una instancia al modelo {app_label}." +"{model_name}." + +#: apps/wei/views.py:825 +#, python-format +#| msgid "" +#| "You don't have the permission to delete this instance of model " +#| "{app_label}.{model_name}." +msgid "You don't have the permission to update the field %(field)s" +msgstr "Usted no tiene permiso a modificar el campo %(field)s" + +#: apps/wei/views.py:870 msgid "Delete WEI registration" msgstr "Suprimir la inscripción WEI" -#: apps/wei/views.py:806 +#: apps/wei/views.py:881 msgid "You don't have the right to delete this WEI registration." msgstr "Usted no tiene derecho a suprimir esta inscripción WEI." -#: apps/wei/views.py:824 +#: apps/wei/views.py:899 msgid "Validate WEI registration" msgstr "Validar la inscripción WEI" -#: apps/wei/views.py:1223 +#: apps/wei/views.py:985 +msgid "Please make sure the check is given before validating the registration" +msgstr "" +"Por favor asegúrese de que el cheque se entrega antes de validar el registro" + +#: apps/wei/views.py:991 +#| msgid "credit transaction" +msgid "Create deposit transaction" +msgstr "Crear transacción de crédito" + +#: apps/wei/views.py:992 +#, python-format +msgid "" +"A transaction of %(amount).2f€ will be created from the user's Note account" +msgstr "" + +#: apps/wei/views.py:1087 +#, python-format +#| msgid "" +#| "This user don't have enough money to join this club, and can't have a " +#| "negative balance." +msgid "" +"This user doesn't have enough money. " +"Current balance: %(balance)d€, credit: %(credit)d€, needed: %(needed)d€" +msgstr "" +"Este usuario no tiene suficiente dinero. " +"Saldo actual : %(balance)d€, crédito: %(credit)d€, requerido: %(needed)d€" + +#: apps/wei/views.py:1140 +#, python-format +#| msgid "created at" +msgid "Caution %(name)s" +msgstr "Fianza %(name)s" + +#: apps/wei/views.py:1354 msgid "Attribute buses to first year members" msgstr "Repartir los primer años en los buses" -#: apps/wei/views.py:1248 +#: apps/wei/views.py:1379 msgid "Attribute bus" msgstr "Repartir en un bus" -#: note_kfet/settings/base.py:173 +#: apps/wei/views.py:1419 +msgid "" +"No first year student without a bus found. Either all of them have a bus, or " +"none has filled the survey yet." +msgstr "" + +#: apps/wrapped/apps.py:10 +msgid "wrapped" +msgstr "" + +#: apps/wrapped/models.py:40 +#, fuzzy +#| msgid "Regenerate token" +msgid "generated" +msgstr "Regenerar token" + +#: apps/wrapped/models.py:45 +msgid "public" +msgstr "" + +#: apps/wrapped/models.py:53 +msgid "bde" +msgstr "" + +#: apps/wrapped/models.py:65 +msgid "data json" +msgstr "" + +#: apps/wrapped/models.py:66 +msgid "data in the wrapped and generated by the script generate_wrapped" +msgstr "" + +#: apps/wrapped/models.py:70 note_kfet/templates/base.html:114 +msgid "Wrapped" +msgstr "" + +#: apps/wrapped/models.py:71 +msgid "Wrappeds" +msgstr "" + +#: apps/wrapped/tables.py:40 +msgid "view the wrapped" +msgstr "" + +#: apps/wrapped/tables.py:55 +msgid "Click to make this wrapped private" +msgstr "" + +#: apps/wrapped/tables.py:56 +msgid "Click to make this wrapped public" +msgstr "" + +#: apps/wrapped/tables.py:67 +msgid "Share" +msgstr "" + +#: apps/wrapped/tables.py:73 +msgid "Click to copy the link in the press paper" +msgstr "" + +#: apps/wrapped/tables.py:81 +msgid "Copy link" +msgstr "" + +#: apps/wrapped/templates/wrapped/1/wrapped_base.html:16 +#: note_kfet/templates/base.html:14 +msgid "The ENS Paris-Saclay BDE note." +msgstr "La note del BDE de la ENS Paris-Saclay." + +#: apps/wrapped/templates/wrapped/1/wrapped_base.html:58 +#, fuzzy +#| msgid "The Note Kfet team." +msgid "The NoteKfet this year it's also" +msgstr "El equipo Note Kfet." + +#: apps/wrapped/templates/wrapped/1/wrapped_base.html:60 +#, fuzzy +#| msgid "transactions" +msgid " transactions" +msgstr "transacciones" + +#: apps/wrapped/templates/wrapped/1/wrapped_base.html:61 +msgid " parties" +msgstr "" + +#: apps/wrapped/templates/wrapped/1/wrapped_base.html:62 +#, fuzzy +#| msgid "entries" +msgid " Pot entries" +msgstr "entradas" + +#: apps/wrapped/templates/wrapped/1/wrapped_base.html:72 +msgid " old dickhead behind the bar" +msgstr "" + +#: apps/wrapped/templates/wrapped/1/wrapped_view_club.html:9 +#: apps/wrapped/templates/wrapped/1/wrapped_view_user.html:9 +msgid "NoteKfet Wrapped" +msgstr "" + +#: apps/wrapped/templates/wrapped/1/wrapped_view_club.html:11 +msgid "Your best consumer:" +msgstr "" + +#: apps/wrapped/templates/wrapped/1/wrapped_view_club.html:13 +msgid "Your worst creditor:" +msgstr "" + +#: apps/wrapped/templates/wrapped/1/wrapped_view_club.html:16 +msgid "party·ies organised" +msgstr "" + +#: apps/wrapped/templates/wrapped/1/wrapped_view_club.html:17 +#, fuzzy +#| msgid "Add member" +msgid "distinct members" +msgstr "Añadir un miembro" + +#: apps/wrapped/templates/wrapped/1/wrapped_view_club.html:26 +msgid "Infortunately, you doesn't have consumer this year" +msgstr "" + +#: apps/wrapped/templates/wrapped/1/wrapped_view_club.html:28 +msgid "Congratulations you are a real rat !" +msgstr "" + +#: apps/wrapped/templates/wrapped/1/wrapped_view_user.html:13 +msgid "You participate to the wei: " +msgstr "" + +#: apps/wrapped/templates/wrapped/1/wrapped_view_user.html:13 +#, fuzzy +#| msgid "in the team" +msgid "in the" +msgstr "en el equipo" + +#: apps/wrapped/templates/wrapped/1/wrapped_view_user.html:18 +msgid "pots !" +msgstr "" + +#: apps/wrapped/templates/wrapped/1/wrapped_view_user.html:27 +msgid "Your first conso of the year: " +msgstr "" + +#: apps/wrapped/templates/wrapped/1/wrapped_view_user.html:28 +msgid "Your prefered consumtion category: " +msgstr "" + +#: apps/wrapped/templates/wrapped/1/wrapped_view_user.html:41 +msgid ": it's the number of time your reload your note" +msgstr "" + +#: apps/wrapped/templates/wrapped/1/wrapped_view_user.html:44 +msgid "Your overall expenses: " +msgstr "" + +#: apps/wrapped/templates/wrapped/1/wrapped_view_user.html:47 +#: apps/wrapped/templates/wrapped/1/wrapped_view_user.html:60 +msgid "with" +msgstr "" + +#: apps/wrapped/templates/wrapped/1/wrapped_view_user.html:57 +msgid "Your expenses to BDE: " +msgstr "" + +#: apps/wrapped/templates/wrapped/wrapped_list.html:13 +msgid "My wrapped" +msgstr "" + +#: apps/wrapped/templates/wrapped/wrapped_list.html:22 +msgid "Public wrapped" +msgstr "" + +#: apps/wrapped/templates/wrapped/wrapped_list.html:33 +msgid "" +"Do not forget to ask permission to people who are in your wrapped before to " +"make them public" +msgstr "" + +#: apps/wrapped/templates/wrapped/wrapped_list.html:40 +msgid "Link copied" +msgstr "" + +#: apps/wrapped/templates/wrapped/wrapped_list.html:65 +msgid "Wrapped is private" +msgstr "" + +#: apps/wrapped/templates/wrapped/wrapped_list.html:66 +msgid "Wrapped is public" +msgstr "" + +#: apps/wrapped/views.py:28 +msgid "List of wrapped" +msgstr "" + +#: note_kfet/settings/base.py:177 msgid "German" msgstr "Alemán" -#: note_kfet/settings/base.py:174 +#: note_kfet/settings/base.py:178 msgid "English" msgstr "Ingles" -#: note_kfet/settings/base.py:175 +#: note_kfet/settings/base.py:179 msgid "Spanish" msgstr "Español" -#: note_kfet/settings/base.py:176 +#: note_kfet/settings/base.py:180 msgid "French" msgstr "Francés" @@ -3605,14 +4036,6 @@ msgstr "" msgid "Reset" msgstr "Reiniciar" -#: note_kfet/templates/base.html:14 -msgid "The ENS Paris-Saclay BDE note." -msgstr "La note del BDE de la ENS Paris-Saclay." - -#: note_kfet/templates/base.html:72 -msgid "Food" -msgstr "" - #: note_kfet/templates/base.html:84 msgid "Users" msgstr "Usuarios" @@ -3621,26 +4044,26 @@ msgstr "Usuarios" msgid "Clubs" msgstr "Clubs" -#: note_kfet/templates/base.html:119 +#: note_kfet/templates/base.html:125 msgid "Admin" msgstr "" -#: note_kfet/templates/base.html:133 +#: note_kfet/templates/base.html:139 msgid "My account" msgstr "Mi cuenta" -#: note_kfet/templates/base.html:136 +#: note_kfet/templates/base.html:142 msgid "Log out" msgstr "Desconectarse" -#: note_kfet/templates/base.html:144 +#: note_kfet/templates/base.html:150 #: note_kfet/templates/registration/signup.html:6 #: note_kfet/templates/registration/signup.html:11 #: note_kfet/templates/registration/signup.html:28 msgid "Sign up" msgstr "Registrar" -#: note_kfet/templates/base.html:151 +#: note_kfet/templates/base.html:157 #: note_kfet/templates/registration/login.html:6 #: note_kfet/templates/registration/login.html:15 #: note_kfet/templates/registration/login.html:38 @@ -3648,7 +4071,7 @@ msgstr "Registrar" msgid "Log in" msgstr "Conectarse" -#: note_kfet/templates/base.html:165 +#: note_kfet/templates/base.html:171 msgid "" "You are not a BDE member anymore. Please renew your membership if you want " "to use the note." @@ -3656,7 +4079,7 @@ msgstr "" "Usted ya no está miembro del BDE. Por favor renueva su afiliación si quiere " "usar la note." -#: note_kfet/templates/base.html:171 +#: note_kfet/templates/base.html:177 msgid "" "Your e-mail address is not validated. Please check your mail inbox and click " "on the validation link." @@ -3664,7 +4087,7 @@ msgstr "" "Su correo electrónico no fue validado. Por favor mire en sus correos y haga " "clic en el enlace de validación." -#: note_kfet/templates/base.html:177 +#: note_kfet/templates/base.html:183 msgid "" "You declared that you opened a bank account in the Société générale. The " "bank did not validate the creation of the account to the BDE, so the " @@ -3677,19 +4100,19 @@ msgstr "" "pagados. El proceso de convalidación puede durar unos días. Por favor " "comprueba que fue hasta el final de la creación de la cuenta." -#: note_kfet/templates/base.html:200 +#: note_kfet/templates/base.html:206 msgid "Contact us" msgstr "Contactarnos" -#: note_kfet/templates/base.html:202 +#: note_kfet/templates/base.html:208 msgid "Technical Support" msgstr "Soporte técnico" -#: note_kfet/templates/base.html:204 +#: note_kfet/templates/base.html:210 msgid "Charte Info (FR)" msgstr "" -#: note_kfet/templates/base.html:206 +#: note_kfet/templates/base.html:212 msgid "FAQ (FR)" msgstr "FAQ (FR)" @@ -3914,16 +4337,6 @@ msgstr "" "pagar su afiliación. Tambien tiene que validar su correo electronico con el " "enlace que recibió." -#, fuzzy -#~| msgid "invalidate" -#~ msgid "Enter a valid color." -#~ msgstr "invalidar" - -#, fuzzy -#~| msgid "invalidate" -#~ msgid "Enter a valid value." -#~ msgstr "invalidar" - #, fuzzy #~| msgid "Invitation" #~ msgid "Syndication" @@ -3934,6 +4347,11 @@ msgstr "" #~ msgid "That page contains no results" #~ msgstr "No hay resultado." +#, fuzzy +#~| msgid "invalidate" +#~ msgid "Enter a valid value." +#~ msgstr "invalidar" + #, fuzzy #~| msgid "invalidate" #~ msgid "Enter a valid URL." @@ -3969,16 +4387,16 @@ msgstr "" #~ msgid "Enter a number." #~ msgstr "número de teléfono" -#, fuzzy -#~| msgid "add" -#~ msgid "and" -#~ msgstr "añadir" - #, fuzzy, python-format #~| msgid "A template with this name already exist" #~ msgid "%(model_name)s with this %(field_labels)s already exists." #~ msgstr "Un plantilla de transacción con un nombre similar ya existe" +#, fuzzy, python-format +#~| msgid "This activity is not validated yet." +#~ msgid "Value %(value)r is not a valid choice." +#~ msgstr "Esta actividad no fue validada por ahora." + #, fuzzy #~| msgid "This image cannot be loaded." #~ msgid "This field cannot be null." @@ -4024,11 +4442,26 @@ msgstr "" #~ msgid "IP address" #~ msgstr "Dirección IP" +#, fuzzy, python-format +#~| msgid "This activity is not validated yet." +#~ msgid "“%(value)s” is not a valid UUID." +#~ msgstr "Esta actividad no fue validada por ahora." + #, fuzzy #~| msgid "Invoice identifier" #~ msgid "Universally unique identifier" #~ msgstr "Numero de factura" +#, fuzzy +#~| msgid "Object" +#~ msgid "A JSON object" +#~ msgstr "Asunto" + +#, fuzzy +#~| msgid "This address must be valid." +#~ msgid "Value must be valid JSON." +#~ msgstr "Este correo tiene que ser valido." + #, fuzzy, python-format #~| msgid "A template with this name already exist" #~ msgid "%(model)s instance with %(field)s %(value)r does not exist." @@ -4074,9 +4507,14 @@ msgstr "" #~ msgid "Enter a valid UUID." #~ msgstr "invalidar" +#, fuzzy +#~| msgid "invalidate" +#~ msgid "Enter a valid JSON." +#~ msgstr "invalidar" + #, fuzzy, python-format #~| msgid "This activity is not validated yet." -#~ msgid "\"%(pk)s\" is not a valid value." +#~ msgid "“%(pk)s” is not a valid value." #~ msgstr "Esta actividad no fue validada por ahora." #, fuzzy @@ -4119,6 +4557,11 @@ msgstr "" #~ msgid "feb" #~ msgstr "pago" +#, fuzzy +#~| msgid "add" +#~ msgid "jun" +#~ msgstr "añadir" + #, fuzzy #~| msgid "product" #~ msgid "oct" @@ -4161,8 +4604,8 @@ msgstr "" #, fuzzy, python-format #~| msgid "year" -#~ msgid "%d year" -#~ msgid_plural "%d years" +#~ msgid "%(num)d year" +#~ msgid_plural "%(num)d years" #~ msgstr[0] "año" #~ msgstr[1] "año" @@ -4223,9 +4666,78 @@ msgstr "" #, fuzzy #~| msgid "Application requires following permissions:" -#~ msgid "Application requires following permissions" +#~ msgid "Application requires the following permissions" #~ msgstr "La aplicación necesita los derechos siguientes :" +#~ msgid "The BDE membership is included in the WEI registration." +#~ msgstr "La afiliación al BDE esta incluida en la afiliación WEI." + +#, python-format +#~ msgid "" +#~ "The note don't have enough money (%(balance)s, %(pretty_fee)s required). " +#~ "The registration may fail if you don't credit the note now." +#~ msgstr "" +#~ "La note no tiene suficiente dinero (%(balance)s, %(pretty_fee)s pedidos). " +#~ "La afiliación puede fallar si usted no acredita la note ahora." + +#, python-format +#~ msgid "" +#~ "The note has enough money (%(pretty_fee)s required), the registration is " +#~ "possible." +#~ msgstr "" +#~ "La note tiene suficiente dinero (%(pretty_fee)s pedidos), la afiliación " +#~ "es posible." + +#, fuzzy +#~| msgid "You don't have the right to delete this WEI registration." +#~ msgid "You don't have the permission to validate registrations" +#~ msgstr "Usted no tiene derecho a suprimir esta inscripción WEI." + +#, fuzzy +#~| msgid "active" +#~ msgid "is active" +#~ msgstr "activo" + +#, fuzzy +#~| msgid "invalidate" +#~ msgid "Arrival date" +#~ msgstr "invalidar" + +#, fuzzy +#~| msgid "active" +#~ msgid "Active" +#~ msgstr "activo" + +#, fuzzy +#~| msgid "phone number" +#~ msgid "number" +#~ msgstr "número de teléfono" + +#, fuzzy +#~| msgid "Profile detail" +#~ msgid "View details" +#~ msgstr "Detalles del usuario" + +#, fuzzy +#~| msgid "There is no results." +#~ msgid "There is no meal." +#~ msgstr "No hay resultado." + +#, fuzzy +#~| msgid "This credit is already validated." +#~ msgid "The product is already prepared" +#~ msgstr "Este crédito ya fue validado." + +#, fuzzy +#~| msgid "Update team" +#~ msgid "Update a meal" +#~ msgstr "Modificar el equipo" + +#, fuzzy +#~| msgid "invalidate" +#~ msgid "Enter a valid color." +#~ msgstr "invalidar" + #, fuzzy #~| msgid "WEI registration" #~ msgid "In preparation" diff --git a/locale/fr/LC_MESSAGES/django.po b/locale/fr/LC_MESSAGES/django.po index 23ba06dd..70aa20ce 100644 --- a/locale/fr/LC_MESSAGES/django.po +++ b/locale/fr/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-04-30 11:44+0200\n" +"POT-Creation-Date: 2025-06-20 13:50+0200\n" "PO-Revision-Date: 2022-04-11 22:05+0200\n" "Last-Translator: bleizi \n" "Language-Team: French \n" @@ -66,7 +66,7 @@ msgstr "Vous ne pouvez pas inviter plus de 3 personnes à cette activité." #: apps/note/models/transactions.py:46 apps/note/models/transactions.py:299 #: apps/permission/models.py:329 #: apps/registration/templates/registration/future_profile_detail.html:16 -#: apps/wei/models.py:67 apps/wei/models.py:131 apps/wei/tables.py:282 +#: apps/wei/models.py:72 apps/wei/models.py:145 apps/wei/tables.py:282 #: apps/wei/templates/wei/base.html:26 #: apps/wei/templates/wei/weimembership_form.html:14 apps/wrapped/models.py:16 msgid "name" @@ -101,7 +101,7 @@ msgstr "types d'activité" #: apps/activity/models.py:68 #: apps/activity/templates/activity/includes/activity_info.html:19 #: apps/note/models/transactions.py:82 apps/permission/models.py:109 -#: apps/permission/models.py:188 apps/wei/models.py:78 apps/wei/models.py:142 +#: apps/permission/models.py:188 apps/wei/models.py:92 apps/wei/models.py:156 msgid "description" msgstr "description" @@ -122,7 +122,7 @@ msgstr "type" #: apps/activity/models.py:91 apps/logs/models.py:22 apps/member/models.py:325 #: apps/note/models/notes.py:148 apps/treasury/models.py:294 -#: apps/wei/models.py:171 apps/wei/templates/wei/attribute_bus_1A.html:13 +#: apps/wei/models.py:185 apps/wei/templates/wei/attribute_bus_1A.html:13 #: apps/wei/templates/wei/survey.html:15 msgid "user" msgstr "utilisateur⋅rice" @@ -291,14 +291,14 @@ msgstr "Type" #: apps/activity/tables.py:86 apps/member/forms.py:199 #: apps/registration/forms.py:91 apps/treasury/forms.py:131 -#: apps/wei/forms/registration.py:110 +#: apps/wei/forms/registration.py:129 msgid "Last name" msgstr "Nom de famille" #: apps/activity/tables.py:88 apps/member/forms.py:204 #: apps/note/templates/note/transaction_form.html:138 #: apps/registration/forms.py:96 apps/treasury/forms.py:133 -#: apps/wei/forms/registration.py:115 +#: apps/wei/forms/registration.py:134 msgid "First name" msgstr "Prénom" @@ -341,6 +341,18 @@ msgstr "Liste des invité·e·s" msgid "Guest deleted" msgstr "Invité·e supprimé·e" +#: apps/activity/templates/activity/activity_detail.html:99 +#, fuzzy +#| msgid "Are you sure you want to delete this token?" +msgid "Are you sure you want to delete this activity?" +msgstr "Êtes-vous sûr⋅e de vouloir supprimer ce jeton ?" + +#: apps/activity/templates/activity/activity_detail.html:110 +#, fuzzy +#| msgid "Activity detail" +msgid "Activity deleted" +msgstr "Détails de l'activité" + #: apps/activity/templates/activity/activity_entry.html:14 #: apps/note/models/transactions.py:261 #: apps/note/templates/note/transaction_form.html:17 @@ -392,7 +404,7 @@ msgstr "Entrée effectuée !" #: apps/treasury/forms.py:89 apps/treasury/forms.py:143 #: apps/treasury/templates/treasury/invoice_form.html:74 #: apps/wei/templates/wei/bus_form.html:17 -#: apps/wei/templates/wei/busteam_form.html:17 +#: apps/wei/templates/wei/busteam_form.html:18 #: apps/wei/templates/wei/weiclub_form.html:17 #: apps/wei/templates/wei/weiregistration_form.html:18 msgid "Submit" @@ -448,6 +460,13 @@ msgid "edit" msgstr "modifier" #: apps/activity/templates/activity/includes/activity_info.html:74 +#: apps/logs/models.py:65 apps/note/tables.py:230 apps/note/tables.py:279 +#: apps/permission/models.py:126 apps/treasury/tables.py:38 +#: apps/wei/tables.py:74 +msgid "delete" +msgstr "supprimer" + +#: apps/activity/templates/activity/includes/activity_info.html:77 msgid "Invite" msgstr "Inviter" @@ -467,25 +486,40 @@ msgstr "Détails de l'activité" msgid "Update activity" msgstr "Modifier l'activité" -#: apps/activity/views.py:178 +#: apps/activity/views.py:177 +#, fuzzy +#| msgid "" +#| "You are not allowed to display the entry interface for this activity." +msgid "You are not allowed to delete this activity." +msgstr "" +"Vous n'êtes pas autorisé·e à afficher l'interface des entrées pour cette " +"activité." + +#: apps/activity/views.py:180 +#, fuzzy +#| msgid "This activity is closed." +msgid "This activity is valid." +msgstr "Cette activité est fermée." + +#: apps/activity/views.py:206 msgid "Invite guest to the activity \"{}\"" msgstr "Invitation pour l'activité « {} »" -#: apps/activity/views.py:218 +#: apps/activity/views.py:246 msgid "You are not allowed to display the entry interface for this activity." msgstr "" "Vous n'êtes pas autorisé·e à afficher l'interface des entrées pour cette " "activité." -#: apps/activity/views.py:221 +#: apps/activity/views.py:249 msgid "This activity does not support activity entries." msgstr "Cette activité ne requiert pas d'entrées." -#: apps/activity/views.py:224 +#: apps/activity/views.py:252 msgid "This activity is closed." msgstr "Cette activité est fermée." -#: apps/activity/views.py:329 +#: apps/activity/views.py:357 msgid "Entry for activity \"{}\"" msgstr "Entrées pour l'activité « {} »" @@ -759,41 +793,41 @@ msgstr "Ajouter un nouveau QR-code" msgid "Add an aliment" msgstr "Ajouter un nouvel aliment" -#: apps/food/views.py:226 +#: apps/food/views.py:235 msgid "Add a meal" msgstr "Ajouter un plat" -#: apps/food/views.py:262 +#: apps/food/views.py:275 msgid "Manage ingredients of:" msgstr "Gestion des ingrédienrs de :" -#: apps/food/views.py:276 apps/food/views.py:284 +#: apps/food/views.py:289 apps/food/views.py:297 #, python-brace-format msgid "Fully used in {meal}" msgstr "Aliment entièrement utilisé dans : {meal}" -#: apps/food/views.py:323 +#: apps/food/views.py:344 msgid "Add the ingredient:" msgstr "Ajouter l'ingrédient" -#: apps/food/views.py:349 +#: apps/food/views.py:370 #, python-brace-format msgid "Food fully used in : {meal.name}" msgstr "Aliment entièrement utilisé dans : {meal.name}" -#: apps/food/views.py:368 +#: apps/food/views.py:389 msgid "Update an aliment" msgstr "Modifier un aliment" -#: apps/food/views.py:416 +#: apps/food/views.py:437 msgid "Details of:" msgstr "Détails de :" -#: apps/food/views.py:426 apps/treasury/tables.py:149 +#: apps/food/views.py:447 apps/treasury/tables.py:149 msgid "Yes" msgstr "Oui" -#: apps/food/views.py:428 apps/member/models.py:99 apps/treasury/tables.py:149 +#: apps/food/views.py:449 apps/member/models.py:99 apps/treasury/tables.py:149 msgid "No" msgstr "Non" @@ -825,12 +859,6 @@ msgstr "nouvelles données" msgid "create" msgstr "créer" -#: apps/logs/models.py:65 apps/note/tables.py:230 apps/note/tables.py:279 -#: apps/permission/models.py:126 apps/treasury/tables.py:38 -#: apps/wei/tables.py:74 -msgid "delete" -msgstr "supprimer" - #: apps/logs/models.py:68 msgid "action" msgstr "action" @@ -935,12 +963,12 @@ msgid "Check this case if the Société Générale paid the inscription." msgstr "Cochez cette case si la Société Générale a payé l'inscription." #: apps/member/forms.py:185 apps/registration/forms.py:78 -#: apps/wei/forms/registration.py:97 +#: apps/wei/forms/registration.py:116 msgid "Credit type" msgstr "Type de rechargement" #: apps/member/forms.py:186 apps/registration/forms.py:79 -#: apps/wei/forms/registration.py:98 +#: apps/wei/forms/registration.py:117 msgid "No credit" msgstr "Pas de rechargement" @@ -949,13 +977,13 @@ msgid "You can credit the note of the user." msgstr "Vous pouvez créditer la note de l'utilisateur⋅rice avant l'adhésion." #: apps/member/forms.py:192 apps/registration/forms.py:84 -#: apps/wei/forms/registration.py:103 +#: apps/wei/forms/registration.py:122 msgid "Credit amount" msgstr "Montant à créditer" #: apps/member/forms.py:209 apps/note/templates/note/transaction_form.html:144 #: apps/registration/forms.py:101 apps/treasury/forms.py:135 -#: apps/wei/forms/registration.py:120 +#: apps/wei/forms/registration.py:139 msgid "Bank" msgstr "Banque" @@ -1160,7 +1188,7 @@ msgstr "Activez votre compte Note Kfet" #: apps/member/templates/member/includes/club_info.html:55 #: apps/member/templates/member/includes/profile_info.html:40 #: apps/registration/templates/registration/future_profile_detail.html:22 -#: apps/wei/templates/wei/base.html:70 +#: apps/wei/templates/wei/base.html:68 #: apps/wei/templates/wei/weimembership_form.html:20 msgid "email" msgstr "courriel" @@ -1212,7 +1240,7 @@ msgid "add to registration form" msgstr "ajouter au formulaire d'inscription" #: apps/member/models.py:268 apps/member/models.py:331 -#: apps/note/models/notes.py:176 +#: apps/note/models/notes.py:176 apps/wei/models.py:86 msgid "club" msgstr "club" @@ -1413,13 +1441,13 @@ msgstr "cotisation pour adhérer" #: apps/member/templates/member/includes/club_info.html:43 #: apps/member/templates/member/includes/profile_info.html:55 #: apps/treasury/templates/treasury/sogecredit_detail.html:24 -#: apps/wei/templates/wei/base.html:60 +#: apps/wei/templates/wei/base.html:58 msgid "balance" msgstr "solde du compte" #: apps/member/templates/member/includes/club_info.html:47 #: apps/member/templates/member/includes/profile_info.html:20 -#: apps/note/models/notes.py:287 apps/wei/templates/wei/base.html:66 +#: apps/note/models/notes.py:287 apps/wei/templates/wei/base.html:64 msgid "aliases" msgstr "alias" @@ -1597,7 +1625,7 @@ msgstr "Modifier le club" msgid "Add new member to the club" msgstr "Ajouter un·e nouvelleau membre au club" -#: apps/member/views.py:750 apps/wei/views.py:991 +#: apps/member/views.py:750 msgid "" "This user don't have enough money to join this club, and can't have a " "negative balance." @@ -1934,8 +1962,8 @@ msgstr "" "mode de paiement et un⋅e utilisateur⋅rice ou un club" #: apps/note/models/transactions.py:357 apps/note/models/transactions.py:360 -#: apps/note/models/transactions.py:363 apps/wei/views.py:996 -#: apps/wei/views.py:1000 +#: apps/note/models/transactions.py:363 apps/wei/views.py:1097 +#: apps/wei/views.py:1101 msgid "This field is required." msgstr "Ce champ est requis." @@ -1969,10 +1997,10 @@ msgstr "Ajouter" #: apps/note/tables.py:262 apps/note/templates/note/conso_form.html:151 #: apps/wei/tables.py:49 apps/wei/tables.py:50 -#: apps/wei/templates/wei/base.html:89 -#: apps/wei/templates/wei/bus_detail.html:20 +#: apps/wei/templates/wei/base.html:87 +#: apps/wei/templates/wei/bus_detail.html:24 #: apps/wei/templates/wei/busteam_detail.html:20 -#: apps/wei/templates/wei/busteam_detail.html:40 +#: apps/wei/templates/wei/busteam_detail.html:42 #: note_kfet/templates/oauth2_provider/application_detail.html:38 msgid "Edit" msgstr "Éditer" @@ -2440,7 +2468,7 @@ msgstr "" #: apps/registration/templates/registration/future_profile_detail.html:73 #: apps/wei/templates/wei/weimembership_form.html:127 -#: apps/wei/templates/wei/weimembership_form.html:186 +#: apps/wei/templates/wei/weimembership_form.html:196 msgid "Validate registration" msgstr "Valider l'inscription" @@ -2742,7 +2770,7 @@ msgid "Transaction count" msgstr "Nombre de transactions" #: apps/treasury/tables.py:71 apps/treasury/tables.py:73 -#: apps/wrapped/tables.py:42 +#: apps/wei/templates/wei/busteam_detail.html:22 apps/wrapped/tables.py:42 msgid "View" msgstr "Voir" @@ -2966,24 +2994,24 @@ msgstr "Liste des crédits de la Société générale" msgid "Manage credits from the Société générale" msgstr "Gérer les crédits de la Société générale" -#: apps/wei/apps.py:10 apps/wei/models.py:37 apps/wei/models.py:38 -#: apps/wei/models.py:62 apps/wei/models.py:178 +#: apps/wei/apps.py:10 apps/wei/models.py:42 apps/wei/models.py:43 +#: apps/wei/models.py:67 apps/wei/models.py:192 #: note_kfet/templates/base.html:108 msgid "WEI" msgstr "WEI" -#: apps/wei/forms/registration.py:36 +#: apps/wei/forms/registration.py:37 msgid "The selected user is not validated. Please validate its account first" msgstr "" "L'utilisateur·rice sélectionné·e n'est pas validé·e. Merci de d'abord " "valider son compte" -#: apps/wei/forms/registration.py:60 apps/wei/models.py:126 -#: apps/wei/models.py:324 +#: apps/wei/forms/registration.py:84 apps/wei/models.py:140 +#: apps/wei/models.py:348 msgid "bus" msgstr "bus" -#: apps/wei/forms/registration.py:61 +#: apps/wei/forms/registration.py:85 msgid "" "This choice is not definitive. The WEI organizers are free to attribute for " "you a bus and a team, in particular if you are a free eletron." @@ -2992,11 +3020,11 @@ msgstr "" "vous attribuer un bus et une équipe, en particulier si vous êtes un·e " "électron libre." -#: apps/wei/forms/registration.py:68 +#: apps/wei/forms/registration.py:92 msgid "Team" msgstr "Équipe" -#: apps/wei/forms/registration.py:70 +#: apps/wei/forms/registration.py:94 msgid "" "Leave this field empty if you won't be in a team (staff, bus chief, free " "electron)" @@ -3004,20 +3032,16 @@ msgstr "" "Laissez ce champ vide si vous ne serez pas dans une équipe (staff, chef de " "bus ou électron libre)" -#: apps/wei/forms/registration.py:76 apps/wei/forms/registration.py:91 -#: apps/wei/models.py:160 +#: apps/wei/forms/registration.py:100 apps/wei/forms/registration.py:110 +#: apps/wei/models.py:174 msgid "WEI Roles" msgstr "Rôles au WEI" -#: apps/wei/forms/registration.py:77 +#: apps/wei/forms/registration.py:101 msgid "Select the roles that you are interested in." msgstr "Sélectionnez les rôles qui vous intéressent." -#: apps/wei/forms/registration.py:86 apps/wei/models.py:188 -msgid "Caution check given" -msgstr "Chèque de caution donné" - -#: apps/wei/forms/registration.py:128 +#: apps/wei/forms/registration.py:147 msgid "This team doesn't belong to the given bus." msgstr "Cette équipe n'appartient pas à ce bus." @@ -3039,116 +3063,138 @@ msgstr "début" msgid "date end" msgstr "fin" -#: apps/wei/models.py:71 apps/wei/tables.py:305 +#: apps/wei/models.py:37 +#, fuzzy +#| msgid "total amount" +msgid "caution amount" +msgstr "montant total" + +#: apps/wei/models.py:76 apps/wei/tables.py:305 msgid "seat count in the bus" msgstr "nombre de sièges dans le bus" -#: apps/wei/models.py:83 +#: apps/wei/models.py:97 msgid "survey information" msgstr "informations sur le questionnaire" -#: apps/wei/models.py:84 +#: apps/wei/models.py:98 msgid "Information about the survey for new members, encoded in JSON" msgstr "" "Informations sur le sondage pour les nouveaux membres, encodées en JSON" -#: apps/wei/models.py:88 +#: apps/wei/models.py:102 msgid "Bus" msgstr "Bus" -#: apps/wei/models.py:89 apps/wei/templates/wei/weiclub_detail.html:51 +#: apps/wei/models.py:103 apps/wei/templates/wei/weiclub_detail.html:51 msgid "Buses" msgstr "Bus" -#: apps/wei/models.py:135 +#: apps/wei/models.py:149 msgid "color" msgstr "couleur" -#: apps/wei/models.py:136 +#: apps/wei/models.py:150 msgid "The color of the T-Shirt, stored with its number equivalent" msgstr "" "La couleur du T-Shirt, stocké sous la forme de son équivalent numérique" -#: apps/wei/models.py:147 +#: apps/wei/models.py:161 msgid "Bus team" msgstr "Équipe de bus" -#: apps/wei/models.py:148 +#: apps/wei/models.py:162 msgid "Bus teams" msgstr "Équipes de bus" -#: apps/wei/models.py:159 +#: apps/wei/models.py:173 msgid "WEI Role" msgstr "Rôle au WEI" -#: apps/wei/models.py:183 +#: apps/wei/models.py:197 msgid "Credit from Société générale" msgstr "Crédit de la Société générale" -#: apps/wei/models.py:192 apps/wei/templates/wei/weimembership_form.html:64 +#: apps/wei/models.py:202 apps/wei/views.py:984 +msgid "Caution check given" +msgstr "Chèque de caution donné" + +#: apps/wei/models.py:208 +msgid "Check" +msgstr "" + +#: apps/wei/models.py:209 +msgid "Note transaction" +msgstr "Transaction Note" + +#: apps/wei/models.py:212 +msgid "caution type" +msgstr "date de création" + +#: apps/wei/models.py:216 apps/wei/templates/wei/weimembership_form.html:64 msgid "birth date" msgstr "date de naissance" -#: apps/wei/models.py:198 apps/wei/models.py:208 +#: apps/wei/models.py:222 apps/wei/models.py:232 msgid "Male" msgstr "Homme" -#: apps/wei/models.py:199 apps/wei/models.py:209 +#: apps/wei/models.py:223 apps/wei/models.py:233 msgid "Female" msgstr "Femme" -#: apps/wei/models.py:200 +#: apps/wei/models.py:224 msgid "Non binary" msgstr "Non-binaire" -#: apps/wei/models.py:202 apps/wei/templates/wei/attribute_bus_1A.html:22 +#: apps/wei/models.py:226 apps/wei/templates/wei/attribute_bus_1A.html:22 #: apps/wei/templates/wei/weimembership_form.html:55 msgid "gender" msgstr "genre" -#: apps/wei/models.py:210 +#: apps/wei/models.py:234 msgid "Unisex" msgstr "Unisexe" -#: apps/wei/models.py:213 apps/wei/templates/wei/weimembership_form.html:58 +#: apps/wei/models.py:237 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:250 apps/wei/templates/wei/weimembership_form.html:61 msgid "clothing size" msgstr "taille de vêtement" -#: apps/wei/models.py:232 +#: apps/wei/models.py:256 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:261 apps/wei/templates/wei/weimembership_form.html:70 msgid "emergency contact name" msgstr "nom du contact en cas d'urgence" -#: apps/wei/models.py:238 +#: apps/wei/models.py:262 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:243 apps/wei/templates/wei/weimembership_form.html:73 +#: apps/wei/models.py:267 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:248 apps/wei/templates/wei/weimembership_form.html:52 +#: apps/wei/models.py:272 apps/wei/templates/wei/weimembership_form.html:52 msgid "first year" msgstr "première année" -#: apps/wei/models.py:249 +#: apps/wei/models.py:273 msgid "Tells if the user is new in the school." msgstr "Indique si l'utilisateur⋅rice est nouvelleeau dans l'école." -#: apps/wei/models.py:254 +#: apps/wei/models.py:278 msgid "registration information" msgstr "informations sur l'inscription" -#: apps/wei/models.py:255 +#: apps/wei/models.py:279 msgid "" "Information about the registration (buses for old members, survey for the " "new members), encoded in JSON" @@ -3156,27 +3202,27 @@ msgstr "" "Informations sur l'inscription (bus pour les 2A+, questionnaire pour les " "1A), encodées en JSON" -#: apps/wei/models.py:261 +#: apps/wei/models.py:285 msgid "WEI User" msgstr "Participant·e au WEI" -#: apps/wei/models.py:262 +#: apps/wei/models.py:286 msgid "WEI Users" msgstr "Participant·e·s au WEI" -#: apps/wei/models.py:334 +#: apps/wei/models.py:358 msgid "team" msgstr "équipe" -#: apps/wei/models.py:344 +#: apps/wei/models.py:368 msgid "WEI registration" msgstr "Inscription au WEI" -#: apps/wei/models.py:348 +#: apps/wei/models.py:372 msgid "WEI membership" msgstr "Adhésion au WEI" -#: apps/wei/models.py:349 +#: apps/wei/models.py:373 msgid "WEI memberships" msgstr "Adhésions au WEI" @@ -3204,8 +3250,8 @@ msgstr "Année" msgid "preferred bus" msgstr "bus préféré" -#: apps/wei/tables.py:210 apps/wei/templates/wei/bus_detail.html:32 -#: apps/wei/templates/wei/busteam_detail.html:50 +#: apps/wei/tables.py:210 apps/wei/templates/wei/bus_detail.html:36 +#: apps/wei/templates/wei/busteam_detail.html:52 msgid "Teams" msgstr "Équipes" @@ -3238,8 +3284,6 @@ msgid "Attribute first year members into buses" msgstr "Attribuer les 1A dans les bus" #: apps/wei/templates/wei/1A_list.html:15 -#, fuzzy -#| msgid "Start attribution!" msgid "Start attribution !" msgstr "Démarrer l'attribution !" @@ -3249,8 +3293,6 @@ msgstr "Répartition des bus" #: apps/wei/templates/wei/attribute_bus_1A.html:28 #: apps/wei/templates/wei/weimembership_form.html:67 -#, fuzzy -#| msgid "health issues" msgid "health issues or specific diet" msgstr "problèmes de santé" @@ -3270,53 +3312,59 @@ msgstr "Retour à la liste principale" msgid "WEI fee (paid students)" msgstr "Prix du WEI (élèves)" -#: apps/wei/templates/wei/base.html:47 apps/wei/templates/wei/base.html:54 -msgid "The BDE membership is included in the WEI registration." -msgstr "L'adhésion au BDE est offerte avec l'inscription au WEI." - -#: apps/wei/templates/wei/base.html:51 +#: apps/wei/templates/wei/base.html:47 msgid "WEI fee (unpaid students)" msgstr "Prix du WEI (étudiant⋅es)" -#: apps/wei/templates/wei/base.html:76 +#: apps/wei/templates/wei/base.html:53 +#, fuzzy +#| msgid "total amount" +msgid "Caution amount" +msgstr "montant total" + +#: apps/wei/templates/wei/base.html:74 msgid "WEI list" msgstr "Liste des WEI" -#: apps/wei/templates/wei/base.html:81 apps/wei/views.py:540 +#: apps/wei/templates/wei/base.html:79 apps/wei/views.py:550 msgid "Register 1A" msgstr "Inscrire un⋅e 1A" -#: apps/wei/templates/wei/base.html:85 apps/wei/views.py:626 +#: apps/wei/templates/wei/base.html:83 apps/wei/views.py:644 msgid "Register 2A+" msgstr "Inscrire un⋅e 2A+" -#: apps/wei/templates/wei/base.html:93 +#: apps/wei/templates/wei/base.html:91 msgid "Add bus" msgstr "Ajouter un bus" -#: apps/wei/templates/wei/base.html:97 +#: apps/wei/templates/wei/base.html:95 msgid "View WEI" msgstr "Voir le WEI" -#: apps/wei/templates/wei/bus_detail.html:22 -#: apps/wei/templates/wei/busteam_detail.html:22 +#: apps/wei/templates/wei/bus_detail.html:21 +msgid "View club" +msgstr "Voir le lub" + +#: apps/wei/templates/wei/bus_detail.html:26 +#: apps/wei/templates/wei/busteam_detail.html:24 msgid "Add team" msgstr "Ajouter une équipe" -#: apps/wei/templates/wei/bus_detail.html:45 +#: apps/wei/templates/wei/bus_detail.html:49 msgid "Members" msgstr "Membres" -#: apps/wei/templates/wei/bus_detail.html:54 -#: apps/wei/templates/wei/busteam_detail.html:60 +#: apps/wei/templates/wei/bus_detail.html:58 +#: apps/wei/templates/wei/busteam_detail.html:62 #: apps/wei/templates/wei/weimembership_list.html:31 msgid "View as PDF" msgstr "Télécharger au format PDF" #: apps/wei/templates/wei/survey.html:11 #: apps/wei/templates/wei/survey_closed.html:11 -#: apps/wei/templates/wei/survey_end.html:11 apps/wei/views.py:1046 -#: apps/wei/views.py:1101 apps/wei/views.py:1148 +#: apps/wei/templates/wei/survey_end.html:11 apps/wei/views.py:1159 +#: apps/wei/views.py:1214 apps/wei/views.py:1261 msgid "Survey WEI" msgstr "Questionnaire WEI" @@ -3361,7 +3409,7 @@ msgstr "Inscriptions non validées" msgid "Attribute buses" msgstr "Répartition dans les bus" -#: apps/wei/templates/wei/weiclub_list.html:14 apps/wei/views.py:80 +#: apps/wei/templates/wei/weiclub_list.html:14 apps/wei/views.py:82 msgid "Create WEI" msgstr "Créer un WEI" @@ -3442,28 +3490,42 @@ msgstr "" "mais invalide. Vous devrez la valider une fois que la banque aura validé la " "création du compte, ou bien changer de moyen de paiement." +#: apps/wei/templates/wei/weimembership_form.html:147 +msgid "Required payments:" +msgstr "Paiements requis" + #: apps/wei/templates/wei/weimembership_form.html:149 -#, python-format -msgid "" -"The note don't have enough money (%(balance)s, %(pretty_fee)s required). The " -"registration may fail if you don't credit the note now." -msgstr "" -"La note n'a pas assez d'argent (%(balance)s, %(pretty_fee)s requis). " -"L'inscription peut échouer si vous ne rechargez pas la note dès maintenant." +#, fuzzy, python-format +#| msgid "membership fee (paid students)" +msgid "Membership fees: %(amount)s" +msgstr "cotisation pour adhérer (normalien·ne élève)" -#: apps/wei/templates/wei/weimembership_form.html:157 +#: apps/wei/templates/wei/weimembership_form.html:153 #, python-format -msgid "" -"The note has enough money (%(pretty_fee)s required), the registration is " -"possible." -msgstr "" -"La note a assez d'argent (%(pretty_fee)s requis), l'inscription est possible." +msgid "Deposit (by Note transaction): %(amount)s" +msgstr "Caution (par transaction) : %(amount)s" -#: apps/wei/templates/wei/weimembership_form.html:166 +#: apps/wei/templates/wei/weimembership_form.html:156 +#: apps/wei/templates/wei/weimembership_form.html:163 +#, python-format +msgid "Total needed: %(total)s" +msgstr "Total nécessaire : %(total)s" + +#: apps/wei/templates/wei/weimembership_form.html:160 +#, python-format +msgid "Deposit (by check): %(amount)s" +msgstr "Caution (par chèque) : %(amount)s" + +#: apps/wei/templates/wei/weimembership_form.html:168 +#, python-format +msgid "Current balance: %(balance)s" +msgstr "Solde actuel : %(balance)s" + +#: apps/wei/templates/wei/weimembership_form.html:176 msgid "The user didn't give her/his caution check." msgstr "L'utilisateur⋅rice n'a pas donné son chèque de caution." -#: apps/wei/templates/wei/weimembership_form.html:174 +#: apps/wei/templates/wei/weimembership_form.html:184 msgid "" "This user is not a member of the Kfet club for the coming year. The " "membership will be processed automatically, the WEI registration includes " @@ -3495,72 +3557,70 @@ msgid "There is no pre-registration found with this pattern." msgstr "Il n'y a pas de pré-inscription en attente avec cette entrée." #: apps/wei/templates/wei/weiregistration_list.html:27 -#, fuzzy -#| msgid "View validated membershipis..." msgid "View validated memberships..." msgstr "Voir les adhésions validées..." -#: apps/wei/views.py:59 +#: apps/wei/views.py:61 msgid "Search WEI" msgstr "Chercher un WEI" -#: apps/wei/views.py:110 +#: apps/wei/views.py:112 msgid "WEI Detail" msgstr "Détails du WEI" -#: apps/wei/views.py:210 +#: apps/wei/views.py:212 msgid "View members of the WEI" msgstr "Voir les membres du WEI" -#: apps/wei/views.py:243 +#: apps/wei/views.py:245 msgid "Find WEI Membership" msgstr "Trouver une adhésion au WEI" -#: apps/wei/views.py:253 +#: apps/wei/views.py:255 msgid "View registrations to the WEI" msgstr "Voir les inscriptions au WEI" -#: apps/wei/views.py:282 +#: apps/wei/views.py:284 msgid "Find WEI Registration" msgstr "Trouver une inscription au WEI" -#: apps/wei/views.py:293 +#: apps/wei/views.py:295 msgid "Update the WEI" msgstr "Modifier le WEI" -#: apps/wei/views.py:314 +#: apps/wei/views.py:316 msgid "Create new bus" msgstr "Ajouter un nouveau bus" -#: apps/wei/views.py:352 +#: apps/wei/views.py:354 msgid "Update bus" msgstr "Modifier le bus" -#: apps/wei/views.py:384 +#: apps/wei/views.py:386 msgid "Manage bus" msgstr "Gérer le bus" -#: apps/wei/views.py:411 +#: apps/wei/views.py:413 msgid "Create new team" msgstr "Créer une nouvelle équipe" -#: apps/wei/views.py:451 +#: apps/wei/views.py:457 msgid "Update team" msgstr "Modifier l'équipe" -#: apps/wei/views.py:482 +#: apps/wei/views.py:492 msgid "Manage WEI team" msgstr "Gérer l'équipe WEI" -#: apps/wei/views.py:504 +#: apps/wei/views.py:514 msgid "Register first year student to the WEI" msgstr "Inscrire un⋅e 1A au WEI" -#: apps/wei/views.py:562 apps/wei/views.py:661 +#: apps/wei/views.py:580 apps/wei/views.py:689 msgid "This user is already registered to this WEI." msgstr "Cette personne est déjà inscrite au WEI." -#: apps/wei/views.py:567 +#: apps/wei/views.py:585 msgid "" "This user can't be in her/his first year since he/she has already " "participated to a WEI." @@ -3568,38 +3628,96 @@ msgstr "" "Cet⋅te utilisateur⋅rice ne peut pas être en première année puisqu'iel a déjà " "participé à un WEI." -#: apps/wei/views.py:590 +#: apps/wei/views.py:608 msgid "Register old student to the WEI" msgstr "Inscrire un⋅e 2A+ au WEI" -#: apps/wei/views.py:645 apps/wei/views.py:733 +#: apps/wei/views.py:663 apps/wei/views.py:768 msgid "You already opened an account in the Société générale." msgstr "Vous avez déjà ouvert un compte auprès de la société générale." -#: apps/wei/views.py:697 +#: apps/wei/views.py:676 apps/wei/views.py:785 +msgid "Choose how you want to pay the deposit" +msgstr "" + +#: apps/wei/views.py:728 msgid "Update WEI Registration" msgstr "Modifier l'inscription WEI" -#: apps/wei/views.py:807 +#: apps/wei/views.py:810 +msgid "No membership found for this registration" +msgstr "Pas d'adhésion trouvée pour cette inscription" + +#: apps/wei/views.py:819 +msgid "You don't have the permission to update memberships" +msgstr "" +"Vous n'avez pas la permission d'ajouter une instance du modèle {app_label}." +"{model_name}." + +#: apps/wei/views.py:825 +#, python-format +msgid "You don't have the permission to update the field %(field)s" +msgstr "Vous n'avez pas la permission de modifier le champ %(field)s" + +#: apps/wei/views.py:870 msgid "Delete WEI registration" msgstr "Supprimer l'inscription WEI" -#: apps/wei/views.py:818 +#: apps/wei/views.py:881 msgid "You don't have the right to delete this WEI registration." msgstr "Vous n'avez pas la permission de supprimer cette inscription au WEI." -#: apps/wei/views.py:836 +#: apps/wei/views.py:899 msgid "Validate WEI registration" msgstr "Valider l'inscription WEI" -#: apps/wei/views.py:1241 +#: apps/wei/views.py:985 +msgid "Please make sure the check is given before validating the registration" +msgstr "" +"Merci de vous assurer que le chèque a bien été donné avant de valider " +"l'adhésion" + +#: apps/wei/views.py:991 +msgid "Create deposit transaction" +msgstr "Créer une transaction de caution" + +#: apps/wei/views.py:992 +#, python-format +msgid "" +"A transaction of %(amount).2f€ will be created from the user's Note account" +msgstr "" +"Un transaction de %(amount).2f€ va être créée depuis la note de l'utilisateur" + +#: apps/wei/views.py:1087 +#, python-format +msgid "" +"This user doesn't have enough money to join this club and pay the deposit. " +"Current balance: %(balance)d€, credit: %(credit)d€, needed: %(needed)d€" +msgstr "" +"Cet⋅te utilisateur⋅rice n'a pas assez d'argent pour rejoindre ce club et " +"payer la cautionSolde actuel : %(balance)d€, crédit : %(credit)d€, requis : " +"%(needed)d€" + +#: apps/wei/views.py:1140 +#, fuzzy, python-format +#| msgid "total amount" +msgid "Caution %(name)s" +msgstr "montant total" + +#: apps/wei/views.py:1354 msgid "Attribute buses to first year members" msgstr "Répartir les 1A dans les bus" -#: apps/wei/views.py:1266 +#: apps/wei/views.py:1379 msgid "Attribute bus" msgstr "Attribuer un bus" +#: apps/wei/views.py:1419 +msgid "" +"No first year student without a bus found. Either all of them have a bus, or " +"none has filled the survey yet." +msgstr "" + #: apps/wrapped/apps.py:10 msgid "wrapped" msgstr "wrapped" @@ -4161,87 +4279,21 @@ msgstr "" "d'adhésion. Vous devez également valider votre adresse email en suivant le " "lien que vous avez reçu." -#, python-brace-format -#~ msgid "QR-code number {qr_code_number}" -#~ msgstr "numéro du QR-code {qr_code_number}" - -#~ msgid "was eaten" -#~ msgstr "a été mangé" - -#~ msgid "is active" -#~ msgstr "est en cours" - -#~ msgid "foods" -#~ msgstr "bouffes" - -#~ msgid "Arrival date" -#~ msgstr "Date d'arrivée" - -#~ msgid "Active" -#~ msgstr "Actif" - -#~ msgid "Eaten" -#~ msgstr "Mangé" - -#~ msgid "number" -#~ msgstr "numéro" - -#~ msgid "View details" -#~ msgstr "Voir plus" - -#~ msgid "Ready" -#~ msgstr "Prêt" - -#~ msgid "Creation date" -#~ msgstr "Date de création" - -#~ msgid "Ingredients" -#~ msgstr "Ingrédients" - -#~ msgid "Open" -#~ msgstr "Open" - -#~ msgid "All meals" -#~ msgstr "Tout les plats" - -#~ msgid "There is no meal." -#~ msgstr "Il n'y a pas de plat" - -#~ msgid "The product is already prepared" -#~ msgstr "Le produit est déjà prêt" - -#~ msgid "Add a new basic food with QRCode" -#~ msgstr "Ajouter un nouvel ingrédient avec un QR-code" - -#~ msgid "QRCode" -#~ msgstr "QR-code" - -#~ msgid "Add a new meal" -#~ msgstr "Ajouter un nouveau plat" - -#~ msgid "Update a meal" -#~ msgstr "Modifier le plat" - -#, fuzzy -#~| msgid "invalidate" -#~ msgid "Enter a valid color." -#~ msgstr "dévalider" - -#, fuzzy -#~| msgid "invalidate" -#~ msgid "Enter a valid value." -#~ msgstr "dévalider" - -#, fuzzy -#~| msgid "Invitation" -#~ msgid "Syndication" -#~ msgstr "Invitation" +#, fuzzy, python-format +#~| msgid "Creation date" +#~ msgid "Deposit %(name)s" +#~ msgstr "Caution %(name)s" #, fuzzy #~| msgid "There is no results." #~ msgid "That page contains no results" #~ msgstr "Il n'y a pas de résultat." +#, fuzzy +#~| msgid "invalidate" +#~ msgid "Enter a valid value." +#~ msgstr "dévalider" + #, fuzzy #~| msgid "invalidate" #~ msgid "Enter a valid URL." @@ -4282,6 +4334,11 @@ msgstr "" #~ msgid "%(model_name)s with this %(field_labels)s already exists." #~ msgstr "Un modèle de transaction avec un nom similaire existe déjà" +#, fuzzy, python-format +#~| msgid "This activity is not validated yet." +#~ msgid "Value %(value)r is not a valid choice." +#~ msgstr "Cette activité n'est pas encore validée." + #, fuzzy #~| msgid "This image cannot be loaded." #~ msgid "This field cannot be null." @@ -4327,11 +4384,26 @@ msgstr "" #~ msgid "IP address" #~ msgstr "Adresse IP" +#, fuzzy, python-format +#~| msgid "This activity is not validated yet." +#~ msgid "“%(value)s” is not a valid UUID." +#~ msgstr "Cette activité n'est pas encore validée." + #, fuzzy #~| msgid "Invoice identifier" #~ msgid "Universally unique identifier" #~ msgstr "Numéro de facture" +#, fuzzy +#~| msgid "Object" +#~ msgid "A JSON object" +#~ msgstr "Objet" + +#, fuzzy +#~| msgid "This address must be valid." +#~ msgid "Value must be valid JSON." +#~ msgstr "Cette adresse doit être valide." + #, fuzzy, python-format #~| msgid "A template with this name already exist" #~ msgid "%(model)s instance with %(field)s %(value)r does not exist." @@ -4377,9 +4449,19 @@ msgstr "" #~ msgid "Enter a valid UUID." #~ msgstr "dévalider" +#, fuzzy +#~| msgid "invalidate" +#~ msgid "Enter a valid JSON." +#~ msgstr "dévalider" + +#, fuzzy +#~| msgid "order" +#~ msgid "Order" +#~ msgstr "consigne" + #, fuzzy, python-format #~| msgid "This activity is not validated yet." -#~ msgid "\"%(pk)s\" is not a valid value." +#~ msgid "“%(pk)s” is not a valid value." #~ msgstr "Cette activité n'est pas encore validée." #, fuzzy @@ -4392,11 +4474,21 @@ msgstr "" #~ msgid "Change" #~ msgstr "modifier" +#, fuzzy +#~| msgid "Wrapped" +#~ msgid "Wed" +#~ msgstr "Wrapped" + #, fuzzy #~| msgid "Search" #~ msgid "March" #~ msgstr "Recherche" +#, fuzzy +#~| msgid "day" +#~ msgid "May" +#~ msgstr "jour" + #, fuzzy #~| msgid "member" #~ msgid "September" @@ -4422,23 +4514,50 @@ msgstr "" #~ msgid "feb" #~ msgstr "cotisation" +#, fuzzy +#~| msgid "day" +#~ msgid "may" +#~ msgstr "jour" + +#, fuzzy +#~| msgid "add" +#~ msgid "jun" +#~ msgstr "ajouter" + #, fuzzy #~| msgid "product" #~ msgid "oct" #~ msgstr "produit" +#, fuzzy +#~| msgid "bde" +#~ msgid "dec" +#~ msgstr "bde" + #, fuzzy #~| msgid "Search" #~ msgctxt "abbrev. month" #~ msgid "March" #~ msgstr "Recherche" +#, fuzzy +#~| msgid "day" +#~ msgctxt "abbrev. month" +#~ msgid "May" +#~ msgstr "jour" + #, fuzzy #~| msgid "Search" #~ msgctxt "alt. month" #~ msgid "March" #~ msgstr "Recherche" +#, fuzzy +#~| msgid "day" +#~ msgctxt "alt. month" +#~ msgid "May" +#~ msgstr "jour" + #, fuzzy #~| msgid "member" #~ msgctxt "alt. month" @@ -4462,13 +4581,25 @@ msgstr "" #~ msgid "This is not a valid IPv6 address." #~ msgstr "Cette activité n'est pas encore validée." +#, fuzzy +#~| msgid "hour" +#~ msgid "or" +#~ msgstr "heure" + #, fuzzy, python-format #~| msgid "year" -#~ msgid "%d year" -#~ msgid_plural "%d years" +#~ msgid "%(num)d year" +#~ msgid_plural "%(num)d years" #~ msgstr[0] "année" #~ msgstr[1] "année" +#, fuzzy, python-format +#~| msgid "minute" +#~ msgid "%(num)d minute" +#~ msgid_plural "%(num)d minutes" +#~ msgstr[0] "minute" +#~ msgstr[1] "minute" + #, fuzzy #~| msgid "No reason specified" #~ msgid "No year specified" @@ -4494,6 +4625,11 @@ msgstr "" #~ msgid "Confidential" #~ msgstr "Secret client" +#, fuzzy +#~| msgid "public" +#~ msgid "Public" +#~ msgstr "public" + #, fuzzy #~| msgid "Authorization:" #~ msgid "Authorization code" @@ -4526,9 +4662,101 @@ msgstr "" #, fuzzy #~| msgid "Application requires following permissions:" -#~ msgid "Application requires following permissions" +#~ msgid "Application requires the following permissions" #~ msgstr "L'application requiert les permissions suivantes :" +#~ msgid "Deposit amount" +#~ msgstr "Caution" + +#~ msgid "The BDE membership is included in the WEI registration." +#~ msgstr "L'adhésion au BDE est offerte avec l'inscription au WEI." + +#, python-format +#~ msgid "" +#~ "The note don't have enough money (%(balance)s, %(pretty_fee)s required). " +#~ "The registration may fail if you don't credit the note now." +#~ msgstr "" +#~ "La note n'a pas assez d'argent (%(balance)s, %(pretty_fee)s requis). " +#~ "L'inscription peut échouer si vous ne rechargez pas la note dès " +#~ "maintenant." + +#, python-format +#~ msgid "" +#~ "The note has enough money (%(pretty_fee)s required), the registration is " +#~ "possible." +#~ msgstr "" +#~ "La note a assez d'argent (%(pretty_fee)s requis), l'inscription est " +#~ "possible." + +#, fuzzy +#~| msgid "You don't have the right to delete this WEI registration." +#~ msgid "You don't have the permission to validate registrations" +#~ msgstr "" +#~ "Vous n'avez pas la permission de supprimer cette inscription au WEI." + +#, python-brace-format +#~ msgid "QR-code number {qr_code_number}" +#~ msgstr "numéro du QR-code {qr_code_number}" + +#~ msgid "was eaten" +#~ msgstr "a été mangé" + +#~ msgid "is active" +#~ msgstr "est en cours" + +#~ msgid "foods" +#~ msgstr "bouffes" + +#~ msgid "Arrival date" +#~ msgstr "Date d'arrivée" + +#~ msgid "Active" +#~ msgstr "Actif" + +#~ msgid "Eaten" +#~ msgstr "Mangé" + +#~ msgid "number" +#~ msgstr "numéro" + +#~ msgid "View details" +#~ msgstr "Voir plus" + +#~ msgid "Ready" +#~ msgstr "Prêt" + +#~ msgid "Ingredients" +#~ msgstr "Ingrédients" + +#~ msgid "Open" +#~ msgstr "Open" + +#~ msgid "All meals" +#~ msgstr "Tout les plats" + +#~ msgid "There is no meal." +#~ msgstr "Il n'y a pas de plat" + +#~ msgid "The product is already prepared" +#~ msgstr "Le produit est déjà prêt" + +#~ msgid "Add a new basic food with QRCode" +#~ msgstr "Ajouter un nouvel ingrédient avec un QR-code" + +#~ msgid "QRCode" +#~ msgstr "QR-code" + +#~ msgid "Add a new meal" +#~ msgstr "Ajouter un nouveau plat" + +#~ msgid "Update a meal" +#~ msgstr "Modifier le plat" + +#, fuzzy +#~| msgid "invalidate" +#~ msgid "Enter a valid color." +#~ msgstr "dévalider" + #~ msgid "pasta" #~ msgstr "pâtes" diff --git a/note_kfet/inputs.py b/note_kfet/inputs.py index a05b61e4..6de3c7d9 100644 --- a/note_kfet/inputs.py +++ b/note_kfet/inputs.py @@ -63,8 +63,16 @@ class ColorWidget(Widget): def format_value(self, value): if value is None: value = 0xFFFFFF - return "#{:06X}".format(value) + if isinstance(value, str): + return value # Assume it's already a hex string like "#FFAA33" + try: + return "#{:06X}".format(value) + except Exception: + return "#FFFFFF" + def value_from_datadict(self, data, files, name): val = super().value_from_datadict(data, files, name) - return int(val[1:], 16) + if val: + return int(val[1:], 16) + return None \ No newline at end of file diff --git a/note_kfet/templates/colorfield/color.html b/note_kfet/templates/colorfield/color.html new file mode 100644 index 00000000..5c0457c5 --- /dev/null +++ b/note_kfet/templates/colorfield/color.html @@ -0,0 +1,5 @@ + \ No newline at end of file