diff --git a/README.md b/README.md
index 77166649..d9c436ec 100644
--- a/README.md
+++ b/README.md
@@ -95,7 +95,7 @@ Sinon vous pouvez suivre les étapes décrites ci-dessous.
python3-django-extensions python3-django-filters python3-django-polymorphic \
python3-djangorestframework python3-django-oauth-toolkit python3-psycopg2 python3-pil \
python3-babel python3-lockfile python3-pip python3-phonenumbers python3-memcache ipython3 \
- python3-bs4 python3-setuptools \
+ python3-bs4 python3-setuptools python3-docutils \
memcached uwsgi uwsgi-plugin-python3 \
texlive-xetex gettext libjs-bootstrap4 fonts-font-awesome \
nginx python3-venv git acl
diff --git a/apps/member/forms.py b/apps/member/forms.py
index 5081a12e..05940a06 100644
--- a/apps/member/forms.py
+++ b/apps/member/forms.py
@@ -150,6 +150,7 @@ class ClubForm(forms.ModelForm):
"membership_fee_unpaid": AmountInput(),
"parent_club": Autocomplete(
Club,
+ resetable=True,
attrs={
'api_url': '/api/members/club/',
}
diff --git a/apps/member/migrations/0003_create_bde_and_kfet.py b/apps/member/migrations/0003_create_bde_and_kfet.py
index 5f218040..d2f80c2d 100644
--- a/apps/member/migrations/0003_create_bde_and_kfet.py
+++ b/apps/member/migrations/0003_create_bde_and_kfet.py
@@ -7,6 +7,7 @@ def create_bde_and_kfet(apps, schema_editor):
"""
Club = apps.get_model("member", "club")
NoteClub = apps.get_model("note", "noteclub")
+ Alias = apps.get_model("note", "alias")
ContentType = apps.get_model('contenttypes', 'ContentType')
polymorphic_ctype_id = ContentType.objects.get_for_model(NoteClub).id
@@ -45,6 +46,19 @@ def create_bde_and_kfet(apps, schema_editor):
polymorphic_ctype_id=polymorphic_ctype_id,
)
+ Alias.objects.get_or_create(
+ id=5,
+ note_id=5,
+ name="BDE",
+ normalized_name="bde",
+ )
+ Alias.objects.get_or_create(
+ id=6,
+ note_id=6,
+ name="Kfet",
+ normalized_name="kfet",
+ )
+
class Migration(migrations.Migration):
dependencies = [
diff --git a/apps/member/templatetags/__init__.py b/apps/member/templatetags/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/apps/member/templatetags/memberinfo.py b/apps/member/templatetags/memberinfo.py
new file mode 100644
index 00000000..d2b4986a
--- /dev/null
+++ b/apps/member/templatetags/memberinfo.py
@@ -0,0 +1,22 @@
+# Copyright (C) 2018-2020 by BDE ENS Paris-Saclay
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+from datetime import date
+
+from django import template
+from django.contrib.auth.models import User
+
+from ..models import Club, Membership
+
+
+def is_member(user, club):
+ if isinstance(user, str):
+ club = User.objects.get(username=user)
+ if isinstance(club, str):
+ club = Club.objects.get(name=club)
+ return Membership.objects\
+ .filter(user=user, club=club, date_start__lte=date.today(), date_end__gte=date.today()).exists()
+
+
+register = template.Library()
+register.filter("is_member", is_member)
diff --git a/apps/member/tests/test_login.py b/apps/member/tests/test_login.py
index e022c4ea..c9fabf82 100644
--- a/apps/member/tests/test_login.py
+++ b/apps/member/tests/test_login.py
@@ -41,7 +41,7 @@ class TemplateLoggedInTests(TestCase):
password="adminadmin",
permission_mask=3,
))
- self.assertRedirects(response, settings.LOGIN_REDIRECT_URL, 302, 200)
+ self.assertRedirects(response, settings.LOGIN_REDIRECT_URL, 302, 302)
def test_logout(self):
response = self.client.get(reverse("logout"))
diff --git a/apps/member/views.py b/apps/member/views.py
index ab4a5bc7..f736f47e 100644
--- a/apps/member/views.py
+++ b/apps/member/views.py
@@ -158,7 +158,11 @@ class UserDetailView(ProtectQuerysetMixin, LoginRequiredMixin, DetailView):
context['history_list'] = history_table
club_list = Membership.objects.filter(user=user, date_end__gte=date.today() - timedelta(days=15))\
- .filter(PermissionBackend.filter_queryset(self.request.user, Membership, "view"))
+ .filter(PermissionBackend.filter_queryset(self.request.user, Membership, "view"))\
+ .order_by("club__name", "-date_start")
+ # Display only the most recent membership
+ club_list = club_list.distinct("club__name")\
+ if settings.DATABASES["default"]["ENGINE"] == 'django.db.backends.postgresql' else club_list
membership_table = MembershipTable(data=club_list, prefix='membership-')
membership_table.paginate(per_page=10, page=self.request.GET.get("membership-page", 1))
context['club_list'] = membership_table
@@ -410,7 +414,11 @@ class ClubDetailView(ProtectQuerysetMixin, LoginRequiredMixin, DetailView):
club_member = Membership.objects.filter(
club=club,
date_end__gte=date.today() - timedelta(days=15),
- ).filter(PermissionBackend.filter_queryset(self.request.user, Membership, "view"))
+ ).filter(PermissionBackend.filter_queryset(self.request.user, Membership, "view"))\
+ .order_by("user__username", "-date_start")
+ # Display only the most recent membership
+ club_member = club_member.distinct("user__username")\
+ if settings.DATABASES["default"]["ENGINE"] == 'django.db.backends.postgresql' else club_member
membership_table = MembershipTable(data=club_member, prefix="membership-")
membership_table.paginate(per_page=5, page=self.request.GET.get('membership-page', 1))
diff --git a/apps/note/static/note/js/transfer.js b/apps/note/static/note/js/transfer.js
index f6b23b29..e8b6cf52 100644
--- a/apps/note/static/note/js/transfer.js
+++ b/apps/note/static/note/js/transfer.js
@@ -67,7 +67,11 @@ $(document).ready(function () {
last.quantity = 1
- if (!last.note.user) {
+ if (last.note.club) {
+ $('#last_name').val(last.note.name)
+ $('#first_name').val(last.note.name)
+ }
+ else if (!last.note.user) {
$.getJSON('/api/note/note/' + last.note.id + '/?format=json', function (note) {
last.note.user = note.user
$.getJSON('/api/user/' + last.note.user + '/', function (user) {
@@ -246,7 +250,7 @@ $('#btn_transfer').click(function () {
error = true
}
- if (!reason_field.val()) {
+ if (!reason_field.val() && $('#type_transfer').is(':checked')) {
reason_field.addClass('is-invalid')
$('#reason-required').html('Ce champ est requis.')
error = true
diff --git a/apps/permission/fixtures/initial.json b/apps/permission/fixtures/initial.json
index 6769c0ae..78891499 100644
--- a/apps/permission/fixtures/initial.json
+++ b/apps/permission/fixtures/initial.json
@@ -115,7 +115,7 @@
"type": "view",
"mask": 1,
"field": "",
- "permanent": true,
+ "permanent": false,
"description": "Voir les aliases des notes des clubs et des adhérents du club Kfet"
}
},
@@ -2791,6 +2791,22 @@
"description": "Voir tous les alias, y compris ceux des non adhérents"
}
},
+ {
+ "model": "permission.permission",
+ "pk": 179,
+ "fields": {
+ "model": [
+ "note",
+ "alias"
+ ],
+ "query": "{\"note__noteuser__user\": [\"user\"]}",
+ "type": "view",
+ "mask": 1,
+ "field": "",
+ "permanent": true,
+ "description": "Voir ses propres alias, pour toujours"
+ }
+ },
{
"model": "permission.role",
"pk": 1,
@@ -2861,7 +2877,8 @@
157,
158,
159,
- 160
+ 160,
+ 179
]
}
},
@@ -2965,6 +2982,7 @@
31,
32,
33,
+ 51,
53,
54,
55,
diff --git a/apps/registration/forms.py b/apps/registration/forms.py
index c164fdfa..abb2aaac 100644
--- a/apps/registration/forms.py
+++ b/apps/registration/forms.py
@@ -44,6 +44,15 @@ class SignUpForm(UserCreationForm):
fields = ('first_name', 'last_name', 'username', 'email', )
+class DeclareSogeAccountOpenedForm(forms.Form):
+ soge_account = forms.BooleanField(
+ label=_("I declare that I opened a bank account in the Société générale with the BDE partnership."),
+ help_text=_("Warning: this engages you to open your bank account. If you finally decides to don't open your "
+ "account, you will have to pay the BDE membership."),
+ required=False,
+ )
+
+
class WEISignupForm(forms.Form):
wei_registration = forms.BooleanField(
label=_("Register to the WEI"),
diff --git a/apps/registration/templates/registration/future_profile_detail.html b/apps/registration/templates/registration/future_profile_detail.html
index 2c0e4f04..d8f061c0 100644
--- a/apps/registration/templates/registration/future_profile_detail.html
+++ b/apps/registration/templates/registration/future_profile_detail.html
@@ -56,6 +56,13 @@ SPDX-License-Identifier: GPL-3.0-or-later
{% trans "Validate account" %}
+
+ {% if declare_soge_account %}
+
+ {% trans "The user declared that he/she opened a bank account in the Société générale." %}
+
+ {% endif %}
+
{% csrf_token %}
{{ form|crispy }}
@@ -104,7 +111,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
soge_field.change(fillFields);
- {% if object.profile.soge %}
+ {% if declare_soge_account %}
soge_field.attr('checked', true);
fillFields();
{% endif %}
diff --git a/apps/registration/views.py b/apps/registration/views.py
index 0b642efd..1ec069a4 100644
--- a/apps/registration/views.py
+++ b/apps/registration/views.py
@@ -24,7 +24,7 @@ from permission.models import Role
from permission.views import ProtectQuerysetMixin
from treasury.models import SogeCredit
-from .forms import SignUpForm, ValidationForm
+from .forms import SignUpForm, ValidationForm, DeclareSogeAccountOpenedForm
from .tables import FutureUserTable
from .tokens import email_validation_token
@@ -42,6 +42,7 @@ class UserCreateView(CreateView):
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context["profile_form"] = self.second_form(self.request.POST if self.request.POST else None)
+ context["soge_form"] = DeclareSogeAccountOpenedForm(self.request.POST if self.request.POST else None)
del context["profile_form"].fields["section"]
del context["profile_form"].fields["report_frequency"]
del context["profile_form"].fields["last_report"]
@@ -72,6 +73,13 @@ class UserCreateView(CreateView):
user.profile.send_email_validation_link()
+ soge_form = DeclareSogeAccountOpenedForm(self.request.POST)
+ if "soge_account" in soge_form.data and soge_form.data["soge_account"]:
+ # If the user declares that a bank account got opened, prepare the soge credit to warn treasurers
+ soge_credit = SogeCredit(user=user)
+ soge_credit._force_save = True
+ soge_credit.save()
+
return super().form_valid(form)
def get_success_url(self):
@@ -227,6 +235,8 @@ class FutureUserDetailView(ProtectQuerysetMixin, LoginRequiredMixin, FormMixin,
fee += 8000
ctx["total_fee"] = "{:.02f}".format(fee / 100, )
+ ctx["declare_soge_account"] = True
+
return ctx
def get_form(self, form_class=None):
@@ -307,6 +317,13 @@ class FutureUserDetailView(ProtectQuerysetMixin, LoginRequiredMixin, FormMixin,
user.profile.save()
user.refresh_from_db()
+ if not soge and SogeCredit.objects.filter(user=user).exists():
+ # If the user declared that a bank account was opened but in the validation form the SoGé case was
+ # unchecked, delete the associated credit
+ soge_credit = SogeCredit.objects.get(user=user)
+ soge_credit._force_delete = True
+ soge_credit.delete()
+
if credit_type is not None and credit_amount > 0:
# Credit the note
SpecialTransaction.objects.create(
@@ -373,6 +390,8 @@ class FutureUserInvalidateView(ProtectQuerysetMixin, LoginRequiredMixin, View):
user = User.objects.filter(profile__registration_valid=False)\
.filter(PermissionBackend.filter_queryset(request.user, User, "change", "is_valid"))\
.get(pk=self.kwargs["pk"])
+ # Delete associated soge credits before
+ SogeCredit.objects.filter(user=user).delete()
user.delete()
diff --git a/apps/treasury/models.py b/apps/treasury/models.py
index cabec830..b1ca407f 100644
--- a/apps/treasury/models.py
+++ b/apps/treasury/models.py
@@ -10,7 +10,7 @@ from django.db.models import Q
from django.template.loader import render_to_string
from django.utils import timezone
from django.utils.translation import gettext_lazy as _
-from note.models import NoteSpecial, SpecialTransaction, MembershipTransaction
+from note.models import NoteSpecial, SpecialTransaction, MembershipTransaction, NoteUser
class Invoice(models.Model):
@@ -335,6 +335,11 @@ class SogeCredit(models.Model):
@transaction.atomic
def save(self, *args, **kwargs):
+ # This is a pre-registered user that declared that a SoGé account was opened.
+ # No note exists yet.
+ if not NoteUser.objects.filter(user=self.user).exists():
+ return super().save(*args, **kwargs)
+
if not self.credit_transaction:
credit_transaction = SpecialTransaction(
source=NoteSpecial.objects.get(special_type="Virement bancaire"),
diff --git a/apps/treasury/templates/treasury/sogecredit_list.html b/apps/treasury/templates/treasury/sogecredit_list.html
index c561da72..2bcf3155 100644
--- a/apps/treasury/templates/treasury/sogecredit_list.html
+++ b/apps/treasury/templates/treasury/sogecredit_list.html
@@ -60,7 +60,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
let pattern = searchbar_obj.val();
$("#credits_table").load(location.pathname + "?search=" + pattern.replace(" ", "%20") + (
- invalid_only_obj.is(':checked') ? "&valid=false" : "") + " #credits_table");
+ invalid_only_obj.is(':checked') ? "" : "&valid=1") + " #credits_table");
$(".table-row").click(function () {
window.document.location = $(this).data("href");
diff --git a/apps/treasury/views.py b/apps/treasury/views.py
index 1b6dc127..08f190c2 100644
--- a/apps/treasury/views.py
+++ b/apps/treasury/views.py
@@ -431,7 +431,7 @@ class SogeCreditListView(LoginRequiredMixin, ProtectQuerysetMixin, SingleTableVi
if "valid" not in self.request.GET or not self.request.GET["valid"]:
qs = qs.filter(credit_transaction__valid=False)
- return qs[:20]
+ return qs
class SogeCreditManageView(LoginRequiredMixin, ProtectQuerysetMixin, BaseFormView, DetailView):
diff --git a/locale/de/LC_MESSAGES/django.po b/locale/de/LC_MESSAGES/django.po
index b3e882a2..90f99283 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: 2020-09-19 22:00+0200\n"
+"POT-Creation-Date: 2020-10-07 11:42+0200\n"
"PO-Revision-Date: 2020-09-13 12:39+0200\n"
"Last-Translator: elkmaennchen \n"
"Language-Team: \n"
@@ -52,9 +52,9 @@ msgstr "Sie dürfen höchstens 3 Leute zu dieser Veranstaltung einladen."
#: apps/member/models.py:199
#: apps/member/templates/member/includes/club_info.html:4
#: apps/member/templates/member/includes/profile_info.html:4
-#: apps/note/models/notes.py:260 apps/note/models/transactions.py:26
-#: apps/note/models/transactions.py:46 apps/note/models/transactions.py:297
-#: apps/permission/models.py:330
+#: apps/note/models/notes.py:232 apps/note/models/transactions.py:26
+#: apps/note/models/transactions.py:46 apps/note/models/transactions.py:300
+#: apps/permission/models.py:333
#: apps/registration/templates/registration/future_profile_detail.html:16
#: apps/wei/models.py:66 apps/wei/models.py:118
#: apps/wei/templates/wei/base.html:26
@@ -90,8 +90,8 @@ msgstr "Vearnstaltungarte"
#: apps/activity/models.py:68
#: apps/activity/templates/activity/includes/activity_info.html:19
-#: apps/note/models/transactions.py:81 apps/permission/models.py:110
-#: apps/permission/models.py:189 apps/wei/models.py:72 apps/wei/models.py:129
+#: apps/note/models/transactions.py:81 apps/permission/models.py:113
+#: apps/permission/models.py:192 apps/wei/models.py:72 apps/wei/models.py:129
msgid "description"
msgstr "Beschreibung"
@@ -105,8 +105,8 @@ msgstr "Wo findet die Veranstaltung statt ? (z.B Kfet)"
#: apps/activity/models.py:83
#: apps/activity/templates/activity/includes/activity_info.html:22
-#: apps/note/models/notes.py:236 apps/note/models/transactions.py:66
-#: apps/permission/models.py:164
+#: apps/note/models/notes.py:208 apps/note/models/transactions.py:66
+#: apps/permission/models.py:167
msgid "type"
msgstr "Type"
@@ -254,15 +254,15 @@ msgstr "entfernen"
msgid "Type"
msgstr "Type"
-#: apps/activity/tables.py:82 apps/member/forms.py:185
-#: apps/registration/forms.py:81 apps/treasury/forms.py:130
+#: apps/activity/tables.py:82 apps/member/forms.py:186
+#: apps/registration/forms.py:90 apps/treasury/forms.py:130
#: apps/wei/forms/registration.py:96
msgid "Last name"
msgstr "Nachname"
-#: apps/activity/tables.py:84 apps/member/forms.py:190
+#: apps/activity/tables.py:84 apps/member/forms.py:191
#: apps/note/templates/note/transaction_form.html:134
-#: apps/registration/forms.py:86 apps/treasury/forms.py:132
+#: apps/registration/forms.py:95 apps/treasury/forms.py:132
#: apps/wei/forms/registration.py:101
msgid "First name"
msgstr "Vorname"
@@ -280,7 +280,7 @@ msgid "Guests list"
msgstr "Gastliste"
#: apps/activity/templates/activity/activity_entry.html:14
-#: apps/note/models/transactions.py:253
+#: apps/note/models/transactions.py:256
#: apps/note/templates/note/transaction_form.html:16
#: apps/note/templates/note/transaction_form.html:148
#: note_kfet/templates/base.html:70
@@ -288,13 +288,13 @@ msgid "Transfer"
msgstr "Überweisen"
#: apps/activity/templates/activity/activity_entry.html:18
-#: apps/note/models/transactions.py:313
+#: apps/note/models/transactions.py:316
#: apps/note/templates/note/transaction_form.html:21
msgid "Credit"
msgstr "Kredit"
#: apps/activity/templates/activity/activity_entry.html:21
-#: apps/note/models/transactions.py:313
+#: apps/note/models/transactions.py:316
#: apps/note/templates/note/transaction_form.html:25
msgid "Debit"
msgstr "Soll"
@@ -374,39 +374,39 @@ msgstr "bearbeiten"
msgid "Invite"
msgstr "Einladen"
-#: apps/activity/views.py:34
+#: apps/activity/views.py:36
msgid "Create new activity"
msgstr "Neue Veranstaltung schaffen"
-#: apps/activity/views.py:65 note_kfet/templates/base.html:88
+#: apps/activity/views.py:67 note_kfet/templates/base.html:88
msgid "Activities"
msgstr "Veranstaltungen"
-#: apps/activity/views.py:93
+#: apps/activity/views.py:95
msgid "Activity detail"
msgstr "Veranstaltunginfo"
-#: apps/activity/views.py:113
+#: apps/activity/views.py:115
msgid "Update activity"
msgstr "Veranstaltung bearbeiten"
-#: apps/activity/views.py:140
+#: apps/activity/views.py:142
msgid "Invite guest to the activity \"{}\""
msgstr "Gast zur Veranstaltung \"{}\" einladen"
-#: apps/activity/views.py:175
+#: apps/activity/views.py:177
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:178
+#: apps/activity/views.py:180
msgid "This activity does not support activity entries."
msgstr "Diese Veranstaltung braucht nicht Eintritt."
-#: apps/activity/views.py:181
+#: apps/activity/views.py:183
msgid "This activity is closed."
msgstr "Diese Veranstaltung ist geschlossen."
-#: apps/activity/views.py:277
+#: apps/activity/views.py:279
msgid "Entry for activity \"{}\""
msgstr "Eintritt zur Veranstaltung \"{}\""
@@ -422,7 +422,7 @@ msgstr "Logs"
msgid "IP Address"
msgstr "IP Adresse"
-#: apps/logs/models.py:36 apps/permission/models.py:134
+#: apps/logs/models.py:36 apps/permission/models.py:137
msgid "model"
msgstr "Model"
@@ -443,7 +443,7 @@ msgid "create"
msgstr "schaffen"
#: apps/logs/models.py:65 apps/note/tables.py:165 apps/note/tables.py:201
-#: apps/permission/models.py:127 apps/treasury/tables.py:38
+#: apps/permission/models.py:130 apps/treasury/tables.py:38
#: apps/wei/tables.py:75
msgid "delete"
msgstr "entfernen"
@@ -524,48 +524,48 @@ msgid "This image cannot be loaded."
msgstr "Dieses Bild kann nicht geladen werden."
#: apps/member/forms.py:141 apps/member/views.py:100
-#: apps/registration/forms.py:33 apps/registration/views.py:244
+#: apps/registration/forms.py:33 apps/registration/views.py:254
msgid "An alias with a similar name already exists."
msgstr "Ein ähnliches Alias ist schon benutzt."
-#: apps/member/forms.py:164 apps/registration/forms.py:61
+#: apps/member/forms.py:165 apps/registration/forms.py:70
msgid "Inscription paid by Société Générale"
msgstr "Mitgliedschaft von der Société Générale bezahlt"
-#: apps/member/forms.py:166 apps/registration/forms.py:63
+#: apps/member/forms.py:167 apps/registration/forms.py:72
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:171 apps/registration/forms.py:68
+#: apps/member/forms.py:172 apps/registration/forms.py:77
#: apps/wei/forms/registration.py:83
msgid "Credit type"
msgstr "Kredittype"
-#: apps/member/forms.py:172 apps/registration/forms.py:69
+#: apps/member/forms.py:173 apps/registration/forms.py:78
#: apps/wei/forms/registration.py:84
msgid "No credit"
msgstr "Kein Kredit"
-#: apps/member/forms.py:174
+#: apps/member/forms.py:175
msgid "You can credit the note of the user."
msgstr "Sie dûrfen diese Note kreditieren."
-#: apps/member/forms.py:178 apps/registration/forms.py:74
+#: apps/member/forms.py:179 apps/registration/forms.py:83
#: apps/wei/forms/registration.py:89
msgid "Credit amount"
msgstr "Kreditanzahl"
-#: apps/member/forms.py:195 apps/note/templates/note/transaction_form.html:140
-#: apps/registration/forms.py:91 apps/treasury/forms.py:134
+#: apps/member/forms.py:196 apps/note/templates/note/transaction_form.html:140
+#: apps/registration/forms.py:100 apps/treasury/forms.py:134
#: apps/wei/forms/registration.py:106
msgid "Bank"
msgstr "Bank"
-#: apps/member/forms.py:222
+#: apps/member/forms.py:223
msgid "User"
msgstr "User"
-#: apps/member/forms.py:236
+#: apps/member/forms.py:237
msgid "Roles"
msgstr "Rollen"
@@ -793,7 +793,7 @@ msgstr ""
"Maximales Datum einer Mitgliedschaft, nach dem Mitglieder es erneuern müssen."
#: apps/member/models.py:286 apps/member/models.py:311
-#: apps/note/models/notes.py:191
+#: apps/note/models/notes.py:177
msgid "club"
msgstr "Club"
@@ -814,11 +814,11 @@ msgstr "Mitgliedschaft endet am"
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:430 apps/member/views.py:634
+#: apps/member/models.py:430 apps/member/views.py:646
msgid "User is already a member of the club"
msgstr "User ist schon ein Mitglied dieser club"
-#: apps/member/models.py:442 apps/member/views.py:644
+#: apps/member/models.py:442 apps/member/views.py:656
msgid "User is not a member of the parent club"
msgstr "User ist noch nicht Mitglied des Urclubs"
@@ -827,7 +827,7 @@ msgstr "User ist noch nicht Mitglied des Urclubs"
msgid "Membership of {user} for the club {club}"
msgstr "Mitgliedschaft von {user} für das Club {club}"
-#: apps/member/models.py:498 apps/note/models/transactions.py:355
+#: apps/member/models.py:498 apps/note/models/transactions.py:358
msgid "membership"
msgstr "Mitgliedschaft"
@@ -946,8 +946,8 @@ msgstr ""
"erlaubt."
#: apps/member/templates/member/club_alias.html:10
-#: apps/member/templates/member/profile_alias.html:10 apps/member/views.py:238
-#: apps/member/views.py:436
+#: apps/member/templates/member/profile_alias.html:10 apps/member/views.py:245
+#: apps/member/views.py:448
msgid "Note aliases"
msgstr "Note Aliases"
@@ -1011,7 +1011,7 @@ 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:283 apps/wei/templates/wei/base.html:66
+#: apps/note/models/notes.py:255 apps/wei/templates/wei/base.html:66
msgid "aliases"
msgstr "Aliases"
@@ -1090,39 +1090,39 @@ msgstr "Diese Adresse muss gültig sein."
msgid "Profile detail"
msgstr "Profile detail"
-#: apps/member/views.py:197
+#: apps/member/views.py:204
msgid "Search user"
msgstr "User finden"
-#: apps/member/views.py:258
+#: apps/member/views.py:265
msgid "Update note picture"
msgstr "Notebild ändern"
-#: apps/member/views.py:304
+#: apps/member/views.py:311
msgid "Manage auth token"
msgstr "Auth token bearbeiten"
-#: apps/member/views.py:331
+#: apps/member/views.py:338
msgid "Create new club"
msgstr "Neue Club"
-#: apps/member/views.py:350
+#: apps/member/views.py:357
msgid "Search club"
msgstr "Club finden"
-#: apps/member/views.py:383
+#: apps/member/views.py:390
msgid "Club detail"
msgstr "Club Details"
-#: apps/member/views.py:459
+#: apps/member/views.py:471
msgid "Update club"
msgstr "Club bearbeiten"
-#: apps/member/views.py:493
+#: apps/member/views.py:505
msgid "Add new member to the club"
msgstr "Neue Mitglieder"
-#: apps/member/views.py:625 apps/wei/views.py:928
+#: apps/member/views.py:637 apps/wei/views.py:928
msgid ""
"This user don't have enough money to join this club, and can't have a "
"negative balance."
@@ -1130,25 +1130,25 @@ msgstr ""
"Diese User hat nicht genug Geld um Mitglied zu werden, und darf nich im Rot "
"sein."
-#: apps/member/views.py:648
+#: apps/member/views.py:660
msgid "The membership must start after {:%m-%d-%Y}."
msgstr "Die Mitgliedschaft muss nach {:%m-%d-Y} anfängen."
-#: apps/member/views.py:653
+#: apps/member/views.py:665
msgid "The membership must begin before {:%m-%d-%Y}."
msgstr "Die Mitgliedschaft muss vor {:%m-%d-Y} anfängen."
-#: apps/member/views.py:660 apps/member/views.py:662 apps/member/views.py:664
-#: apps/registration/views.py:294 apps/registration/views.py:296
-#: apps/registration/views.py:298 apps/wei/views.py:933 apps/wei/views.py:937
+#: apps/member/views.py:672 apps/member/views.py:674 apps/member/views.py:676
+#: apps/registration/views.py:304 apps/registration/views.py:306
+#: apps/registration/views.py:308 apps/wei/views.py:933 apps/wei/views.py:937
msgid "This field is required."
msgstr "Dies ist ein Pflichtfeld."
-#: apps/member/views.py:800
+#: apps/member/views.py:816
msgid "Manage roles of an user in the club"
msgstr "Rollen in diesen Club bearbeiten"
-#: apps/member/views.py:825
+#: apps/member/views.py:841
msgid "Members of the club"
msgstr "Mitlglieder dieses Club"
@@ -1167,7 +1167,7 @@ msgid "amount"
msgstr "Anzahl"
#: apps/note/api/serializers.py:183 apps/note/api/serializers.py:189
-#: apps/note/models/transactions.py:224
+#: apps/note/models/transactions.py:227
msgid ""
"The transaction can't be saved since the source note or the destination note "
"is not active."
@@ -1276,51 +1276,51 @@ msgstr "User Note"
msgid "%(user)s's note"
msgstr "%(user)s's note"
-#: apps/note/models/notes.py:195
+#: apps/note/models/notes.py:181
msgid "club note"
msgstr "Club Note"
-#: apps/note/models/notes.py:196
+#: apps/note/models/notes.py:182
msgid "clubs notes"
msgstr "Club Notes"
-#: apps/note/models/notes.py:202
+#: apps/note/models/notes.py:188
#, python-format
msgid "Note of %(club)s club"
msgstr "%(club)s Note"
-#: apps/note/models/notes.py:242
+#: apps/note/models/notes.py:214
msgid "special note"
msgstr "Sondernote"
-#: apps/note/models/notes.py:243
+#: apps/note/models/notes.py:215
msgid "special notes"
msgstr "Sondernoten"
-#: apps/note/models/notes.py:266
+#: apps/note/models/notes.py:238
msgid "Invalid alias"
msgstr "Unerlaublt Alias"
-#: apps/note/models/notes.py:282
+#: apps/note/models/notes.py:254
msgid "alias"
msgstr "Alias"
-#: apps/note/models/notes.py:306
+#: apps/note/models/notes.py:278
msgid "Alias is too long."
msgstr "Alias ist zu lang."
-#: apps/note/models/notes.py:309
+#: apps/note/models/notes.py:281
msgid ""
"This alias contains only complex character. Please use a more simple alias."
msgstr ""
"Dieser Alias enthält nur komplexe Zeichen. Bitte verwenden Sie einen "
"einfacheren Alias."
-#: apps/note/models/notes.py:313
+#: apps/note/models/notes.py:285
msgid "An alias with a similar name already exists: {} "
msgstr "Ein Alias mit einem ähnlichen Namen existiert bereits: {} "
-#: apps/note/models/notes.py:327
+#: apps/note/models/notes.py:299
msgid "You can't delete your main alias."
msgstr "Sie können Ihren Hauptalias nicht löschen."
@@ -1395,34 +1395,34 @@ msgstr ""
"Die Notenguthaben müssen zwischen - 92 233 720 368 547 758,08 € und 92 233 "
"720 368 547 758,07 € liegen."
-#: apps/note/models/transactions.py:273
+#: apps/note/models/transactions.py:276
msgid ""
"The destination of this transaction must equal to the destination of the "
"template."
msgstr ""
"Der Empfänger dieser Transaktion muss dem Empfänger der Vorlage entsprechen."
-#: apps/note/models/transactions.py:283
+#: apps/note/models/transactions.py:286
msgid "Template"
msgstr "Vorlage"
-#: apps/note/models/transactions.py:286
+#: apps/note/models/transactions.py:289
msgid "recurrent transaction"
msgstr "wiederkehrende Transaktion"
-#: apps/note/models/transactions.py:287
+#: apps/note/models/transactions.py:290
msgid "recurrent transactions"
msgstr "wiederkehrende Transaktionen"
-#: apps/note/models/transactions.py:302
+#: apps/note/models/transactions.py:305
msgid "first_name"
msgstr "Vorname"
-#: apps/note/models/transactions.py:307
+#: apps/note/models/transactions.py:310
msgid "bank"
msgstr "Bank"
-#: apps/note/models/transactions.py:324
+#: apps/note/models/transactions.py:327
msgid ""
"A special transaction is only possible between a Note associated to a "
"payment method and a User or a Club"
@@ -1430,19 +1430,19 @@ msgstr ""
"Eine Sondertransaktion ist nur zwischen einer Note, die einer "
"Zahlungsmethode zugeordnet ist, und einem User oder einem Club möglich"
-#: apps/note/models/transactions.py:333
+#: apps/note/models/transactions.py:336
msgid "Special transaction"
msgstr "Sondertransaktion"
-#: apps/note/models/transactions.py:334
+#: apps/note/models/transactions.py:337
msgid "Special transactions"
msgstr "Sondertranskationen"
-#: apps/note/models/transactions.py:350
+#: apps/note/models/transactions.py:353
msgid "membership transaction"
msgstr "Mitgliedschafttransaktion"
-#: apps/note/models/transactions.py:351 apps/treasury/models.py:284
+#: apps/note/models/transactions.py:354 apps/treasury/models.py:284
msgid "membership transactions"
msgstr "Mitgliedschaftttransaktionen"
@@ -1632,53 +1632,53 @@ msgstr "Sie können keine Taste sehen."
msgid "Search transactions"
msgstr "Transaktion finden"
-#: apps/permission/models.py:89
+#: apps/permission/models.py:92
#, python-brace-format
msgid "Can {type} {model}.{field} in {query}"
msgstr "Kann {type} {model}.{field} in {query}"
-#: apps/permission/models.py:91
+#: apps/permission/models.py:94
#, python-brace-format
msgid "Can {type} {model} in {query}"
msgstr "Kann {type} {model} in {query}"
-#: apps/permission/models.py:104
+#: apps/permission/models.py:107
msgid "rank"
msgstr "Rank"
-#: apps/permission/models.py:117
+#: apps/permission/models.py:120
msgid "permission mask"
msgstr "Berechtigungsmaske"
-#: apps/permission/models.py:118
+#: apps/permission/models.py:121
msgid "permission masks"
msgstr "Berechtigungsmasken"
-#: apps/permission/models.py:124
+#: apps/permission/models.py:127
msgid "add"
msgstr "hinzufügen"
-#: apps/permission/models.py:125
+#: apps/permission/models.py:128
msgid "view"
msgstr "Schauen"
-#: apps/permission/models.py:126
+#: apps/permission/models.py:129
msgid "change"
msgstr "bearbeiten"
-#: apps/permission/models.py:158
+#: apps/permission/models.py:161
msgid "query"
msgstr "Abfrage"
-#: apps/permission/models.py:171
+#: apps/permission/models.py:174
msgid "mask"
msgstr "Maske"
-#: apps/permission/models.py:177
+#: apps/permission/models.py:180
msgid "field"
msgstr "Feld"
-#: apps/permission/models.py:182
+#: apps/permission/models.py:185
msgid ""
"Tells if the permission should be granted even if the membership of the user "
"is expired."
@@ -1686,28 +1686,28 @@ msgstr ""
"Gibt an, ob die Berechtigung auch erteilt werden soll, wenn die "
"Mitgliedschaft des Benutzers abgelaufen ist."
-#: apps/permission/models.py:183
+#: apps/permission/models.py:186
#: apps/permission/templates/permission/all_rights.html:89
msgid "permanent"
msgstr "permanent"
-#: apps/permission/models.py:194
+#: apps/permission/models.py:197
msgid "permission"
msgstr "Berechtigung"
-#: apps/permission/models.py:195 apps/permission/models.py:335
+#: apps/permission/models.py:198 apps/permission/models.py:338
msgid "permissions"
msgstr "Berechtigungen"
-#: apps/permission/models.py:200
+#: apps/permission/models.py:203
msgid "Specifying field applies only to view and change permission types."
msgstr "Angabefeld gilt nur zum Anzeigen und Ändern von Berechtigungstypen."
-#: apps/permission/models.py:340
+#: apps/permission/models.py:343
msgid "for club"
msgstr "Für Club"
-#: apps/permission/models.py:350 apps/permission/models.py:351
+#: apps/permission/models.py:353 apps/permission/models.py:354
msgid "role permissions"
msgstr "Berechtigung Rollen"
@@ -1815,10 +1815,24 @@ msgid "This email address is already used."
msgstr "Diese email adresse ist schon benutzt."
#: apps/registration/forms.py:49
+#, fuzzy
+#| msgid "You already opened an account in the Société générale."
+msgid ""
+"I declare that I opened a bank account in the Société générale with the BDE "
+"partnership."
+msgstr "Sie haben bereits ein Konto in der Société générale eröffnet."
+
+#: apps/registration/forms.py:50
+msgid ""
+"Warning: this engages you to open your bank account. If you finally decides "
+"to don't open your account, you will have to pay the BDE membership."
+msgstr ""
+
+#: apps/registration/forms.py:58
msgid "Register to the WEI"
msgstr "Zu WEI anmelden"
-#: apps/registration/forms.py:51
+#: apps/registration/forms.py:60
msgid ""
"Check this case if you want to register to the WEI. If you hesitate, you "
"will be able to register later, after validating your account in the Kfet."
@@ -1827,11 +1841,11 @@ msgstr ""
"falls Zweifel, können Sie sich später nach Bestätigung Ihres Kontos im Kfet "
"registrieren."
-#: apps/registration/forms.py:96
+#: apps/registration/forms.py:105
msgid "Join BDE Club"
msgstr "BDE Mitglieder werden"
-#: apps/registration/forms.py:103
+#: apps/registration/forms.py:112
msgid "Join Kfet Club"
msgstr "Kfet Mitglieder werden"
@@ -1883,7 +1897,14 @@ msgstr "Registrierung löschen"
msgid "Validate account"
msgstr "Konto validieren"
-#: apps/registration/templates/registration/future_profile_detail.html:64
+#: apps/registration/templates/registration/future_profile_detail.html:62
+#, fuzzy
+#| msgid "You already opened an account in the Société générale."
+msgid ""
+"The user declared that he/she opened a bank account in the Société générale."
+msgstr "Sie haben bereits ein Konto in der Société générale eröffnet."
+
+#: apps/registration/templates/registration/future_profile_detail.html:71
#: apps/wei/templates/wei/weimembership_form.html:127
#: apps/wei/templates/wei/weimembership_form.html:186
msgid "Validate registration"
@@ -1939,50 +1960,50 @@ msgstr "Die NoteKfet Team."
msgid "Register new user"
msgstr "Neuen User registrieren"
-#: apps/registration/views.py:85
+#: apps/registration/views.py:93
msgid "Email validation"
msgstr "Email validierung"
-#: apps/registration/views.py:87
+#: apps/registration/views.py:95
msgid "Validate email"
msgstr "Email validieren"
-#: apps/registration/views.py:129
+#: apps/registration/views.py:137
msgid "Email validation unsuccessful"
msgstr "Email validierung unerfolgreich"
-#: apps/registration/views.py:140
+#: apps/registration/views.py:148
msgid "Email validation email sent"
msgstr "Validierungsemail wurde gesendet"
-#: apps/registration/views.py:148
+#: apps/registration/views.py:156
msgid "Resend email validation link"
msgstr "E-Mail-Validierungslink erneut senden"
-#: apps/registration/views.py:166
+#: apps/registration/views.py:174
msgid "Pre-registered users list"
msgstr "Vorregistrierte Userliste"
-#: apps/registration/views.py:190
+#: apps/registration/views.py:198
msgid "Unregistered users"
msgstr "Unregistrierte Users"
-#: apps/registration/views.py:203
+#: apps/registration/views.py:211
msgid "Registration detail"
msgstr "Registrierung Detailen"
-#: apps/registration/views.py:263
+#: apps/registration/views.py:273
msgid "You must join the BDE."
msgstr "Sie müssen die BDE beitreten."
-#: apps/registration/views.py:287
+#: apps/registration/views.py:297
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:367
+#: apps/registration/views.py:384
msgid "Invalidate pre-registration"
msgstr "Ungültige Vorregistrierung"
@@ -2128,7 +2149,7 @@ msgstr "spezielle Transaktion Proxies"
msgid "credit transaction"
msgstr "Kredit Transaktion"
-#: apps/treasury/models.py:369
+#: apps/treasury/models.py:374
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."
@@ -2136,16 +2157,16 @@ msgstr ""
"Dieser Benutzer hat nicht genug Geld, um die Mitgliedschaften mit seiner "
"Note zu bezahlen."
-#: apps/treasury/models.py:384
+#: apps/treasury/models.py:389
#: 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:385
+#: apps/treasury/models.py:390
msgid "Credits from the Société générale"
msgstr "Krediten von der Société générale"
-#: apps/treasury/models.py:388
+#: apps/treasury/models.py:393
#, python-brace-format
msgid "Soge credit for {user}"
msgstr "Kredit von der Société générale für {user}"
@@ -2924,19 +2945,19 @@ msgstr "Überprüfen Sie die WEI-Registrierung"
msgid "This user didn't give her/his caution check."
msgstr "Dieser User hat seine / ihre Vorsicht nicht überprüft."
-#: note_kfet/settings/base.py:155
+#: note_kfet/settings/base.py:157
msgid "German"
msgstr "Deutsch"
-#: note_kfet/settings/base.py:156
+#: note_kfet/settings/base.py:158
msgid "English"
msgstr "English"
-#: note_kfet/settings/base.py:157
+#: note_kfet/settings/base.py:159
msgid "Spanish"
msgstr "Spanisch"
-#: note_kfet/settings/base.py:158
+#: note_kfet/settings/base.py:160
msgid "French"
msgstr "Französich"
@@ -3023,7 +3044,7 @@ msgstr "Abmelden"
#: note_kfet/templates/base.html:136
#: note_kfet/templates/registration/signup.html:6
#: note_kfet/templates/registration/signup.html:11
-#: note_kfet/templates/registration/signup.html:27
+#: note_kfet/templates/registration/signup.html:28
msgid "Sign up"
msgstr "Registrieren"
@@ -3035,7 +3056,17 @@ msgstr "Registrieren"
msgid "Log in"
msgstr "Anmelden"
-#: note_kfet/templates/base.html:155
+#: note_kfet/templates/base.html:156
+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:160
+msgid "You are not a Kfet member, so you can't use your note account."
+msgstr ""
+
+#: note_kfet/templates/base.html:166
msgid ""
"Your e-mail address is not validated. Please check your mail inbox and click "
"on the validation link."
@@ -3043,7 +3074,16 @@ 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:172
+#: note_kfet/templates/base.html:171
+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 "
+"registration bonus of 80 € is not credited and the membership is not paid "
+"yet. This verification procedure may last a few days. Please make sure that "
+"you go to the end of the account creation."
+msgstr ""
+
+#: note_kfet/templates/base.html:194
msgid "Contact us"
msgstr "Kontakt"
@@ -3055,21 +3095,6 @@ msgstr "Suche nach Attributen wie Name…"
msgid "There is no results."
msgstr "Es gibt keine Ergebnisse."
-#: note_kfet/templates/cas_server/base.html:7
-msgid "Central Authentication Service"
-msgstr "Central Authentication Service"
-
-#: note_kfet/templates/cas_server/base.html:43
-#, python-format
-msgid ""
-"A new version of the application is available. This instance runs "
-"%(VERSION)s and the last version is %(LAST_VERSION)s. Please consider "
-"upgrading."
-msgstr ""
-"Eine neue Version der Anwendung ist verfügbar. Diese Instanz führt "
-"%(VERSION) s aus und die letzte Version ist %(LAST_VERSION) s. Bitte erwägen "
-"Sie ein Upgrade."
-
#: note_kfet/templates/registration/logged_out.html:13
msgid "Thanks for spending some quality time with the Web site today."
msgstr ""
@@ -3183,5 +3208,18 @@ msgstr ""
"müssen Ihre E-Mail-Adresse auch überprüfen, indem Sie dem Link folgen, den "
"Sie erhalten haben."
+#~ msgid "Central Authentication Service"
+#~ msgstr "Central Authentication Service"
+
+#, python-format
+#~ msgid ""
+#~ "A new version of the application is available. This instance runs "
+#~ "%(VERSION)s and the last version is %(LAST_VERSION)s. Please consider "
+#~ "upgrading."
+#~ msgstr ""
+#~ "Eine neue Version der Anwendung ist verfügbar. Diese Instanz führt "
+#~ "%(VERSION) s aus und die letzte Version ist %(LAST_VERSION) s. Bitte "
+#~ "erwägen Sie ein Upgrade."
+
#~ msgid "Check this case is the Société Générale paid the inscription."
#~ msgstr "Die Société Générale die Mitgliedschaft bezahlt."
diff --git a/locale/es/LC_MESSAGES/django.po b/locale/es/LC_MESSAGES/django.po
index 0c2492ce..2b3b47a5 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: 2020-09-19 22:00+0200\n"
+"POT-Creation-Date: 2020-10-07 11:42+0200\n"
"PO-Revision-Date: 2020-09-19 14:56+0200\n"
"Last-Translator: elkmaennchen \n"
"Language-Team: \n"
@@ -51,9 +51,9 @@ msgstr "Usted no puede invitar más de 3 persona a esta actividad."
#: apps/member/models.py:199
#: apps/member/templates/member/includes/club_info.html:4
#: apps/member/templates/member/includes/profile_info.html:4
-#: apps/note/models/notes.py:260 apps/note/models/transactions.py:26
-#: apps/note/models/transactions.py:46 apps/note/models/transactions.py:297
-#: apps/permission/models.py:330
+#: apps/note/models/notes.py:232 apps/note/models/transactions.py:26
+#: apps/note/models/transactions.py:46 apps/note/models/transactions.py:300
+#: apps/permission/models.py:333
#: apps/registration/templates/registration/future_profile_detail.html:16
#: apps/wei/models.py:66 apps/wei/models.py:118
#: apps/wei/templates/wei/base.html:26
@@ -89,8 +89,8 @@ msgstr "tipos de actividad"
#: apps/activity/models.py:68
#: apps/activity/templates/activity/includes/activity_info.html:19
-#: apps/note/models/transactions.py:81 apps/permission/models.py:110
-#: apps/permission/models.py:189 apps/wei/models.py:72 apps/wei/models.py:129
+#: apps/note/models/transactions.py:81 apps/permission/models.py:113
+#: apps/permission/models.py:192 apps/wei/models.py:72 apps/wei/models.py:129
msgid "description"
msgstr "descripción"
@@ -104,8 +104,8 @@ msgstr "Lugar donde se organiza la actividad, por ejemplo la Kfet."
#: apps/activity/models.py:83
#: apps/activity/templates/activity/includes/activity_info.html:22
-#: apps/note/models/notes.py:236 apps/note/models/transactions.py:66
-#: apps/permission/models.py:164
+#: apps/note/models/notes.py:208 apps/note/models/transactions.py:66
+#: apps/permission/models.py:167
msgid "type"
msgstr "tipo"
@@ -253,15 +253,15 @@ msgstr "quitar"
msgid "Type"
msgstr "Tipo"
-#: apps/activity/tables.py:82 apps/member/forms.py:185
-#: apps/registration/forms.py:81 apps/treasury/forms.py:130
+#: apps/activity/tables.py:82 apps/member/forms.py:186
+#: apps/registration/forms.py:90 apps/treasury/forms.py:130
#: apps/wei/forms/registration.py:96
msgid "Last name"
msgstr "Apellido"
-#: apps/activity/tables.py:84 apps/member/forms.py:190
+#: apps/activity/tables.py:84 apps/member/forms.py:191
#: apps/note/templates/note/transaction_form.html:134
-#: apps/registration/forms.py:86 apps/treasury/forms.py:132
+#: apps/registration/forms.py:95 apps/treasury/forms.py:132
#: apps/wei/forms/registration.py:101
msgid "First name"
msgstr "Nombre"
@@ -279,7 +279,7 @@ msgid "Guests list"
msgstr "Lista de los invitados"
#: apps/activity/templates/activity/activity_entry.html:14
-#: apps/note/models/transactions.py:253
+#: apps/note/models/transactions.py:256
#: apps/note/templates/note/transaction_form.html:16
#: apps/note/templates/note/transaction_form.html:148
#: note_kfet/templates/base.html:70
@@ -287,13 +287,13 @@ msgid "Transfer"
msgstr "Transferencia"
#: apps/activity/templates/activity/activity_entry.html:18
-#: apps/note/models/transactions.py:313
+#: apps/note/models/transactions.py:316
#: apps/note/templates/note/transaction_form.html:21
msgid "Credit"
msgstr "Crédito"
#: apps/activity/templates/activity/activity_entry.html:21
-#: apps/note/models/transactions.py:313
+#: apps/note/models/transactions.py:316
#: apps/note/templates/note/transaction_form.html:25
msgid "Debit"
msgstr "Débito"
@@ -373,41 +373,41 @@ msgstr "modificar"
msgid "Invite"
msgstr "Invitar"
-#: apps/activity/views.py:34
+#: apps/activity/views.py:36
msgid "Create new activity"
msgstr "Crear una nueva actividad"
-#: apps/activity/views.py:65 note_kfet/templates/base.html:88
+#: apps/activity/views.py:67 note_kfet/templates/base.html:88
msgid "Activities"
msgstr "Actividades"
-#: apps/activity/views.py:93
+#: apps/activity/views.py:95
msgid "Activity detail"
msgstr "Detalles de la actividad"
-#: apps/activity/views.py:113
+#: apps/activity/views.py:115
msgid "Update activity"
msgstr "Modificar la actividad"
-#: apps/activity/views.py:140
+#: apps/activity/views.py:142
msgid "Invite guest to the activity \"{}\""
msgstr "Invitar alguien para la actividad \"{}\""
-#: apps/activity/views.py:175
+#: apps/activity/views.py:177
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:178
+#: apps/activity/views.py:180
msgid "This activity does not support activity entries."
msgstr "Esta actividad no necesita entradas."
-#: apps/activity/views.py:181
+#: apps/activity/views.py:183
msgid "This activity is closed."
msgstr "Esta actividad esta cerrada."
-#: apps/activity/views.py:277
+#: apps/activity/views.py:279
msgid "Entry for activity \"{}\""
msgstr "Entradas para la actividad \"{}\""
@@ -423,7 +423,7 @@ msgstr "Logs"
msgid "IP Address"
msgstr "Dirección IP"
-#: apps/logs/models.py:36 apps/permission/models.py:134
+#: apps/logs/models.py:36 apps/permission/models.py:137
msgid "model"
msgstr "modelo"
@@ -444,7 +444,7 @@ msgid "create"
msgstr "crear"
#: apps/logs/models.py:65 apps/note/tables.py:165 apps/note/tables.py:201
-#: apps/permission/models.py:127 apps/treasury/tables.py:38
+#: apps/permission/models.py:130 apps/treasury/tables.py:38
#: apps/wei/tables.py:75
msgid "delete"
msgstr "suprimir"
@@ -525,48 +525,48 @@ msgid "This image cannot be loaded."
msgstr "Esta imagen no puede ser cargada."
#: apps/member/forms.py:141 apps/member/views.py:100
-#: apps/registration/forms.py:33 apps/registration/views.py:244
+#: apps/registration/forms.py:33 apps/registration/views.py:254
msgid "An alias with a similar name already exists."
msgstr "Un alias similar ya existe."
-#: apps/member/forms.py:164 apps/registration/forms.py:61
+#: apps/member/forms.py:165 apps/registration/forms.py:70
msgid "Inscription paid by Société Générale"
msgstr "Registración pagadas por Société Générale"
-#: apps/member/forms.py:166 apps/registration/forms.py:63
+#: apps/member/forms.py:167 apps/registration/forms.py:72
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:171 apps/registration/forms.py:68
+#: apps/member/forms.py:172 apps/registration/forms.py:77
#: apps/wei/forms/registration.py:83
msgid "Credit type"
msgstr "Tipo de crédito"
-#: apps/member/forms.py:172 apps/registration/forms.py:69
+#: apps/member/forms.py:173 apps/registration/forms.py:78
#: apps/wei/forms/registration.py:84
msgid "No credit"
msgstr "No crédito"
-#: apps/member/forms.py:174
+#: apps/member/forms.py:175
msgid "You can credit the note of the user."
msgstr "Usted puede acreditar la note del usuario."
-#: apps/member/forms.py:178 apps/registration/forms.py:74
+#: apps/member/forms.py:179 apps/registration/forms.py:83
#: apps/wei/forms/registration.py:89
msgid "Credit amount"
msgstr "Valor del crédito"
-#: apps/member/forms.py:195 apps/note/templates/note/transaction_form.html:140
-#: apps/registration/forms.py:91 apps/treasury/forms.py:134
+#: apps/member/forms.py:196 apps/note/templates/note/transaction_form.html:140
+#: apps/registration/forms.py:100 apps/treasury/forms.py:134
#: apps/wei/forms/registration.py:106
msgid "Bank"
msgstr "Banco"
-#: apps/member/forms.py:222
+#: apps/member/forms.py:223
msgid "User"
msgstr "Usuario"
-#: apps/member/forms.py:236
+#: apps/member/forms.py:237
msgid "Roles"
msgstr "Papeles"
@@ -793,7 +793,7 @@ msgstr ""
"prorrogarla."
#: apps/member/models.py:286 apps/member/models.py:311
-#: apps/note/models/notes.py:191
+#: apps/note/models/notes.py:177
msgid "club"
msgstr "club"
@@ -814,11 +814,11 @@ msgstr "afiliación termina el"
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:430 apps/member/views.py:634
+#: apps/member/models.py:430 apps/member/views.py:646
msgid "User is already a member of the club"
msgstr "Usuario ya esta un miembro del club"
-#: apps/member/models.py:442 apps/member/views.py:644
+#: apps/member/models.py:442 apps/member/views.py:656
msgid "User is not a member of the parent club"
msgstr "Usuario no es un miembro del club pariente"
@@ -827,7 +827,7 @@ msgstr "Usuario no es un miembro del club pariente"
msgid "Membership of {user} for the club {club}"
msgstr "Afiliación of {user} for the club {club}"
-#: apps/member/models.py:498 apps/note/models/transactions.py:355
+#: apps/member/models.py:498 apps/note/models/transactions.py:358
msgid "membership"
msgstr "afiliación"
@@ -943,8 +943,8 @@ msgstr ""
"nuevo posibles."
#: apps/member/templates/member/club_alias.html:10
-#: apps/member/templates/member/profile_alias.html:10 apps/member/views.py:238
-#: apps/member/views.py:436
+#: apps/member/templates/member/profile_alias.html:10 apps/member/views.py:245
+#: apps/member/views.py:448
msgid "Note aliases"
msgstr "Alias de la note"
@@ -1008,7 +1008,7 @@ 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:283 apps/wei/templates/wei/base.html:66
+#: apps/note/models/notes.py:255 apps/wei/templates/wei/base.html:66
msgid "aliases"
msgstr "alias"
@@ -1087,39 +1087,39 @@ msgstr "Este correo tiene que ser valido."
msgid "Profile detail"
msgstr "Detalles del usuario"
-#: apps/member/views.py:197
+#: apps/member/views.py:204
msgid "Search user"
msgstr "Buscar un usuario"
-#: apps/member/views.py:258
+#: apps/member/views.py:265
msgid "Update note picture"
msgstr "Modificar la imagen de la note"
-#: apps/member/views.py:304
+#: apps/member/views.py:311
msgid "Manage auth token"
msgstr "Gestionar los token de autentificación"
-#: apps/member/views.py:331
+#: apps/member/views.py:338
msgid "Create new club"
msgstr "Crear un nuevo club"
-#: apps/member/views.py:350
+#: apps/member/views.py:357
msgid "Search club"
msgstr "Buscar un club"
-#: apps/member/views.py:383
+#: apps/member/views.py:390
msgid "Club detail"
msgstr "Detalles del club"
-#: apps/member/views.py:459
+#: apps/member/views.py:471
msgid "Update club"
msgstr "Modificar el club"
-#: apps/member/views.py:493
+#: apps/member/views.py:505
msgid "Add new member to the club"
msgstr "Añadir un nuevo miembro al club"
-#: apps/member/views.py:625 apps/wei/views.py:928
+#: apps/member/views.py:637 apps/wei/views.py:928
msgid ""
"This user don't have enough money to join this club, and can't have a "
"negative balance."
@@ -1127,25 +1127,25 @@ msgstr ""
"Este usuario no tiene suficiente dinero para unirse a este club, y no puede "
"tener un saldo negativo."
-#: apps/member/views.py:648
+#: apps/member/views.py:660
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:653
+#: apps/member/views.py:665
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:660 apps/member/views.py:662 apps/member/views.py:664
-#: apps/registration/views.py:294 apps/registration/views.py:296
-#: apps/registration/views.py:298 apps/wei/views.py:933 apps/wei/views.py:937
+#: apps/member/views.py:672 apps/member/views.py:674 apps/member/views.py:676
+#: apps/registration/views.py:304 apps/registration/views.py:306
+#: apps/registration/views.py:308 apps/wei/views.py:933 apps/wei/views.py:937
msgid "This field is required."
msgstr "Este campo es obligatorio."
-#: apps/member/views.py:800
+#: apps/member/views.py:816
msgid "Manage roles of an user in the club"
msgstr "Gestionar los papeles de un usuario en el club"
-#: apps/member/views.py:825
+#: apps/member/views.py:841
msgid "Members of the club"
msgstr "Miembros del club"
@@ -1164,7 +1164,7 @@ msgid "amount"
msgstr "monto"
#: apps/note/api/serializers.py:183 apps/note/api/serializers.py:189
-#: apps/note/models/transactions.py:224
+#: apps/note/models/transactions.py:227
msgid ""
"The transaction can't be saved since the source note or the destination note "
"is not active."
@@ -1274,51 +1274,51 @@ msgstr "notes de los usuarios"
msgid "%(user)s's note"
msgstr "Note de %(user)s"
-#: apps/note/models/notes.py:195
+#: apps/note/models/notes.py:181
msgid "club note"
msgstr "note de un club"
-#: apps/note/models/notes.py:196
+#: apps/note/models/notes.py:182
msgid "clubs notes"
msgstr "notes de los clubs"
-#: apps/note/models/notes.py:202
+#: apps/note/models/notes.py:188
#, python-format
msgid "Note of %(club)s club"
msgstr "Note del club %(club)s"
-#: apps/note/models/notes.py:242
+#: apps/note/models/notes.py:214
msgid "special note"
msgstr "note especial"
-#: apps/note/models/notes.py:243
+#: apps/note/models/notes.py:215
msgid "special notes"
msgstr "notes especiales"
-#: apps/note/models/notes.py:266
+#: apps/note/models/notes.py:238
msgid "Invalid alias"
msgstr "Alias inválido"
-#: apps/note/models/notes.py:282
+#: apps/note/models/notes.py:254
msgid "alias"
msgstr "alias"
-#: apps/note/models/notes.py:306
+#: apps/note/models/notes.py:278
msgid "Alias is too long."
msgstr "El alias es demasiado largo."
-#: apps/note/models/notes.py:309
+#: apps/note/models/notes.py:281
msgid ""
"This alias contains only complex character. Please use a more simple alias."
msgstr ""
"Este alias solo contiene caracteres complejos. Por favor usa un alias más "
"sencillo."
-#: apps/note/models/notes.py:313
+#: apps/note/models/notes.py:285
msgid "An alias with a similar name already exists: {} "
msgstr "Un alias parecido ya existe : {} "
-#: apps/note/models/notes.py:327
+#: apps/note/models/notes.py:299
msgid "You can't delete your main alias."
msgstr "No puede suprimir su alias principal."
@@ -1393,33 +1393,33 @@ msgstr ""
"El saldo de la note tiene que ser entre - 92 233 720 368 547 758.08 € y 92 "
"233 720 368 547 758.07 €."
-#: apps/note/models/transactions.py:273
+#: apps/note/models/transactions.py:276
msgid ""
"The destination of this transaction must equal to the destination of the "
"template."
msgstr ""
-#: apps/note/models/transactions.py:283
+#: apps/note/models/transactions.py:286
msgid "Template"
msgstr ""
-#: apps/note/models/transactions.py:286
+#: apps/note/models/transactions.py:289
msgid "recurrent transaction"
msgstr ""
-#: apps/note/models/transactions.py:287
+#: apps/note/models/transactions.py:290
msgid "recurrent transactions"
msgstr ""
-#: apps/note/models/transactions.py:302
+#: apps/note/models/transactions.py:305
msgid "first_name"
msgstr "nombre"
-#: apps/note/models/transactions.py:307
+#: apps/note/models/transactions.py:310
msgid "bank"
msgstr "banco"
-#: apps/note/models/transactions.py:324
+#: apps/note/models/transactions.py:327
msgid ""
"A special transaction is only possible between a Note associated to a "
"payment method and a User or a Club"
@@ -1427,19 +1427,19 @@ msgstr ""
"Una transacción especial solo esta disponible entre una note de un modo de "
"pago y un usuario o un club"
-#: apps/note/models/transactions.py:333
+#: apps/note/models/transactions.py:336
msgid "Special transaction"
msgstr "Transacción especial"
-#: apps/note/models/transactions.py:334
+#: apps/note/models/transactions.py:337
msgid "Special transactions"
msgstr "Transacciones especiales"
-#: apps/note/models/transactions.py:350
+#: apps/note/models/transactions.py:353
msgid "membership transaction"
msgstr "transacción de afiliación"
-#: apps/note/models/transactions.py:351 apps/treasury/models.py:284
+#: apps/note/models/transactions.py:354 apps/treasury/models.py:284
msgid "membership transactions"
msgstr "transacciones de afiliación"
@@ -1629,53 +1629,53 @@ msgstr "Usted no puede ver ningún botón."
msgid "Search transactions"
msgstr "Buscar transacciones"
-#: apps/permission/models.py:89
+#: apps/permission/models.py:92
#, python-brace-format
msgid "Can {type} {model}.{field} in {query}"
msgstr ""
-#: apps/permission/models.py:91
+#: apps/permission/models.py:94
#, python-brace-format
msgid "Can {type} {model} in {query}"
msgstr ""
-#: apps/permission/models.py:104
+#: apps/permission/models.py:107
msgid "rank"
msgstr "posición"
-#: apps/permission/models.py:117
+#: apps/permission/models.py:120
msgid "permission mask"
msgstr "antifaz de permisos"
-#: apps/permission/models.py:118
+#: apps/permission/models.py:121
msgid "permission masks"
msgstr "antifaces de permisos"
-#: apps/permission/models.py:124
+#: apps/permission/models.py:127
msgid "add"
msgstr "añadir"
-#: apps/permission/models.py:125
+#: apps/permission/models.py:128
msgid "view"
msgstr "ver"
-#: apps/permission/models.py:126
+#: apps/permission/models.py:129
msgid "change"
msgstr "cambiar"
-#: apps/permission/models.py:158
+#: apps/permission/models.py:161
msgid "query"
msgstr "consulta"
-#: apps/permission/models.py:171
+#: apps/permission/models.py:174
msgid "mask"
msgstr "antifaz"
-#: apps/permission/models.py:177
+#: apps/permission/models.py:180
msgid "field"
msgstr "campo"
-#: apps/permission/models.py:182
+#: apps/permission/models.py:185
msgid ""
"Tells if the permission should be granted even if the membership of the user "
"is expired."
@@ -1683,30 +1683,30 @@ msgstr ""
"Indica si el permiso tiene que ser dado aunque la afiliación del usuario "
"terminó."
-#: apps/permission/models.py:183
+#: apps/permission/models.py:186
#: apps/permission/templates/permission/all_rights.html:89
msgid "permanent"
msgstr "permanente"
-#: apps/permission/models.py:194
+#: apps/permission/models.py:197
msgid "permission"
msgstr "permiso"
-#: apps/permission/models.py:195 apps/permission/models.py:335
+#: apps/permission/models.py:198 apps/permission/models.py:338
msgid "permissions"
msgstr "permisos"
-#: apps/permission/models.py:200
+#: apps/permission/models.py:203
msgid "Specifying field applies only to view and change permission types."
msgstr ""
"Especifica el campo interesado, solo funciona para los permisos view y "
"change."
-#: apps/permission/models.py:340
+#: apps/permission/models.py:343
msgid "for club"
msgstr "interesa el club"
-#: apps/permission/models.py:350 apps/permission/models.py:351
+#: apps/permission/models.py:353 apps/permission/models.py:354
msgid "role permissions"
msgstr "permisos por papeles"
@@ -1810,10 +1810,24 @@ msgid "This email address is already used."
msgstr "Este correo electrónico ya esta utilizado."
#: apps/registration/forms.py:49
+#, fuzzy
+#| msgid "You already opened an account in the Société générale."
+msgid ""
+"I declare that I opened a bank account in the Société générale with the BDE "
+"partnership."
+msgstr "Usted ya abrió una cuenta a la Société Générale."
+
+#: apps/registration/forms.py:50
+msgid ""
+"Warning: this engages you to open your bank account. If you finally decides "
+"to don't open your account, you will have to pay the BDE membership."
+msgstr ""
+
+#: apps/registration/forms.py:58
msgid "Register to the WEI"
msgstr "Registrarse en el WEI"
-#: apps/registration/forms.py:51
+#: apps/registration/forms.py:60
msgid ""
"Check this case if you want to register to the WEI. If you hesitate, you "
"will be able to register later, after validating your account in the Kfet."
@@ -1821,11 +1835,11 @@ msgstr ""
"Marcar esta casilla si usted quiere registrarse en el WEI. Si duda, podrá "
"registrarse más tarde, después de validar su cuenta Note Kfet."
-#: apps/registration/forms.py:96
+#: apps/registration/forms.py:105
msgid "Join BDE Club"
msgstr "Afiliarse al club BDE"
-#: apps/registration/forms.py:103
+#: apps/registration/forms.py:112
msgid "Join Kfet Club"
msgstr "Afiliarse al club Kfet"
@@ -1877,7 +1891,14 @@ msgstr "Suprimir afiliación"
msgid "Validate account"
msgstr "Validar la cuenta"
-#: apps/registration/templates/registration/future_profile_detail.html:64
+#: apps/registration/templates/registration/future_profile_detail.html:62
+#, fuzzy
+#| msgid "You already opened an account in the Société générale."
+msgid ""
+"The user declared that he/she opened a bank account in the Société générale."
+msgstr "Usted ya abrió una cuenta a la Société Générale."
+
+#: apps/registration/templates/registration/future_profile_detail.html:71
#: apps/wei/templates/wei/weimembership_form.html:127
#: apps/wei/templates/wei/weimembership_form.html:186
msgid "Validate registration"
@@ -1933,50 +1954,50 @@ msgstr "El equipo Note Kfet."
msgid "Register new user"
msgstr "Registrar un nuevo usuario"
-#: apps/registration/views.py:85
+#: apps/registration/views.py:93
msgid "Email validation"
msgstr "Validación del correo electrónico"
-#: apps/registration/views.py:87
+#: apps/registration/views.py:95
msgid "Validate email"
msgstr "Validar el correo electrónico"
-#: apps/registration/views.py:129
+#: apps/registration/views.py:137
msgid "Email validation unsuccessful"
msgstr "La validación del correo electrónico fracasó"
-#: apps/registration/views.py:140
+#: apps/registration/views.py:148
msgid "Email validation email sent"
msgstr "Correo de validación enviado"
-#: apps/registration/views.py:148
+#: apps/registration/views.py:156
msgid "Resend email validation link"
msgstr "Reenviar el enlace de validación"
-#: apps/registration/views.py:166
+#: apps/registration/views.py:174
msgid "Pre-registered users list"
msgstr "Lista de los usuarios con afiliación pendiente"
-#: apps/registration/views.py:190
+#: apps/registration/views.py:198
msgid "Unregistered users"
msgstr "Usuarios con afiliación pendiente"
-#: apps/registration/views.py:203
+#: apps/registration/views.py:211
msgid "Registration detail"
msgstr "Detalles de la afiliación"
-#: apps/registration/views.py:263
+#: apps/registration/views.py:273
msgid "You must join the BDE."
msgstr "Usted tiene que afiliarse al BDE."
-#: apps/registration/views.py:287
+#: apps/registration/views.py:297
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:367
+#: apps/registration/views.py:384
msgid "Invalidate pre-registration"
msgstr "Invalidar la afiliación"
@@ -2122,7 +2143,7 @@ msgstr "proxys de transacciones especiales"
msgid "credit transaction"
msgstr "transacción de crédito"
-#: apps/treasury/models.py:369
+#: apps/treasury/models.py:374
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."
@@ -2131,16 +2152,16 @@ msgstr ""
"afiliaciones. Por favor pídelo acreditar su note antes de invalidar este "
"crédito."
-#: apps/treasury/models.py:384
+#: apps/treasury/models.py:389
#: 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:385
+#: apps/treasury/models.py:390
msgid "Credits from the Société générale"
msgstr "Créditos de la Société Générale"
-#: apps/treasury/models.py:388
+#: apps/treasury/models.py:393
#, python-brace-format
msgid "Soge credit for {user}"
msgstr "Crédito de la Société Générale para {user}"
@@ -2908,19 +2929,19 @@ msgstr "Validar la inscripción WEI"
msgid "This user didn't give her/his caution check."
msgstr "Este usuario no dio su cheque de garantía."
-#: note_kfet/settings/base.py:155
+#: note_kfet/settings/base.py:157
msgid "German"
msgstr "Alemán"
-#: note_kfet/settings/base.py:156
+#: note_kfet/settings/base.py:158
msgid "English"
msgstr "Ingles"
-#: note_kfet/settings/base.py:157
+#: note_kfet/settings/base.py:159
msgid "Spanish"
msgstr "Español"
-#: note_kfet/settings/base.py:158
+#: note_kfet/settings/base.py:160
msgid "French"
msgstr "Francés"
@@ -3005,7 +3026,7 @@ msgstr "Desconectarse"
#: note_kfet/templates/base.html:136
#: note_kfet/templates/registration/signup.html:6
#: note_kfet/templates/registration/signup.html:11
-#: note_kfet/templates/registration/signup.html:27
+#: note_kfet/templates/registration/signup.html:28
msgid "Sign up"
msgstr "Registrar"
@@ -3017,7 +3038,17 @@ msgstr "Registrar"
msgid "Log in"
msgstr "Conectarse"
-#: note_kfet/templates/base.html:155
+#: note_kfet/templates/base.html:156
+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:160
+msgid "You are not a Kfet member, so you can't use your note account."
+msgstr ""
+
+#: note_kfet/templates/base.html:166
msgid ""
"Your e-mail address is not validated. Please check your mail inbox and click "
"on the validation link."
@@ -3025,7 +3056,16 @@ 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:172
+#: note_kfet/templates/base.html:171
+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 "
+"registration bonus of 80 € is not credited and the membership is not paid "
+"yet. This verification procedure may last a few days. Please make sure that "
+"you go to the end of the account creation."
+msgstr ""
+
+#: note_kfet/templates/base.html:194
msgid "Contact us"
msgstr "Contactarnos"
@@ -3037,20 +3077,6 @@ msgstr "Buscar con atributo, como el nombre…"
msgid "There is no results."
msgstr "No hay resultado."
-#: note_kfet/templates/cas_server/base.html:7
-msgid "Central Authentication Service"
-msgstr "Servicio Central de Autentificación"
-
-#: note_kfet/templates/cas_server/base.html:43
-#, python-format
-msgid ""
-"A new version of the application is available. This instance runs "
-"%(VERSION)s and the last version is %(LAST_VERSION)s. Please consider "
-"upgrading."
-msgstr ""
-"Una nueva versión es disponible. Se está usando %(VERSION)s y la ultima "
-"versión está %(LAST_VERSION)s. Piensa en actualizar."
-
#: note_kfet/templates/registration/logged_out.html:13
msgid "Thanks for spending some quality time with the Web site today."
msgstr "Gracias por usar la Note Kfet."
@@ -3159,6 +3185,18 @@ msgstr ""
"pagar su afiliación. Tambien tiene que validar su correo electronico con el "
"enlace que recibió."
+#~ msgid "Central Authentication Service"
+#~ msgstr "Servicio Central de Autentificación"
+
+#, python-format
+#~ msgid ""
+#~ "A new version of the application is available. This instance runs "
+#~ "%(VERSION)s and the last version is %(LAST_VERSION)s. Please consider "
+#~ "upgrading."
+#~ msgstr ""
+#~ "Una nueva versión es disponible. Se está usando %(VERSION)s y la ultima "
+#~ "versión está %(LAST_VERSION)s. Piensa en actualizar."
+
#~ msgid "Check this case is the Société Générale paid the inscription."
#~ msgstr "Marcar esta casilla si Société Générale pagó la registración."
diff --git a/locale/fr/LC_MESSAGES/django.po b/locale/fr/LC_MESSAGES/django.po
index 029a4721..5b36834c 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: 2020-09-19 22:00+0200\n"
+"POT-Creation-Date: 2020-10-07 11:42+0200\n"
"PO-Revision-Date: 2020-09-13 12:36+0200\n"
"Last-Translator: elkmaennchen \n"
"Language-Team: \n"
@@ -52,9 +52,9 @@ msgstr "Vous ne pouvez pas inviter plus de 3 personnes à cette activité."
#: apps/member/models.py:199
#: apps/member/templates/member/includes/club_info.html:4
#: apps/member/templates/member/includes/profile_info.html:4
-#: apps/note/models/notes.py:260 apps/note/models/transactions.py:26
-#: apps/note/models/transactions.py:46 apps/note/models/transactions.py:297
-#: apps/permission/models.py:330
+#: apps/note/models/notes.py:232 apps/note/models/transactions.py:26
+#: apps/note/models/transactions.py:46 apps/note/models/transactions.py:300
+#: apps/permission/models.py:333
#: apps/registration/templates/registration/future_profile_detail.html:16
#: apps/wei/models.py:66 apps/wei/models.py:118
#: apps/wei/templates/wei/base.html:26
@@ -90,8 +90,8 @@ msgstr "types d'activité"
#: apps/activity/models.py:68
#: apps/activity/templates/activity/includes/activity_info.html:19
-#: apps/note/models/transactions.py:81 apps/permission/models.py:110
-#: apps/permission/models.py:189 apps/wei/models.py:72 apps/wei/models.py:129
+#: apps/note/models/transactions.py:81 apps/permission/models.py:113
+#: apps/permission/models.py:192 apps/wei/models.py:72 apps/wei/models.py:129
msgid "description"
msgstr "description"
@@ -105,8 +105,8 @@ msgstr "Lieu où l'activité est organisée, par exemple la Kfet."
#: apps/activity/models.py:83
#: apps/activity/templates/activity/includes/activity_info.html:22
-#: apps/note/models/notes.py:236 apps/note/models/transactions.py:66
-#: apps/permission/models.py:164
+#: apps/note/models/notes.py:208 apps/note/models/transactions.py:66
+#: apps/permission/models.py:167
msgid "type"
msgstr "type"
@@ -254,15 +254,15 @@ msgstr "supprimer"
msgid "Type"
msgstr "Type"
-#: apps/activity/tables.py:82 apps/member/forms.py:185
-#: apps/registration/forms.py:81 apps/treasury/forms.py:130
+#: apps/activity/tables.py:82 apps/member/forms.py:186
+#: apps/registration/forms.py:90 apps/treasury/forms.py:130
#: apps/wei/forms/registration.py:96
msgid "Last name"
msgstr "Nom de famille"
-#: apps/activity/tables.py:84 apps/member/forms.py:190
+#: apps/activity/tables.py:84 apps/member/forms.py:191
#: apps/note/templates/note/transaction_form.html:134
-#: apps/registration/forms.py:86 apps/treasury/forms.py:132
+#: apps/registration/forms.py:95 apps/treasury/forms.py:132
#: apps/wei/forms/registration.py:101
msgid "First name"
msgstr "Prénom"
@@ -280,7 +280,7 @@ msgid "Guests list"
msgstr "Liste des invités"
#: apps/activity/templates/activity/activity_entry.html:14
-#: apps/note/models/transactions.py:253
+#: apps/note/models/transactions.py:256
#: apps/note/templates/note/transaction_form.html:16
#: apps/note/templates/note/transaction_form.html:148
#: note_kfet/templates/base.html:70
@@ -288,13 +288,13 @@ msgid "Transfer"
msgstr "Virement"
#: apps/activity/templates/activity/activity_entry.html:18
-#: apps/note/models/transactions.py:313
+#: apps/note/models/transactions.py:316
#: apps/note/templates/note/transaction_form.html:21
msgid "Credit"
msgstr "Crédit"
#: apps/activity/templates/activity/activity_entry.html:21
-#: apps/note/models/transactions.py:313
+#: apps/note/models/transactions.py:316
#: apps/note/templates/note/transaction_form.html:25
msgid "Debit"
msgstr "Débit"
@@ -374,41 +374,41 @@ msgstr "modifier"
msgid "Invite"
msgstr "Inviter"
-#: apps/activity/views.py:34
+#: apps/activity/views.py:36
msgid "Create new activity"
msgstr "Créer une nouvelle activité"
-#: apps/activity/views.py:65 note_kfet/templates/base.html:88
+#: apps/activity/views.py:67 note_kfet/templates/base.html:88
msgid "Activities"
msgstr "Activités"
-#: apps/activity/views.py:93
+#: apps/activity/views.py:95
msgid "Activity detail"
msgstr "Détails de l'activité"
-#: apps/activity/views.py:113
+#: apps/activity/views.py:115
msgid "Update activity"
msgstr "Modifier l'activité"
-#: apps/activity/views.py:140
+#: apps/activity/views.py:142
msgid "Invite guest to the activity \"{}\""
msgstr "Invitation pour l'activité « {} »"
-#: apps/activity/views.py:175
+#: apps/activity/views.py:177
msgid "You are not allowed to display the entry interface for this activity."
msgstr ""
"Vous n'êtes pas autorisé à afficher l'interface des entrées pour cette "
"activité."
-#: apps/activity/views.py:178
+#: apps/activity/views.py:180
msgid "This activity does not support activity entries."
msgstr "Cette activité ne requiert pas d'entrées."
-#: apps/activity/views.py:181
+#: apps/activity/views.py:183
msgid "This activity is closed."
msgstr "Cette activité est fermée."
-#: apps/activity/views.py:277
+#: apps/activity/views.py:279
msgid "Entry for activity \"{}\""
msgstr "Entrées pour l'activité « {} »"
@@ -424,7 +424,7 @@ msgstr "Logs"
msgid "IP Address"
msgstr "Adresse IP"
-#: apps/logs/models.py:36 apps/permission/models.py:134
+#: apps/logs/models.py:36 apps/permission/models.py:137
msgid "model"
msgstr "modèle"
@@ -445,7 +445,7 @@ msgid "create"
msgstr "créer"
#: apps/logs/models.py:65 apps/note/tables.py:165 apps/note/tables.py:201
-#: apps/permission/models.py:127 apps/treasury/tables.py:38
+#: apps/permission/models.py:130 apps/treasury/tables.py:38
#: apps/wei/tables.py:75
msgid "delete"
msgstr "supprimer"
@@ -526,48 +526,48 @@ msgid "This image cannot be loaded."
msgstr "Cette image ne peut pas être chargée."
#: apps/member/forms.py:141 apps/member/views.py:100
-#: apps/registration/forms.py:33 apps/registration/views.py:244
+#: apps/registration/forms.py:33 apps/registration/views.py:254
msgid "An alias with a similar name already exists."
msgstr "Un alias avec un nom similaire existe déjà."
-#: apps/member/forms.py:164 apps/registration/forms.py:61
+#: apps/member/forms.py:165 apps/registration/forms.py:70
msgid "Inscription paid by Société Générale"
msgstr "Inscription payée par la Société générale"
-#: apps/member/forms.py:166 apps/registration/forms.py:63
+#: apps/member/forms.py:167 apps/registration/forms.py:72
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:171 apps/registration/forms.py:68
+#: apps/member/forms.py:172 apps/registration/forms.py:77
#: apps/wei/forms/registration.py:83
msgid "Credit type"
msgstr "Type de rechargement"
-#: apps/member/forms.py:172 apps/registration/forms.py:69
+#: apps/member/forms.py:173 apps/registration/forms.py:78
#: apps/wei/forms/registration.py:84
msgid "No credit"
msgstr "Pas de rechargement"
-#: apps/member/forms.py:174
+#: apps/member/forms.py:175
msgid "You can credit the note of the user."
msgstr "Vous pouvez créditer la note de l'utilisateur avant l'adhésion."
-#: apps/member/forms.py:178 apps/registration/forms.py:74
+#: apps/member/forms.py:179 apps/registration/forms.py:83
#: apps/wei/forms/registration.py:89
msgid "Credit amount"
msgstr "Montant à créditer"
-#: apps/member/forms.py:195 apps/note/templates/note/transaction_form.html:140
-#: apps/registration/forms.py:91 apps/treasury/forms.py:134
+#: apps/member/forms.py:196 apps/note/templates/note/transaction_form.html:140
+#: apps/registration/forms.py:100 apps/treasury/forms.py:134
#: apps/wei/forms/registration.py:106
msgid "Bank"
msgstr "Banque"
-#: apps/member/forms.py:222
+#: apps/member/forms.py:223
msgid "User"
msgstr "Utilisateur"
-#: apps/member/forms.py:236
+#: apps/member/forms.py:237
msgid "Roles"
msgstr "Rôles"
@@ -795,7 +795,7 @@ msgstr ""
"renouveler."
#: apps/member/models.py:286 apps/member/models.py:311
-#: apps/note/models/notes.py:191
+#: apps/note/models/notes.py:177
msgid "club"
msgstr "club"
@@ -816,11 +816,11 @@ msgstr "l'adhésion finit le"
msgid "The role {role} does not apply to the club {club}."
msgstr "Le rôle {role} ne s'applique pas au club {club}."
-#: apps/member/models.py:430 apps/member/views.py:634
+#: apps/member/models.py:430 apps/member/views.py:646
msgid "User is already a member of the club"
msgstr "L'utilisateur est déjà membre du club"
-#: apps/member/models.py:442 apps/member/views.py:644
+#: apps/member/models.py:442 apps/member/views.py:656
msgid "User is not a member of the parent club"
msgstr "L'utilisateur n'est pas membre du club parent"
@@ -829,7 +829,7 @@ msgstr "L'utilisateur n'est pas membre du club parent"
msgid "Membership of {user} for the club {club}"
msgstr "Adhésion de {user} pour le club {club}"
-#: apps/member/models.py:498 apps/note/models/transactions.py:355
+#: apps/member/models.py:498 apps/note/models/transactions.py:358
msgid "membership"
msgstr "adhésion"
@@ -945,8 +945,8 @@ msgstr ""
"à nouveau possible."
#: apps/member/templates/member/club_alias.html:10
-#: apps/member/templates/member/profile_alias.html:10 apps/member/views.py:238
-#: apps/member/views.py:436
+#: apps/member/templates/member/profile_alias.html:10 apps/member/views.py:245
+#: apps/member/views.py:448
msgid "Note aliases"
msgstr "Alias de la note"
@@ -1010,7 +1010,7 @@ 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:283 apps/wei/templates/wei/base.html:66
+#: apps/note/models/notes.py:255 apps/wei/templates/wei/base.html:66
msgid "aliases"
msgstr "alias"
@@ -1089,39 +1089,39 @@ msgstr "Cette adresse doit être valide."
msgid "Profile detail"
msgstr "Détails de l'utilisateur"
-#: apps/member/views.py:197
+#: apps/member/views.py:204
msgid "Search user"
msgstr "Chercher un utilisateur"
-#: apps/member/views.py:258
+#: apps/member/views.py:265
msgid "Update note picture"
msgstr "Modifier la photo de la note"
-#: apps/member/views.py:304
+#: apps/member/views.py:311
msgid "Manage auth token"
msgstr "Gérer les jetons d'authentification"
-#: apps/member/views.py:331
+#: apps/member/views.py:338
msgid "Create new club"
msgstr "Créer un nouveau club"
-#: apps/member/views.py:350
+#: apps/member/views.py:357
msgid "Search club"
msgstr "Chercher un club"
-#: apps/member/views.py:383
+#: apps/member/views.py:390
msgid "Club detail"
msgstr "Détails du club"
-#: apps/member/views.py:459
+#: apps/member/views.py:471
msgid "Update club"
msgstr "Modifier le club"
-#: apps/member/views.py:493
+#: apps/member/views.py:505
msgid "Add new member to the club"
msgstr "Ajouter un nouveau membre au club"
-#: apps/member/views.py:625 apps/wei/views.py:928
+#: apps/member/views.py:637 apps/wei/views.py:928
msgid ""
"This user don't have enough money to join this club, and can't have a "
"negative balance."
@@ -1129,25 +1129,25 @@ msgstr ""
"Cet utilisateur n'a pas assez d'argent pour rejoindre ce club et ne peut pas "
"avoir un solde négatif."
-#: apps/member/views.py:648
+#: apps/member/views.py:660
msgid "The membership must start after {:%m-%d-%Y}."
msgstr "L'adhésion doit commencer après le {:%d/%m/%Y}."
-#: apps/member/views.py:653
+#: apps/member/views.py:665
msgid "The membership must begin before {:%m-%d-%Y}."
msgstr "L'adhésion doit commencer avant le {:%d/%m/%Y}."
-#: apps/member/views.py:660 apps/member/views.py:662 apps/member/views.py:664
-#: apps/registration/views.py:294 apps/registration/views.py:296
-#: apps/registration/views.py:298 apps/wei/views.py:933 apps/wei/views.py:937
+#: apps/member/views.py:672 apps/member/views.py:674 apps/member/views.py:676
+#: apps/registration/views.py:304 apps/registration/views.py:306
+#: apps/registration/views.py:308 apps/wei/views.py:933 apps/wei/views.py:937
msgid "This field is required."
msgstr "Ce champ est requis."
-#: apps/member/views.py:800
+#: apps/member/views.py:816
msgid "Manage roles of an user in the club"
msgstr "Gérer les rôles d'un utilisateur dans le club"
-#: apps/member/views.py:825
+#: apps/member/views.py:841
msgid "Members of the club"
msgstr "Membres du club"
@@ -1166,7 +1166,7 @@ msgid "amount"
msgstr "montant"
#: apps/note/api/serializers.py:183 apps/note/api/serializers.py:189
-#: apps/note/models/transactions.py:224
+#: apps/note/models/transactions.py:227
msgid ""
"The transaction can't be saved since the source note or the destination note "
"is not active."
@@ -1276,51 +1276,51 @@ msgstr "notes des utilisateurs"
msgid "%(user)s's note"
msgstr "Note de %(user)s"
-#: apps/note/models/notes.py:195
+#: apps/note/models/notes.py:181
msgid "club note"
msgstr "note d'un club"
-#: apps/note/models/notes.py:196
+#: apps/note/models/notes.py:182
msgid "clubs notes"
msgstr "notes des clubs"
-#: apps/note/models/notes.py:202
+#: apps/note/models/notes.py:188
#, python-format
msgid "Note of %(club)s club"
msgstr "Note du club %(club)s"
-#: apps/note/models/notes.py:242
+#: apps/note/models/notes.py:214
msgid "special note"
msgstr "note spéciale"
-#: apps/note/models/notes.py:243
+#: apps/note/models/notes.py:215
msgid "special notes"
msgstr "notes spéciales"
-#: apps/note/models/notes.py:266
+#: apps/note/models/notes.py:238
msgid "Invalid alias"
msgstr "Alias invalide"
-#: apps/note/models/notes.py:282
+#: apps/note/models/notes.py:254
msgid "alias"
msgstr "alias"
-#: apps/note/models/notes.py:306
+#: apps/note/models/notes.py:278
msgid "Alias is too long."
msgstr "L'alias est trop long."
-#: apps/note/models/notes.py:309
+#: apps/note/models/notes.py:281
msgid ""
"This alias contains only complex character. Please use a more simple alias."
msgstr ""
"Cet alias ne contient que des caractères complexes. Merci d'utiliser un "
"alias plus simple."
-#: apps/note/models/notes.py:313
+#: apps/note/models/notes.py:285
msgid "An alias with a similar name already exists: {} "
msgstr "Un alias avec un nom similaire existe déjà : {} "
-#: apps/note/models/notes.py:327
+#: apps/note/models/notes.py:299
msgid "You can't delete your main alias."
msgstr "Vous ne pouvez pas supprimer votre alias principal."
@@ -1396,7 +1396,7 @@ msgstr ""
"€ et 92 233 720 368 547 758.07 €. Ne cherchez pas à capitaliser l'argent du "
"BDE."
-#: apps/note/models/transactions.py:273
+#: apps/note/models/transactions.py:276
msgid ""
"The destination of this transaction must equal to the destination of the "
"template."
@@ -1404,27 +1404,27 @@ msgstr ""
"Le destinataire de cette transaction doit être identique à celui du bouton "
"utilisé."
-#: apps/note/models/transactions.py:283
+#: apps/note/models/transactions.py:286
msgid "Template"
msgstr "Bouton"
-#: apps/note/models/transactions.py:286
+#: apps/note/models/transactions.py:289
msgid "recurrent transaction"
msgstr "transaction issue de bouton"
-#: apps/note/models/transactions.py:287
+#: apps/note/models/transactions.py:290
msgid "recurrent transactions"
msgstr "transactions issues de boutons"
-#: apps/note/models/transactions.py:302
+#: apps/note/models/transactions.py:305
msgid "first_name"
msgstr "prénom"
-#: apps/note/models/transactions.py:307
+#: apps/note/models/transactions.py:310
msgid "bank"
msgstr "banque"
-#: apps/note/models/transactions.py:324
+#: apps/note/models/transactions.py:327
msgid ""
"A special transaction is only possible between a Note associated to a "
"payment method and a User or a Club"
@@ -1432,19 +1432,19 @@ msgstr ""
"Une transaction spéciale n'est possible que entre une note associée à un "
"mode de paiement et un utilisateur ou un club"
-#: apps/note/models/transactions.py:333
+#: apps/note/models/transactions.py:336
msgid "Special transaction"
msgstr "Transaction de crédit/retrait"
-#: apps/note/models/transactions.py:334
+#: apps/note/models/transactions.py:337
msgid "Special transactions"
msgstr "Transactions de crédit/retrait"
-#: apps/note/models/transactions.py:350
+#: apps/note/models/transactions.py:353
msgid "membership transaction"
msgstr "transaction d'adhésion"
-#: apps/note/models/transactions.py:351 apps/treasury/models.py:284
+#: apps/note/models/transactions.py:354 apps/treasury/models.py:284
msgid "membership transactions"
msgstr "transactions d'adhésion"
@@ -1634,53 +1634,53 @@ msgstr "Vous ne pouvez pas voir le moindre bouton."
msgid "Search transactions"
msgstr "Rechercher des transactions"
-#: apps/permission/models.py:89
+#: apps/permission/models.py:92
#, python-brace-format
msgid "Can {type} {model}.{field} in {query}"
msgstr "Can {type} {model}.{field} in {query}"
-#: apps/permission/models.py:91
+#: apps/permission/models.py:94
#, python-brace-format
msgid "Can {type} {model} in {query}"
msgstr "Can {type} {model} in {query}"
-#: apps/permission/models.py:104
+#: apps/permission/models.py:107
msgid "rank"
msgstr "rang"
-#: apps/permission/models.py:117
+#: apps/permission/models.py:120
msgid "permission mask"
msgstr "masque de permissions"
-#: apps/permission/models.py:118
+#: apps/permission/models.py:121
msgid "permission masks"
msgstr "masques de permissions"
-#: apps/permission/models.py:124
+#: apps/permission/models.py:127
msgid "add"
msgstr "ajouter"
-#: apps/permission/models.py:125
+#: apps/permission/models.py:128
msgid "view"
msgstr "voir"
-#: apps/permission/models.py:126
+#: apps/permission/models.py:129
msgid "change"
msgstr "modifier"
-#: apps/permission/models.py:158
+#: apps/permission/models.py:161
msgid "query"
msgstr "requête"
-#: apps/permission/models.py:171
+#: apps/permission/models.py:174
msgid "mask"
msgstr "masque"
-#: apps/permission/models.py:177
+#: apps/permission/models.py:180
msgid "field"
msgstr "champ"
-#: apps/permission/models.py:182
+#: apps/permission/models.py:185
msgid ""
"Tells if the permission should be granted even if the membership of the user "
"is expired."
@@ -1688,30 +1688,30 @@ msgstr ""
"Indique si la permission doit être attribuée même si l'adhésion de "
"l'utilisateur est expirée."
-#: apps/permission/models.py:183
+#: apps/permission/models.py:186
#: apps/permission/templates/permission/all_rights.html:89
msgid "permanent"
msgstr "permanent"
-#: apps/permission/models.py:194
+#: apps/permission/models.py:197
msgid "permission"
msgstr "permission"
-#: apps/permission/models.py:195 apps/permission/models.py:335
+#: apps/permission/models.py:198 apps/permission/models.py:338
msgid "permissions"
msgstr "permissions"
-#: apps/permission/models.py:200
+#: apps/permission/models.py:203
msgid "Specifying field applies only to view and change permission types."
msgstr ""
"Spécifie le champ concerné, ne fonctionne que pour les permissions view et "
"change."
-#: apps/permission/models.py:340
+#: apps/permission/models.py:343
msgid "for club"
msgstr "s'applique au club"
-#: apps/permission/models.py:350 apps/permission/models.py:351
+#: apps/permission/models.py:353 apps/permission/models.py:354
msgid "role permissions"
msgstr "permissions par rôles"
@@ -1818,10 +1818,26 @@ msgid "This email address is already used."
msgstr "Cet email est déjà pris."
#: apps/registration/forms.py:49
+msgid ""
+"I declare that I opened a bank account in the Société générale with the BDE "
+"partnership."
+msgstr ""
+"Je déclare avoir ouvert un compte à la société générale avec le partenariat "
+"du BDE."
+
+#: apps/registration/forms.py:50
+msgid ""
+"Warning: this engages you to open your bank account. If you finally decides "
+"to don't open your account, you will have to pay the BDE membership."
+msgstr ""
+"Attention : cocher cette case vous engage à ouvrir votre compte. Si vous "
+"décidez de ne pas le faire, vous devrez payer l'adhésion au BDE."
+
+#: apps/registration/forms.py:58
msgid "Register to the WEI"
msgstr "S'inscrire au WEI"
-#: apps/registration/forms.py:51
+#: apps/registration/forms.py:60
msgid ""
"Check this case if you want to register to the WEI. If you hesitate, you "
"will be able to register later, after validating your account in the Kfet."
@@ -1830,11 +1846,11 @@ msgstr ""
"pourrez toujours vous inscrire plus tard, après avoir validé votre compte à "
"la Kfet."
-#: apps/registration/forms.py:96
+#: apps/registration/forms.py:105
msgid "Join BDE Club"
msgstr "Adhérer au club BDE"
-#: apps/registration/forms.py:103
+#: apps/registration/forms.py:112
msgid "Join Kfet Club"
msgstr "Adhérer au club Kfet"
@@ -1886,7 +1902,12 @@ msgstr "Supprimer l'inscription"
msgid "Validate account"
msgstr "Valider le compte"
-#: apps/registration/templates/registration/future_profile_detail.html:64
+#: apps/registration/templates/registration/future_profile_detail.html:62
+msgid ""
+"The user declared that he/she opened a bank account in the Société générale."
+msgstr "L'utilisateur a déclaré avoir ouvert un compte à la société générale."
+
+#: apps/registration/templates/registration/future_profile_detail.html:71
#: apps/wei/templates/wei/weimembership_form.html:127
#: apps/wei/templates/wei/weimembership_form.html:186
msgid "Validate registration"
@@ -1940,50 +1961,50 @@ msgstr "L'équipe de la Note Kfet."
msgid "Register new user"
msgstr "Enregistrer un nouvel utilisateur"
-#: apps/registration/views.py:85
+#: apps/registration/views.py:93
msgid "Email validation"
msgstr "Validation de l'adresse mail"
-#: apps/registration/views.py:87
+#: apps/registration/views.py:95
msgid "Validate email"
msgstr "Valider l'adresse e-mail"
-#: apps/registration/views.py:129
+#: apps/registration/views.py:137
msgid "Email validation unsuccessful"
msgstr "La validation de l'adresse mail a échoué"
-#: apps/registration/views.py:140
+#: apps/registration/views.py:148
msgid "Email validation email sent"
msgstr "L'email de vérification de l'adresse email a bien été envoyé"
-#: apps/registration/views.py:148
+#: apps/registration/views.py:156
msgid "Resend email validation link"
msgstr "Renvoyer le lien de validation"
-#: apps/registration/views.py:166
+#: apps/registration/views.py:174
msgid "Pre-registered users list"
msgstr "Liste des utilisateurs en attente d'inscription"
-#: apps/registration/views.py:190
+#: apps/registration/views.py:198
msgid "Unregistered users"
msgstr "Utilisateurs en attente d'inscription"
-#: apps/registration/views.py:203
+#: apps/registration/views.py:211
msgid "Registration detail"
msgstr "Détails de l'inscription"
-#: apps/registration/views.py:263
+#: apps/registration/views.py:273
msgid "You must join the BDE."
msgstr "Vous devez adhérer au BDE."
-#: apps/registration/views.py:287
+#: apps/registration/views.py:297
msgid ""
"The entered amount is not enough for the memberships, should be at least {}"
msgstr ""
"Le montant crédité est trop faible pour adhérer, il doit être au minimum de "
"{}"
-#: apps/registration/views.py:367
+#: apps/registration/views.py:384
msgid "Invalidate pre-registration"
msgstr "Invalider l'inscription"
@@ -2129,7 +2150,7 @@ msgstr "proxys de transactions spéciales"
msgid "credit transaction"
msgstr "transaction de crédit"
-#: apps/treasury/models.py:369
+#: apps/treasury/models.py:374
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."
@@ -2137,16 +2158,16 @@ msgstr ""
"Cet utilisateur n'a pas assez d'argent pour payer les adhésions avec sa "
"note. Merci de lui demander de recharger sa note avant d'invalider ce crédit."
-#: apps/treasury/models.py:384
+#: apps/treasury/models.py:389
#: apps/treasury/templates/treasury/sogecredit_detail.html:10
msgid "Credit from the Société générale"
msgstr "Crédit de la Société générale"
-#: apps/treasury/models.py:385
+#: apps/treasury/models.py:390
msgid "Credits from the Société générale"
msgstr "Crédits de la Société générale"
-#: apps/treasury/models.py:388
+#: apps/treasury/models.py:393
#, python-brace-format
msgid "Soge credit for {user}"
msgstr "Crédit de la société générale pour l'utilisateur {user}"
@@ -2922,19 +2943,19 @@ msgstr "Valider l'inscription WEI"
msgid "This user didn't give her/his caution check."
msgstr "Cet utilisateur n'a pas donné son chèque de caution."
-#: note_kfet/settings/base.py:155
+#: note_kfet/settings/base.py:157
msgid "German"
msgstr "Allemand"
-#: note_kfet/settings/base.py:156
+#: note_kfet/settings/base.py:158
msgid "English"
msgstr "Anglais"
-#: note_kfet/settings/base.py:157
+#: note_kfet/settings/base.py:159
msgid "Spanish"
msgstr "Espagnol"
-#: note_kfet/settings/base.py:158
+#: note_kfet/settings/base.py:160
msgid "French"
msgstr "Français"
@@ -3022,7 +3043,7 @@ msgstr "Se déconnecter"
#: note_kfet/templates/base.html:136
#: note_kfet/templates/registration/signup.html:6
#: note_kfet/templates/registration/signup.html:11
-#: note_kfet/templates/registration/signup.html:27
+#: note_kfet/templates/registration/signup.html:28
msgid "Sign up"
msgstr "Inscription"
@@ -3034,7 +3055,21 @@ msgstr "Inscription"
msgid "Log in"
msgstr "Se connecter"
-#: note_kfet/templates/base.html:155
+#: note_kfet/templates/base.html:156
+msgid ""
+"You are not a BDE member anymore. Please renew your membership if you want "
+"to use the note."
+msgstr ""
+"Vous n'êtes plus adhérent BDE. Merci de réadhérer si vous voulez profiter de "
+"la note."
+
+#: note_kfet/templates/base.html:160
+msgid "You are not a Kfet member, so you can't use your note account."
+msgstr ""
+"Vous n'êtes pas adhérent Kfet, vous ne pouvez par conséquent pas utiliser "
+"votre compte note."
+
+#: note_kfet/templates/base.html:166
msgid ""
"Your e-mail address is not validated. Please check your mail inbox and click "
"on the validation link."
@@ -3042,7 +3077,22 @@ msgstr ""
"Votre adresse e-mail n'est pas validée. Merci de vérifier votre boîte mail "
"et de cliquer sur le lien de validation."
-#: note_kfet/templates/base.html:172
+#: note_kfet/templates/base.html:171
+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 "
+"registration bonus of 80 € is not credited and the membership is not paid "
+"yet. This verification procedure may last a few days. Please make sure that "
+"you go to the end of the account creation."
+msgstr ""
+"Vous avez déclaré que vous avez ouvert un compte bancaire à la société "
+"générale. La banque n'a pas encore validé la création du compte auprès du "
+"BDE, le bonus d'inscription de 80 € n'a donc pas encore été créditée et "
+"l'adhésion n'est pas encore payée. Cette procédure de vérification peut "
+"durer quelques jours. Merci de vous assurer de bien aller au bout de vos "
+"démarches."
+
+#: note_kfet/templates/base.html:194
msgid "Contact us"
msgstr "Nous contacter"
@@ -3054,21 +3104,6 @@ msgstr "Chercher par un attribut tel que le nom …"
msgid "There is no results."
msgstr "Il n'y a pas de résultat."
-#: note_kfet/templates/cas_server/base.html:7
-msgid "Central Authentication Service"
-msgstr "Service Central d'Authentification"
-
-#: note_kfet/templates/cas_server/base.html:43
-#, python-format
-msgid ""
-"A new version of the application is available. This instance runs "
-"%(VERSION)s and the last version is %(LAST_VERSION)s. Please consider "
-"upgrading."
-msgstr ""
-"Une nouvelle version de l'application est disponible. Cette instance utilise "
-"la version %(VERSION)s et la dernière version est %(LAST_VERSION)s. Merci de "
-"vous mettre à jour."
-
#: note_kfet/templates/registration/logged_out.html:13
msgid "Thanks for spending some quality time with the Web site today."
msgstr "Merci d'avoir utilisé la Note Kfet."
@@ -3181,5 +3216,18 @@ msgstr ""
"d'adhésion. Vous devez également valider votre adresse email en suivant le "
"lien que vous avez reçu."
+#~ msgid "Central Authentication Service"
+#~ msgstr "Service Central d'Authentification"
+
+#, python-format
+#~ msgid ""
+#~ "A new version of the application is available. This instance runs "
+#~ "%(VERSION)s and the last version is %(LAST_VERSION)s. Please consider "
+#~ "upgrading."
+#~ msgstr ""
+#~ "Une nouvelle version de l'application est disponible. Cette instance "
+#~ "utilise la version %(VERSION)s et la dernière version est "
+#~ "%(LAST_VERSION)s. Merci de vous mettre à jour."
+
#~ msgid "Check this case is the Société Générale paid the inscription."
#~ msgstr "Cochez cette case si la Société Générale a payé l'inscription."
diff --git a/note_kfet/settings/base.py b/note_kfet/settings/base.py
index f319b2db..f94a68e0 100644
--- a/note_kfet/settings/base.py
+++ b/note_kfet/settings/base.py
@@ -245,7 +245,7 @@ REST_FRAMEWORK = {
FORM_RENDERER = 'django.forms.renderers.TemplatesSetting'
# After login redirect user to transfer page
-LOGIN_REDIRECT_URL = '/note/transfer/'
+LOGIN_REDIRECT_URL = '/'
# An user session will expired after 3 hours
SESSION_COOKIE_AGE = 60 * 60 * 3
diff --git a/note_kfet/templates/base.html b/note_kfet/templates/base.html
index 79ea6ea9..71e19f83 100644
--- a/note_kfet/templates/base.html
+++ b/note_kfet/templates/base.html
@@ -1,4 +1,4 @@
-{% load static i18n pretty_money static getenv perms %}
+{% load static i18n pretty_money static getenv perms memberinfo %}
{% comment %}
SPDX-License-Identifier: GPL-3.0-or-later
{% endcomment %}
@@ -64,7 +64,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
{% trans 'Consumptions' %}
{% endif %}
- {% if "note.transaction"|not_empty_model_list %}
+ {% if user.is_authenticated and user|is_member:"Kfet" %}
{% url 'note:transfer' as url %}
{% trans 'Transfer' %}
@@ -150,12 +150,36 @@ SPDX-License-Identifier: GPL-3.0-or-later
- {% if request.user.is_authenticated and not request.user.profile.email_confirmed %}
-
- {% trans "Your e-mail address is not validated. Please check your mail inbox and click on the validation link." %}
-
- {% endif %}
-
+
+ {% if user.is_authenticated %}
+ {% if not user|is_member:"BDE" %}
+
+ {% trans "You are not a BDE member anymore. Please renew your membership if you want to use the note." %}
+
+ {% elif not user|is_member:"Kfet" %}
+
+ {% trans "You are not a Kfet member, so you can't use your note account." %}
+
+ {% endif %}
+
+ {% if not user.profile.email_confirmed %}
+
+ {% trans "Your e-mail address is not validated. Please check your mail inbox and click on the validation link." %}
+
+ {% endif %}
+ {% endif %}
+ {% if user.sogecredit and not user.sogecredit.valid %}
+
+ {% blocktrans trimmed %}
+ 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 registration bonus of 80 € is not credited and the membership is not paid yet.
+ This verification procedure may last a few days.
+ Please make sure that you go to the end of the account creation.
+ {% endblocktrans %}
+
+ {% endif %}
+ {# TODO Add banners #}
+
{% block content %}
Default content...
{% endblock %}
diff --git a/note_kfet/templates/registration/signup.html b/note_kfet/templates/registration/signup.html
index 268ba7ff..0a15fa07 100644
--- a/note_kfet/templates/registration/signup.html
+++ b/note_kfet/templates/registration/signup.html
@@ -23,6 +23,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
{% csrf_token %}
{{ form|crispy }}
{{ profile_form|crispy }}
+ {{ soge_form|crispy }}
diff --git a/note_kfet/urls.py b/note_kfet/urls.py
index d9e51b63..d4341bc6 100644
--- a/note_kfet/urls.py
+++ b/note_kfet/urls.py
@@ -5,15 +5,14 @@ from django.conf import settings
from django.conf.urls.static import static
from django.urls import path, include
from django.views.defaults import bad_request, permission_denied, page_not_found, server_error
-from django.views.generic import RedirectView
-
from member.views import CustomLoginView
from .admin import admin_site
+from .views import IndexView
urlpatterns = [
# Dev so redirect to something random
- path('', RedirectView.as_view(pattern_name='note:transfer'), name='index'),
+ path('', IndexView.as_view(), name='index'),
# Include project routers
path('note/', include('note.urls')),
diff --git a/note_kfet/views.py b/note_kfet/views.py
new file mode 100644
index 00000000..bd2b2424
--- /dev/null
+++ b/note_kfet/views.py
@@ -0,0 +1,30 @@
+# Copyright (C) 2018-2020 by BDE ENS Paris-Saclay
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+from django.contrib.auth.mixins import LoginRequiredMixin
+from django.urls import reverse
+from django.views.generic import RedirectView
+from note.models import Alias
+from permission.backends import PermissionBackend
+
+
+class IndexView(LoginRequiredMixin, RedirectView):
+ def get_redirect_url(self, *args, **kwargs):
+ """
+ Calculate the index page according to the roles.
+ A normal user will have access to the transfer page.
+ A non-Kfet member will have access to its user detail page.
+ The user "note" will display the consumption interface.
+ """
+ user = self.request.user
+
+ # The account note will have the consumption page as default page
+ if not PermissionBackend.check_perm(user, "auth.view_user", user):
+ return reverse("note:consos")
+
+ # People that can see the alias BDE are Kfet members
+ if PermissionBackend.check_perm(user, "alias.view_alias", Alias.objects.get(name="BDE")):
+ return reverse("note:transfer")
+
+ # Non-Kfet members will don't see the transfer page, but their profile page
+ return reverse("member:user_detail", args=(user.pk,))