diff --git a/apps/member/static/member/js/trust.js b/apps/member/static/member/js/trust.js
new file mode 100644
index 00000000..a16bed08
--- /dev/null
+++ b/apps/member/static/member/js/trust.js
@@ -0,0 +1,53 @@
+/**
+ * On form submit, create a new friendship
+ */
+function create_trust (e) {
+ // Do not submit HTML form
+ e.preventDefault()
+
+ // Get data and send to API
+ const formData = new FormData(e.target)
+ $.getJSON('/api/note/alias/'+formData.get('trusted') + '/',
+ function (trusted_alias) {
+ if ((trusted_alias.note == formData.get('trusting')))
+ {
+ addMsg(gettext("You can't add yourself as a friend"), "danger")
+ return
+ }
+ $.post('/api/note/trust/', {
+ csrfmiddlewaretoken: formData.get('csrfmiddlewaretoken'),
+ trusting: formData.get('trusting'),
+ trusted: trusted_alias.note
+ }).done(function () {
+ // Reload table
+ $('#trust_table').load(location.pathname + ' #trust_table')
+ addMsg(gettext('Friendship successfully added'), 'success')
+ }).fail(function (xhr, _textStatus, _error) {
+ errMsg(xhr.responseJSON)
+ })
+ }).fail(function (xhr, _textStatus, _error) {
+ errMsg(xhr.responseJSON)
+ })
+}
+
+/**
+ * On click of "delete", delete the alias
+ * @param button_id:Integer Alias id to remove
+ */
+function delete_button (button_id) {
+ $.ajax({
+ url: '/api/note/trust/' + button_id + '/',
+ method: 'DELETE',
+ headers: { 'X-CSRFTOKEN': CSRF_TOKEN }
+ }).done(function () {
+ addMsg(gettext('Friendship successfully deleted'), 'success')
+ $('#trust_table').load(location.pathname + ' #trust_table')
+ }).fail(function (xhr, _textStatus, _error) {
+ errMsg(xhr.responseJSON)
+ })
+}
+
+$(document).ready(function () {
+ // Attach event
+ document.getElementById('form_trust').addEventListener('submit', create_trust)
+})
diff --git a/apps/member/templates/member/includes/profile_info.html b/apps/member/templates/member/includes/profile_info.html
index 378d54e2..3a927c9f 100644
--- a/apps/member/templates/member/includes/profile_info.html
+++ b/apps/member/templates/member/includes/profile_info.html
@@ -25,6 +25,14 @@
+
{% trans 'friendships'|capfirst %}
+
+
+
+ {% trans 'Manage friendships' %} ({{ user_object.note.trusting.all|length }})
+
+
+
{% if "member.view_profile"|has_perm:user_object.profile %}
{% trans 'section'|capfirst %}
{{ user_object.profile.section }}
diff --git a/apps/member/templates/member/profile_trust.html b/apps/member/templates/member/profile_trust.html
new file mode 100644
index 00000000..bd8d6b50
--- /dev/null
+++ b/apps/member/templates/member/profile_trust.html
@@ -0,0 +1,41 @@
+{% extends "member/base.html" %}
+{% comment %}
+SPDX-License-Identifier: GPL-3.0-or-later
+{% endcomment %}
+{% load static django_tables2 i18n %}
+
+{% block profile_content %}
+
+
+
+ {% if can_create %}
+
+ {% endif %}
+
+ {% render_table trusting %}
+
+
+
+ {% blocktrans trimmed %}
+ Adding someone as a friend enables them to initiate transactions coming
+ from your account (while keeping your balance positive). This is
+ designed to simplify using note kfet transfers to transfer money between
+ users. The intent is that one person can make all transfers for a group of
+ friends without needing additional rights among them.
+ {% endblocktrans %}
+
+{% endblock %}
+
+{% block extrajavascript %}
+
+
+{% endblock%}
diff --git a/apps/member/urls.py b/apps/member/urls.py
index b1c537d5..54b0f91d 100644
--- a/apps/member/urls.py
+++ b/apps/member/urls.py
@@ -23,5 +23,6 @@ urlpatterns = [
path('user//update/', views.UserUpdateView.as_view(), name="user_update_profile"),
path('user//update_pic/', views.ProfilePictureUpdateView.as_view(), name="user_update_pic"),
path('user//aliases/', views.ProfileAliasView.as_view(), name="user_alias"),
+ path('user//trust', views.ProfileTrustView.as_view(), name="user_trust"),
path('manage-auth-token/', views.ManageAuthTokens.as_view(), name='auth_token'),
]
diff --git a/apps/member/views.py b/apps/member/views.py
index 6ce8d4c5..2f6348a6 100644
--- a/apps/member/views.py
+++ b/apps/member/views.py
@@ -8,6 +8,7 @@ from django.contrib.auth import logout
from django.contrib.auth.mixins import LoginRequiredMixin
from django.contrib.auth.models import User
from django.contrib.auth.views import LoginView
+from django.contrib.contenttypes.models import ContentType
from django.db import transaction
from django.db.models import Q, F
from django.shortcuts import redirect
@@ -18,9 +19,9 @@ from django.views.generic import DetailView, UpdateView, TemplateView
from django.views.generic.edit import FormMixin
from django_tables2.views import SingleTableView
from rest_framework.authtoken.models import Token
-from note.models import Alias, NoteUser, NoteClub
+from note.models import Alias, NoteClub, NoteUser, Trust
from note.models.transactions import Transaction, SpecialTransaction
-from note.tables import HistoryTable, AliasTable
+from note.tables import HistoryTable, AliasTable, TrustTable
from note_kfet.middlewares import _set_current_request
from permission.backends import PermissionBackend
from permission.models import Role
@@ -243,6 +244,39 @@ class UserListView(ProtectQuerysetMixin, LoginRequiredMixin, SingleTableView):
return context
+class ProfileTrustView(ProtectQuerysetMixin, LoginRequiredMixin, DetailView):
+ """
+ View and manage user trust relationships
+ """
+ model = User
+ template_name = 'member/profile_trust.html'
+ context_object_name = 'user_object'
+ extra_context = {"title": _("Note friendships")}
+
+ def get_context_data(self, **kwargs):
+ context = super().get_context_data(**kwargs)
+ note = context['object'].note
+ context["trusting"] = TrustTable(
+ note.trusting.filter(PermissionBackend.filter_queryset(self.request, Trust, "view")).distinct().all())
+ context["can_create"] = PermissionBackend.check_perm(self.request, "note.add_trust", Trust(
+ trusting=context["object"].note,
+ trusted=context["object"].note
+ ))
+ context["widget"] = {
+ "name": "trusted",
+ "attrs": {
+ "model_pk": ContentType.objects.get_for_model(Alias).pk,
+ "class": "autocomplete form-control",
+ "id": "trusted",
+ "resetable": True,
+ "api_url": "/api/note/alias/?note__polymorphic_ctype__model=noteuser",
+ "name_field": "name",
+ "placeholder": ""
+ }
+ }
+ return context
+
+
class ProfileAliasView(ProtectQuerysetMixin, LoginRequiredMixin, DetailView):
"""
View and manage user aliases.
diff --git a/apps/note/api/serializers.py b/apps/note/api/serializers.py
index 7dda6dba..33bf75ba 100644
--- a/apps/note/api/serializers.py
+++ b/apps/note/api/serializers.py
@@ -12,7 +12,7 @@ from note_kfet.middlewares import get_current_request
from permission.backends import PermissionBackend
from rest_framework.utils import model_meta
-from ..models.notes import Note, NoteClub, NoteSpecial, NoteUser, Alias
+from ..models.notes import Note, NoteClub, NoteSpecial, NoteUser, Alias, Trust
from ..models.transactions import TransactionTemplate, Transaction, MembershipTransaction, TemplateCategory, \
RecurrentTransaction, SpecialTransaction
@@ -77,6 +77,22 @@ class NoteUserSerializer(serializers.ModelSerializer):
return str(obj)
+class TrustSerializer(serializers.ModelSerializer):
+ """
+ REST API Serializer for Trusts.
+ The djangorestframework plugin will analyse the model `Trust` and parse all fields in the API.
+ """
+
+ class Meta:
+ model = Trust
+ fields = '__all__'
+
+ def validate(self, attrs):
+ instance = Trust(**attrs)
+ instance.clean()
+ return attrs
+
+
class AliasSerializer(serializers.ModelSerializer):
"""
REST API Serializer for Aliases.
diff --git a/apps/note/api/urls.py b/apps/note/api/urls.py
index bacf3d32..d15e8241 100644
--- a/apps/note/api/urls.py
+++ b/apps/note/api/urls.py
@@ -2,7 +2,8 @@
# SPDX-License-Identifier: GPL-3.0-or-later
from .views import NotePolymorphicViewSet, AliasViewSet, ConsumerViewSet, \
- TemplateCategoryViewSet, TransactionViewSet, TransactionTemplateViewSet
+ TemplateCategoryViewSet, TransactionViewSet, TransactionTemplateViewSet, \
+ TrustViewSet
def register_note_urls(router, path):
@@ -11,6 +12,7 @@ def register_note_urls(router, path):
"""
router.register(path + '/note', NotePolymorphicViewSet)
router.register(path + '/alias', AliasViewSet)
+ router.register(path + '/trust', TrustViewSet)
router.register(path + '/consumer', ConsumerViewSet)
router.register(path + '/transaction/category', TemplateCategoryViewSet)
diff --git a/apps/note/api/views.py b/apps/note/api/views.py
index a228bdf6..34ffaf2d 100644
--- a/apps/note/api/views.py
+++ b/apps/note/api/views.py
@@ -14,8 +14,9 @@ from api.viewsets import ReadProtectedModelViewSet, ReadOnlyProtectedModelViewSe
from permission.backends import PermissionBackend
from .serializers import NotePolymorphicSerializer, AliasSerializer, ConsumerSerializer,\
- TemplateCategorySerializer, TransactionTemplateSerializer, TransactionPolymorphicSerializer
-from ..models.notes import Note, Alias, NoteUser, NoteClub, NoteSpecial
+ TemplateCategorySerializer, TransactionTemplateSerializer, TransactionPolymorphicSerializer, \
+ TrustSerializer
+from ..models.notes import Note, Alias, NoteUser, NoteClub, NoteSpecial, Trust
from ..models.transactions import TransactionTemplate, Transaction, TemplateCategory
@@ -56,11 +57,41 @@ class NotePolymorphicViewSet(ReadProtectedModelViewSet):
return queryset.order_by("id")
+class TrustViewSet(ReadProtectedModelViewSet):
+ """
+ REST Trust View set.
+ The djangorestframework plugin will get all `Trust` objects, serialize it to JSON with the given serializer,
+ then render it on /api/note/trust/
+ """
+ queryset = Trust.objects
+ serializer_class = TrustSerializer
+ filter_backends = [SearchFilter, DjangoFilterBackend, OrderingFilter]
+ search_fields = ['$trusting__alias__name', '$trusting__alias__normalized_name',
+ '$trusted__alias__name', '$trusted__alias__normalized_name']
+ filterset_fields = ['trusting', 'trusting__noteuser__user', 'trusted', 'trusted__noteuser__user']
+ ordering_fields = ['trusting', 'trusted', ]
+
+ def get_serializer_class(self):
+ serializer_class = self.serializer_class
+ if self.request.method in ['PUT', 'PATCH']:
+ # trust relationship can't change people involved
+ serializer_class.Meta.read_only_fields = ('trusting', 'trusting',)
+ return serializer_class
+
+ def destroy(self, request, *args, **kwargs):
+ instance = self.get_object()
+ try:
+ self.perform_destroy(instance)
+ except ValidationError as e:
+ return Response({e.code: str(e)}, status.HTTP_400_BAD_REQUEST)
+ return Response(status=status.HTTP_204_NO_CONTENT)
+
+
class AliasViewSet(ReadProtectedModelViewSet):
"""
REST API View set.
The djangorestframework plugin will get all `Alias` objects, serialize it to JSON with the given serializer,
- then render it on /api/aliases/
+ then render it on /api/note/aliases/
"""
queryset = Alias.objects
serializer_class = AliasSerializer
diff --git a/apps/note/migrations/0006_trust.py b/apps/note/migrations/0006_trust.py
new file mode 100644
index 00000000..4ed059fb
--- /dev/null
+++ b/apps/note/migrations/0006_trust.py
@@ -0,0 +1,27 @@
+# Generated by Django 2.2.24 on 2021-09-05 19:16
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('note', '0005_auto_20210313_1235'),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='Trust',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('trusted', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='trusted', to='note.Note', verbose_name='trusted')),
+ ('trusting', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='trusting', to='note.Note', verbose_name='trusting')),
+ ],
+ options={
+ 'verbose_name': 'frienship',
+ 'verbose_name_plural': 'friendships',
+ 'unique_together': {('trusting', 'trusted')},
+ },
+ ),
+ ]
diff --git a/apps/note/models/__init__.py b/apps/note/models/__init__.py
index 07a1d6e0..ab5d4ff1 100644
--- a/apps/note/models/__init__.py
+++ b/apps/note/models/__init__.py
@@ -1,13 +1,13 @@
# Copyright (C) 2018-2021 by BDE ENS Paris-Saclay
# SPDX-License-Identifier: GPL-3.0-or-later
-from .notes import Alias, Note, NoteClub, NoteSpecial, NoteUser
+from .notes import Alias, Note, NoteClub, NoteSpecial, NoteUser, Trust
from .transactions import MembershipTransaction, Transaction, \
TemplateCategory, TransactionTemplate, RecurrentTransaction, SpecialTransaction
__all__ = [
# Notes
- 'Alias', 'Note', 'NoteClub', 'NoteSpecial', 'NoteUser',
+ 'Alias', 'Trust', 'Note', 'NoteClub', 'NoteSpecial', 'NoteUser',
# Transactions
'MembershipTransaction', 'Transaction', 'TemplateCategory', 'TransactionTemplate',
'RecurrentTransaction', 'SpecialTransaction',
diff --git a/apps/note/models/notes.py b/apps/note/models/notes.py
index f760882b..6db9e5f8 100644
--- a/apps/note/models/notes.py
+++ b/apps/note/models/notes.py
@@ -217,6 +217,38 @@ class NoteSpecial(Note):
return self.special_type
+class Trust(models.Model):
+ """
+ A one-sided trust relationship bertween two users
+
+ If another user considers you as your friend, you can transfer money from
+ them
+ """
+
+ trusting = models.ForeignKey(
+ Note,
+ on_delete=models.CASCADE,
+ related_name='trusting',
+ verbose_name=_('trusting')
+ )
+
+ trusted = models.ForeignKey(
+ Note,
+ on_delete=models.CASCADE,
+ related_name='trusted',
+ verbose_name=_('trusted')
+ )
+
+ class Meta:
+ verbose_name = _("frienship")
+ verbose_name_plural = _("friendships")
+ unique_together = ("trusting", "trusted")
+
+ def __str__(self):
+ return _("Friendship between {trusting} and {trusted}").format(
+ trusting=str(self.trusting), trusted=str(self.trusted))
+
+
class Alias(models.Model):
"""
points toward a :model:`note.NoteUser` or :model;`note.NoteClub` instance.
diff --git a/apps/note/tables.py b/apps/note/tables.py
index 2cfbcc76..1e94a39f 100644
--- a/apps/note/tables.py
+++ b/apps/note/tables.py
@@ -10,7 +10,7 @@ from django.utils.translation import gettext_lazy as _
from note_kfet.middlewares import get_current_request
from permission.backends import PermissionBackend
-from .models.notes import Alias
+from .models.notes import Alias, Trust
from .models.transactions import Transaction, TransactionTemplate
from .templatetags.pretty_money import pretty_money
@@ -148,6 +148,31 @@ DELETE_TEMPLATE = """
"""
+class TrustTable(tables.Table):
+ class Meta:
+ attrs = {
+ 'class': 'table table condensed table-striped',
+ 'id': "trust_table"
+ }
+ model = Trust
+ fields = ("trusted",)
+ template_name = 'django_tables2/bootstrap4.html'
+
+ show_header = False
+ trusted = tables.Column(attrs={'td': {'class': 'text_center'}})
+
+ delete_col = tables.TemplateColumn(
+ template_code=DELETE_TEMPLATE,
+ extra_context={"delete_trans": _('delete')},
+ attrs={
+ 'td': {
+ 'class': lambda record: 'col-sm-1'
+ + (' d-none' if not PermissionBackend.check_perm(
+ get_current_request(), "note.delete_trust", record)
+ else '')}},
+ verbose_name=_("Delete"),)
+
+
class AliasTable(tables.Table):
class Meta:
attrs = {
diff --git a/apps/permission/fixtures/initial.json b/apps/permission/fixtures/initial.json
index ddd5b0d2..1335b3aa 100644
--- a/apps/permission/fixtures/initial.json
+++ b/apps/permission/fixtures/initial.json
@@ -2967,6 +2967,118 @@
"description": "Supprimer une application OAuth2"
}
},
+ {
+ "model": "permission.permission",
+ "pk": 190,
+ "fields": {
+ "model": [
+ "note",
+ "trust"
+ ],
+ "query": "{\"trusting\": [\"user\", \"note\"]}",
+ "type": "delete",
+ "mask": 1,
+ "field": "",
+ "permanent": false,
+ "description": "Supprimer une amitié à sa note"
+ }
+ },
+ {
+ "model": "permission.permission",
+ "pk": 191,
+ "fields": {
+ "model": [
+ "note",
+ "trust"
+ ],
+ "query": "{\"trusting\": [\"user\", \"note\"]}",
+ "type": "add",
+ "mask": 1,
+ "field": "",
+ "permanent": false,
+ "description": "Ajouter une amitié à sa note"
+ }
+ },
+ {
+ "model": "permission.permission",
+ "pk": 192,
+ "fields": {
+ "model": [
+ "note",
+ "trust"
+ ],
+ "query": "{\"trusting__is_active\": true}",
+ "type": "add",
+ "mask": 1,
+ "field": "",
+ "permanent": false,
+ "description": "Ajouter une amitié à une note non bloquée"
+ }
+ },
+ {
+ "model": "permission.permission",
+ "pk": 193,
+ "fields": {
+ "model": [
+ "note",
+ "trust"
+ ],
+ "query": "{\"trusting__is_active\": true}",
+ "type": "delete",
+ "mask": 3,
+ "field": "",
+ "permanent": false,
+ "description": "Supprimer une amitié à une note non bloquée"
+ }
+ },
+ {
+ "model": "permission.permission",
+ "pk": 194,
+ "fields": {
+ "model": [
+ "note",
+ "trust"
+ ],
+ "query": "{}",
+ "type": "view",
+ "mask": 3,
+ "field": "",
+ "permanent": false,
+ "description": "Voir toutes les amitiés, y compris celles des non adhérents"
+ }
+ },
+ {
+ "model": "permission.permission",
+ "pk": 195,
+ "fields": {
+ "model": [
+ "note",
+ "trust"
+ ],
+ "query": "{\"trusting__noteuser__user\": [\"user\"]}",
+ "type": "view",
+ "mask": 1,
+ "field": "",
+ "permanent": true,
+ "description": "Voir ses propres amitiés, pour toujours"
+ }
+ },
+ {
+ "model": "permission.permission",
+ "pk": 196,
+ "fields": {
+ "model": [
+ "note",
+ "transaction"
+ ],
+ "query": "[\"AND\", {\"source__trusting__trusted\": [\"user\", \"note\"]}, [\"OR\", {\"source__balance__gte\": {\"F\": [\"MUL\", [\"F\", \"amount\"], [\"F\", \"quantity\"]]}}, {\"valid\": false}]]",
+ "type": "add",
+ "mask": 1,
+ "field": "",
+ "permanent": false,
+ "description": "Transférer de l'argent depuis une note amie en restant positif"
+ }
+ },
{
"model": "permission.role",
"pk": 1,
@@ -3001,7 +3113,11 @@
186,
187,
188,
- 189
+ 189,
+ 190,
+ 191,
+ 195,
+ 196
]
}
},
@@ -3042,7 +3158,9 @@
158,
159,
160,
- 179
+ 179,
+ 189,
+ 190
]
}
},
@@ -3192,7 +3310,10 @@
176,
177,
178,
- 183
+ 188,
+ 183,
+ 186,
+ 187
]
}
},
@@ -3386,7 +3507,14 @@
186,
187,
188,
- 189
+ 189,
+ 190,
+ 191,
+ 192,
+ 193,
+ 194,
+ 195,
+ 196
]
}
},
diff --git a/locale/de/LC_MESSAGES/django.po b/locale/de/LC_MESSAGES/django.po
index 46d60dc6..215a09a7 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: 2021-08-29 14:06+0200\n"
+"POT-Creation-Date: 2022-04-10 22:34+0200\n"
"PO-Revision-Date: 2020-11-16 20:02+0000\n"
"Last-Translator: Yohann D'ANELLO \n"
"Language-Team: German \n"
@@ -23,28 +23,32 @@ msgstr ""
msgid "activity"
msgstr "Veranstaltung"
-#: apps/activity/forms.py:35 apps/activity/models.py:132
+#: apps/activity/forms.py:34
+msgid "The note of this club is inactive."
+msgstr ""
+
+#: apps/activity/forms.py:41 apps/activity/models.py:132
msgid "The end date must be after the start date."
msgstr "Das Abschlussdatum muss nach das Anfangsdatum sein."
-#: apps/activity/forms.py:76 apps/activity/models.py:270
+#: apps/activity/forms.py:82 apps/activity/models.py:270
msgid "You can't invite someone once the activity is started."
msgstr ""
"Sie dürfen nicht jemandem einladen wenn die Veranstaltung angefangen hat."
-#: apps/activity/forms.py:79 apps/activity/models.py:273
+#: apps/activity/forms.py:85 apps/activity/models.py:273
msgid "This activity is not validated yet."
msgstr "Diese Veranstaltung ist noch nicht bestätigt."
-#: apps/activity/forms.py:89 apps/activity/models.py:281
+#: apps/activity/forms.py:95 apps/activity/models.py:281
msgid "This person has been already invited 5 times this year."
msgstr "Diese Person wurde schon 5 mal dieses Jahr eingeladen."
-#: apps/activity/forms.py:93 apps/activity/models.py:285
+#: apps/activity/forms.py:99 apps/activity/models.py:285
msgid "This person is already invited."
msgstr "Diese Person wurde schon eingeladen."
-#: apps/activity/forms.py:97 apps/activity/models.py:289
+#: apps/activity/forms.py:103 apps/activity/models.py:289
msgid "You can't invite more than 3 people to this activity."
msgstr "Sie dürfen höchstens 3 Leute zu dieser Veranstaltung einladen."
@@ -52,11 +56,11 @@ 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:231 apps/note/models/transactions.py:26
+#: apps/note/models/notes.py:263 apps/note/models/transactions.py:26
#: apps/note/models/transactions.py:46 apps/note/models/transactions.py:301
#: apps/permission/models.py:330
#: apps/registration/templates/registration/future_profile_detail.html:16
-#: apps/wei/models.py:66 apps/wei/models.py:123
+#: apps/wei/models.py:67 apps/wei/models.py:131 apps/wei/tables.py:282
#: apps/wei/templates/wei/base.html:26
#: apps/wei/templates/wei/weimembership_form.html:14
msgid "name"
@@ -91,7 +95,7 @@ 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:77 apps/wei/models.py:134
+#: apps/permission/models.py:189 apps/wei/models.py:78 apps/wei/models.py:142
msgid "description"
msgstr "Beschreibung"
@@ -110,9 +114,10 @@ msgstr "Wo findet die Veranstaltung statt ? (z.B Kfet)."
msgid "type"
msgstr "Type"
-#: apps/activity/models.py:89 apps/logs/models.py:22 apps/member/models.py:305
-#: apps/note/models/notes.py:148 apps/treasury/models.py:283
-#: apps/wei/models.py:165 apps/wei/templates/wei/survey.html:15
+#: apps/activity/models.py:89 apps/logs/models.py:22 apps/member/models.py:307
+#: apps/note/models/notes.py:148 apps/treasury/models.py:285
+#: apps/wei/models.py:173 apps/wei/templates/wei/attribute_bus_1A.html:13
+#: apps/wei/templates/wei/survey.html:15
msgid "user"
msgstr "User"
@@ -194,7 +199,7 @@ msgstr "Eintritt von {note} zur Veranstaltung {activity}"
msgid "Already entered on "
msgstr "Schon eingetretten "
-#: apps/activity/models.py:202 apps/activity/tables.py:54
+#: apps/activity/models.py:202 apps/activity/tables.py:56
msgid "{:%Y-%m-%d %H:%M:%S}"
msgstr "{:%Y-%m-%d %H:%M:%S}"
@@ -204,6 +209,7 @@ msgstr "Kontostand ist im Rot."
#: apps/activity/models.py:240
#: apps/treasury/templates/treasury/sogecredit_detail.html:14
+#: apps/wei/templates/wei/attribute_bus_1A.html:16
msgid "last name"
msgstr "Nachname"
@@ -211,6 +217,7 @@ msgstr "Nachname"
#: apps/member/templates/member/includes/profile_info.html:4
#: apps/registration/templates/registration/future_profile_detail.html:16
#: apps/treasury/templates/treasury/sogecredit_detail.html:17
+#: apps/wei/templates/wei/attribute_bus_1A.html:19
#: apps/wei/templates/wei/weimembership_form.html:14
msgid "first name"
msgstr "Vorname"
@@ -231,48 +238,48 @@ msgstr "Gäste"
msgid "Invitation"
msgstr "Einladung"
-#: apps/activity/tables.py:25
+#: apps/activity/tables.py:27
msgid "The activity is currently open."
msgstr "Die Veranstaltung ist geöffnet."
-#: apps/activity/tables.py:26
+#: apps/activity/tables.py:28
msgid "The validation of the activity is pending."
msgstr "Diese Veranstaltung ist noch nicht bestätigt."
-#: apps/activity/tables.py:41 apps/treasury/tables.py:107
+#: apps/activity/tables.py:43 apps/treasury/tables.py:107
msgid "Remove"
msgstr "Entfernen"
-#: apps/activity/tables.py:54
+#: apps/activity/tables.py:56
msgid "Entered on "
msgstr "Eingetreten um "
-#: apps/activity/tables.py:56
+#: apps/activity/tables.py:58
msgid "remove"
msgstr "entfernen"
-#: apps/activity/tables.py:80 apps/note/forms.py:68 apps/treasury/models.py:197
+#: apps/activity/tables.py:82 apps/note/forms.py:68 apps/treasury/models.py:199
msgid "Type"
msgstr "Type"
-#: 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
+#: apps/activity/tables.py:84 apps/member/forms.py:186
+#: apps/registration/forms.py:91 apps/treasury/forms.py:131
+#: apps/wei/forms/registration.py:104
msgid "Last name"
msgstr "Nachname"
-#: apps/activity/tables.py:84 apps/member/forms.py:191
-#: apps/note/templates/note/transaction_form.html:134
-#: apps/registration/forms.py:95 apps/treasury/forms.py:132
-#: apps/wei/forms/registration.py:101
+#: apps/activity/tables.py:86 apps/member/forms.py:191
+#: apps/note/templates/note/transaction_form.html:138
+#: apps/registration/forms.py:96 apps/treasury/forms.py:133
+#: apps/wei/forms/registration.py:109
msgid "First name"
msgstr "Vorname"
-#: apps/activity/tables.py:86 apps/note/models/notes.py:86
+#: apps/activity/tables.py:88 apps/note/models/notes.py:86
msgid "Note"
msgstr "Note"
-#: apps/activity/tables.py:88 apps/member/tables.py:49
+#: apps/activity/tables.py:90 apps/member/tables.py:50
msgid "Balance"
msgstr "Kontostand"
@@ -288,26 +295,26 @@ msgstr "Gastliste"
#: apps/activity/templates/activity/activity_entry.html:14
#: apps/note/models/transactions.py:257
-#: apps/note/templates/note/transaction_form.html:16
-#: apps/note/templates/note/transaction_form.html:148
-#: note_kfet/templates/base.html:73
+#: apps/note/templates/note/transaction_form.html:17
+#: apps/note/templates/note/transaction_form.html:152
+#: note_kfet/templates/base.html:72
msgid "Transfer"
msgstr "Überweisen"
#: apps/activity/templates/activity/activity_entry.html:18
#: apps/note/models/transactions.py:317
-#: apps/note/templates/note/transaction_form.html:21
+#: apps/note/templates/note/transaction_form.html:22
msgid "Credit"
msgstr "Kredit"
#: apps/activity/templates/activity/activity_entry.html:21
#: apps/note/models/transactions.py:317
-#: apps/note/templates/note/transaction_form.html:25
+#: apps/note/templates/note/transaction_form.html:26
msgid "Debit"
msgstr "Soll"
#: apps/activity/templates/activity/activity_entry.html:27
-#: apps/note/templates/note/transaction_form.html:30
+#: apps/note/templates/note/transaction_form.html:34
msgid "Entries"
msgstr "Eintritte"
@@ -315,12 +322,12 @@ msgstr "Eintritte"
msgid "Return to activity page"
msgstr "Zurück zur Veranstaltungseite"
-#: apps/activity/templates/activity/activity_entry.html:89
-#: apps/activity/templates/activity/activity_entry.html:124
+#: apps/activity/templates/activity/activity_entry.html:94
+#: apps/activity/templates/activity/activity_entry.html:129
msgid "Entry done, but caution: the user is not a Kfet member."
msgstr ""
-#: apps/activity/templates/activity/activity_entry.html:127
+#: apps/activity/templates/activity/activity_entry.html:132
#, fuzzy
#| msgid "Entry page"
msgid "Entry done!"
@@ -330,7 +337,7 @@ msgstr "Eintrittseite"
#: apps/member/templates/member/add_members.html:46
#: apps/member/templates/member/club_form.html:16
#: apps/note/templates/note/transactiontemplate_form.html:18
-#: apps/treasury/forms.py:88 apps/treasury/forms.py:142
+#: apps/treasury/forms.py:89 apps/treasury/forms.py:143
#: apps/treasury/templates/treasury/invoice_form.html:74
#: apps/wei/templates/wei/bus_form.html:17
#: apps/wei/templates/wei/busteam_form.html:17
@@ -384,7 +391,7 @@ msgid "validate"
msgstr ""
#: apps/activity/templates/activity/includes/activity_info.html:71
-#: apps/logs/models.py:64 apps/note/tables.py:195
+#: apps/logs/models.py:64 apps/note/tables.py:220
msgid "edit"
msgstr "bearbeiten"
@@ -396,35 +403,35 @@ msgstr "Einladen"
msgid "Create new activity"
msgstr "Neue Veranstaltung schaffen"
-#: apps/activity/views.py:67 note_kfet/templates/base.html:91
+#: apps/activity/views.py:67 note_kfet/templates/base.html:90
msgid "Activities"
msgstr "Veranstaltungen"
-#: apps/activity/views.py:95
+#: apps/activity/views.py:93
msgid "Activity detail"
msgstr "Veranstaltunginfo"
-#: apps/activity/views.py:115
+#: apps/activity/views.py:113
msgid "Update activity"
msgstr "Veranstaltung bearbeiten"
-#: apps/activity/views.py:142
+#: apps/activity/views.py:140
msgid "Invite guest to the activity \"{}\""
msgstr "Gast zur Veranstaltung \"{}\" einladen"
-#: apps/activity/views.py:177
+#: apps/activity/views.py:178
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:180
+#: apps/activity/views.py:181
msgid "This activity does not support activity entries."
msgstr "Diese Veranstaltung braucht nicht Eintritt."
-#: apps/activity/views.py:183
+#: apps/activity/views.py:184
msgid "This activity is closed."
msgstr "Diese Veranstaltung ist geschlossen."
-#: apps/activity/views.py:279
+#: apps/activity/views.py:280
msgid "Entry for activity \"{}\""
msgstr "Eintritt zur Veranstaltung \"{}\""
@@ -460,9 +467,9 @@ msgstr "neue Daten"
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/wei/tables.py:73
+#: apps/logs/models.py:65 apps/note/tables.py:166 apps/note/tables.py:190
+#: apps/note/tables.py:237 apps/permission/models.py:127
+#: apps/treasury/tables.py:38 apps/wei/tables.py:74
msgid "delete"
msgstr "entfernen"
@@ -501,15 +508,15 @@ msgstr "Mitgliedschaftpreis (bezahlte Studenten)"
msgid "membership fee (unpaid students)"
msgstr "Mitgliedschaftpreis (unbezahlte Studenten)"
-#: apps/member/admin.py:65 apps/member/models.py:317
+#: apps/member/admin.py:65 apps/member/models.py:319
msgid "roles"
msgstr "Rollen"
-#: apps/member/admin.py:66 apps/member/models.py:331
+#: apps/member/admin.py:66 apps/member/models.py:333
msgid "fee"
msgstr "Preis"
-#: apps/member/apps.py:14 apps/wei/tables.py:193 apps/wei/tables.py:224
+#: apps/member/apps.py:14 apps/wei/tables.py:226 apps/wei/tables.py:257
msgid "member"
msgstr "Mitglied"
@@ -541,26 +548,26 @@ msgstr "Maximal Größe: 2MB"
msgid "This image cannot be loaded."
msgstr "Dieses Bild kann nicht geladen werden."
-#: apps/member/forms.py:141 apps/member/views.py:101
-#: apps/registration/forms.py:33 apps/registration/views.py:258
+#: apps/member/forms.py:141 apps/member/views.py:103
+#: apps/registration/forms.py:33 apps/registration/views.py:262
msgid "An alias with a similar name already exists."
msgstr "Ein ähnliches Alias ist schon benutzt."
-#: apps/member/forms.py:165 apps/registration/forms.py:70
+#: apps/member/forms.py:165 apps/registration/forms.py:71
msgid "Inscription paid by Société Générale"
msgstr "Mitgliedschaft von der Société Générale bezahlt"
-#: apps/member/forms.py:167 apps/registration/forms.py:72
+#: apps/member/forms.py:167 apps/registration/forms.py:73
msgid "Check this case if the Société Générale paid the inscription."
msgstr "Die Société Générale die Mitgliedschaft bezahlt."
-#: apps/member/forms.py:172 apps/registration/forms.py:77
-#: apps/wei/forms/registration.py:83
+#: apps/member/forms.py:172 apps/registration/forms.py:78
+#: apps/wei/forms/registration.py:91
msgid "Credit type"
msgstr "Kredittype"
-#: apps/member/forms.py:173 apps/registration/forms.py:78
-#: apps/wei/forms/registration.py:84
+#: apps/member/forms.py:173 apps/registration/forms.py:79
+#: apps/wei/forms/registration.py:92
msgid "No credit"
msgstr "Kein Kredit"
@@ -568,14 +575,14 @@ msgstr "Kein Kredit"
msgid "You can credit the note of the user."
msgstr "Sie dûrfen diese Note kreditieren."
-#: apps/member/forms.py:179 apps/registration/forms.py:83
-#: apps/wei/forms/registration.py:89
+#: apps/member/forms.py:179 apps/registration/forms.py:84
+#: apps/wei/forms/registration.py:97
msgid "Credit amount"
msgstr "Kreditanzahl"
-#: apps/member/forms.py:196 apps/note/templates/note/transaction_form.html:140
-#: apps/registration/forms.py:100 apps/treasury/forms.py:134
-#: apps/wei/forms/registration.py:106
+#: apps/member/forms.py:196 apps/note/templates/note/transaction_form.html:144
+#: apps/registration/forms.py:101 apps/treasury/forms.py:135
+#: apps/wei/forms/registration.py:114
msgid "Bank"
msgstr "Bank"
@@ -587,15 +594,33 @@ msgstr "User"
msgid "Roles"
msgstr "Rollen"
+#: apps/member/hashers.py:57
+msgid "algorithm"
+msgstr ""
+
+#: apps/member/hashers.py:58
+#, fuzzy
+#| msgid "Registrations"
+msgid "iterations"
+msgstr "Anmeldung"
+
+#: apps/member/hashers.py:59
+msgid "salt"
+msgstr ""
+
+#: apps/member/hashers.py:60
+msgid "hash"
+msgstr ""
+
#: apps/member/models.py:38
-#: apps/member/templates/member/includes/profile_info.html:35
+#: apps/member/templates/member/includes/profile_info.html:43
#: apps/registration/templates/registration/future_profile_detail.html:40
#: apps/wei/templates/wei/weimembership_form.html:44
msgid "phone number"
msgstr "Telefonnummer"
#: apps/member/models.py:45
-#: apps/member/templates/member/includes/profile_info.html:29
+#: apps/member/templates/member/includes/profile_info.html:37
#: apps/registration/templates/registration/future_profile_detail.html:34
#: apps/wei/templates/wei/weimembership_form.html:38
msgid "section"
@@ -605,7 +630,8 @@ msgstr "Section"
msgid "e.g. \"1A0\", \"9A♥\", \"SAPHIRE\""
msgstr "e.g. \"1A0\", \"9A♥\", \"SAPHIRE\""
-#: apps/member/models.py:54 apps/wei/templates/wei/weimembership_form.html:32
+#: apps/member/models.py:54 apps/wei/templates/wei/attribute_bus_1A.html:25
+#: apps/wei/templates/wei/weimembership_form.html:32
msgid "department"
msgstr "Fachabteilung"
@@ -682,14 +708,14 @@ msgid "Year of entry to the school (None if not ENS student)"
msgstr "ENS Eintrittjahr (None wenn kein ENS Student)"
#: apps/member/models.py:83
-#: apps/member/templates/member/includes/profile_info.html:39
+#: apps/member/templates/member/includes/profile_info.html:47
#: apps/registration/templates/registration/future_profile_detail.html:37
#: apps/wei/templates/wei/weimembership_form.html:41
msgid "address"
msgstr "Adresse"
#: apps/member/models.py:90
-#: apps/member/templates/member/includes/profile_info.html:46
+#: apps/member/templates/member/includes/profile_info.html:50
#: apps/registration/templates/registration/future_profile_detail.html:43
#: apps/wei/templates/wei/weimembership_form.html:47
msgid "paid"
@@ -761,7 +787,7 @@ msgstr "Ihre Note Kfet Konto bestätigen"
#: apps/member/models.py:204
#: apps/member/templates/member/includes/club_info.html:55
-#: apps/member/templates/member/includes/profile_info.html:32
+#: apps/member/templates/member/includes/profile_info.html:40
#: apps/registration/templates/registration/future_profile_detail.html:22
#: apps/wei/templates/wei/base.html:70
#: apps/wei/templates/wei/weimembership_form.html:20
@@ -810,50 +836,50 @@ msgid "Maximal date of a membership, after which members must renew it."
msgstr ""
"Maximales Datum einer Mitgliedschaft, nach dem Mitglieder es erneuern müssen."
-#: apps/member/models.py:286 apps/member/models.py:311
+#: apps/member/models.py:288 apps/member/models.py:313
#: apps/note/models/notes.py:176
msgid "club"
msgstr "Club"
-#: apps/member/models.py:287
+#: apps/member/models.py:289
msgid "clubs"
msgstr "Clubs"
-#: apps/member/models.py:322
+#: apps/member/models.py:324
msgid "membership starts on"
msgstr "Mitgliedschaft fängt an"
-#: apps/member/models.py:326
+#: apps/member/models.py:328
msgid "membership ends on"
msgstr "Mitgliedschaft endet am"
-#: apps/member/models.py:422
+#: apps/member/models.py:430
#, python-brace-format
msgid "The role {role} does not apply to the club {club}."
msgstr "Die Rolle {role} ist nicht erlaubt für das Club {club}."
-#: apps/member/models.py:431 apps/member/views.py:651
+#: apps/member/models.py:439 apps/member/views.py:712
msgid "User is already a member of the club"
msgstr "User ist schon ein Mitglied dieser club"
-#: apps/member/models.py:443 apps/member/views.py:661
+#: apps/member/models.py:451 apps/member/views.py:721
msgid "User is not a member of the parent club"
msgstr "User ist noch nicht Mitglied des Urclubs"
-#: apps/member/models.py:496
+#: apps/member/models.py:504
#, python-brace-format
msgid "Membership of {user} for the club {club}"
msgstr "Mitgliedschaft von {user} für das Club {club}"
-#: apps/member/models.py:499 apps/note/models/transactions.py:389
+#: apps/member/models.py:507 apps/note/models/transactions.py:389
msgid "membership"
msgstr "Mitgliedschaft"
-#: apps/member/models.py:500
+#: apps/member/models.py:508
msgid "memberships"
msgstr "Mitgliedschaften"
-#: apps/member/tables.py:137
+#: apps/member/tables.py:139
msgid "Renew"
msgstr "Erneuern"
@@ -904,7 +930,7 @@ msgid "Account #"
msgstr "Konto #"
#: apps/member/templates/member/base.html:48
-#: apps/member/templates/member/base.html:62 apps/member/views.py:58
+#: apps/member/templates/member/base.html:62 apps/member/views.py:60
#: apps/registration/templates/registration/future_profile_detail.html:48
#: apps/wei/templates/wei/weimembership_form.html:117
msgid "Update Profile"
@@ -948,7 +974,8 @@ msgstr ""
"zu aufschliessen."
#: apps/member/templates/member/base.html:110
-#: apps/member/templates/member/base.html:137 apps/treasury/forms.py:90
+#: apps/member/templates/member/base.html:137 apps/treasury/forms.py:91
+#: apps/treasury/templates/treasury/sogecredit_list.html:72
msgid "Close"
msgstr "Schluss"
@@ -964,14 +991,17 @@ msgstr ""
"erlaubt."
#: apps/member/templates/member/club_alias.html:10
-#: apps/member/templates/member/profile_alias.html:10 apps/member/views.py:253
-#: apps/member/views.py:456
+#: apps/member/templates/member/profile_alias.html:10 apps/member/views.py:287
+#: apps/member/views.py:517
msgid "Note aliases"
msgstr "Note Aliases"
#: apps/member/templates/member/club_alias.html:20
#: apps/member/templates/member/profile_alias.html:19
+#: apps/member/templates/member/profile_trust.html:19
#: apps/treasury/tables.py:99
+#: apps/treasury/templates/treasury/sogecredit_list.html:34
+#: apps/treasury/templates/treasury/sogecredit_list.html:73
msgid "Add"
msgstr "Neue"
@@ -1021,7 +1051,7 @@ msgid "membership fee"
msgstr "Mitgliedsachftpreis"
#: apps/member/templates/member/includes/club_info.html:43
-#: apps/member/templates/member/includes/profile_info.html:43
+#: apps/member/templates/member/includes/profile_info.html:55
#: apps/treasury/templates/treasury/sogecredit_detail.html:24
#: apps/wei/templates/wei/base.html:60
msgid "balance"
@@ -1029,7 +1059,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:255 apps/wei/templates/wei/base.html:66
+#: apps/note/models/notes.py:287 apps/wei/templates/wei/base.html:66
msgid "aliases"
msgstr "Aliases"
@@ -1053,22 +1083,71 @@ msgstr "Kennwort"
msgid "Change password"
msgstr "Kennword ändern"
-#: apps/member/templates/member/includes/profile_info.html:55
+#: apps/member/templates/member/includes/profile_info.html:28
+#: apps/note/models/notes.py:244
+msgid "friendships"
+msgstr ""
+
+#: apps/member/templates/member/includes/profile_info.html:32
+#, fuzzy
+#| msgid "Manage aliases"
+msgid "Manage friendships"
+msgstr "Aliases bearbeiten"
+
+#: apps/member/templates/member/includes/profile_info.html:63
msgid "API token"
msgstr "API token"
-#: apps/member/templates/member/manage_auth_tokens.html:19
+#: apps/member/templates/member/manage_auth_tokens.html:12
+#, fuzzy
+#| msgid "Central Authentication Service"
+msgid "Token authentication"
+msgstr "Central Authentication Service"
+
+#: apps/member/templates/member/manage_auth_tokens.html:28
msgid "Token"
msgstr "Token"
-#: apps/member/templates/member/manage_auth_tokens.html:26
+#: apps/member/templates/member/manage_auth_tokens.html:35
msgid "Created"
msgstr "Neue"
-#: apps/member/templates/member/manage_auth_tokens.html:34
+#: apps/member/templates/member/manage_auth_tokens.html:39
+msgid "Warning"
+msgstr ""
+
+#: apps/member/templates/member/manage_auth_tokens.html:44
msgid "Regenerate token"
msgstr "Token erneuern"
+#: apps/member/templates/member/manage_auth_tokens.html:53
+#, fuzzy
+#| msgid "Account activation"
+msgid "OAuth2 authentication"
+msgstr "Kontoaktivierung"
+
+#: apps/member/templates/member/manage_auth_tokens.html:79
+msgid "Authorization:"
+msgstr ""
+
+#: apps/member/templates/member/manage_auth_tokens.html:83
+#, fuzzy
+#| msgid "Token"
+msgid "Token:"
+msgstr "Token"
+
+#: apps/member/templates/member/manage_auth_tokens.html:87
+msgid "Revoke Token:"
+msgstr ""
+
+#: apps/member/templates/member/manage_auth_tokens.html:91
+msgid "Introspect Token:"
+msgstr ""
+
+#: apps/member/templates/member/manage_auth_tokens.html:97
+msgid "Show my applications"
+msgstr ""
+
#: apps/member/templates/member/picture_update.html:35
msgid "Nevermind"
msgstr "Vergessen"
@@ -1093,6 +1172,19 @@ msgstr "Click hier um eine Bestätigunglinke zu schicken."
msgid "View my memberships"
msgstr "Meine Mitgliedschaften schauen"
+#: apps/member/templates/member/profile_trust.html:10 apps/member/views.py:254
+msgid "Note friendships"
+msgstr ""
+
+#: apps/member/templates/member/profile_trust.html:28
+msgid ""
+"Adding someone as a friend enables them to initiate transactions coming from "
+"your account (while keeping your balance positive). This is designed to "
+"simplify using note kfet transfers to transfer money between users. The "
+"intent is that one person can make all transfers for a group of friends "
+"without needing additional rights among them."
+msgstr ""
+
#: apps/member/templates/member/profile_update.html:18
msgid "Save Changes"
msgstr "Speichern"
@@ -1101,47 +1193,47 @@ msgstr "Speichern"
msgid "Registrations"
msgstr "Anmeldung"
-#: apps/member/views.py:71 apps/registration/forms.py:23
+#: apps/member/views.py:73 apps/registration/forms.py:23
msgid "This address must be valid."
msgstr "Diese Adresse muss gültig sein."
-#: apps/member/views.py:138
+#: apps/member/views.py:140
msgid "Profile detail"
msgstr "Profile detail"
-#: apps/member/views.py:205
+#: apps/member/views.py:206
msgid "Search user"
msgstr "User finden"
-#: apps/member/views.py:273
+#: apps/member/views.py:308
msgid "Update note picture"
msgstr "Notebild ändern"
-#: apps/member/views.py:319
+#: apps/member/views.py:354
msgid "Manage auth token"
msgstr "Auth token bearbeiten"
-#: apps/member/views.py:346
+#: apps/member/views.py:381
msgid "Create new club"
msgstr "Neue Club"
-#: apps/member/views.py:365
+#: apps/member/views.py:400
msgid "Search club"
msgstr "Club finden"
-#: apps/member/views.py:398
+#: apps/member/views.py:433
msgid "Club detail"
msgstr "Club Details"
-#: apps/member/views.py:479
+#: apps/member/views.py:540
msgid "Update club"
msgstr "Club bearbeiten"
-#: apps/member/views.py:513
+#: apps/member/views.py:574
msgid "Add new member to the club"
msgstr "Neue Mitglieder"
-#: apps/member/views.py:642 apps/wei/views.py:917
+#: apps/member/views.py:703 apps/wei/views.py:973
msgid ""
"This user don't have enough money to join this club, and can't have a "
"negative balance."
@@ -1149,19 +1241,19 @@ msgstr ""
"Diese User hat nicht genug Geld um Mitglied zu werden, und darf nich im Rot "
"sein."
-#: apps/member/views.py:665
+#: apps/member/views.py:725
msgid "The membership must start after {:%m-%d-%Y}."
msgstr "Die Mitgliedschaft muss nach {:%m-%d-Y} anfängen."
-#: apps/member/views.py:670
+#: apps/member/views.py:730
msgid "The membership must begin before {:%m-%d-%Y}."
msgstr "Die Mitgliedschaft muss vor {:%m-%d-Y} anfängen."
-#: apps/member/views.py:816
+#: apps/member/views.py:876
msgid "Manage roles of an user in the club"
msgstr "Rollen in diesen Club bearbeiten"
-#: apps/member/views.py:841
+#: apps/member/views.py:901
msgid "Members of the club"
msgstr "Mitlglieder dieses Club"
@@ -1179,7 +1271,7 @@ msgstr "Empfänger"
msgid "amount"
msgstr "Anzahl"
-#: apps/note/api/serializers.py:183 apps/note/api/serializers.py:189
+#: apps/note/api/serializers.py:199 apps/note/api/serializers.py:205
#: apps/note/models/transactions.py:228
msgid ""
"The transaction can't be saved since the source note or the destination note "
@@ -1196,7 +1288,7 @@ msgstr "Sender"
msgid "Destination"
msgstr "Empfänger"
-#: apps/note/forms.py:74 apps/note/templates/note/transaction_form.html:119
+#: apps/note/forms.py:74 apps/note/templates/note/transaction_form.html:123
msgid "Reason"
msgstr "Grund"
@@ -1310,30 +1402,47 @@ msgstr "Sondernote"
msgid "special notes"
msgstr "Sondernoten"
-#: apps/note/models/notes.py:237
+#: apps/note/models/notes.py:232
+msgid "trusting"
+msgstr ""
+
+#: apps/note/models/notes.py:239
+msgid "trusted"
+msgstr ""
+
+#: apps/note/models/notes.py:243
+msgid "frienship"
+msgstr ""
+
+#: apps/note/models/notes.py:248
+#, python-brace-format
+msgid "Friendship between {trusting} and {trusted}"
+msgstr ""
+
+#: apps/note/models/notes.py:269
msgid "Invalid alias"
msgstr "Unerlaublt Alias"
-#: apps/note/models/notes.py:254
+#: apps/note/models/notes.py:286
msgid "alias"
msgstr "Alias"
-#: apps/note/models/notes.py:278
+#: apps/note/models/notes.py:310
msgid "Alias is too long."
msgstr "Alias ist zu lang."
-#: apps/note/models/notes.py:281
+#: apps/note/models/notes.py:313
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:285
+#: apps/note/models/notes.py:317
msgid "An alias with a similar name already exists: {} "
msgstr "Ein Alias mit einem ähnlichen Namen existiert bereits: {} "
-#: apps/note/models/notes.py:299
+#: apps/note/models/notes.py:331
msgid "You can't delete your main alias."
msgstr "Sie können Ihren Hauptalias nicht löschen."
@@ -1444,8 +1553,8 @@ msgstr ""
"Zahlungsmethode zugeordnet ist, und einem User oder einem Club möglich"
#: apps/note/models/transactions.py:355 apps/note/models/transactions.py:358
-#: apps/note/models/transactions.py:361 apps/wei/views.py:922
-#: apps/wei/views.py:926
+#: apps/note/models/transactions.py:361 apps/wei/views.py:978
+#: apps/wei/views.py:982
msgid "This field is required."
msgstr "Dies ist ein Pflichtfeld."
@@ -1461,7 +1570,7 @@ msgstr "Sondertranskationen"
msgid "membership transaction"
msgstr "Mitgliedschafttransaktion"
-#: apps/note/models/transactions.py:385 apps/treasury/models.py:289
+#: apps/note/models/transactions.py:385 apps/treasury/models.py:292
msgid "membership transactions"
msgstr "Mitgliedschaftttransaktionen"
@@ -1477,25 +1586,34 @@ msgstr "Klicken Sie zum gültigmachen"
msgid "No reason specified"
msgstr "Kein Grund gegeben"
-#: apps/note/tables.py:169 apps/note/tables.py:203 apps/treasury/tables.py:39
+#: apps/note/tables.py:173 apps/note/tables.py:194 apps/note/tables.py:239
+#: apps/treasury/tables.py:39
#: apps/treasury/templates/treasury/invoice_confirm_delete.html:30
#: apps/treasury/templates/treasury/sogecredit_detail.html:65
-#: apps/wei/tables.py:74 apps/wei/tables.py:114
+#: apps/wei/tables.py:75 apps/wei/tables.py:118
#: apps/wei/templates/wei/weiregistration_confirm_delete.html:31
+#: note_kfet/templates/oauth2_provider/application_confirm_delete.html:18
+#: note_kfet/templates/oauth2_provider/application_detail.html:39
+#: note_kfet/templates/oauth2_provider/authorized-token-delete.html:12
msgid "Delete"
msgstr "Löschen"
-#: apps/note/tables.py:197 apps/note/templates/note/conso_form.html:132
-#: apps/wei/tables.py:48 apps/wei/tables.py:49
+#: apps/note/tables.py:222 apps/note/templates/note/conso_form.html:132
+#: apps/wei/tables.py:49 apps/wei/tables.py:50
#: apps/wei/templates/wei/base.html:89
#: apps/wei/templates/wei/bus_detail.html:20
#: apps/wei/templates/wei/busteam_detail.html:20
#: apps/wei/templates/wei/busteam_detail.html:40
+#: note_kfet/templates/oauth2_provider/application_detail.html:38
msgid "Edit"
msgstr "Bearbeiten"
+#: apps/note/tables.py:226 apps/note/tables.py:253
+msgid "Hide/Show"
+msgstr ""
+
#: apps/note/templates/note/conso_form.html:22
-#: apps/note/templates/note/transaction_form.html:44
+#: apps/note/templates/note/transaction_form.html:48
msgid "Please select a note"
msgstr "Wählen Sie eine Note"
@@ -1504,8 +1622,8 @@ msgid "Consum"
msgstr "Konsumieren"
#: apps/note/templates/note/conso_form.html:43
-#: apps/note/templates/note/transaction_form.html:65
-#: apps/note/templates/note/transaction_form.html:92
+#: apps/note/templates/note/transaction_form.html:69
+#: apps/note/templates/note/transaction_form.html:96
msgid "Name or alias..."
msgstr "Name oder Alias..."
@@ -1530,7 +1648,7 @@ msgid "Double consumptions"
msgstr "Doppelte Modus"
#: apps/note/templates/note/conso_form.html:154
-#: apps/note/templates/note/transaction_form.html:159
+#: apps/note/templates/note/transaction_form.html:163
msgid "Recent transactions history"
msgstr "Verlauf der letzten Transaktionen"
@@ -1545,45 +1663,45 @@ msgstr "Verlauf der letzten Transaktionen"
msgid "Mail generated by the Note Kfet on the"
msgstr "Mail generiert vom Note Kfet auf dem"
-#: apps/note/templates/note/transaction_form.html:54
-#: apps/note/templates/note/transaction_form.html:174
+#: apps/note/templates/note/transaction_form.html:58
+#: apps/note/templates/note/transaction_form.html:178
msgid "Select emitters"
msgstr "Sender auswählen"
-#: apps/note/templates/note/transaction_form.html:69
+#: apps/note/templates/note/transaction_form.html:73
msgid "I am the emitter"
msgstr "Ich bin der Sender"
-#: apps/note/templates/note/transaction_form.html:81
-#: apps/note/templates/note/transaction_form.html:176
+#: apps/note/templates/note/transaction_form.html:85
+#: apps/note/templates/note/transaction_form.html:180
msgid "Select receivers"
msgstr "Empfänger auswählen"
-#: apps/note/templates/note/transaction_form.html:104
+#: apps/note/templates/note/transaction_form.html:108
msgid "Action"
msgstr "Aktion"
-#: apps/note/templates/note/transaction_form.html:112
-#: apps/treasury/forms.py:136 apps/treasury/tables.py:67
+#: apps/note/templates/note/transaction_form.html:116
+#: apps/treasury/forms.py:137 apps/treasury/tables.py:67
#: apps/treasury/tables.py:132
#: apps/treasury/templates/treasury/remittance_form.html:23
msgid "Amount"
msgstr "Anzahl"
-#: apps/note/templates/note/transaction_form.html:128
-#: apps/treasury/models.py:52
+#: apps/note/templates/note/transaction_form.html:132
+#: apps/treasury/models.py:54
msgid "Name"
msgstr "Name"
-#: apps/note/templates/note/transaction_form.html:173
+#: apps/note/templates/note/transaction_form.html:177
msgid "Select emitter"
msgstr "Sender auswählen"
-#: apps/note/templates/note/transaction_form.html:175
+#: apps/note/templates/note/transaction_form.html:179
msgid "Select receiver"
msgstr "Empfänger auswählen"
-#: apps/note/templates/note/transaction_form.html:177
+#: apps/note/templates/note/transaction_form.html:181
msgid "Transfer type"
msgstr "Überweisungtype"
@@ -1623,6 +1741,22 @@ msgstr "Taste erfolgreich gelöscht "
msgid "Unable to delete button "
msgstr "Tatse kann nicht gelöscht werden "
+#: apps/note/templates/note/transactiontemplate_list.html:95
+#, fuzzy
+#| msgid "Buttons list"
+msgid "Button hidden"
+msgstr "Tastenliste"
+
+#: apps/note/templates/note/transactiontemplate_list.html:96
+#, fuzzy
+#| msgid "Buttons list"
+msgid "Button displayed"
+msgstr "Tastenliste"
+
+#: apps/note/templates/note/transactiontemplate_list.html:100
+msgid "An error occured"
+msgstr ""
+
#: apps/note/views.py:36
msgid "Transfer money"
msgstr "Geld überweisen"
@@ -1639,7 +1773,7 @@ msgstr "Tatsen finden"
msgid "Update button"
msgstr "Tatse bearbeiten"
-#: apps/note/views.py:151 note_kfet/templates/base.html:67
+#: apps/note/views.py:151 note_kfet/templates/base.html:66
msgid "Consumptions"
msgstr "Verbräuche"
@@ -1730,7 +1864,7 @@ msgstr "Für Club"
msgid "role permissions"
msgstr "Berechtigung Rollen"
-#: apps/permission/signals.py:63
+#: apps/permission/signals.py:73
#, python-brace-format
msgid ""
"You don't have the permission to change the field {field} on this instance "
@@ -1739,7 +1873,7 @@ msgstr ""
"Sie haben nicht die Berechtigung, das Feld {field} in dieser Instanz von "
"Modell {app_label} zu ändern. {model_name}"
-#: apps/permission/signals.py:73 apps/permission/views.py:105
+#: apps/permission/signals.py:83 apps/permission/views.py:105
#, python-brace-format
msgid ""
"You don't have the permission to add an instance of model {app_label}."
@@ -1748,7 +1882,7 @@ msgstr ""
"Sie haben nicht die Berechtigung, eine Instanz von model {app_label}. "
"{model_name} hinzufügen."
-#: apps/permission/signals.py:102
+#: apps/permission/signals.py:112
#, python-brace-format
msgid ""
"You don't have the permission to delete this instance of model {app_label}."
@@ -1797,6 +1931,25 @@ msgstr "Abfrage:"
msgid "No associated permission"
msgstr "Keine zugehörige Berechtigung"
+#: apps/permission/templates/permission/scopes.html:8
+msgid "Available scopes"
+msgstr ""
+
+#: apps/permission/templates/permission/scopes.html:42
+#: note_kfet/templates/oauth2_provider/application_list.html:24
+msgid "No applications defined"
+msgstr ""
+
+#: apps/permission/templates/permission/scopes.html:43
+#: note_kfet/templates/oauth2_provider/application_list.html:25
+msgid "Click here"
+msgstr ""
+
+#: apps/permission/templates/permission/scopes.html:43
+#: note_kfet/templates/oauth2_provider/application_list.html:25
+msgid "if you want to register a new one"
+msgstr ""
+
#: apps/permission/views.py:72
#, python-brace-format
msgid ""
@@ -1817,7 +1970,7 @@ msgstr ""
"diesen Parametern zu erstellen. Bitte korrigieren Sie Ihre Daten und "
"versuchen Sie es erneut."
-#: apps/permission/views.py:112 note_kfet/templates/base.html:109
+#: apps/permission/views.py:112 note_kfet/templates/base.html:108
msgid "Rights"
msgstr "Rechten"
@@ -1837,21 +1990,21 @@ msgstr "Diese email adresse ist schon benutzt."
#, 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."
+"I declare that I opened or I will open soon a bank account in the Société "
+"générale with the BDE partnership."
msgstr "Sie haben bereits ein Konto in der Société générale eröffnet."
-#: apps/registration/forms.py:50
+#: apps/registration/forms.py:51
msgid ""
"Warning: this engages you to open your bank account. If you finally decides "
"to don't open your account, you will have to pay the BDE membership."
msgstr ""
-#: apps/registration/forms.py:58
+#: apps/registration/forms.py:59
msgid "Register to the WEI"
msgstr "Zu WEI anmelden"
-#: apps/registration/forms.py:60
+#: apps/registration/forms.py:61
msgid ""
"Check this case if you want to register to the WEI. If you hesitate, you "
"will be able to register later, after validating your account in the Kfet."
@@ -1860,11 +2013,11 @@ msgstr ""
"falls Zweifel, können Sie sich später nach Bestätigung Ihres Kontos im Kfet "
"registrieren."
-#: apps/registration/forms.py:105
+#: apps/registration/forms.py:106
msgid "Join BDE Club"
msgstr "BDE Mitglieder werden"
-#: apps/registration/forms.py:112
+#: apps/registration/forms.py:113
msgid "Join Kfet Club"
msgstr "Kfet Mitglieder werden"
@@ -1979,196 +2132,196 @@ msgstr "Die NoteKfet Team."
msgid "Register new user"
msgstr "Neuen User registrieren"
-#: apps/registration/views.py:93
+#: apps/registration/views.py:98
msgid "Email validation"
msgstr "Email validierung"
-#: apps/registration/views.py:95
+#: apps/registration/views.py:100
msgid "Validate email"
msgstr "Email validieren"
-#: apps/registration/views.py:137
+#: apps/registration/views.py:144
msgid "Email validation unsuccessful"
msgstr "Email validierung unerfolgreich"
-#: apps/registration/views.py:148
+#: apps/registration/views.py:155
msgid "Email validation email sent"
msgstr "Validierungsemail wurde gesendet"
-#: apps/registration/views.py:156
+#: apps/registration/views.py:163
msgid "Resend email validation link"
msgstr "E-Mail-Validierungslink erneut senden"
-#: apps/registration/views.py:174
+#: apps/registration/views.py:181
msgid "Pre-registered users list"
msgstr "Vorregistrierte Userliste"
-#: apps/registration/views.py:198
+#: apps/registration/views.py:205
msgid "Unregistered users"
msgstr "Unregistrierte Users"
-#: apps/registration/views.py:211
+#: apps/registration/views.py:218
msgid "Registration detail"
msgstr "Registrierung Detailen"
-#: apps/registration/views.py:278
+#: apps/registration/views.py:282
msgid "You must join the BDE."
msgstr "Sie müssen die BDE beitreten."
-#: apps/registration/views.py:302
+#: apps/registration/views.py:306
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:383
+#: apps/registration/views.py:387
msgid "Invalidate pre-registration"
msgstr "Ungültige Vorregistrierung"
-#: apps/treasury/apps.py:12 note_kfet/templates/base.html:97
+#: apps/treasury/apps.py:12 note_kfet/templates/base.html:96
msgid "Treasury"
msgstr "Quaestor"
-#: apps/treasury/forms.py:25 apps/treasury/models.py:91
+#: apps/treasury/forms.py:26 apps/treasury/models.py:93
#: apps/treasury/templates/treasury/invoice_form.html:22
msgid "This invoice is locked and can no longer be edited."
msgstr "Diese Rechnung ist gesperrt und kann nicht mehr bearbeitet werden."
-#: apps/treasury/forms.py:99
+#: apps/treasury/forms.py:100
msgid "Remittance is already closed."
msgstr "Überweisung ist bereits geschlossen."
-#: apps/treasury/forms.py:104
+#: apps/treasury/forms.py:105
msgid "You can't change the type of the remittance."
msgstr "Sie können die Art der Überweisung nicht ändern."
-#: apps/treasury/forms.py:124 apps/treasury/models.py:265
+#: apps/treasury/forms.py:125 apps/treasury/models.py:267
#: apps/treasury/tables.py:97 apps/treasury/tables.py:105
#: apps/treasury/templates/treasury/invoice_list.html:16
#: apps/treasury/templates/treasury/remittance_list.html:16
-#: apps/treasury/templates/treasury/sogecredit_list.html:16
+#: apps/treasury/templates/treasury/sogecredit_list.html:17
msgid "Remittance"
msgstr "Überweisung"
-#: apps/treasury/forms.py:125
+#: apps/treasury/forms.py:126
msgid "No attached remittance"
msgstr "Keine beigefügte Überweisung"
-#: apps/treasury/models.py:24
+#: apps/treasury/models.py:26
msgid "Invoice identifier"
msgstr "Rechnungskennung"
-#: apps/treasury/models.py:38
+#: apps/treasury/models.py:40
msgid "BDE"
msgstr "BDE"
-#: apps/treasury/models.py:43
+#: apps/treasury/models.py:45
msgid "Object"
msgstr "Objekt"
-#: apps/treasury/models.py:47
+#: apps/treasury/models.py:49
msgid "Description"
msgstr "Beschreibung"
-#: apps/treasury/models.py:56
+#: apps/treasury/models.py:58
msgid "Address"
msgstr "Adresse"
-#: apps/treasury/models.py:61 apps/treasury/models.py:191
+#: apps/treasury/models.py:63 apps/treasury/models.py:193
msgid "Date"
msgstr "Datum"
-#: apps/treasury/models.py:65
+#: apps/treasury/models.py:67
msgid "Acquitted"
msgstr "Bezahlt"
-#: apps/treasury/models.py:70
+#: apps/treasury/models.py:72
msgid "Locked"
msgstr "Gesperrt"
-#: apps/treasury/models.py:71
+#: apps/treasury/models.py:73
msgid "An invoice can't be edited when it is locked."
msgstr "Eine Rechnung kann nicht bearbeitet werden, wenn sie gesperrt ist."
-#: apps/treasury/models.py:77
+#: apps/treasury/models.py:79
msgid "tex source"
msgstr "Tex Quelle"
-#: apps/treasury/models.py:111 apps/treasury/models.py:127
+#: apps/treasury/models.py:113 apps/treasury/models.py:129
msgid "invoice"
msgstr "Rechnung"
-#: apps/treasury/models.py:112
+#: apps/treasury/models.py:114
msgid "invoices"
msgstr "Rechnungen"
-#: apps/treasury/models.py:115
+#: apps/treasury/models.py:117
#, python-brace-format
msgid "Invoice #{id}"
msgstr "Rechnung #{id}"
-#: apps/treasury/models.py:132
+#: apps/treasury/models.py:134
msgid "Designation"
msgstr "Bezeichnung"
-#: apps/treasury/models.py:138
+#: apps/treasury/models.py:140
msgid "Quantity"
msgstr "Qualität"
-#: apps/treasury/models.py:143
+#: apps/treasury/models.py:145
msgid "Unit price"
msgstr "Einzelpreis"
-#: apps/treasury/models.py:159
+#: apps/treasury/models.py:161
msgid "product"
msgstr "Produkt"
-#: apps/treasury/models.py:160
+#: apps/treasury/models.py:162
msgid "products"
msgstr "Produkten"
-#: apps/treasury/models.py:180
+#: apps/treasury/models.py:182
msgid "remittance type"
msgstr "Überweisungstyp"
-#: apps/treasury/models.py:181
+#: apps/treasury/models.py:183
msgid "remittance types"
msgstr "Überweisungstypen"
-#: apps/treasury/models.py:202
+#: apps/treasury/models.py:204
msgid "Comment"
msgstr "Kommentar"
-#: apps/treasury/models.py:207
+#: apps/treasury/models.py:209
msgid "Closed"
msgstr "Geschlossen"
-#: apps/treasury/models.py:211
+#: apps/treasury/models.py:213
msgid "remittance"
msgstr "Überweisung"
-#: apps/treasury/models.py:212
+#: apps/treasury/models.py:214
msgid "remittances"
msgstr "Überweisungen"
-#: apps/treasury/models.py:245
+#: apps/treasury/models.py:247
msgid "Remittance #{:d}: {}"
msgstr "Überweisung #{:d}:{}"
-#: apps/treasury/models.py:269
+#: apps/treasury/models.py:271
msgid "special transaction proxy"
msgstr "spezielle Transaktion Proxy"
-#: apps/treasury/models.py:270
+#: apps/treasury/models.py:272
msgid "special transaction proxies"
msgstr "spezielle Transaktion Proxies"
-#: apps/treasury/models.py:295
+#: apps/treasury/models.py:298
msgid "credit transaction"
msgstr "Kredit Transaktion"
-#: apps/treasury/models.py:379
+#: apps/treasury/models.py:430
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."
@@ -2176,16 +2329,16 @@ msgstr ""
"Dieser Benutzer hat nicht genug Geld, um die Mitgliedschaften mit seiner "
"Note zu bezahlen."
-#: apps/treasury/models.py:399
+#: apps/treasury/models.py:451
#: 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:400
+#: apps/treasury/models.py:452
msgid "Credits from the Société générale"
msgstr "Krediten von der Société générale"
-#: apps/treasury/models.py:403
+#: apps/treasury/models.py:455
#, python-brace-format
msgid "Soge credit for {user}"
msgstr "Kredit von der Société générale für {user}"
@@ -2197,7 +2350,7 @@ msgstr "Rechnung #{:d}"
#: apps/treasury/tables.py:25
#: apps/treasury/templates/treasury/invoice_list.html:13
#: apps/treasury/templates/treasury/remittance_list.html:13
-#: apps/treasury/templates/treasury/sogecredit_list.html:13
+#: apps/treasury/templates/treasury/sogecredit_list.html:14
msgid "Invoice"
msgstr "Rechnung"
@@ -2214,12 +2367,12 @@ msgid "Yes"
msgstr "Ja"
#: apps/treasury/templates/treasury/invoice_confirm_delete.html:10
-#: apps/treasury/views.py:179
+#: apps/treasury/views.py:180
msgid "Delete invoice"
msgstr "Rechnung löschen"
#: apps/treasury/templates/treasury/invoice_confirm_delete.html:15
-#: apps/treasury/views.py:183
+#: apps/treasury/views.py:184
msgid "This invoice is locked and can't be deleted."
msgstr "Eine Rechnung kann nicht gelöscht werden, wenn sie gesperrt ist."
@@ -2253,7 +2406,7 @@ msgstr "Produkt entfernen"
#: apps/treasury/templates/treasury/invoice_list.html:19
#: apps/treasury/templates/treasury/remittance_list.html:19
-#: apps/treasury/templates/treasury/sogecredit_list.html:19
+#: apps/treasury/templates/treasury/sogecredit_list.html:20
msgid "Société générale credits"
msgstr "Krediten von der Société générale"
@@ -2367,7 +2520,7 @@ msgstr ""
"Kredit löschen."
#: apps/treasury/templates/treasury/sogecredit_detail.html:63
-#: apps/wei/tables.py:59 apps/wei/tables.py:101
+#: apps/wei/tables.py:60 apps/wei/tables.py:102
msgid "Validate"
msgstr "Validieren"
@@ -2375,69 +2528,85 @@ msgstr "Validieren"
msgid "Return to credit list"
msgstr "Zurück zur Kreditlist"
-#: apps/treasury/templates/treasury/sogecredit_list.html:34
+#: apps/treasury/templates/treasury/sogecredit_list.html:40
msgid "Filter with unvalidated credits only"
msgstr "Filtern Sie nur mit nicht validierten Kredits"
-#: apps/treasury/templates/treasury/sogecredit_list.html:44
+#: apps/treasury/templates/treasury/sogecredit_list.html:50
msgid "There is no matched user that have asked for a Société générale credit."
msgstr ""
"Es gibt keinen übereinstimmenden User, der eine Kredit für die Société "
"générale beantragt hat."
-#: apps/treasury/views.py:39
+#: apps/treasury/templates/treasury/sogecredit_list.html:63
+#, fuzzy
+#| msgid "Credit from the Société générale"
+msgid "Add credit from the Société générale"
+msgstr "Kredit von der Société générale"
+
+#: apps/treasury/templates/treasury/sogecredit_list.html:109
+#, fuzzy
+#| msgid "button successfully deleted "
+msgid "Credit successfully registered"
+msgstr "Taste erfolgreich gelöscht "
+
+#: apps/treasury/views.py:40
msgid "Create new invoice"
msgstr "Neue Rechnung"
-#: apps/treasury/views.py:96
+#: apps/treasury/views.py:97
msgid "Invoices list"
msgstr "Rechnunglist"
-#: apps/treasury/views.py:111 apps/treasury/views.py:285
-#: apps/treasury/views.py:411
+#: apps/treasury/views.py:112 apps/treasury/views.py:286
+#: apps/treasury/views.py:412
msgid "You are not able to see the treasury interface."
msgstr "Sie können die Quaestor-App nicht sehen."
-#: apps/treasury/views.py:121
+#: apps/treasury/views.py:122
msgid "Update an invoice"
msgstr "Rechnung bearbeiten"
-#: apps/treasury/views.py:246
+#: apps/treasury/views.py:247
msgid "Create a new remittance"
msgstr "Neue Überweisung"
-#: apps/treasury/views.py:273
+#: apps/treasury/views.py:274
msgid "Remittances list"
msgstr "Überweisungliste"
-#: apps/treasury/views.py:336
+#: apps/treasury/views.py:337
msgid "Update a remittance"
msgstr "Überweisung bearbeiten"
-#: apps/treasury/views.py:359
+#: apps/treasury/views.py:360
msgid "Attach a transaction to a remittance"
msgstr "Fügen Sie einer Überweisung eine Transaktion hinzu"
-#: apps/treasury/views.py:403
+#: apps/treasury/views.py:404
msgid "List of credits from the Société générale"
msgstr "Kreditliste von Société générale"
-#: apps/treasury/views.py:443
+#: apps/treasury/views.py:449
msgid "Manage credits from the Société générale"
msgstr "Krediten von der Société générale handeln"
-#: apps/wei/apps.py:10 apps/wei/models.py:49 apps/wei/models.py:50
-#: apps/wei/models.py:61 apps/wei/models.py:172
-#: note_kfet/templates/base.html:103
+#: apps/wei/apps.py:10 apps/wei/models.py:50 apps/wei/models.py:51
+#: apps/wei/models.py:62 apps/wei/models.py:180
+#: note_kfet/templates/base.html:102
msgid "WEI"
msgstr "WEI"
-#: apps/wei/forms/registration.py:51 apps/wei/models.py:118
-#: apps/wei/models.py:315
+#: apps/wei/forms/registration.py:35
+msgid "The selected user is not validated. Please validate its account first"
+msgstr ""
+
+#: apps/wei/forms/registration.py:59 apps/wei/models.py:126
+#: apps/wei/models.py:323
msgid "bus"
msgstr "Bus"
-#: apps/wei/forms/registration.py:52
+#: apps/wei/forms/registration.py:60
msgid ""
"This choice is not definitive. The WEI organizers are free to attribute for "
"you a bus and a team, in particular if you are a free eletron."
@@ -2446,11 +2615,11 @@ msgstr ""
"einen Bus und ein Team zuzuweisen, insbesondere wenn Sie ein freies Elektron "
"sind."
-#: apps/wei/forms/registration.py:59
+#: apps/wei/forms/registration.py:67
msgid "Team"
msgstr "Team"
-#: apps/wei/forms/registration.py:61
+#: apps/wei/forms/registration.py:69
msgid ""
"Leave this field empty if you won't be in a team (staff, bus chief, free "
"electron)"
@@ -2458,138 +2627,140 @@ msgstr ""
"Lassen Sie dieses Feld leer, wenn Sie nicht in einem Team sind (Mitarbeiter, "
"Buschef, freies Elektron)"
-#: apps/wei/forms/registration.py:67 apps/wei/forms/registration.py:77
-#: apps/wei/models.py:153
+#: apps/wei/forms/registration.py:75 apps/wei/forms/registration.py:85
+#: apps/wei/models.py:161
msgid "WEI Roles"
msgstr "WEI Rollen"
-#: apps/wei/forms/registration.py:68
+#: apps/wei/forms/registration.py:76
msgid "Select the roles that you are interested in."
msgstr "Wählen Sie die Rollen aus, an denen Sie interessiert sind."
-#: apps/wei/forms/registration.py:113
+#: apps/wei/forms/registration.py:122
msgid "This team doesn't belong to the given bus."
msgstr "Dieses Team gehört nicht zum angegebenen Bus."
-#: apps/wei/forms/surveys/wei2021.py:31
+#: apps/wei/forms/surveys/wei2021.py:35 apps/wei/forms/surveys/wei2022.py:35
msgid "Choose a word:"
msgstr "Wählen Sie ein Wort:"
-#: apps/wei/models.py:24 apps/wei/templates/wei/base.html:36
+#: apps/wei/models.py:25 apps/wei/templates/wei/base.html:36
msgid "year"
msgstr "Jahr"
-#: apps/wei/models.py:28 apps/wei/templates/wei/base.html:30
+#: apps/wei/models.py:29 apps/wei/templates/wei/base.html:30
msgid "date start"
msgstr "Anfangsdatum"
-#: apps/wei/models.py:32 apps/wei/templates/wei/base.html:33
+#: apps/wei/models.py:33 apps/wei/templates/wei/base.html:33
msgid "date end"
msgstr "Abschlussdatum"
-#: apps/wei/models.py:70
+#: apps/wei/models.py:71 apps/wei/tables.py:305
#, fuzzy
#| msgid "The user joined the bus"
msgid "seat count in the bus"
msgstr "Der Benutzer ist dem Bus beigetreten"
-#: apps/wei/models.py:82
+#: apps/wei/models.py:83
msgid "survey information"
msgstr "Umfrage Infos"
-#: apps/wei/models.py:83
+#: apps/wei/models.py:84
msgid "Information about the survey for new members, encoded in JSON"
msgstr "Informationen zur Umfrage für neue Mitglieder, codiert in JSON"
-#: apps/wei/models.py:105
+#: apps/wei/models.py:113
msgid "Bus"
msgstr "Bus"
-#: apps/wei/models.py:106 apps/wei/templates/wei/weiclub_detail.html:51
+#: apps/wei/models.py:114 apps/wei/templates/wei/weiclub_detail.html:51
msgid "Buses"
msgstr "Buses"
-#: apps/wei/models.py:127
+#: apps/wei/models.py:135
msgid "color"
msgstr "Farbe"
-#: apps/wei/models.py:128
+#: apps/wei/models.py:136
msgid "The color of the T-Shirt, stored with its number equivalent"
msgstr "Die Farbe des T-Shirts, gespeichert mit der entsprechenden Nummer"
-#: apps/wei/models.py:142
+#: apps/wei/models.py:150
msgid "Bus team"
msgstr "Bus Team"
-#: apps/wei/models.py:143
+#: apps/wei/models.py:151
msgid "Bus teams"
msgstr "Bus Teams"
-#: apps/wei/models.py:152
+#: apps/wei/models.py:160
msgid "WEI Role"
msgstr "WEI Rolle"
-#: apps/wei/models.py:177
+#: apps/wei/models.py:185
msgid "Credit from Société générale"
msgstr "Kredit von der Société générale"
-#: apps/wei/models.py:182
+#: apps/wei/models.py:190
msgid "Caution check given"
msgstr "Caution check given"
-#: apps/wei/models.py:186 apps/wei/templates/wei/weimembership_form.html:64
+#: apps/wei/models.py:194 apps/wei/templates/wei/weimembership_form.html:64
msgid "birth date"
msgstr "Geburtsdatum"
-#: apps/wei/models.py:192 apps/wei/models.py:202
+#: apps/wei/models.py:200 apps/wei/models.py:210
msgid "Male"
msgstr "Männlich"
-#: apps/wei/models.py:193 apps/wei/models.py:203
+#: apps/wei/models.py:201 apps/wei/models.py:211
msgid "Female"
msgstr "Weiblich"
-#: apps/wei/models.py:194
+#: apps/wei/models.py:202
msgid "Non binary"
msgstr "Nicht binär"
-#: apps/wei/models.py:196 apps/wei/templates/wei/weimembership_form.html:55
+#: apps/wei/models.py:204 apps/wei/templates/wei/attribute_bus_1A.html:22
+#: apps/wei/templates/wei/weimembership_form.html:55
msgid "gender"
msgstr "Geschlecht"
-#: apps/wei/models.py:205 apps/wei/templates/wei/weimembership_form.html:58
+#: apps/wei/models.py:213 apps/wei/templates/wei/weimembership_form.html:58
msgid "clothing cut"
msgstr "Kleidung Schnitt"
-#: apps/wei/models.py:218 apps/wei/templates/wei/weimembership_form.html:61
+#: apps/wei/models.py:226 apps/wei/templates/wei/weimembership_form.html:61
msgid "clothing size"
msgstr "Kleidergröße"
-#: apps/wei/models.py:224 apps/wei/templates/wei/weimembership_form.html:67
+#: apps/wei/models.py:232 apps/wei/templates/wei/attribute_bus_1A.html:28
+#: apps/wei/templates/wei/weimembership_form.html:67
msgid "health issues"
msgstr "Gesundheitsprobleme"
-#: apps/wei/models.py:229 apps/wei/templates/wei/weimembership_form.html:70
+#: apps/wei/models.py:237 apps/wei/templates/wei/weimembership_form.html:70
msgid "emergency contact name"
msgstr "Notfall-Kontakt"
-#: apps/wei/models.py:234 apps/wei/templates/wei/weimembership_form.html:73
+#: apps/wei/models.py:242 apps/wei/templates/wei/weimembership_form.html:73
msgid "emergency contact phone"
msgstr "Notfallkontakttelefon"
-#: apps/wei/models.py:239 apps/wei/templates/wei/weimembership_form.html:52
+#: apps/wei/models.py:247 apps/wei/templates/wei/weimembership_form.html:52
msgid "first year"
msgstr "Erste Jahr"
-#: apps/wei/models.py:240
+#: apps/wei/models.py:248
msgid "Tells if the user is new in the school."
msgstr "Gibt an, ob der USer neu in der Schule ist."
-#: apps/wei/models.py:245
+#: apps/wei/models.py:253
msgid "registration information"
msgstr "Registrierung Detailen"
-#: apps/wei/models.py:246
+#: apps/wei/models.py:254
msgid ""
"Information about the registration (buses for old members, survey for the "
"new members), encoded in JSON"
@@ -2597,35 +2768,41 @@ msgstr ""
"Informationen zur Registrierung (Busse für alte Mitglieder, Umfrage für neue "
"Mitglieder), verschlüsselt in JSON"
-#: apps/wei/models.py:304
+#: apps/wei/models.py:312
msgid "WEI User"
msgstr "WEI User"
-#: apps/wei/models.py:305
+#: apps/wei/models.py:313
msgid "WEI Users"
msgstr "WEI Users"
-#: apps/wei/models.py:325
+#: apps/wei/models.py:333
msgid "team"
msgstr "Team"
-#: apps/wei/models.py:335
+#: apps/wei/models.py:343
msgid "WEI registration"
msgstr "WEI Registrierung"
-#: apps/wei/models.py:339
+#: apps/wei/models.py:347
msgid "WEI membership"
msgstr "WEI Mitgliedschaft"
-#: apps/wei/models.py:340
+#: apps/wei/models.py:348
msgid "WEI memberships"
msgstr "WEI Mitgliedschaften"
-#: apps/wei/tables.py:104
+#: apps/wei/tables.py:105
msgid "The user does not have enough money."
msgstr ""
-#: apps/wei/tables.py:107
+#: apps/wei/tables.py:108
+msgid ""
+"The user is in first year. You may validate the credit, the algorithm will "
+"run later."
+msgstr ""
+
+#: apps/wei/tables.py:111
#, fuzzy
#| msgid ""
#| "The note has enough money (%(pretty_fee)s required), the registration is "
@@ -2635,23 +2812,77 @@ msgstr ""
"Die Note hat genug Geld (%(pretty_fee)s erforderlich), die Registrierung ist "
"möglich."
-#: apps/wei/tables.py:139
+#: apps/wei/tables.py:143
msgid "Year"
msgstr "Jahr"
-#: apps/wei/tables.py:177 apps/wei/templates/wei/bus_detail.html:32
+#: apps/wei/tables.py:180 apps/wei/templates/wei/weimembership_form.html:102
+msgid "preferred bus"
+msgstr "bevorzugter Bus"
+
+#: apps/wei/tables.py:210 apps/wei/templates/wei/bus_detail.html:32
#: apps/wei/templates/wei/busteam_detail.html:50
msgid "Teams"
msgstr "Teams"
-#: apps/wei/tables.py:186 apps/wei/tables.py:227
+#: apps/wei/tables.py:219 apps/wei/tables.py:260
msgid "Members count"
msgstr "Anzahl Mitgliedern"
-#: apps/wei/tables.py:193 apps/wei/tables.py:224
+#: apps/wei/tables.py:226 apps/wei/tables.py:257
msgid "members"
msgstr "Mitglieder"
+#: apps/wei/tables.py:287
+#, fuzzy
+#| msgid "first year"
+msgid "suggested first year"
+msgstr "Erste Jahr"
+
+#: apps/wei/tables.py:293
+#, fuzzy
+#| msgid "first year"
+msgid "validated first year"
+msgstr "Erste Jahr"
+
+#: apps/wei/tables.py:299
+#, fuzzy
+#| msgid "Unvalidated registrations"
+msgid "validated staff"
+msgstr "Unvalidierte Registrierungen"
+
+#: apps/wei/tables.py:310
+msgid "free seats"
+msgstr ""
+
+#: apps/wei/templates/wei/1A_list.html:9
+msgid "Attribute first year members into buses"
+msgstr ""
+
+#: apps/wei/templates/wei/1A_list.html:15
+msgid "Start attribution!"
+msgstr ""
+
+#: apps/wei/templates/wei/attribute_bus_1A.html:8
+msgid "Bus attribution"
+msgstr ""
+
+#: apps/wei/templates/wei/attribute_bus_1A.html:31
+msgid "suggested bus"
+msgstr ""
+
+#: apps/wei/templates/wei/attribute_bus_1A.html:37
+#, fuzzy
+#| msgid "Raw survey information"
+msgid "View raw survey information"
+msgstr "Rohe Umfrageinformationen"
+
+#: apps/wei/templates/wei/attribute_bus_1A.html:57
+#, fuzzy
+#| msgid "Buttons list"
+msgid "Back to main list"
+msgstr "Tastenliste"
+
#: apps/wei/templates/wei/base.html:44
msgid "WEI fee (paid students)"
msgstr "WEI Preis (bezahlte Studenten)"
@@ -2668,11 +2899,11 @@ msgstr "WEI Preis (unbezahlte Studenten)"
msgid "WEI list"
msgstr "WEI Liste"
-#: apps/wei/templates/wei/base.html:81 apps/wei/views.py:510
+#: apps/wei/templates/wei/base.html:81 apps/wei/views.py:528
msgid "Register 1A"
msgstr "1A Registrieren"
-#: apps/wei/templates/wei/base.html:85 apps/wei/views.py:578
+#: apps/wei/templates/wei/base.html:85 apps/wei/views.py:614
msgid "Register 2A+"
msgstr "2A+ Registrieren"
@@ -2701,8 +2932,8 @@ msgstr "Als PDF schauen"
#: apps/wei/templates/wei/survey.html:11
#: apps/wei/templates/wei/survey_closed.html:11
-#: apps/wei/templates/wei/survey_end.html:11 apps/wei/views.py:973
-#: apps/wei/views.py:1028 apps/wei/views.py:1038
+#: apps/wei/templates/wei/survey_end.html:11 apps/wei/views.py:1028
+#: apps/wei/views.py:1083 apps/wei/views.py:1093
msgid "Survey WEI"
msgstr "WEI Umfrage"
@@ -2742,7 +2973,11 @@ msgstr "Mitglied der WEI"
msgid "Unvalidated registrations"
msgstr "Unvalidierte Registrierungen"
-#: apps/wei/templates/wei/weiclub_list.html:14 apps/wei/views.py:77
+#: apps/wei/templates/wei/weiclub_detail.html:99
+msgid "Attribute buses"
+msgstr ""
+
+#: apps/wei/templates/wei/weiclub_list.html:14 apps/wei/views.py:79
msgid "Create WEI"
msgstr "Neue WEI"
@@ -2778,10 +3013,6 @@ msgstr "Der Algorithmus wurde nicht ausgeführt."
msgid "caution check given"
msgstr "Vorsichtsprüfung gegeben"
-#: apps/wei/templates/wei/weimembership_form.html:102
-msgid "preferred bus"
-msgstr "bevorzugter Bus"
-
#: apps/wei/templates/wei/weimembership_form.html:105
msgid "preferred team"
msgstr "bevorzugtes Team"
@@ -2888,67 +3119,67 @@ msgstr "Bei diesem Muster wurde keine Vorregistrierung gefunden."
msgid "View validated memberships..."
msgstr "Validierte Mitgliedschaften anzeigen ..."
-#: apps/wei/views.py:56
+#: apps/wei/views.py:58
msgid "Search WEI"
msgstr "WEI finden"
-#: apps/wei/views.py:107
+#: apps/wei/views.py:109
msgid "WEI Detail"
msgstr "WEI Infos"
-#: apps/wei/views.py:202
+#: apps/wei/views.py:208
msgid "View members of the WEI"
msgstr "Mitglied der WEI schauen"
-#: apps/wei/views.py:230
+#: apps/wei/views.py:236
msgid "Find WEI Membership"
msgstr "WEI Mitgliedschaft finden"
-#: apps/wei/views.py:240
+#: apps/wei/views.py:246
msgid "View registrations to the WEI"
msgstr "Mitglied der WEI schauen"
-#: apps/wei/views.py:264
+#: apps/wei/views.py:270
msgid "Find WEI Registration"
msgstr "WEI Registrierung finden"
-#: apps/wei/views.py:275
+#: apps/wei/views.py:281
msgid "Update the WEI"
msgstr "WEI bearbeiten"
-#: apps/wei/views.py:296
+#: apps/wei/views.py:302
msgid "Create new bus"
msgstr "Neue Bus"
-#: apps/wei/views.py:334
+#: apps/wei/views.py:340
msgid "Update bus"
msgstr "Bus bearbeiten"
-#: apps/wei/views.py:366
+#: apps/wei/views.py:372
msgid "Manage bus"
msgstr "Bus ändern"
-#: apps/wei/views.py:393
+#: apps/wei/views.py:399
msgid "Create new team"
msgstr "Neue Bus Team"
-#: apps/wei/views.py:433
+#: apps/wei/views.py:439
msgid "Update team"
msgstr "Team bearbeiten"
-#: apps/wei/views.py:464
+#: apps/wei/views.py:470
msgid "Manage WEI team"
msgstr "WEI Team bearbeiten"
-#: apps/wei/views.py:486
+#: apps/wei/views.py:492
msgid "Register first year student to the WEI"
msgstr "Registrieren Sie den Erstsemester beim WEI"
-#: apps/wei/views.py:532 apps/wei/views.py:613
+#: apps/wei/views.py:550 apps/wei/views.py:649
msgid "This user is already registered to this WEI."
msgstr "Dieser Benutzer ist bereits bei dieser WEI registriert."
-#: apps/wei/views.py:537
+#: apps/wei/views.py:555
msgid ""
"This user can't be in her/his first year since he/she has already "
"participated to a WEI."
@@ -2956,43 +3187,51 @@ msgstr ""
"Dieser Benutzer kann nicht in seinem ersten Jahr sein, da er bereits an "
"einer WEI teilgenommen hat."
-#: apps/wei/views.py:554
+#: apps/wei/views.py:578
msgid "Register old student to the WEI"
msgstr "Registrieren Sie einen alten Studenten beim WEI"
-#: apps/wei/views.py:597 apps/wei/views.py:686
+#: apps/wei/views.py:633 apps/wei/views.py:721
msgid "You already opened an account in the Société générale."
msgstr "Sie haben bereits ein Konto in der Société générale eröffnet."
-#: apps/wei/views.py:643
+#: apps/wei/views.py:685
msgid "Update WEI Registration"
msgstr "WEI Registrierung aktualisieren"
-#: apps/wei/views.py:746
+#: apps/wei/views.py:795
msgid "Delete WEI registration"
msgstr "WEI Registrierung löschen"
-#: apps/wei/views.py:757
+#: apps/wei/views.py:806
msgid "You don't have the right to delete this WEI registration."
msgstr "Sie haben nicht das Recht, diese WEI-Registrierung zu löschen."
-#: apps/wei/views.py:776
+#: apps/wei/views.py:824
msgid "Validate WEI registration"
msgstr "Überprüfen Sie die WEI-Registrierung"
-#: note_kfet/settings/base.py:161
+#: apps/wei/views.py:1186
+msgid "Attribute buses to first year members"
+msgstr ""
+
+#: apps/wei/views.py:1211
+msgid "Attribute bus"
+msgstr ""
+
+#: note_kfet/settings/base.py:172
msgid "German"
msgstr "Deutsch"
-#: note_kfet/settings/base.py:162
+#: note_kfet/settings/base.py:173
msgid "English"
msgstr "English"
-#: note_kfet/settings/base.py:163
+#: note_kfet/settings/base.py:174
msgid "Spanish"
msgstr "Spanisch"
-#: note_kfet/settings/base.py:164
+#: note_kfet/settings/base.py:175
msgid "French"
msgstr "Französich"
@@ -3048,7 +3287,7 @@ msgstr ""
"wurde eine E-Mail mit den Details des Fehlers an die Webmaster gesendet, die "
"in Kürze behoben wird. Sie können jetzt ein Bier trinken."
-#: note_kfet/templates/autocomplete_model.html:14
+#: note_kfet/templates/autocomplete_model.html:15
msgid "Reset"
msgstr "Reset"
@@ -3056,34 +3295,34 @@ msgstr "Reset"
msgid "The ENS Paris-Saclay BDE note."
msgstr "Die BDE ENS-Paris-Saclay Note."
-#: note_kfet/templates/base.html:79
+#: note_kfet/templates/base.html:78
msgid "Users"
msgstr "Users"
-#: note_kfet/templates/base.html:85
+#: note_kfet/templates/base.html:84
msgid "Clubs"
msgstr "Clubs"
-#: note_kfet/templates/base.html:114
+#: note_kfet/templates/base.html:113
msgid "Admin"
msgstr "Admin"
-#: note_kfet/templates/base.html:128
+#: note_kfet/templates/base.html:127
msgid "My account"
msgstr "Mein Konto"
-#: note_kfet/templates/base.html:131
+#: note_kfet/templates/base.html:130
msgid "Log out"
msgstr "Abmelden"
-#: note_kfet/templates/base.html:139
+#: note_kfet/templates/base.html:138
#: note_kfet/templates/registration/signup.html:6
#: note_kfet/templates/registration/signup.html:11
#: note_kfet/templates/registration/signup.html:28
msgid "Sign up"
msgstr "Registrieren"
-#: note_kfet/templates/base.html:146
+#: note_kfet/templates/base.html:145
#: note_kfet/templates/registration/login.html:6
#: note_kfet/templates/registration/login.html:15
#: note_kfet/templates/registration/login.html:38
@@ -3091,17 +3330,13 @@ msgstr "Registrieren"
msgid "Log in"
msgstr "Anmelden"
-#: note_kfet/templates/base.html:160
+#: note_kfet/templates/base.html:159
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:164
-msgid "You are not a Kfet member, so you can't use your note account."
-msgstr ""
-
-#: note_kfet/templates/base.html:170
+#: note_kfet/templates/base.html:165
msgid ""
"Your e-mail address is not validated. Please check your mail inbox and click "
"on the validation link."
@@ -3109,19 +3344,23 @@ 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:176
+#: 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."
+"membership and the WEI are 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:199
+#: note_kfet/templates/base.html:194
msgid "Contact us"
msgstr "Kontakt"
+#: note_kfet/templates/base.html:196
+msgid "Technical Support"
+msgstr ""
+
#: note_kfet/templates/base_search.html:15
msgid "Search by attribute such as name…"
msgstr "Suche nach Attributen wie Name…"
@@ -3130,6 +3369,132 @@ msgstr "Suche nach Attributen wie Name…"
msgid "There is no results."
msgstr "Es gibt keine Ergebnisse."
+#: note_kfet/templates/oauth2_provider/application_confirm_delete.html:8
+#, fuzzy
+#| msgid ""
+#| "Are you sure you want to delete this invoice? This action can't be undone."
+msgid "Are you sure to delete the application"
+msgstr ""
+"Möchten Sie diese Rechnung wirklich löschen? Diese Aktion kann nicht "
+"rückgängig gemacht werden."
+
+#: note_kfet/templates/oauth2_provider/application_confirm_delete.html:17
+#: note_kfet/templates/oauth2_provider/authorize.html:28
+#, fuzzy
+#| msgid "Balance"
+msgid "Cancel"
+msgstr "Kontostand"
+
+#: note_kfet/templates/oauth2_provider/application_detail.html:11
+msgid "Client id"
+msgstr ""
+
+#: note_kfet/templates/oauth2_provider/application_detail.html:14
+msgid "Client secret"
+msgstr ""
+
+#: note_kfet/templates/oauth2_provider/application_detail.html:17
+#, fuzzy
+#| msgid "Credit type"
+msgid "Client type"
+msgstr "Kredittype"
+
+#: note_kfet/templates/oauth2_provider/application_detail.html:20
+msgid "Authorization Grant Type"
+msgstr ""
+
+#: note_kfet/templates/oauth2_provider/application_detail.html:23
+msgid "Redirect Uris"
+msgstr ""
+
+#: note_kfet/templates/oauth2_provider/application_detail.html:29
+#, python-format
+msgid ""
+"You can go here to generate authorization "
+"link templates and convert permissions to scope numbers with the permissions "
+"that you want to grant for your application."
+msgstr ""
+
+#: note_kfet/templates/oauth2_provider/application_detail.html:37
+#: note_kfet/templates/oauth2_provider/application_form.html:23
+msgid "Go Back"
+msgstr ""
+
+#: note_kfet/templates/oauth2_provider/application_form.html:12
+#, fuzzy
+#| msgid "Email validation"
+msgid "Edit application"
+msgstr "Email validierung"
+
+#: note_kfet/templates/oauth2_provider/application_list.html:7
+msgid "Your applications"
+msgstr ""
+
+#: note_kfet/templates/oauth2_provider/application_list.html:11
+msgid ""
+"You can find on this page the list of the applications that you already "
+"registered."
+msgstr ""
+
+#: note_kfet/templates/oauth2_provider/application_list.html:30
+#, fuzzy
+#| msgid "location"
+msgid "New Application"
+msgstr "Ort"
+
+#: note_kfet/templates/oauth2_provider/application_list.html:31
+msgid "Authorized Tokens"
+msgstr ""
+
+#: note_kfet/templates/oauth2_provider/application_registration_form.html:5
+#, fuzzy
+#| msgid "Registrations"
+msgid "Register a new application"
+msgstr "Anmeldung"
+
+#: note_kfet/templates/oauth2_provider/authorize.html:9
+#: note_kfet/templates/oauth2_provider/authorize.html:29
+msgid "Authorize"
+msgstr ""
+
+#: note_kfet/templates/oauth2_provider/authorize.html:14
+msgid "Application requires following permissions:"
+msgstr ""
+
+#: note_kfet/templates/oauth2_provider/authorize.html:36
+#: note_kfet/templates/oauth2_provider/authorized-oob.html:15
+msgid "Error:"
+msgstr ""
+
+#: note_kfet/templates/oauth2_provider/authorized-oob.html:13
+msgid "Success"
+msgstr ""
+
+#: note_kfet/templates/oauth2_provider/authorized-oob.html:21
+msgid "Please return to your application and enter this code:"
+msgstr ""
+
+#: note_kfet/templates/oauth2_provider/authorized-token-delete.html:9
+#, fuzzy
+#| msgid ""
+#| "Are you sure you want to delete this invoice? This action can't be undone."
+msgid "Are you sure you want to delete this token?"
+msgstr ""
+"Möchten Sie diese Rechnung wirklich löschen? Diese Aktion kann nicht "
+"rückgängig gemacht werden."
+
+#: note_kfet/templates/oauth2_provider/authorized-tokens.html:7
+#, fuzzy
+#| msgid "Token"
+msgid "Tokens"
+msgstr "Token"
+
+#: note_kfet/templates/oauth2_provider/authorized-tokens.html:22
+#, fuzzy
+#| msgid "There is no closed remittance yet."
+msgid "There are no authorized tokens yet."
+msgstr "Es gibt noch keine geschlossene Überweisung."
+
#: note_kfet/templates/registration/logged_out.html:13
msgid "Thanks for spending some quality time with the Web site today."
msgstr ""
@@ -3246,9 +3611,6 @@ msgstr ""
#~ msgid "This user didn't give her/his caution check."
#~ msgstr "Dieser User hat seine / ihre Vorsicht nicht überprüft."
-#~ msgid "Central Authentication Service"
-#~ msgstr "Central Authentication Service"
-
#, python-format
#~ msgid ""
#~ "A new version of the application is available. This instance runs "
diff --git a/locale/es/LC_MESSAGES/django.po b/locale/es/LC_MESSAGES/django.po
index e582dab0..4f03a2ca 100644
--- a/locale/es/LC_MESSAGES/django.po
+++ b/locale/es/LC_MESSAGES/django.po
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-08-29 14:06+0200\n"
-"PO-Revision-Date: 2020-11-17 23:47+0100\n"
+"POT-Creation-Date: 2022-04-10 22:34+0200\n"
+"PO-Revision-Date: 2022-04-11 23:12+0200\n"
"Last-Translator: elkmaennchen \n"
"Language-Team: \n"
"Language: es\n"
@@ -16,34 +16,38 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Poedit 2.3\n"
+"X-Generator: Poedit 3.0\n"
#: apps/activity/apps.py:10 apps/activity/models.py:151
#: apps/activity/models.py:167
msgid "activity"
msgstr "actividad"
-#: apps/activity/forms.py:35 apps/activity/models.py:132
+#: apps/activity/forms.py:34
+msgid "The note of this club is inactive."
+msgstr "La note del club está inactiva."
+
+#: apps/activity/forms.py:41 apps/activity/models.py:132
msgid "The end date must be after the start date."
msgstr "La fecha final tiene que ser después de la fecha de inicio."
-#: apps/activity/forms.py:76 apps/activity/models.py:270
+#: apps/activity/forms.py:82 apps/activity/models.py:270
msgid "You can't invite someone once the activity is started."
msgstr "No se puede invitar a alguien una vez que arrancó la actividad."
-#: apps/activity/forms.py:79 apps/activity/models.py:273
+#: apps/activity/forms.py:85 apps/activity/models.py:273
msgid "This activity is not validated yet."
msgstr "Esta actividad no fue validada por ahora."
-#: apps/activity/forms.py:89 apps/activity/models.py:281
+#: apps/activity/forms.py:95 apps/activity/models.py:281
msgid "This person has been already invited 5 times this year."
msgstr "Esta persona ya fue invitada 5 veces este año."
-#: apps/activity/forms.py:93 apps/activity/models.py:285
+#: apps/activity/forms.py:99 apps/activity/models.py:285
msgid "This person is already invited."
msgstr "Esta persona ya está invitada."
-#: apps/activity/forms.py:97 apps/activity/models.py:289
+#: apps/activity/forms.py:103 apps/activity/models.py:289
msgid "You can't invite more than 3 people to this activity."
msgstr "Usted no puede invitar más de 3 persona a esta actividad."
@@ -51,11 +55,11 @@ 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:231 apps/note/models/transactions.py:26
+#: apps/note/models/notes.py:263 apps/note/models/transactions.py:26
#: apps/note/models/transactions.py:46 apps/note/models/transactions.py:301
#: apps/permission/models.py:330
#: apps/registration/templates/registration/future_profile_detail.html:16
-#: apps/wei/models.py:66 apps/wei/models.py:123
+#: apps/wei/models.py:67 apps/wei/models.py:131 apps/wei/tables.py:282
#: apps/wei/templates/wei/base.html:26
#: apps/wei/templates/wei/weimembership_form.html:14
msgid "name"
@@ -90,7 +94,7 @@ 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:77 apps/wei/models.py:134
+#: apps/permission/models.py:189 apps/wei/models.py:78 apps/wei/models.py:142
msgid "description"
msgstr "descripción"
@@ -109,9 +113,10 @@ msgstr "Lugar donde se organiza la actividad, por ejemplo la Kfet."
msgid "type"
msgstr "tipo"
-#: apps/activity/models.py:89 apps/logs/models.py:22 apps/member/models.py:305
-#: apps/note/models/notes.py:148 apps/treasury/models.py:283
-#: apps/wei/models.py:165 apps/wei/templates/wei/survey.html:15
+#: apps/activity/models.py:89 apps/logs/models.py:22 apps/member/models.py:307
+#: apps/note/models/notes.py:148 apps/treasury/models.py:285
+#: apps/wei/models.py:173 apps/wei/templates/wei/attribute_bus_1A.html:13
+#: apps/wei/templates/wei/survey.html:15
msgid "user"
msgstr "usuario"
@@ -193,7 +198,7 @@ msgstr "Entrada para {note} en la actividad {activity}"
msgid "Already entered on "
msgstr "Entrado ya el "
-#: apps/activity/models.py:202 apps/activity/tables.py:54
+#: apps/activity/models.py:202 apps/activity/tables.py:56
msgid "{:%Y-%m-%d %H:%M:%S}"
msgstr "{:%d/%m/%Y %H:%M:%S}"
@@ -203,6 +208,7 @@ msgstr "El saldo es negativo."
#: apps/activity/models.py:240
#: apps/treasury/templates/treasury/sogecredit_detail.html:14
+#: apps/wei/templates/wei/attribute_bus_1A.html:16
msgid "last name"
msgstr "apellido"
@@ -210,6 +216,7 @@ msgstr "apellido"
#: apps/member/templates/member/includes/profile_info.html:4
#: apps/registration/templates/registration/future_profile_detail.html:16
#: apps/treasury/templates/treasury/sogecredit_detail.html:17
+#: apps/wei/templates/wei/attribute_bus_1A.html:19
#: apps/wei/templates/wei/weimembership_form.html:14
msgid "first name"
msgstr "nombre"
@@ -230,48 +237,48 @@ msgstr "invitados"
msgid "Invitation"
msgstr "Invitación"
-#: apps/activity/tables.py:25
+#: apps/activity/tables.py:27
msgid "The activity is currently open."
msgstr "La actividad está actualmente abierta."
-#: apps/activity/tables.py:26
+#: apps/activity/tables.py:28
msgid "The validation of the activity is pending."
msgstr "La validación de esta actividad es pendiente."
-#: apps/activity/tables.py:41 apps/treasury/tables.py:107
+#: apps/activity/tables.py:43 apps/treasury/tables.py:107
msgid "Remove"
msgstr "Quitar"
-#: apps/activity/tables.py:54
+#: apps/activity/tables.py:56
msgid "Entered on "
msgstr "Entrado el "
-#: apps/activity/tables.py:56
+#: apps/activity/tables.py:58
msgid "remove"
msgstr "quitar"
-#: apps/activity/tables.py:80 apps/note/forms.py:68 apps/treasury/models.py:197
+#: apps/activity/tables.py:82 apps/note/forms.py:68 apps/treasury/models.py:199
msgid "Type"
msgstr "Tipo"
-#: 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
+#: apps/activity/tables.py:84 apps/member/forms.py:186
+#: apps/registration/forms.py:91 apps/treasury/forms.py:131
+#: apps/wei/forms/registration.py:104
msgid "Last name"
msgstr "Apellido"
-#: apps/activity/tables.py:84 apps/member/forms.py:191
-#: apps/note/templates/note/transaction_form.html:134
-#: apps/registration/forms.py:95 apps/treasury/forms.py:132
-#: apps/wei/forms/registration.py:101
+#: apps/activity/tables.py:86 apps/member/forms.py:191
+#: apps/note/templates/note/transaction_form.html:138
+#: apps/registration/forms.py:96 apps/treasury/forms.py:133
+#: apps/wei/forms/registration.py:109
msgid "First name"
msgstr "Nombre"
-#: apps/activity/tables.py:86 apps/note/models/notes.py:86
+#: apps/activity/tables.py:88 apps/note/models/notes.py:86
msgid "Note"
msgstr "Note"
-#: apps/activity/tables.py:88 apps/member/tables.py:49
+#: apps/activity/tables.py:90 apps/member/tables.py:50
msgid "Balance"
msgstr "Saldo de la cuenta"
@@ -285,26 +292,26 @@ msgstr "Invitados suprimidos"
#: apps/activity/templates/activity/activity_entry.html:14
#: apps/note/models/transactions.py:257
-#: apps/note/templates/note/transaction_form.html:16
-#: apps/note/templates/note/transaction_form.html:148
-#: note_kfet/templates/base.html:73
+#: apps/note/templates/note/transaction_form.html:17
+#: apps/note/templates/note/transaction_form.html:152
+#: note_kfet/templates/base.html:72
msgid "Transfer"
msgstr "Transferencia"
#: apps/activity/templates/activity/activity_entry.html:18
#: apps/note/models/transactions.py:317
-#: apps/note/templates/note/transaction_form.html:21
+#: apps/note/templates/note/transaction_form.html:22
msgid "Credit"
msgstr "Crédito"
#: apps/activity/templates/activity/activity_entry.html:21
#: apps/note/models/transactions.py:317
-#: apps/note/templates/note/transaction_form.html:25
+#: apps/note/templates/note/transaction_form.html:26
msgid "Debit"
msgstr "Débito"
#: apps/activity/templates/activity/activity_entry.html:27
-#: apps/note/templates/note/transaction_form.html:30
+#: apps/note/templates/note/transaction_form.html:34
msgid "Entries"
msgstr "Entradas"
@@ -312,12 +319,12 @@ msgstr "Entradas"
msgid "Return to activity page"
msgstr "Regresar a la página de la actividad"
-#: apps/activity/templates/activity/activity_entry.html:89
-#: apps/activity/templates/activity/activity_entry.html:124
+#: apps/activity/templates/activity/activity_entry.html:94
+#: apps/activity/templates/activity/activity_entry.html:129
msgid "Entry done, but caution: the user is not a Kfet member."
msgstr "Entrada echa, pero cuidado : el usuario no es un miembro de la Kfet."
-#: apps/activity/templates/activity/activity_entry.html:127
+#: apps/activity/templates/activity/activity_entry.html:132
msgid "Entry done!"
msgstr "Entrada echa !"
@@ -325,7 +332,7 @@ msgstr "Entrada echa !"
#: apps/member/templates/member/add_members.html:46
#: apps/member/templates/member/club_form.html:16
#: apps/note/templates/note/transactiontemplate_form.html:18
-#: apps/treasury/forms.py:88 apps/treasury/forms.py:142
+#: apps/treasury/forms.py:89 apps/treasury/forms.py:143
#: apps/treasury/templates/treasury/invoice_form.html:74
#: apps/wei/templates/wei/bus_form.html:17
#: apps/wei/templates/wei/busteam_form.html:17
@@ -379,7 +386,7 @@ msgid "validate"
msgstr "validar"
#: apps/activity/templates/activity/includes/activity_info.html:71
-#: apps/logs/models.py:64 apps/note/tables.py:195
+#: apps/logs/models.py:64 apps/note/tables.py:220
msgid "edit"
msgstr "modificar"
@@ -391,37 +398,37 @@ msgstr "Invitar"
msgid "Create new activity"
msgstr "Crear una nueva actividad"
-#: apps/activity/views.py:67 note_kfet/templates/base.html:91
+#: apps/activity/views.py:67 note_kfet/templates/base.html:90
msgid "Activities"
msgstr "Actividades"
-#: apps/activity/views.py:95
+#: apps/activity/views.py:93
msgid "Activity detail"
msgstr "Detalles de la actividad"
-#: apps/activity/views.py:115
+#: apps/activity/views.py:113
msgid "Update activity"
msgstr "Modificar la actividad"
-#: apps/activity/views.py:142
+#: apps/activity/views.py:140
msgid "Invite guest to the activity \"{}\""
msgstr "Invitar alguien para la actividad \"{}\""
-#: apps/activity/views.py:177
+#: apps/activity/views.py:178
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:180
+#: apps/activity/views.py:181
msgid "This activity does not support activity entries."
msgstr "Esta actividad no necesita entradas."
-#: apps/activity/views.py:183
+#: apps/activity/views.py:184
msgid "This activity is closed."
msgstr "Esta actividad esta cerrada."
-#: apps/activity/views.py:279
+#: apps/activity/views.py:280
msgid "Entry for activity \"{}\""
msgstr "Entradas para la actividad \"{}\""
@@ -457,9 +464,9 @@ msgstr "nuevos datos"
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/wei/tables.py:73
+#: apps/logs/models.py:65 apps/note/tables.py:166 apps/note/tables.py:190
+#: apps/note/tables.py:237 apps/permission/models.py:127
+#: apps/treasury/tables.py:38 apps/wei/tables.py:74
msgid "delete"
msgstr "suprimir"
@@ -498,15 +505,15 @@ msgstr "pago de afiliación (estudiantes pagados)"
msgid "membership fee (unpaid students)"
msgstr "pago de afiliación (estudiantes no pagados)"
-#: apps/member/admin.py:65 apps/member/models.py:317
+#: apps/member/admin.py:65 apps/member/models.py:319
msgid "roles"
msgstr "papel"
-#: apps/member/admin.py:66 apps/member/models.py:331
+#: apps/member/admin.py:66 apps/member/models.py:333
msgid "fee"
msgstr "pago"
-#: apps/member/apps.py:14 apps/wei/tables.py:193 apps/wei/tables.py:224
+#: apps/member/apps.py:14 apps/wei/tables.py:226 apps/wei/tables.py:257
msgid "member"
msgstr "miembro"
@@ -538,26 +545,26 @@ msgstr "Tamaño máximo : 2Mo"
msgid "This image cannot be loaded."
msgstr "Esta imagen no puede ser cargada."
-#: apps/member/forms.py:141 apps/member/views.py:101
-#: apps/registration/forms.py:33 apps/registration/views.py:258
+#: apps/member/forms.py:141 apps/member/views.py:103
+#: apps/registration/forms.py:33 apps/registration/views.py:262
msgid "An alias with a similar name already exists."
msgstr "Un alias similar ya existe."
-#: apps/member/forms.py:165 apps/registration/forms.py:70
+#: apps/member/forms.py:165 apps/registration/forms.py:71
msgid "Inscription paid by Société Générale"
msgstr "Registración pagadas por Société Générale"
-#: apps/member/forms.py:167 apps/registration/forms.py:72
+#: apps/member/forms.py:167 apps/registration/forms.py:73
msgid "Check this case if the Société Générale paid the inscription."
msgstr "Marcar esta casilla si Société Générale pagó la registración."
-#: apps/member/forms.py:172 apps/registration/forms.py:77
-#: apps/wei/forms/registration.py:83
+#: apps/member/forms.py:172 apps/registration/forms.py:78
+#: apps/wei/forms/registration.py:91
msgid "Credit type"
msgstr "Tipo de crédito"
-#: apps/member/forms.py:173 apps/registration/forms.py:78
-#: apps/wei/forms/registration.py:84
+#: apps/member/forms.py:173 apps/registration/forms.py:79
+#: apps/wei/forms/registration.py:92
msgid "No credit"
msgstr "No crédito"
@@ -565,14 +572,14 @@ msgstr "No crédito"
msgid "You can credit the note of the user."
msgstr "Usted puede acreditar la note del usuario."
-#: apps/member/forms.py:179 apps/registration/forms.py:83
-#: apps/wei/forms/registration.py:89
+#: apps/member/forms.py:179 apps/registration/forms.py:84
+#: apps/wei/forms/registration.py:97
msgid "Credit amount"
msgstr "Valor del crédito"
-#: apps/member/forms.py:196 apps/note/templates/note/transaction_form.html:140
-#: apps/registration/forms.py:100 apps/treasury/forms.py:134
-#: apps/wei/forms/registration.py:106
+#: apps/member/forms.py:196 apps/note/templates/note/transaction_form.html:144
+#: apps/registration/forms.py:101 apps/treasury/forms.py:135
+#: apps/wei/forms/registration.py:114
msgid "Bank"
msgstr "Banco"
@@ -584,15 +591,31 @@ msgstr "Usuario"
msgid "Roles"
msgstr "Papeles"
+#: apps/member/hashers.py:57
+msgid "algorithm"
+msgstr "algoritmo"
+
+#: apps/member/hashers.py:58
+msgid "iterations"
+msgstr "iteraciones"
+
+#: apps/member/hashers.py:59
+msgid "salt"
+msgstr "sal"
+
+#: apps/member/hashers.py:60
+msgid "hash"
+msgstr "hash"
+
#: apps/member/models.py:38
-#: apps/member/templates/member/includes/profile_info.html:35
+#: apps/member/templates/member/includes/profile_info.html:43
#: apps/registration/templates/registration/future_profile_detail.html:40
#: apps/wei/templates/wei/weimembership_form.html:44
msgid "phone number"
msgstr "número de teléfono"
#: apps/member/models.py:45
-#: apps/member/templates/member/includes/profile_info.html:29
+#: apps/member/templates/member/includes/profile_info.html:37
#: apps/registration/templates/registration/future_profile_detail.html:34
#: apps/wei/templates/wei/weimembership_form.html:38
msgid "section"
@@ -602,7 +625,8 @@ msgstr "sección"
msgid "e.g. \"1A0\", \"9A♥\", \"SAPHIRE\""
msgstr "i.e. \"1A0\", \"9A♥\", \"SAPHIRE\""
-#: apps/member/models.py:54 apps/wei/templates/wei/weimembership_form.html:32
+#: apps/member/models.py:54 apps/wei/templates/wei/attribute_bus_1A.html:25
+#: apps/wei/templates/wei/weimembership_form.html:32
msgid "department"
msgstr "departamento"
@@ -679,14 +703,14 @@ msgid "Year of entry to the school (None if not ENS student)"
msgstr "Año de ingreso en la escuela (None si no un alumn@ ENS)"
#: apps/member/models.py:83
-#: apps/member/templates/member/includes/profile_info.html:39
+#: apps/member/templates/member/includes/profile_info.html:47
#: apps/registration/templates/registration/future_profile_detail.html:37
#: apps/wei/templates/wei/weimembership_form.html:41
msgid "address"
msgstr "dirección"
#: apps/member/models.py:90
-#: apps/member/templates/member/includes/profile_info.html:46
+#: apps/member/templates/member/includes/profile_info.html:50
#: apps/registration/templates/registration/future_profile_detail.html:43
#: apps/wei/templates/wei/weimembership_form.html:47
msgid "paid"
@@ -758,7 +782,7 @@ msgstr "Active su cuenta Note Kfet"
#: apps/member/models.py:204
#: apps/member/templates/member/includes/club_info.html:55
-#: apps/member/templates/member/includes/profile_info.html:32
+#: apps/member/templates/member/includes/profile_info.html:40
#: apps/registration/templates/registration/future_profile_detail.html:22
#: apps/wei/templates/wei/base.html:70
#: apps/wei/templates/wei/weimembership_form.html:20
@@ -806,50 +830,50 @@ msgstr ""
"Ultima fecha de una afiliación, después de la cual los miembros tienen que "
"prorrogarla."
-#: apps/member/models.py:286 apps/member/models.py:311
+#: apps/member/models.py:288 apps/member/models.py:313
#: apps/note/models/notes.py:176
msgid "club"
msgstr "club"
-#: apps/member/models.py:287
+#: apps/member/models.py:289
msgid "clubs"
msgstr "clubs"
-#: apps/member/models.py:322
+#: apps/member/models.py:324
msgid "membership starts on"
msgstr "afiliación empezá el"
-#: apps/member/models.py:326
+#: apps/member/models.py:328
msgid "membership ends on"
msgstr "afiliación termina el"
-#: apps/member/models.py:422
+#: apps/member/models.py:430
#, python-brace-format
msgid "The role {role} does not apply to the club {club}."
msgstr "El papel {role} no se encuentra en el club {club}."
-#: apps/member/models.py:431 apps/member/views.py:651
+#: apps/member/models.py:439 apps/member/views.py:712
msgid "User is already a member of the club"
msgstr "Usuario ya esta un miembro del club"
-#: apps/member/models.py:443 apps/member/views.py:661
+#: apps/member/models.py:451 apps/member/views.py:721
msgid "User is not a member of the parent club"
msgstr "Usuario no es un miembro del club pariente"
-#: apps/member/models.py:496
+#: apps/member/models.py:504
#, python-brace-format
msgid "Membership of {user} for the club {club}"
msgstr "Afiliación of {user} for the club {club}"
-#: apps/member/models.py:499 apps/note/models/transactions.py:389
+#: apps/member/models.py:507 apps/note/models/transactions.py:389
msgid "membership"
msgstr "afiliación"
-#: apps/member/models.py:500
+#: apps/member/models.py:508
msgid "memberships"
msgstr "afiliaciones"
-#: apps/member/tables.py:137
+#: apps/member/tables.py:139
msgid "Renew"
msgstr "Prorrogar"
@@ -897,7 +921,7 @@ msgid "Account #"
msgstr "Cuenta n°"
#: apps/member/templates/member/base.html:48
-#: apps/member/templates/member/base.html:62 apps/member/views.py:58
+#: apps/member/templates/member/base.html:62 apps/member/views.py:60
#: apps/registration/templates/registration/future_profile_detail.html:48
#: apps/wei/templates/wei/weimembership_form.html:117
msgid "Update Profile"
@@ -941,7 +965,8 @@ msgstr ""
"desbloquearla si mismo."
#: apps/member/templates/member/base.html:110
-#: apps/member/templates/member/base.html:137 apps/treasury/forms.py:90
+#: apps/member/templates/member/base.html:137 apps/treasury/forms.py:91
+#: apps/treasury/templates/treasury/sogecredit_list.html:72
msgid "Close"
msgstr "Cerrar"
@@ -957,14 +982,17 @@ msgstr ""
"nuevo posibles."
#: apps/member/templates/member/club_alias.html:10
-#: apps/member/templates/member/profile_alias.html:10 apps/member/views.py:253
-#: apps/member/views.py:456
+#: apps/member/templates/member/profile_alias.html:10 apps/member/views.py:287
+#: apps/member/views.py:517
msgid "Note aliases"
msgstr "Alias de la note"
#: apps/member/templates/member/club_alias.html:20
#: apps/member/templates/member/profile_alias.html:19
+#: apps/member/templates/member/profile_trust.html:19
#: apps/treasury/tables.py:99
+#: apps/treasury/templates/treasury/sogecredit_list.html:34
+#: apps/treasury/templates/treasury/sogecredit_list.html:73
msgid "Add"
msgstr "Añadir"
@@ -1014,7 +1042,7 @@ msgid "membership fee"
msgstr "pago de afiliación"
#: apps/member/templates/member/includes/club_info.html:43
-#: apps/member/templates/member/includes/profile_info.html:43
+#: apps/member/templates/member/includes/profile_info.html:55
#: apps/treasury/templates/treasury/sogecredit_detail.html:24
#: apps/wei/templates/wei/base.html:60
msgid "balance"
@@ -1022,7 +1050,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:255 apps/wei/templates/wei/base.html:66
+#: apps/note/models/notes.py:287 apps/wei/templates/wei/base.html:66
msgid "aliases"
msgstr "alias"
@@ -1046,22 +1074,63 @@ msgstr "contraseña"
msgid "Change password"
msgstr "Cambiar la contraseña"
-#: apps/member/templates/member/includes/profile_info.html:55
+#: apps/member/templates/member/includes/profile_info.html:28
+#: apps/note/models/notes.py:244
+msgid "friendships"
+msgstr "amistades"
+
+#: apps/member/templates/member/includes/profile_info.html:32
+msgid "Manage friendships"
+msgstr "Gestionar las amistades"
+
+#: apps/member/templates/member/includes/profile_info.html:63
msgid "API token"
msgstr "Acceso API"
-#: apps/member/templates/member/manage_auth_tokens.html:19
+#: apps/member/templates/member/manage_auth_tokens.html:12
+msgid "Token authentication"
+msgstr "Token de autentificación"
+
+#: apps/member/templates/member/manage_auth_tokens.html:28
msgid "Token"
msgstr "Token"
-#: apps/member/templates/member/manage_auth_tokens.html:26
+#: apps/member/templates/member/manage_auth_tokens.html:35
msgid "Created"
msgstr "Creado el"
-#: apps/member/templates/member/manage_auth_tokens.html:34
+#: apps/member/templates/member/manage_auth_tokens.html:39
+msgid "Warning"
+msgstr "Cuidado"
+
+#: apps/member/templates/member/manage_auth_tokens.html:44
msgid "Regenerate token"
msgstr "Regenerar token"
+#: apps/member/templates/member/manage_auth_tokens.html:53
+msgid "OAuth2 authentication"
+msgstr "Autentificación OAuth2"
+
+#: apps/member/templates/member/manage_auth_tokens.html:79
+msgid "Authorization:"
+msgstr "Autorizaciones :"
+
+#: apps/member/templates/member/manage_auth_tokens.html:83
+msgid "Token:"
+msgstr "Token :"
+
+#: apps/member/templates/member/manage_auth_tokens.html:87
+msgid "Revoke Token:"
+msgstr "Token revocado :"
+
+#: apps/member/templates/member/manage_auth_tokens.html:91
+msgid "Introspect Token:"
+msgstr "Introspección :"
+
+#: apps/member/templates/member/manage_auth_tokens.html:97
+msgid "Show my applications"
+msgstr "Mostrar mis aplicaciones"
+
#: apps/member/templates/member/picture_update.html:35
msgid "Nevermind"
msgstr "No importa"
@@ -1086,6 +1155,23 @@ msgstr "Hacer clic aquí para reenviar un enlace de validación."
msgid "View my memberships"
msgstr "Ver mis afiliaciones"
+#: apps/member/templates/member/profile_trust.html:10 apps/member/views.py:254
+msgid "Note friendships"
+msgstr "Amistades de note"
+
+#: apps/member/templates/member/profile_trust.html:28
+msgid ""
+"Adding someone as a friend enables them to initiate transactions coming from "
+"your account (while keeping your balance positive). This is designed to "
+"simplify using note kfet transfers to transfer money between users. The "
+"intent is that one person can make all transfers for a group of friends "
+"without needing additional rights among them."
+msgstr ""
+"Añadir alguien como amig@ permite a esta persona hacer transacciones de su "
+"note a la note de el (si su cuenta se queda en positivo). La meta es "
+"simplificar el reembolso entre amig@s por Note Kfet. Pues una persona puede "
+"crear todas la transacciones sin tener derechos particulares."
+
#: apps/member/templates/member/profile_update.html:18
msgid "Save Changes"
msgstr "Guardar cambios"
@@ -1094,47 +1180,47 @@ msgstr "Guardar cambios"
msgid "Registrations"
msgstr "Registraciones"
-#: apps/member/views.py:71 apps/registration/forms.py:23
+#: apps/member/views.py:73 apps/registration/forms.py:23
msgid "This address must be valid."
msgstr "Este correo tiene que ser valido."
-#: apps/member/views.py:138
+#: apps/member/views.py:140
msgid "Profile detail"
msgstr "Detalles del usuario"
-#: apps/member/views.py:205
+#: apps/member/views.py:206
msgid "Search user"
msgstr "Buscar un usuario"
-#: apps/member/views.py:273
+#: apps/member/views.py:308
msgid "Update note picture"
msgstr "Modificar la imagen de la note"
-#: apps/member/views.py:319
+#: apps/member/views.py:354
msgid "Manage auth token"
msgstr "Gestionar los token de autentificación"
-#: apps/member/views.py:346
+#: apps/member/views.py:381
msgid "Create new club"
msgstr "Crear un nuevo club"
-#: apps/member/views.py:365
+#: apps/member/views.py:400
msgid "Search club"
msgstr "Buscar un club"
-#: apps/member/views.py:398
+#: apps/member/views.py:433
msgid "Club detail"
msgstr "Detalles del club"
-#: apps/member/views.py:479
+#: apps/member/views.py:540
msgid "Update club"
msgstr "Modificar el club"
-#: apps/member/views.py:513
+#: apps/member/views.py:574
msgid "Add new member to the club"
msgstr "Añadir un nuevo miembro al club"
-#: apps/member/views.py:642 apps/wei/views.py:917
+#: apps/member/views.py:703 apps/wei/views.py:973
msgid ""
"This user don't have enough money to join this club, and can't have a "
"negative balance."
@@ -1142,19 +1228,19 @@ msgstr ""
"Este usuario no tiene suficiente dinero para unirse a este club, y no puede "
"tener un saldo negativo."
-#: apps/member/views.py:665
+#: apps/member/views.py:725
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:670
+#: apps/member/views.py:730
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:816
+#: apps/member/views.py:876
msgid "Manage roles of an user in the club"
msgstr "Gestionar los papeles de un usuario en el club"
-#: apps/member/views.py:841
+#: apps/member/views.py:901
msgid "Members of the club"
msgstr "Miembros del club"
@@ -1172,7 +1258,7 @@ msgstr "destino"
msgid "amount"
msgstr "monto"
-#: apps/note/api/serializers.py:183 apps/note/api/serializers.py:189
+#: apps/note/api/serializers.py:199 apps/note/api/serializers.py:205
#: apps/note/models/transactions.py:228
msgid ""
"The transaction can't be saved since the source note or the destination note "
@@ -1189,7 +1275,7 @@ msgstr "Fuente"
msgid "Destination"
msgstr "Destino"
-#: apps/note/forms.py:74 apps/note/templates/note/transaction_form.html:119
+#: apps/note/forms.py:74 apps/note/templates/note/transaction_form.html:123
msgid "Reason"
msgstr "Motivo"
@@ -1304,30 +1390,47 @@ msgstr "note especial"
msgid "special notes"
msgstr "notes especiales"
-#: apps/note/models/notes.py:237
+#: apps/note/models/notes.py:232
+msgid "trusting"
+msgstr "note"
+
+#: apps/note/models/notes.py:239
+msgid "trusted"
+msgstr "amigo"
+
+#: apps/note/models/notes.py:243
+msgid "frienship"
+msgstr "amistad"
+
+#: apps/note/models/notes.py:248
+#, python-brace-format
+msgid "Friendship between {trusting} and {trusted}"
+msgstr "Amistad entre {trusting} y {trusted}"
+
+#: apps/note/models/notes.py:269
msgid "Invalid alias"
msgstr "Alias inválido"
-#: apps/note/models/notes.py:254
+#: apps/note/models/notes.py:286
msgid "alias"
msgstr "alias"
-#: apps/note/models/notes.py:278
+#: apps/note/models/notes.py:310
msgid "Alias is too long."
msgstr "El alias es demasiado largo."
-#: apps/note/models/notes.py:281
+#: apps/note/models/notes.py:313
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:285
+#: apps/note/models/notes.py:317
msgid "An alias with a similar name already exists: {} "
msgstr "Un alias parecido ya existe : {} "
-#: apps/note/models/notes.py:299
+#: apps/note/models/notes.py:331
msgid "You can't delete your main alias."
msgstr "No puede suprimir su alias principal."
@@ -1437,8 +1540,8 @@ msgstr ""
"pago y un usuario o un club"
#: apps/note/models/transactions.py:355 apps/note/models/transactions.py:358
-#: apps/note/models/transactions.py:361 apps/wei/views.py:922
-#: apps/wei/views.py:926
+#: apps/note/models/transactions.py:361 apps/wei/views.py:978
+#: apps/wei/views.py:982
msgid "This field is required."
msgstr "Este campo es obligatorio."
@@ -1454,7 +1557,7 @@ msgstr "Transacciones especiales"
msgid "membership transaction"
msgstr "transacción de afiliación"
-#: apps/note/models/transactions.py:385 apps/treasury/models.py:289
+#: apps/note/models/transactions.py:385 apps/treasury/models.py:292
msgid "membership transactions"
msgstr "transacciones de afiliación"
@@ -1470,25 +1573,34 @@ msgstr "Hacer clic para validar"
msgid "No reason specified"
msgstr "Ningún motivo dado"
-#: apps/note/tables.py:169 apps/note/tables.py:203 apps/treasury/tables.py:39
+#: apps/note/tables.py:173 apps/note/tables.py:194 apps/note/tables.py:239
+#: apps/treasury/tables.py:39
#: apps/treasury/templates/treasury/invoice_confirm_delete.html:30
#: apps/treasury/templates/treasury/sogecredit_detail.html:65
-#: apps/wei/tables.py:74 apps/wei/tables.py:114
+#: apps/wei/tables.py:75 apps/wei/tables.py:118
#: apps/wei/templates/wei/weiregistration_confirm_delete.html:31
+#: note_kfet/templates/oauth2_provider/application_confirm_delete.html:18
+#: note_kfet/templates/oauth2_provider/application_detail.html:39
+#: note_kfet/templates/oauth2_provider/authorized-token-delete.html:12
msgid "Delete"
msgstr "Suprimir"
-#: apps/note/tables.py:197 apps/note/templates/note/conso_form.html:132
-#: apps/wei/tables.py:48 apps/wei/tables.py:49
+#: apps/note/tables.py:222 apps/note/templates/note/conso_form.html:132
+#: apps/wei/tables.py:49 apps/wei/tables.py:50
#: apps/wei/templates/wei/base.html:89
#: apps/wei/templates/wei/bus_detail.html:20
#: apps/wei/templates/wei/busteam_detail.html:20
#: apps/wei/templates/wei/busteam_detail.html:40
+#: note_kfet/templates/oauth2_provider/application_detail.html:38
msgid "Edit"
msgstr "Editar"
+#: apps/note/tables.py:226 apps/note/tables.py:253
+msgid "Hide/Show"
+msgstr "Ocultar/Mostrar"
+
#: apps/note/templates/note/conso_form.html:22
-#: apps/note/templates/note/transaction_form.html:44
+#: apps/note/templates/note/transaction_form.html:48
msgid "Please select a note"
msgstr "Por favor elige una note"
@@ -1497,8 +1609,8 @@ msgid "Consum"
msgstr "Consumir"
#: apps/note/templates/note/conso_form.html:43
-#: apps/note/templates/note/transaction_form.html:65
-#: apps/note/templates/note/transaction_form.html:92
+#: apps/note/templates/note/transaction_form.html:69
+#: apps/note/templates/note/transaction_form.html:96
msgid "Name or alias..."
msgstr "Nombre o alias..."
@@ -1523,7 +1635,7 @@ msgid "Double consumptions"
msgstr "Consumiciones dobles"
#: apps/note/templates/note/conso_form.html:154
-#: apps/note/templates/note/transaction_form.html:159
+#: apps/note/templates/note/transaction_form.html:163
msgid "Recent transactions history"
msgstr "Historial de las transacciones recientes"
@@ -1538,45 +1650,45 @@ msgstr "Historial de las transacciones recientes"
msgid "Mail generated by the Note Kfet on the"
msgstr "Correo electrónico enviado por la Note Kfet el"
-#: apps/note/templates/note/transaction_form.html:54
-#: apps/note/templates/note/transaction_form.html:174
+#: apps/note/templates/note/transaction_form.html:58
+#: apps/note/templates/note/transaction_form.html:178
msgid "Select emitters"
msgstr "Elegir los remitentes"
-#: apps/note/templates/note/transaction_form.html:69
+#: apps/note/templates/note/transaction_form.html:73
msgid "I am the emitter"
msgstr "Estoy la fuente"
-#: apps/note/templates/note/transaction_form.html:81
-#: apps/note/templates/note/transaction_form.html:176
+#: apps/note/templates/note/transaction_form.html:85
+#: apps/note/templates/note/transaction_form.html:180
msgid "Select receivers"
msgstr "Elegir destinatarios"
-#: apps/note/templates/note/transaction_form.html:104
+#: apps/note/templates/note/transaction_form.html:108
msgid "Action"
msgstr "Acción"
-#: apps/note/templates/note/transaction_form.html:112
-#: apps/treasury/forms.py:136 apps/treasury/tables.py:67
+#: apps/note/templates/note/transaction_form.html:116
+#: apps/treasury/forms.py:137 apps/treasury/tables.py:67
#: apps/treasury/tables.py:132
#: apps/treasury/templates/treasury/remittance_form.html:23
msgid "Amount"
msgstr "Monto"
-#: apps/note/templates/note/transaction_form.html:128
-#: apps/treasury/models.py:52
+#: apps/note/templates/note/transaction_form.html:132
+#: apps/treasury/models.py:54
msgid "Name"
msgstr "Nombre"
-#: apps/note/templates/note/transaction_form.html:173
+#: apps/note/templates/note/transaction_form.html:177
msgid "Select emitter"
msgstr "Elegir el remitente"
-#: apps/note/templates/note/transaction_form.html:175
+#: apps/note/templates/note/transaction_form.html:179
msgid "Select receiver"
msgstr "Elegir destinatario"
-#: apps/note/templates/note/transaction_form.html:177
+#: apps/note/templates/note/transaction_form.html:181
msgid "Transfer type"
msgstr "Tipo de transferencia"
@@ -1616,6 +1728,18 @@ msgstr "botón suprimido con éxito "
msgid "Unable to delete button "
msgstr "Imposible de suprimir el botón "
+#: apps/note/templates/note/transactiontemplate_list.html:95
+msgid "Button hidden"
+msgstr "Botón ocultado"
+
+#: apps/note/templates/note/transactiontemplate_list.html:96
+msgid "Button displayed"
+msgstr "Botón mostrado"
+
+#: apps/note/templates/note/transactiontemplate_list.html:100
+msgid "An error occured"
+msgstr "Un error ocurrió"
+
#: apps/note/views.py:36
msgid "Transfer money"
msgstr "Transferir dinero"
@@ -1632,7 +1756,7 @@ msgstr "Buscar un botón"
msgid "Update button"
msgstr "Modificar el botón"
-#: apps/note/views.py:151 note_kfet/templates/base.html:67
+#: apps/note/views.py:151 note_kfet/templates/base.html:66
msgid "Consumptions"
msgstr "Consumiciones"
@@ -1725,7 +1849,7 @@ msgstr "interesa el club"
msgid "role permissions"
msgstr "permisos por papeles"
-#: apps/permission/signals.py:63
+#: apps/permission/signals.py:73
#, python-brace-format
msgid ""
"You don't have the permission to change the field {field} on this instance "
@@ -1734,7 +1858,7 @@ msgstr ""
"Usted no tiene permiso a cambiar el campo {field} on this instance of model "
"{app_label}.{model_name}."
-#: apps/permission/signals.py:73 apps/permission/views.py:105
+#: apps/permission/signals.py:83 apps/permission/views.py:105
#, python-brace-format
msgid ""
"You don't have the permission to add an instance of model {app_label}."
@@ -1743,7 +1867,7 @@ msgstr ""
"Usted no tiene permiso a añadir an instance of model {app_label}."
"{model_name}."
-#: apps/permission/signals.py:102
+#: apps/permission/signals.py:112
#, python-brace-format
msgid ""
"You don't have the permission to delete this instance of model {app_label}."
@@ -1794,6 +1918,25 @@ msgstr "Consulta :"
msgid "No associated permission"
msgstr "No hay permiso relacionado"
+#: apps/permission/templates/permission/scopes.html:8
+msgid "Available scopes"
+msgstr ""
+
+#: apps/permission/templates/permission/scopes.html:42
+#: note_kfet/templates/oauth2_provider/application_list.html:24
+msgid "No applications defined"
+msgstr "Ninguna aplicación definida"
+
+#: apps/permission/templates/permission/scopes.html:43
+#: note_kfet/templates/oauth2_provider/application_list.html:25
+msgid "Click here"
+msgstr "Pulsar aquí"
+
+#: apps/permission/templates/permission/scopes.html:43
+#: note_kfet/templates/oauth2_provider/application_list.html:25
+msgid "if you want to register a new one"
+msgstr "si quiere crear una nueva"
+
#: apps/permission/views.py:72
#, python-brace-format
msgid ""
@@ -1808,7 +1951,7 @@ msgid ""
"with these parameters. Please correct your data and retry."
msgstr ""
-#: apps/permission/views.py:112 note_kfet/templates/base.html:109
+#: apps/permission/views.py:112 note_kfet/templates/base.html:108
msgid "Rights"
msgstr "Permisos"
@@ -1826,13 +1969,13 @@ msgstr "Este correo electrónico ya esta utilizado."
#: 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."
+"I declare that I opened or I will open soon a bank account in the Société "
+"générale with the BDE partnership."
msgstr ""
"Declaro que ya abrió una cuenta a la Société Générale en colaboración con el "
"BDE."
-#: apps/registration/forms.py:50
+#: apps/registration/forms.py:51
msgid ""
"Warning: this engages you to open your bank account. If you finally decides "
"to don't open your account, you will have to pay the BDE membership."
@@ -1840,11 +1983,11 @@ msgstr ""
"Cuidado : esto le obliga abrir su cuenta bancaria. Si cambia de idea y no "
"abre su cuenta bancaria, tendrá que pagar su afiliación al BDE."
-#: apps/registration/forms.py:58
+#: apps/registration/forms.py:59
msgid "Register to the WEI"
msgstr "Registrarse en el WEI"
-#: apps/registration/forms.py:60
+#: apps/registration/forms.py:61
msgid ""
"Check this case if you want to register to the WEI. If you hesitate, you "
"will be able to register later, after validating your account in the Kfet."
@@ -1852,11 +1995,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:105
+#: apps/registration/forms.py:106
msgid "Join BDE Club"
msgstr "Afiliarse al club BDE"
-#: apps/registration/forms.py:112
+#: apps/registration/forms.py:113
msgid "Join Kfet Club"
msgstr "Afiliarse al club Kfet"
@@ -1969,196 +2112,196 @@ msgstr "El equipo Note Kfet."
msgid "Register new user"
msgstr "Registrar un nuevo usuario"
-#: apps/registration/views.py:93
+#: apps/registration/views.py:98
msgid "Email validation"
msgstr "Validación del correo electrónico"
-#: apps/registration/views.py:95
+#: apps/registration/views.py:100
msgid "Validate email"
msgstr "Validar el correo electrónico"
-#: apps/registration/views.py:137
+#: apps/registration/views.py:144
msgid "Email validation unsuccessful"
msgstr "La validación del correo electrónico fracasó"
-#: apps/registration/views.py:148
+#: apps/registration/views.py:155
msgid "Email validation email sent"
msgstr "Correo de validación enviado"
-#: apps/registration/views.py:156
+#: apps/registration/views.py:163
msgid "Resend email validation link"
msgstr "Reenviar el enlace de validación"
-#: apps/registration/views.py:174
+#: apps/registration/views.py:181
msgid "Pre-registered users list"
msgstr "Lista de los usuarios con afiliación pendiente"
-#: apps/registration/views.py:198
+#: apps/registration/views.py:205
msgid "Unregistered users"
msgstr "Usuarios con afiliación pendiente"
-#: apps/registration/views.py:211
+#: apps/registration/views.py:218
msgid "Registration detail"
msgstr "Detalles de la afiliación"
-#: apps/registration/views.py:278
+#: apps/registration/views.py:282
msgid "You must join the BDE."
msgstr "Usted tiene que afiliarse al BDE."
-#: apps/registration/views.py:302
+#: apps/registration/views.py:306
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:383
+#: apps/registration/views.py:387
msgid "Invalidate pre-registration"
msgstr "Invalidar la afiliación"
-#: apps/treasury/apps.py:12 note_kfet/templates/base.html:97
+#: apps/treasury/apps.py:12 note_kfet/templates/base.html:96
msgid "Treasury"
msgstr "Tesorería"
-#: apps/treasury/forms.py:25 apps/treasury/models.py:91
+#: apps/treasury/forms.py:26 apps/treasury/models.py:93
#: apps/treasury/templates/treasury/invoice_form.html:22
msgid "This invoice is locked and can no longer be edited."
msgstr "Esta factura esta bloqueada y no puede ser modificada."
-#: apps/treasury/forms.py:99
+#: apps/treasury/forms.py:100
msgid "Remittance is already closed."
msgstr "El descuento ya esta cerrado."
-#: apps/treasury/forms.py:104
+#: apps/treasury/forms.py:105
msgid "You can't change the type of the remittance."
msgstr "No puede cambiar el tipo de descuento."
-#: apps/treasury/forms.py:124 apps/treasury/models.py:265
+#: apps/treasury/forms.py:125 apps/treasury/models.py:267
#: apps/treasury/tables.py:97 apps/treasury/tables.py:105
#: apps/treasury/templates/treasury/invoice_list.html:16
#: apps/treasury/templates/treasury/remittance_list.html:16
-#: apps/treasury/templates/treasury/sogecredit_list.html:16
+#: apps/treasury/templates/treasury/sogecredit_list.html:17
msgid "Remittance"
msgstr "Descuento"
-#: apps/treasury/forms.py:125
+#: apps/treasury/forms.py:126
msgid "No attached remittance"
msgstr "No hay descuento relacionado"
-#: apps/treasury/models.py:24
+#: apps/treasury/models.py:26
msgid "Invoice identifier"
msgstr "Numero de factura"
-#: apps/treasury/models.py:38
+#: apps/treasury/models.py:40
msgid "BDE"
msgstr "BDE"
-#: apps/treasury/models.py:43
+#: apps/treasury/models.py:45
msgid "Object"
msgstr "Asunto"
-#: apps/treasury/models.py:47
+#: apps/treasury/models.py:49
msgid "Description"
msgstr "Descripción"
-#: apps/treasury/models.py:56
+#: apps/treasury/models.py:58
msgid "Address"
msgstr "Dirección"
-#: apps/treasury/models.py:61 apps/treasury/models.py:191
+#: apps/treasury/models.py:63 apps/treasury/models.py:193
msgid "Date"
msgstr "Fecha"
-#: apps/treasury/models.py:65
+#: apps/treasury/models.py:67
msgid "Acquitted"
msgstr "Pagada"
-#: apps/treasury/models.py:70
+#: apps/treasury/models.py:72
msgid "Locked"
msgstr "Bloqueada"
-#: apps/treasury/models.py:71
+#: apps/treasury/models.py:73
msgid "An invoice can't be edited when it is locked."
msgstr "Une factura no puede ser modificada cuando esta bloqueada."
-#: apps/treasury/models.py:77
+#: apps/treasury/models.py:79
msgid "tex source"
msgstr "código fuente TeX"
-#: apps/treasury/models.py:111 apps/treasury/models.py:127
+#: apps/treasury/models.py:113 apps/treasury/models.py:129
msgid "invoice"
msgstr "factura"
-#: apps/treasury/models.py:112
+#: apps/treasury/models.py:114
msgid "invoices"
msgstr "facturas"
-#: apps/treasury/models.py:115
+#: apps/treasury/models.py:117
#, python-brace-format
msgid "Invoice #{id}"
msgstr "Factura n°{id}"
-#: apps/treasury/models.py:132
+#: apps/treasury/models.py:134
msgid "Designation"
msgstr "Designación"
-#: apps/treasury/models.py:138
+#: apps/treasury/models.py:140
msgid "Quantity"
msgstr "Cantidad"
-#: apps/treasury/models.py:143
+#: apps/treasury/models.py:145
msgid "Unit price"
msgstr "Precio unitario"
-#: apps/treasury/models.py:159
+#: apps/treasury/models.py:161
msgid "product"
msgstr "producto"
-#: apps/treasury/models.py:160
+#: apps/treasury/models.py:162
msgid "products"
msgstr "productos"
-#: apps/treasury/models.py:180
+#: apps/treasury/models.py:182
msgid "remittance type"
msgstr "tipo de descuento"
-#: apps/treasury/models.py:181
+#: apps/treasury/models.py:183
msgid "remittance types"
msgstr "tipos de descuentos"
-#: apps/treasury/models.py:202
+#: apps/treasury/models.py:204
msgid "Comment"
msgstr "Comentario"
-#: apps/treasury/models.py:207
+#: apps/treasury/models.py:209
msgid "Closed"
msgstr "Cerrada"
-#: apps/treasury/models.py:211
+#: apps/treasury/models.py:213
msgid "remittance"
msgstr "descuento"
-#: apps/treasury/models.py:212
+#: apps/treasury/models.py:214
msgid "remittances"
msgstr "descuentos"
-#: apps/treasury/models.py:245
+#: apps/treasury/models.py:247
msgid "Remittance #{:d}: {}"
msgstr "Descuento n°{:d} : {}"
-#: apps/treasury/models.py:269
+#: apps/treasury/models.py:271
msgid "special transaction proxy"
msgstr "proxy de transacción especial"
-#: apps/treasury/models.py:270
+#: apps/treasury/models.py:272
msgid "special transaction proxies"
msgstr "proxys de transacciones especiales"
-#: apps/treasury/models.py:295
+#: apps/treasury/models.py:298
msgid "credit transaction"
msgstr "transacción de crédito"
-#: apps/treasury/models.py:379
+#: apps/treasury/models.py:430
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."
@@ -2167,16 +2310,16 @@ msgstr ""
"afiliaciones. Por favor pídelo acreditar su note antes de invalidar este "
"crédito."
-#: apps/treasury/models.py:399
+#: apps/treasury/models.py:451
#: 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:400
+#: apps/treasury/models.py:452
msgid "Credits from the Société générale"
msgstr "Créditos de la Société Générale"
-#: apps/treasury/models.py:403
+#: apps/treasury/models.py:455
#, python-brace-format
msgid "Soge credit for {user}"
msgstr "Crédito de la Société Générale para {user}"
@@ -2188,7 +2331,7 @@ msgstr "Factura n°{:d}"
#: apps/treasury/tables.py:25
#: apps/treasury/templates/treasury/invoice_list.html:13
#: apps/treasury/templates/treasury/remittance_list.html:13
-#: apps/treasury/templates/treasury/sogecredit_list.html:13
+#: apps/treasury/templates/treasury/sogecredit_list.html:14
msgid "Invoice"
msgstr "Factura"
@@ -2205,12 +2348,12 @@ msgid "Yes"
msgstr "Sí"
#: apps/treasury/templates/treasury/invoice_confirm_delete.html:10
-#: apps/treasury/views.py:179
+#: apps/treasury/views.py:180
msgid "Delete invoice"
msgstr "Suprimir la factura"
#: apps/treasury/templates/treasury/invoice_confirm_delete.html:15
-#: apps/treasury/views.py:183
+#: apps/treasury/views.py:184
msgid "This invoice is locked and can't be deleted."
msgstr "Esta factura esta bloqueada y no puede ser suprimida."
@@ -2243,7 +2386,7 @@ msgstr "Quitar un producto"
#: apps/treasury/templates/treasury/invoice_list.html:19
#: apps/treasury/templates/treasury/remittance_list.html:19
-#: apps/treasury/templates/treasury/sogecredit_list.html:19
+#: apps/treasury/templates/treasury/sogecredit_list.html:20
msgid "Société générale credits"
msgstr "Créditos de la Société Générale"
@@ -2353,7 +2496,7 @@ msgstr ""
"Por favor pide al usuario acreditar su note antes de suprimir este crédito."
#: apps/treasury/templates/treasury/sogecredit_detail.html:63
-#: apps/wei/tables.py:59 apps/wei/tables.py:101
+#: apps/wei/tables.py:60 apps/wei/tables.py:102
msgid "Validate"
msgstr "Validar"
@@ -2361,68 +2504,81 @@ msgstr "Validar"
msgid "Return to credit list"
msgstr "Regresar a la lista de los créditos"
-#: apps/treasury/templates/treasury/sogecredit_list.html:34
+#: apps/treasury/templates/treasury/sogecredit_list.html:40
msgid "Filter with unvalidated credits only"
msgstr "Filtrar con créditos invalidados unicamente"
-#: apps/treasury/templates/treasury/sogecredit_list.html:44
+#: apps/treasury/templates/treasury/sogecredit_list.html:50
msgid "There is no matched user that have asked for a Société générale credit."
msgstr ""
"No hay usuario encontrado cual pidió un crédito de la Société Générale."
-#: apps/treasury/views.py:39
+#: apps/treasury/templates/treasury/sogecredit_list.html:63
+msgid "Add credit from the Société générale"
+msgstr "Anãdir un crédito de la Société Générale"
+
+#: apps/treasury/templates/treasury/sogecredit_list.html:109
+msgid "Credit successfully registered"
+msgstr "Crédito creado con éxito"
+
+#: apps/treasury/views.py:40
msgid "Create new invoice"
msgstr "Crear una nueva factura"
-#: apps/treasury/views.py:96
+#: apps/treasury/views.py:97
msgid "Invoices list"
msgstr "Lista de las facturas"
-#: apps/treasury/views.py:111 apps/treasury/views.py:285
-#: apps/treasury/views.py:411
+#: apps/treasury/views.py:112 apps/treasury/views.py:286
+#: apps/treasury/views.py:412
msgid "You are not able to see the treasury interface."
msgstr "Usted no tiene derecho a ver la interfaz de tesorería."
-#: apps/treasury/views.py:121
+#: apps/treasury/views.py:122
msgid "Update an invoice"
msgstr "Modificar una factura"
-#: apps/treasury/views.py:246
+#: apps/treasury/views.py:247
msgid "Create a new remittance"
msgstr "Crear un nuevo descuento"
-#: apps/treasury/views.py:273
+#: apps/treasury/views.py:274
msgid "Remittances list"
msgstr "Lista de los descuentos"
-#: apps/treasury/views.py:336
+#: apps/treasury/views.py:337
msgid "Update a remittance"
msgstr "Modificar un descuento"
-#: apps/treasury/views.py:359
+#: apps/treasury/views.py:360
msgid "Attach a transaction to a remittance"
msgstr "Unir una transacción con un descuento"
-#: apps/treasury/views.py:403
+#: apps/treasury/views.py:404
msgid "List of credits from the Société générale"
msgstr "Lista de los créditos de la Société Générale"
-#: apps/treasury/views.py:443
+#: apps/treasury/views.py:449
msgid "Manage credits from the Société générale"
msgstr "Gestionar los créditos de la Société Générale"
-#: apps/wei/apps.py:10 apps/wei/models.py:49 apps/wei/models.py:50
-#: apps/wei/models.py:61 apps/wei/models.py:172
-#: note_kfet/templates/base.html:103
+#: apps/wei/apps.py:10 apps/wei/models.py:50 apps/wei/models.py:51
+#: apps/wei/models.py:62 apps/wei/models.py:180
+#: note_kfet/templates/base.html:102
msgid "WEI"
msgstr "WEI"
-#: apps/wei/forms/registration.py:51 apps/wei/models.py:118
-#: apps/wei/models.py:315
+#: apps/wei/forms/registration.py:35
+msgid "The selected user is not validated. Please validate its account first"
+msgstr ""
+"El usuario seleccionado no ha sido validado. Validar esta cuenta primero"
+
+#: apps/wei/forms/registration.py:59 apps/wei/models.py:126
+#: apps/wei/models.py:323
msgid "bus"
msgstr "bus"
-#: apps/wei/forms/registration.py:52
+#: apps/wei/forms/registration.py:60
msgid ""
"This choice is not definitive. The WEI organizers are free to attribute for "
"you a bus and a team, in particular if you are a free eletron."
@@ -2431,11 +2587,11 @@ msgstr ""
"derecho de imponer su bus y su equipo, en particular para los electrones "
"libres."
-#: apps/wei/forms/registration.py:59
+#: apps/wei/forms/registration.py:67
msgid "Team"
msgstr "Equipo"
-#: apps/wei/forms/registration.py:61
+#: apps/wei/forms/registration.py:69
msgid ""
"Leave this field empty if you won't be in a team (staff, bus chief, free "
"electron)"
@@ -2443,140 +2599,140 @@ msgstr ""
"Deje este campo vacío si no quiere estar en un equipo (staff, jefe de bus, "
"electrón libre)"
-#: apps/wei/forms/registration.py:67 apps/wei/forms/registration.py:77
-#: apps/wei/models.py:153
+#: apps/wei/forms/registration.py:75 apps/wei/forms/registration.py:85
+#: apps/wei/models.py:161
msgid "WEI Roles"
msgstr "Papeles en el WEI"
-#: apps/wei/forms/registration.py:68
+#: apps/wei/forms/registration.py:76
msgid "Select the roles that you are interested in."
msgstr "Elegir los papeles que le interesa."
-#: apps/wei/forms/registration.py:113
+#: apps/wei/forms/registration.py:122
msgid "This team doesn't belong to the given bus."
msgstr "Este equipo no pertenece al bus dado."
-#: apps/wei/forms/surveys/wei2021.py:31
+#: apps/wei/forms/surveys/wei2021.py:35 apps/wei/forms/surveys/wei2022.py:35
msgid "Choose a word:"
msgstr "Elegir una palabra :"
-#: apps/wei/models.py:24 apps/wei/templates/wei/base.html:36
+#: apps/wei/models.py:25 apps/wei/templates/wei/base.html:36
msgid "year"
msgstr "año"
-#: apps/wei/models.py:28 apps/wei/templates/wei/base.html:30
+#: apps/wei/models.py:29 apps/wei/templates/wei/base.html:30
msgid "date start"
msgstr "fecha de inicio"
-#: apps/wei/models.py:32 apps/wei/templates/wei/base.html:33
+#: apps/wei/models.py:33 apps/wei/templates/wei/base.html:33
msgid "date end"
msgstr "fecha de fin"
-#: apps/wei/models.py:70
-#, fuzzy
-#| msgid "The user joined the bus"
+#: apps/wei/models.py:71 apps/wei/tables.py:305
msgid "seat count in the bus"
-msgstr "El usuario se queda con el bus"
+msgstr "cantidad de asientos en el bus"
-#: apps/wei/models.py:82
+#: apps/wei/models.py:83
msgid "survey information"
msgstr "informaciones sobre el cuestionario"
-#: apps/wei/models.py:83
+#: apps/wei/models.py:84
msgid "Information about the survey for new members, encoded in JSON"
msgstr ""
"Informaciones sobre el cuestionario para los nuevos miembros, registrado en "
"JSON"
-#: apps/wei/models.py:105
+#: apps/wei/models.py:113
msgid "Bus"
msgstr "Bus"
-#: apps/wei/models.py:106 apps/wei/templates/wei/weiclub_detail.html:51
+#: apps/wei/models.py:114 apps/wei/templates/wei/weiclub_detail.html:51
msgid "Buses"
msgstr "Bus"
-#: apps/wei/models.py:127
+#: apps/wei/models.py:135
msgid "color"
msgstr "color"
-#: apps/wei/models.py:128
+#: apps/wei/models.py:136
msgid "The color of the T-Shirt, stored with its number equivalent"
msgstr "El color de la camiseta, registrado con su número equivalente"
-#: apps/wei/models.py:142
+#: apps/wei/models.py:150
msgid "Bus team"
msgstr "Equipo de bus"
-#: apps/wei/models.py:143
+#: apps/wei/models.py:151
msgid "Bus teams"
msgstr "Equipos de bus"
-#: apps/wei/models.py:152
+#: apps/wei/models.py:160
msgid "WEI Role"
msgstr "Papeles en el WEI"
-#: apps/wei/models.py:177
+#: apps/wei/models.py:185
msgid "Credit from Société générale"
msgstr "Crédito de la Société Générale"
-#: apps/wei/models.py:182
+#: apps/wei/models.py:190
msgid "Caution check given"
msgstr "Cheque de garantía dado"
-#: apps/wei/models.py:186 apps/wei/templates/wei/weimembership_form.html:64
+#: apps/wei/models.py:194 apps/wei/templates/wei/weimembership_form.html:64
msgid "birth date"
msgstr "fecha de nacimiento"
-#: apps/wei/models.py:192 apps/wei/models.py:202
+#: apps/wei/models.py:200 apps/wei/models.py:210
msgid "Male"
msgstr "Hombre"
-#: apps/wei/models.py:193 apps/wei/models.py:203
+#: apps/wei/models.py:201 apps/wei/models.py:211
msgid "Female"
msgstr "Mujer"
-#: apps/wei/models.py:194
+#: apps/wei/models.py:202
msgid "Non binary"
msgstr "No binari@"
-#: apps/wei/models.py:196 apps/wei/templates/wei/weimembership_form.html:55
+#: apps/wei/models.py:204 apps/wei/templates/wei/attribute_bus_1A.html:22
+#: apps/wei/templates/wei/weimembership_form.html:55
msgid "gender"
msgstr "género"
-#: apps/wei/models.py:205 apps/wei/templates/wei/weimembership_form.html:58
+#: apps/wei/models.py:213 apps/wei/templates/wei/weimembership_form.html:58
msgid "clothing cut"
msgstr "forma de ropa"
-#: apps/wei/models.py:218 apps/wei/templates/wei/weimembership_form.html:61
+#: apps/wei/models.py:226 apps/wei/templates/wei/weimembership_form.html:61
msgid "clothing size"
msgstr "medida de ropa"
-#: apps/wei/models.py:224 apps/wei/templates/wei/weimembership_form.html:67
+#: apps/wei/models.py:232 apps/wei/templates/wei/attribute_bus_1A.html:28
+#: apps/wei/templates/wei/weimembership_form.html:67
msgid "health issues"
msgstr "problemas de salud"
-#: apps/wei/models.py:229 apps/wei/templates/wei/weimembership_form.html:70
+#: apps/wei/models.py:237 apps/wei/templates/wei/weimembership_form.html:70
msgid "emergency contact name"
msgstr "nombre del contacto de emergencia"
-#: apps/wei/models.py:234 apps/wei/templates/wei/weimembership_form.html:73
+#: apps/wei/models.py:242 apps/wei/templates/wei/weimembership_form.html:73
msgid "emergency contact phone"
msgstr "teléfono del contacto de emergencia"
-#: apps/wei/models.py:239 apps/wei/templates/wei/weimembership_form.html:52
+#: apps/wei/models.py:247 apps/wei/templates/wei/weimembership_form.html:52
msgid "first year"
msgstr "primer año"
-#: apps/wei/models.py:240
+#: apps/wei/models.py:248
msgid "Tells if the user is new in the school."
msgstr "Indica si el usuario es nuevo en la escuela."
-#: apps/wei/models.py:245
+#: apps/wei/models.py:253
msgid "registration information"
msgstr "informaciones sobre la afiliación"
-#: apps/wei/models.py:246
+#: apps/wei/models.py:254
msgid ""
"Information about the registration (buses for old members, survey for the "
"new members), encoded in JSON"
@@ -2584,61 +2740,107 @@ msgstr ""
"Informaciones sobre la afiliacion (bus para miembros ancianos, cuestionario "
"para los nuevos miembros), registrado en JSON"
-#: apps/wei/models.py:304
+#: apps/wei/models.py:312
msgid "WEI User"
msgstr "Participante WEI"
-#: apps/wei/models.py:305
+#: apps/wei/models.py:313
msgid "WEI Users"
msgstr "Participantes WEI"
-#: apps/wei/models.py:325
+#: apps/wei/models.py:333
msgid "team"
msgstr "equipo"
-#: apps/wei/models.py:335
+#: apps/wei/models.py:343
msgid "WEI registration"
msgstr "Apuntación al WEI"
-#: apps/wei/models.py:339
+#: apps/wei/models.py:347
msgid "WEI membership"
msgstr "Afiliación al WEI"
-#: apps/wei/models.py:340
+#: apps/wei/models.py:348
msgid "WEI memberships"
msgstr "Afiliaciones al WEI"
-#: apps/wei/tables.py:104
+#: apps/wei/tables.py:105
msgid "The user does not have enough money."
-msgstr ""
+msgstr "El usuario no tiene suficientemente dinero."
-#: apps/wei/tables.py:107
-#, fuzzy
-#| msgid ""
-#| "The note has enough money (%(pretty_fee)s required), the registration is "
-#| "possible."
+#: apps/wei/tables.py:108
+msgid ""
+"The user is in first year. You may validate the credit, the algorithm will "
+"run later."
+msgstr ""
+"El usuario esta en primer año. Puede validar el crédito, el algoritmo se "
+"ejecutara más tarde."
+
+#: apps/wei/tables.py:111
msgid "The user has enough money, you can validate the registration."
-msgstr ""
-"La note tiene suficiente dinero (%(pretty_fee)s pedidos), la afiliación es "
-"posible."
+msgstr "La note tiene suficiente dinero, la afiliación es posible."
-#: apps/wei/tables.py:139
+#: apps/wei/tables.py:143
msgid "Year"
msgstr "Año"
-#: apps/wei/tables.py:177 apps/wei/templates/wei/bus_detail.html:32
+#: apps/wei/tables.py:180 apps/wei/templates/wei/weimembership_form.html:102
+msgid "preferred bus"
+msgstr "bus preferido"
+
+#: apps/wei/tables.py:210 apps/wei/templates/wei/bus_detail.html:32
#: apps/wei/templates/wei/busteam_detail.html:50
msgid "Teams"
msgstr "Equipos"
-#: apps/wei/tables.py:186 apps/wei/tables.py:227
+#: apps/wei/tables.py:219 apps/wei/tables.py:260
msgid "Members count"
msgstr "Número de miembros"
-#: apps/wei/tables.py:193 apps/wei/tables.py:224
+#: apps/wei/tables.py:226 apps/wei/tables.py:257
msgid "members"
msgstr "miembros"
+#: apps/wei/tables.py:287
+msgid "suggested first year"
+msgstr "primer año sugerido"
+
+#: apps/wei/tables.py:293
+msgid "validated first year"
+msgstr "primer año validado"
+
+#: apps/wei/tables.py:299
+msgid "validated staff"
+msgstr "staff validado"
+
+#: apps/wei/tables.py:310
+msgid "free seats"
+msgstr "asientos libres"
+
+#: apps/wei/templates/wei/1A_list.html:9
+msgid "Attribute first year members into buses"
+msgstr "Repartir los primer años en los buses"
+
+#: apps/wei/templates/wei/1A_list.html:15
+msgid "Start attribution!"
+msgstr "Empezar repartición !"
+
+#: apps/wei/templates/wei/attribute_bus_1A.html:8
+msgid "Bus attribution"
+msgstr "Repartición de los buses"
+
+#: apps/wei/templates/wei/attribute_bus_1A.html:31
+msgid "suggested bus"
+msgstr "bus sugerido"
+
+#: apps/wei/templates/wei/attribute_bus_1A.html:37
+msgid "View raw survey information"
+msgstr "Ver las informaciones crudas del cuestionario"
+
+#: apps/wei/templates/wei/attribute_bus_1A.html:57
+msgid "Back to main list"
+msgstr "Volver a la lista principal"
+
#: apps/wei/templates/wei/base.html:44
msgid "WEI fee (paid students)"
msgstr "Pago de entrada del WEI (estudiantes pagados)"
@@ -2655,11 +2857,11 @@ msgstr "Pago de entrada del WEI (estudiantes no pagados)"
msgid "WEI list"
msgstr "Lista de los WEI"
-#: apps/wei/templates/wei/base.html:81 apps/wei/views.py:510
+#: apps/wei/templates/wei/base.html:81 apps/wei/views.py:528
msgid "Register 1A"
msgstr "Apuntar un 1A"
-#: apps/wei/templates/wei/base.html:85 apps/wei/views.py:578
+#: apps/wei/templates/wei/base.html:85 apps/wei/views.py:614
msgid "Register 2A+"
msgstr "Apuntar un 2A+"
@@ -2688,8 +2890,8 @@ msgstr "Descargar un PDF"
#: apps/wei/templates/wei/survey.html:11
#: apps/wei/templates/wei/survey_closed.html:11
-#: apps/wei/templates/wei/survey_end.html:11 apps/wei/views.py:973
-#: apps/wei/views.py:1028 apps/wei/views.py:1038
+#: apps/wei/templates/wei/survey_end.html:11 apps/wei/views.py:1028
+#: apps/wei/views.py:1083 apps/wei/views.py:1093
msgid "Survey WEI"
msgstr "Cuestionario WEI"
@@ -2729,7 +2931,11 @@ msgstr "Miembros del WEI"
msgid "Unvalidated registrations"
msgstr "Inscripciones sin validación"
-#: apps/wei/templates/wei/weiclub_list.html:14 apps/wei/views.py:77
+#: apps/wei/templates/wei/weiclub_detail.html:99
+msgid "Attribute buses"
+msgstr "Repartición en los buses"
+
+#: apps/wei/templates/wei/weiclub_list.html:14 apps/wei/views.py:79
msgid "Create WEI"
msgstr "Crear un WEI"
@@ -2765,10 +2971,6 @@ msgstr "El algoritmo no funcionó."
msgid "caution check given"
msgstr "cheque de garantía dado"
-#: apps/wei/templates/wei/weimembership_form.html:102
-msgid "preferred bus"
-msgstr "bus preferido"
-
#: apps/wei/templates/wei/weimembership_form.html:105
msgid "preferred team"
msgstr "equipo preferido"
@@ -2870,109 +3072,117 @@ msgstr "No hay pre-inscripción encontrada con esta entrada."
msgid "View validated memberships..."
msgstr "Ver las inscripciones validadas..."
-#: apps/wei/views.py:56
+#: apps/wei/views.py:58
msgid "Search WEI"
msgstr "Buscar un WEI"
-#: apps/wei/views.py:107
+#: apps/wei/views.py:109
msgid "WEI Detail"
msgstr "Detalles del WEI"
-#: apps/wei/views.py:202
+#: apps/wei/views.py:208
msgid "View members of the WEI"
msgstr "Ver los miembros del WEI"
-#: apps/wei/views.py:230
+#: apps/wei/views.py:236
msgid "Find WEI Membership"
msgstr "Buscar una afiliación al WEI"
-#: apps/wei/views.py:240
+#: apps/wei/views.py:246
msgid "View registrations to the WEI"
msgstr "Ver las inscripciones al WEI"
-#: apps/wei/views.py:264
+#: apps/wei/views.py:270
msgid "Find WEI Registration"
msgstr "Buscar una inscripción al WEI"
-#: apps/wei/views.py:275
+#: apps/wei/views.py:281
msgid "Update the WEI"
msgstr "Modificar el WEI"
-#: apps/wei/views.py:296
+#: apps/wei/views.py:302
msgid "Create new bus"
msgstr "Añadir un bus"
-#: apps/wei/views.py:334
+#: apps/wei/views.py:340
msgid "Update bus"
msgstr "Modificar el bus"
-#: apps/wei/views.py:366
+#: apps/wei/views.py:372
msgid "Manage bus"
msgstr "Gestionar el bus"
-#: apps/wei/views.py:393
+#: apps/wei/views.py:399
msgid "Create new team"
msgstr "Añadir un equipo"
-#: apps/wei/views.py:433
+#: apps/wei/views.py:439
msgid "Update team"
msgstr "Modificar el equipo"
-#: apps/wei/views.py:464
+#: apps/wei/views.py:470
msgid "Manage WEI team"
msgstr "Gestionar el equipo"
-#: apps/wei/views.py:486
+#: apps/wei/views.py:492
msgid "Register first year student to the WEI"
msgstr "Registrar un 1A al WEI"
-#: apps/wei/views.py:532 apps/wei/views.py:613
+#: apps/wei/views.py:550 apps/wei/views.py:649
msgid "This user is already registered to this WEI."
msgstr "Este usuario ya afilió a este WEI."
-#: apps/wei/views.py:537
+#: apps/wei/views.py:555
msgid ""
"This user can't be in her/his first year since he/she has already "
"participated to a WEI."
msgstr "Este usuario no puede ser un 1A porque ya participó en un WEI."
-#: apps/wei/views.py:554
+#: apps/wei/views.py:578
msgid "Register old student to the WEI"
msgstr "Registrar un 2A+ al WEI"
-#: apps/wei/views.py:597 apps/wei/views.py:686
+#: apps/wei/views.py:633 apps/wei/views.py:721
msgid "You already opened an account in the Société générale."
msgstr "Usted ya abrió una cuenta a la Société Générale."
-#: apps/wei/views.py:643
+#: apps/wei/views.py:685
msgid "Update WEI Registration"
msgstr "Modificar la inscripción WEI"
-#: apps/wei/views.py:746
+#: apps/wei/views.py:795
msgid "Delete WEI registration"
msgstr "Suprimir la inscripción WEI"
-#: apps/wei/views.py:757
+#: apps/wei/views.py:806
msgid "You don't have the right to delete this WEI registration."
msgstr "Usted no tiene derecho a suprimir esta inscripción WEI."
-#: apps/wei/views.py:776
+#: apps/wei/views.py:824
msgid "Validate WEI registration"
msgstr "Validar la inscripción WEI"
-#: note_kfet/settings/base.py:161
+#: apps/wei/views.py:1186
+msgid "Attribute buses to first year members"
+msgstr "Repartir los primer años en los buses"
+
+#: apps/wei/views.py:1211
+msgid "Attribute bus"
+msgstr "Repartir en un bus"
+
+#: note_kfet/settings/base.py:172
msgid "German"
msgstr "Alemán"
-#: note_kfet/settings/base.py:162
+#: note_kfet/settings/base.py:173
msgid "English"
msgstr "Ingles"
-#: note_kfet/settings/base.py:163
+#: note_kfet/settings/base.py:174
msgid "Spanish"
msgstr "Español"
-#: note_kfet/settings/base.py:164
+#: note_kfet/settings/base.py:175
msgid "French"
msgstr "Francés"
@@ -3026,7 +3236,7 @@ msgstr ""
"electrónico con los detalles fue enviado a los responsables técnicos de la "
"página. Mientras usted puede relajarse."
-#: note_kfet/templates/autocomplete_model.html:14
+#: note_kfet/templates/autocomplete_model.html:15
msgid "Reset"
msgstr "Reiniciar"
@@ -3034,34 +3244,34 @@ msgstr "Reiniciar"
msgid "The ENS Paris-Saclay BDE note."
msgstr "La note del BDE de la ENS Paris-Saclay."
-#: note_kfet/templates/base.html:79
+#: note_kfet/templates/base.html:78
msgid "Users"
msgstr "Usuarios"
-#: note_kfet/templates/base.html:85
+#: note_kfet/templates/base.html:84
msgid "Clubs"
msgstr "Clubs"
-#: note_kfet/templates/base.html:114
+#: note_kfet/templates/base.html:113
msgid "Admin"
msgstr ""
-#: note_kfet/templates/base.html:128
+#: note_kfet/templates/base.html:127
msgid "My account"
msgstr "Mi cuenta"
-#: note_kfet/templates/base.html:131
+#: note_kfet/templates/base.html:130
msgid "Log out"
msgstr "Desconectarse"
-#: note_kfet/templates/base.html:139
+#: note_kfet/templates/base.html:138
#: note_kfet/templates/registration/signup.html:6
#: note_kfet/templates/registration/signup.html:11
#: note_kfet/templates/registration/signup.html:28
msgid "Sign up"
msgstr "Registrar"
-#: note_kfet/templates/base.html:146
+#: note_kfet/templates/base.html:145
#: note_kfet/templates/registration/login.html:6
#: note_kfet/templates/registration/login.html:15
#: note_kfet/templates/registration/login.html:38
@@ -3069,7 +3279,7 @@ msgstr "Registrar"
msgid "Log in"
msgstr "Conectarse"
-#: note_kfet/templates/base.html:160
+#: note_kfet/templates/base.html:159
msgid ""
"You are not a BDE member anymore. Please renew your membership if you want "
"to use the note."
@@ -3077,11 +3287,7 @@ msgstr ""
"Usted ya no está miembro del BDE. Por favor renueva su afiliación si quiere "
"usar la note."
-#: note_kfet/templates/base.html:164
-msgid "You are not a Kfet member, so you can't use your note account."
-msgstr "Usted no es un miembro de la Kfet, no puede usar su cuenta note."
-
-#: note_kfet/templates/base.html:170
+#: note_kfet/templates/base.html:165
msgid ""
"Your e-mail address is not validated. Please check your mail inbox and click "
"on the validation link."
@@ -3089,23 +3295,27 @@ 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:176
+#: 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."
+"membership and the WEI are 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 ""
"Usted declaró que abrió una cuenta bancaria a la Société Générale. El banco "
-"no convalidó la cuenta al BDE, así que el bonus de 80€ no fue dado y la "
-"afiliación no está pagada. El proceso de convalidación puede durar unos "
-"días. Por favor comprueba que fue hasta el final de la creación de la cuenta."
+"no convalidó la cuenta al BDE, así que la afiliación y el WEI no están "
+"pagados. El proceso de convalidación puede durar unos días. Por favor "
+"comprueba que fue hasta el final de la creación de la cuenta."
-#: note_kfet/templates/base.html:199
+#: note_kfet/templates/base.html:194
msgid "Contact us"
msgstr "Contactarnos"
+#: note_kfet/templates/base.html:196
+msgid "Technical Support"
+msgstr "Soporte técnico"
+
#: note_kfet/templates/base_search.html:15
msgid "Search by attribute such as name…"
msgstr "Buscar con atributo, como el nombre…"
@@ -3114,6 +3324,111 @@ msgstr "Buscar con atributo, como el nombre…"
msgid "There is no results."
msgstr "No hay resultado."
+#: note_kfet/templates/oauth2_provider/application_confirm_delete.html:8
+msgid "Are you sure to delete the application"
+msgstr ""
+"¿ Usted está seguro de querer suprimir esta aplicación ? Este acto es "
+"definitivo"
+
+#: note_kfet/templates/oauth2_provider/application_confirm_delete.html:17
+#: note_kfet/templates/oauth2_provider/authorize.html:28
+msgid "Cancel"
+msgstr "Anular"
+
+#: note_kfet/templates/oauth2_provider/application_detail.html:11
+msgid "Client id"
+msgstr "ID cliente"
+
+#: note_kfet/templates/oauth2_provider/application_detail.html:14
+msgid "Client secret"
+msgstr "Secreto cliente"
+
+#: note_kfet/templates/oauth2_provider/application_detail.html:17
+msgid "Client type"
+msgstr "Tipo de cliente"
+
+#: note_kfet/templates/oauth2_provider/application_detail.html:20
+msgid "Authorization Grant Type"
+msgstr "Tipo de autorización"
+
+#: note_kfet/templates/oauth2_provider/application_detail.html:23
+msgid "Redirect Uris"
+msgstr "URL de redirecto"
+
+#: note_kfet/templates/oauth2_provider/application_detail.html:29
+#, python-format
+msgid ""
+"You can go here to generate authorization "
+"link templates and convert permissions to scope numbers with the permissions "
+"that you want to grant for your application."
+msgstr ""
+
+#: note_kfet/templates/oauth2_provider/application_detail.html:37
+#: note_kfet/templates/oauth2_provider/application_form.html:23
+msgid "Go Back"
+msgstr "Volver"
+
+#: note_kfet/templates/oauth2_provider/application_form.html:12
+msgid "Edit application"
+msgstr "Editar la aplicación"
+
+#: note_kfet/templates/oauth2_provider/application_list.html:7
+msgid "Your applications"
+msgstr "Sus aplicaciones"
+
+#: note_kfet/templates/oauth2_provider/application_list.html:11
+msgid ""
+"You can find on this page the list of the applications that you already "
+"registered."
+msgstr ""
+"Puede encontrar en esta pagina la lista de la aplicaciones que ya registró."
+
+#: note_kfet/templates/oauth2_provider/application_list.html:30
+msgid "New Application"
+msgstr "Nueva aplicación"
+
+#: note_kfet/templates/oauth2_provider/application_list.html:31
+msgid "Authorized Tokens"
+msgstr "Tokens autorizados"
+
+#: note_kfet/templates/oauth2_provider/application_registration_form.html:5
+msgid "Register a new application"
+msgstr "Registrar una nueva aplicación"
+
+#: note_kfet/templates/oauth2_provider/authorize.html:9
+#: note_kfet/templates/oauth2_provider/authorize.html:29
+msgid "Authorize"
+msgstr "Autorizar"
+
+#: note_kfet/templates/oauth2_provider/authorize.html:14
+msgid "Application requires following permissions:"
+msgstr "La aplicación necesita los derechos siguientes :"
+
+#: note_kfet/templates/oauth2_provider/authorize.html:36
+#: note_kfet/templates/oauth2_provider/authorized-oob.html:15
+msgid "Error:"
+msgstr "Error :"
+
+#: note_kfet/templates/oauth2_provider/authorized-oob.html:13
+msgid "Success"
+msgstr "Éxito"
+
+#: note_kfet/templates/oauth2_provider/authorized-oob.html:21
+msgid "Please return to your application and enter this code:"
+msgstr "Volver a su aplicación y entrar este código :"
+
+#: note_kfet/templates/oauth2_provider/authorized-token-delete.html:9
+msgid "Are you sure you want to delete this token?"
+msgstr "¿ Usted está seguro de querer suprimir este token ?"
+
+#: note_kfet/templates/oauth2_provider/authorized-tokens.html:7
+msgid "Tokens"
+msgstr "Tokens"
+
+#: note_kfet/templates/oauth2_provider/authorized-tokens.html:22
+msgid "There are no authorized tokens yet."
+msgstr "Por ahora no hay ningún token autorizado."
+
#: 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."
@@ -3222,12 +3537,12 @@ msgstr ""
"pagar su afiliación. Tambien tiene que validar su correo electronico con el "
"enlace que recibió."
+#~ msgid "You are not a Kfet member, so you can't use your note account."
+#~ msgstr "Usted no es un miembro de la Kfet, no puede usar su cuenta note."
+
#~ msgid "This user didn't give her/his caution check."
#~ msgstr "Este usuario no dio su cheque de garantía."
-#~ msgid "Central Authentication Service"
-#~ msgstr "Servicio Central de Autentificación"
-
#~ msgid ""
#~ "A new version of the application is available. This instance runs "
#~ "%(VERSION)s and the last version is %(LAST_VERSION)s. Please consider "
diff --git a/locale/fr/LC_MESSAGES/django.po b/locale/fr/LC_MESSAGES/django.po
index 4ee77566..65fd6062 100644
--- a/locale/fr/LC_MESSAGES/django.po
+++ b/locale/fr/LC_MESSAGES/django.po
@@ -7,16 +7,16 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-10-07 22:55+0200\n"
-"PO-Revision-Date: 2020-11-16 20:02+0000\n"
-"Last-Translator: Yohann D'ANELLO \n"
+"POT-Creation-Date: 2022-04-10 22:34+0200\n"
+"PO-Revision-Date: 2022-04-11 22:05+0200\n"
+"Last-Translator: elkmaennchen \n"
"Language-Team: French \n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
-"X-Generator: Weblate 4.3.2\n"
+"X-Generator: Poedit 3.0\n"
#: apps/activity/apps.py:10 apps/activity/models.py:151
#: apps/activity/models.py:167
@@ -56,7 +56,7 @@ 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:231 apps/note/models/transactions.py:26
+#: apps/note/models/notes.py:263 apps/note/models/transactions.py:26
#: apps/note/models/transactions.py:46 apps/note/models/transactions.py:301
#: apps/permission/models.py:330
#: apps/registration/templates/registration/future_profile_detail.html:16
@@ -114,7 +114,7 @@ msgstr "Lieu où l'activité est organisée, par exemple la Kfet."
msgid "type"
msgstr "type"
-#: apps/activity/models.py:89 apps/logs/models.py:22 apps/member/models.py:305
+#: apps/activity/models.py:89 apps/logs/models.py:22 apps/member/models.py:307
#: apps/note/models/notes.py:148 apps/treasury/models.py:285
#: apps/wei/models.py:173 apps/wei/templates/wei/attribute_bus_1A.html:13
#: apps/wei/templates/wei/survey.html:15
@@ -295,7 +295,7 @@ msgstr "Invité supprimé"
#: apps/note/models/transactions.py:257
#: apps/note/templates/note/transaction_form.html:17
#: apps/note/templates/note/transaction_form.html:152
-#: note_kfet/templates/base.html:73
+#: note_kfet/templates/base.html:72
msgid "Transfer"
msgstr "Virement"
@@ -388,7 +388,7 @@ msgid "validate"
msgstr "valider"
#: apps/activity/templates/activity/includes/activity_info.html:71
-#: apps/logs/models.py:64 apps/note/tables.py:195
+#: apps/logs/models.py:64 apps/note/tables.py:220
msgid "edit"
msgstr "modifier"
@@ -400,7 +400,7 @@ msgstr "Inviter"
msgid "Create new activity"
msgstr "Créer une nouvelle activité"
-#: apps/activity/views.py:67 note_kfet/templates/base.html:91
+#: apps/activity/views.py:67 note_kfet/templates/base.html:90
msgid "Activities"
msgstr "Activités"
@@ -466,9 +466,9 @@ msgstr "nouvelles données"
msgid "create"
msgstr "créer"
-#: apps/logs/models.py:65 apps/note/tables.py:165 apps/note/tables.py:211
-#: apps/permission/models.py:127 apps/treasury/tables.py:38
-#: apps/wei/tables.py:74
+#: apps/logs/models.py:65 apps/note/tables.py:166 apps/note/tables.py:190
+#: apps/note/tables.py:237 apps/permission/models.py:127
+#: apps/treasury/tables.py:38 apps/wei/tables.py:74
msgid "delete"
msgstr "supprimer"
@@ -507,11 +507,11 @@ msgstr "cotisation pour adhérer (normalien élève)"
msgid "membership fee (unpaid students)"
msgstr "cotisation pour adhérer (normalien étudiant)"
-#: apps/member/admin.py:65 apps/member/models.py:317
+#: apps/member/admin.py:65 apps/member/models.py:319
msgid "roles"
msgstr "rôles"
-#: apps/member/admin.py:66 apps/member/models.py:331
+#: apps/member/admin.py:66 apps/member/models.py:333
msgid "fee"
msgstr "cotisation"
@@ -547,7 +547,7 @@ msgstr "Taille maximale : 2 Mo"
msgid "This image cannot be loaded."
msgstr "Cette image ne peut pas être chargée."
-#: apps/member/forms.py:141 apps/member/views.py:102
+#: apps/member/forms.py:141 apps/member/views.py:103
#: apps/registration/forms.py:33 apps/registration/views.py:262
msgid "An alias with a similar name already exists."
msgstr "Un alias avec un nom similaire existe déjà."
@@ -610,14 +610,14 @@ msgid "hash"
msgstr "haché"
#: apps/member/models.py:38
-#: apps/member/templates/member/includes/profile_info.html:35
+#: apps/member/templates/member/includes/profile_info.html:43
#: apps/registration/templates/registration/future_profile_detail.html:40
#: apps/wei/templates/wei/weimembership_form.html:44
msgid "phone number"
msgstr "numéro de téléphone"
#: apps/member/models.py:45
-#: apps/member/templates/member/includes/profile_info.html:29
+#: apps/member/templates/member/includes/profile_info.html:37
#: apps/registration/templates/registration/future_profile_detail.html:34
#: apps/wei/templates/wei/weimembership_form.html:38
msgid "section"
@@ -705,14 +705,14 @@ msgid "Year of entry to the school (None if not ENS student)"
msgstr "Année d'entrée dans l'école (None si non-étudiant·e de l'ENS)"
#: apps/member/models.py:83
-#: apps/member/templates/member/includes/profile_info.html:39
+#: apps/member/templates/member/includes/profile_info.html:47
#: apps/registration/templates/registration/future_profile_detail.html:37
#: apps/wei/templates/wei/weimembership_form.html:41
msgid "address"
msgstr "adresse"
#: apps/member/models.py:90
-#: apps/member/templates/member/includes/profile_info.html:42
+#: apps/member/templates/member/includes/profile_info.html:50
#: apps/registration/templates/registration/future_profile_detail.html:43
#: apps/wei/templates/wei/weimembership_form.html:47
msgid "paid"
@@ -784,7 +784,7 @@ msgstr "Activez votre compte Note Kfet"
#: apps/member/models.py:204
#: apps/member/templates/member/includes/club_info.html:55
-#: apps/member/templates/member/includes/profile_info.html:32
+#: apps/member/templates/member/includes/profile_info.html:40
#: apps/registration/templates/registration/future_profile_detail.html:22
#: apps/wei/templates/wei/base.html:70
#: apps/wei/templates/wei/weimembership_form.html:20
@@ -833,46 +833,46 @@ msgstr ""
"Date maximale d'une fin d'adhésion, après laquelle les adhérents doivent la "
"renouveler."
-#: apps/member/models.py:286 apps/member/models.py:311
+#: apps/member/models.py:288 apps/member/models.py:313
#: apps/note/models/notes.py:176
msgid "club"
msgstr "club"
-#: apps/member/models.py:287
+#: apps/member/models.py:289
msgid "clubs"
msgstr "clubs"
-#: apps/member/models.py:322
+#: apps/member/models.py:324
msgid "membership starts on"
msgstr "l'adhésion commence le"
-#: apps/member/models.py:326
+#: apps/member/models.py:328
msgid "membership ends on"
msgstr "l'adhésion finit le"
-#: apps/member/models.py:428
+#: apps/member/models.py:430
#, python-brace-format
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:437 apps/member/views.py:651
+#: apps/member/models.py:439 apps/member/views.py:712
msgid "User is already a member of the club"
msgstr "L'utilisateur est déjà membre du club"
-#: apps/member/models.py:449 apps/member/views.py:660
+#: apps/member/models.py:451 apps/member/views.py:721
msgid "User is not a member of the parent club"
msgstr "L'utilisateur n'est pas membre du club parent"
-#: apps/member/models.py:502
+#: apps/member/models.py:504
#, python-brace-format
msgid "Membership of {user} for the club {club}"
msgstr "Adhésion de {user} pour le club {club}"
-#: apps/member/models.py:505 apps/note/models/transactions.py:389
+#: apps/member/models.py:507 apps/note/models/transactions.py:389
msgid "membership"
msgstr "adhésion"
-#: apps/member/models.py:506
+#: apps/member/models.py:508
msgid "memberships"
msgstr "adhésions"
@@ -924,7 +924,7 @@ msgid "Account #"
msgstr "Compte n°"
#: apps/member/templates/member/base.html:48
-#: apps/member/templates/member/base.html:62 apps/member/views.py:59
+#: apps/member/templates/member/base.html:62 apps/member/views.py:60
#: apps/registration/templates/registration/future_profile_detail.html:48
#: apps/wei/templates/wei/weimembership_form.html:117
msgid "Update Profile"
@@ -985,13 +985,14 @@ msgstr ""
"seront à nouveau possible."
#: apps/member/templates/member/club_alias.html:10
-#: apps/member/templates/member/profile_alias.html:10 apps/member/views.py:253
-#: apps/member/views.py:456
+#: apps/member/templates/member/profile_alias.html:10 apps/member/views.py:287
+#: apps/member/views.py:517
msgid "Note aliases"
msgstr "Alias de la note"
#: apps/member/templates/member/club_alias.html:20
#: apps/member/templates/member/profile_alias.html:19
+#: apps/member/templates/member/profile_trust.html:19
#: apps/treasury/tables.py:99
#: apps/treasury/templates/treasury/sogecredit_list.html:34
#: apps/treasury/templates/treasury/sogecredit_list.html:73
@@ -1044,7 +1045,7 @@ msgid "membership fee"
msgstr "cotisation pour adhérer"
#: apps/member/templates/member/includes/club_info.html:43
-#: apps/member/templates/member/includes/profile_info.html:47
+#: apps/member/templates/member/includes/profile_info.html:55
#: apps/treasury/templates/treasury/sogecredit_detail.html:24
#: apps/wei/templates/wei/base.html:60
msgid "balance"
@@ -1052,7 +1053,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:255 apps/wei/templates/wei/base.html:66
+#: apps/note/models/notes.py:287 apps/wei/templates/wei/base.html:66
msgid "aliases"
msgstr "alias"
@@ -1076,7 +1077,16 @@ msgstr "mot de passe"
msgid "Change password"
msgstr "Changer le mot de passe"
-#: apps/member/templates/member/includes/profile_info.html:55
+#: apps/member/templates/member/includes/profile_info.html:28
+#: apps/note/models/notes.py:244
+msgid "friendships"
+msgstr "amitiés"
+
+#: apps/member/templates/member/includes/profile_info.html:32
+msgid "Manage friendships"
+msgstr "Gérer les amitiés"
+
+#: apps/member/templates/member/includes/profile_info.html:63
msgid "API token"
msgstr "Accès API"
@@ -1148,6 +1158,23 @@ msgstr "Cliquez ici pour renvoyer un lien de validation."
msgid "View my memberships"
msgstr "Voir mes adhésions"
+#: apps/member/templates/member/profile_trust.html:10 apps/member/views.py:254
+msgid "Note friendships"
+msgstr "Amitiés note"
+
+#: apps/member/templates/member/profile_trust.html:28
+msgid ""
+"Adding someone as a friend enables them to initiate transactions coming from "
+"your account (while keeping your balance positive). This is designed to "
+"simplify using note kfet transfers to transfer money between users. The "
+"intent is that one person can make all transfers for a group of friends "
+"without needing additional rights among them."
+msgstr ""
+"Ajouter quelqu'un⋅e en ami⋅e lui permet de me prélever de l'argent (tant que "
+"ma note reste positive). Ceci sert à simplifier les remboursements entre "
+"ami⋅es via note. En effet, une personne peut effectuer tous les transferts "
+"sans posséder de droits supplémentaires."
+
#: apps/member/templates/member/profile_update.html:18
msgid "Save Changes"
msgstr "Sauvegarder les changements"
@@ -1156,47 +1183,47 @@ msgstr "Sauvegarder les changements"
msgid "Registrations"
msgstr "Inscriptions"
-#: apps/member/views.py:72 apps/registration/forms.py:23
+#: apps/member/views.py:73 apps/registration/forms.py:23
msgid "This address must be valid."
msgstr "Cette adresse doit être valide."
-#: apps/member/views.py:139
+#: apps/member/views.py:140
msgid "Profile detail"
msgstr "Détails de l'utilisateur"
-#: apps/member/views.py:205
+#: apps/member/views.py:206
msgid "Search user"
msgstr "Chercher un utilisateur"
-#: apps/member/views.py:273
+#: apps/member/views.py:308
msgid "Update note picture"
msgstr "Modifier la photo de la note"
-#: apps/member/views.py:319
+#: apps/member/views.py:354
msgid "Manage auth token"
msgstr "Gérer les jetons d'authentification"
-#: apps/member/views.py:346
+#: apps/member/views.py:381
msgid "Create new club"
msgstr "Créer un nouveau club"
-#: apps/member/views.py:365
+#: apps/member/views.py:400
msgid "Search club"
msgstr "Chercher un club"
-#: apps/member/views.py:398
+#: apps/member/views.py:433
msgid "Club detail"
msgstr "Détails du club"
-#: apps/member/views.py:479
+#: apps/member/views.py:540
msgid "Update club"
msgstr "Modifier le club"
-#: apps/member/views.py:513
+#: apps/member/views.py:574
msgid "Add new member to the club"
msgstr "Ajouter un nouveau membre au club"
-#: apps/member/views.py:642 apps/wei/views.py:973
+#: apps/member/views.py:703 apps/wei/views.py:973
msgid ""
"This user don't have enough money to join this club, and can't have a "
"negative balance."
@@ -1204,19 +1231,19 @@ 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:664
+#: apps/member/views.py:725
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:669
+#: apps/member/views.py:730
msgid "The membership must begin before {:%m-%d-%Y}."
msgstr "L'adhésion doit commencer avant le {:%d/%m/%Y}."
-#: apps/member/views.py:815
+#: apps/member/views.py:876
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:840
+#: apps/member/views.py:901
msgid "Members of the club"
msgstr "Membres du club"
@@ -1234,7 +1261,7 @@ msgstr "destination"
msgid "amount"
msgstr "montant"
-#: apps/note/api/serializers.py:183 apps/note/api/serializers.py:189
+#: apps/note/api/serializers.py:199 apps/note/api/serializers.py:205
#: apps/note/models/transactions.py:228
msgid ""
"The transaction can't be saved since the source note or the destination note "
@@ -1366,30 +1393,47 @@ msgstr "note spéciale"
msgid "special notes"
msgstr "notes spéciales"
-#: apps/note/models/notes.py:237
+#: apps/note/models/notes.py:232
+msgid "trusting"
+msgstr "note"
+
+#: apps/note/models/notes.py:239
+msgid "trusted"
+msgstr "ami"
+
+#: apps/note/models/notes.py:243
+msgid "frienship"
+msgstr "amitié"
+
+#: apps/note/models/notes.py:248
+#, python-brace-format
+msgid "Friendship between {trusting} and {trusted}"
+msgstr "Amitié entre {trusting} et {trusted}"
+
+#: apps/note/models/notes.py:269
msgid "Invalid alias"
msgstr "Alias invalide"
-#: apps/note/models/notes.py:254
+#: apps/note/models/notes.py:286
msgid "alias"
msgstr "alias"
-#: apps/note/models/notes.py:278
+#: apps/note/models/notes.py:310
msgid "Alias is too long."
msgstr "L'alias est trop long."
-#: apps/note/models/notes.py:281
+#: apps/note/models/notes.py:313
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:285
+#: apps/note/models/notes.py:317
msgid "An alias with a similar name already exists: {} "
msgstr "Un alias avec un nom similaire existe déjà : {} "
-#: apps/note/models/notes.py:299
+#: apps/note/models/notes.py:331
msgid "You can't delete your main alias."
msgstr "Vous ne pouvez pas supprimer votre alias principal."
@@ -1535,7 +1579,8 @@ msgstr "Cliquez pour valider"
msgid "No reason specified"
msgstr "Pas de motif spécifié"
-#: apps/note/tables.py:169 apps/note/tables.py:213 apps/treasury/tables.py:39
+#: apps/note/tables.py:173 apps/note/tables.py:194 apps/note/tables.py:239
+#: apps/treasury/tables.py:39
#: apps/treasury/templates/treasury/invoice_confirm_delete.html:30
#: apps/treasury/templates/treasury/sogecredit_detail.html:65
#: apps/wei/tables.py:75 apps/wei/tables.py:118
@@ -1546,7 +1591,7 @@ msgstr "Pas de motif spécifié"
msgid "Delete"
msgstr "Supprimer"
-#: apps/note/tables.py:197 apps/note/templates/note/conso_form.html:132
+#: apps/note/tables.py:222 apps/note/templates/note/conso_form.html:132
#: apps/wei/tables.py:49 apps/wei/tables.py:50
#: apps/wei/templates/wei/base.html:89
#: apps/wei/templates/wei/bus_detail.html:20
@@ -1556,7 +1601,7 @@ msgstr "Supprimer"
msgid "Edit"
msgstr "Éditer"
-#: apps/note/tables.py:201 apps/note/tables.py:224
+#: apps/note/tables.py:226 apps/note/tables.py:253
msgid "Hide/Show"
msgstr "Afficher/Masquer"
@@ -1717,7 +1762,7 @@ msgstr "Chercher un bouton"
msgid "Update button"
msgstr "Modifier le bouton"
-#: apps/note/views.py:151 note_kfet/templates/base.html:67
+#: apps/note/views.py:151 note_kfet/templates/base.html:66
msgid "Consumptions"
msgstr "Consommations"
@@ -1915,7 +1960,7 @@ msgstr ""
"Vous n'avez pas la permission d'ajouter une instance du modèle « {model} » "
"avec ces paramètres. Merci de les corriger et de réessayer."
-#: apps/permission/views.py:112 note_kfet/templates/base.html:109
+#: apps/permission/views.py:112 note_kfet/templates/base.html:108
msgid "Rights"
msgstr "Droits"
@@ -2122,7 +2167,7 @@ msgstr ""
msgid "Invalidate pre-registration"
msgstr "Invalider l'inscription"
-#: apps/treasury/apps.py:12 note_kfet/templates/base.html:97
+#: apps/treasury/apps.py:12 note_kfet/templates/base.html:96
msgid "Treasury"
msgstr "Trésorerie"
@@ -2530,7 +2575,7 @@ msgstr "Gérer les crédits de la Société générale"
#: apps/wei/apps.py:10 apps/wei/models.py:50 apps/wei/models.py:51
#: apps/wei/models.py:62 apps/wei/models.py:180
-#: note_kfet/templates/base.html:103
+#: note_kfet/templates/base.html:102
msgid "WEI"
msgstr "WEI"
@@ -2538,7 +2583,7 @@ msgstr "WEI"
msgid "The selected user is not validated. Please validate its account first"
msgstr ""
"L'utilisateur sélectionné n'est pas validé. Merci de d'abord valider son "
-"compte."
+"compte"
#: apps/wei/forms/registration.py:59 apps/wei/models.py:126
#: apps/wei/models.py:323
@@ -2579,7 +2624,7 @@ msgstr "Sélectionnez les rôles qui vous intéressent."
msgid "This team doesn't belong to the given bus."
msgstr "Cette équipe n'appartient pas à ce bus."
-#: apps/wei/forms/surveys/wei2021.py:35
+#: apps/wei/forms/surveys/wei2021.py:35 apps/wei/forms/surveys/wei2022.py:35
msgid "Choose a word:"
msgstr "Choisissez un mot :"
@@ -3140,19 +3185,19 @@ msgstr "Répartir les 1A dans les bus"
msgid "Attribute bus"
msgstr "Attribuer un bus"
-#: note_kfet/settings/base.py:161
+#: note_kfet/settings/base.py:172
msgid "German"
msgstr "Allemand"
-#: note_kfet/settings/base.py:162
+#: note_kfet/settings/base.py:173
msgid "English"
msgstr "Anglais"
-#: note_kfet/settings/base.py:163
+#: note_kfet/settings/base.py:174
msgid "Spanish"
msgstr "Espagnol"
-#: note_kfet/settings/base.py:164
+#: note_kfet/settings/base.py:175
msgid "French"
msgstr "Français"
@@ -3209,7 +3254,7 @@ msgstr ""
"erreur, qui sera corrigée rapidement. Vous pouvez désormais aller boire une "
"bière."
-#: note_kfet/templates/autocomplete_model.html:14
+#: note_kfet/templates/autocomplete_model.html:15
msgid "Reset"
msgstr "Réinitialiser"
@@ -3217,34 +3262,34 @@ msgstr "Réinitialiser"
msgid "The ENS Paris-Saclay BDE note."
msgstr "La note du BDE de l'ENS Paris-Saclay."
-#: note_kfet/templates/base.html:79
+#: note_kfet/templates/base.html:78
msgid "Users"
msgstr "Utilisateurs"
-#: note_kfet/templates/base.html:85
+#: note_kfet/templates/base.html:84
msgid "Clubs"
msgstr "Clubs"
-#: note_kfet/templates/base.html:114
+#: note_kfet/templates/base.html:113
msgid "Admin"
msgstr "Admin"
-#: note_kfet/templates/base.html:128
+#: note_kfet/templates/base.html:127
msgid "My account"
msgstr "Mon compte"
-#: note_kfet/templates/base.html:131
+#: note_kfet/templates/base.html:130
msgid "Log out"
msgstr "Se déconnecter"
-#: note_kfet/templates/base.html:139
+#: note_kfet/templates/base.html:138
#: note_kfet/templates/registration/signup.html:6
#: note_kfet/templates/registration/signup.html:11
#: note_kfet/templates/registration/signup.html:28
msgid "Sign up"
msgstr "Inscription"
-#: note_kfet/templates/base.html:146
+#: note_kfet/templates/base.html:145
#: note_kfet/templates/registration/login.html:6
#: note_kfet/templates/registration/login.html:15
#: note_kfet/templates/registration/login.html:38
@@ -3252,7 +3297,7 @@ msgstr "Inscription"
msgid "Log in"
msgstr "Se connecter"
-#: note_kfet/templates/base.html:160
+#: note_kfet/templates/base.html:159
msgid ""
"You are not a BDE member anymore. Please renew your membership if you want "
"to use the note."
@@ -3260,7 +3305,7 @@ 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:166
+#: note_kfet/templates/base.html:165
msgid ""
"Your e-mail address is not validated. Please check your mail inbox and click "
"on the validation link."
@@ -3268,7 +3313,7 @@ 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 "
@@ -3282,11 +3327,11 @@ msgstr ""
"vérification peut durer quelques jours. Merci de vous assurer de bien aller "
"au bout de vos démarches."
-#: note_kfet/templates/base.html:195
+#: note_kfet/templates/base.html:194
msgid "Contact us"
msgstr "Nous contacter"
-#: note_kfet/templates/base.html:197
+#: note_kfet/templates/base.html:196
msgid "Technical Support"
msgstr "Support technique"
diff --git a/note_kfet/static/js/autocomplete_model.js b/note_kfet/static/js/autocomplete_model.js
index f7aafbc6..2a2677d4 100644
--- a/note_kfet/static/js/autocomplete_model.js
+++ b/note_kfet/static/js/autocomplete_model.js
@@ -13,21 +13,29 @@ $(document).ready(function () {
$('#' + prefix + '_reset').removeClass('d-none')
$.getJSON(api_url + (api_url.includes('?') ? '&' : '?') + 'format=json&search=^' + input + api_url_suffix, function (objects) {
- let html = ''
+ let html = ''
objects.results.forEach(function (obj) {
html += li(prefix + '_' + obj.id, obj[name_field])
})
+ html += '
'
- const results_list = $('#' + prefix + '_list')
- results_list.html(html)
+ target.tooltip({
+ html: true,
+ placement: 'bottom',
+ trigger: 'manual',
+ container: target.parent(),
+ fallbackPlacement: 'clockwise'
+ })
+
+ target.attr("data-original-title", html).tooltip("show")
objects.results.forEach(function (obj) {
$('#' + prefix + '_' + obj.id).click(function () {
target.val(obj[name_field])
$('#' + prefix + '_pk').val(obj.id)
- results_list.html('')
+ target.tooltip("hide")
target.removeClass('is-invalid')
target.addClass('is-valid')
@@ -37,8 +45,8 @@ $(document).ready(function () {
if (input === obj[name_field]) { $('#' + prefix + '_pk').val(obj.id) }
})
- if (results_list.children().length === 1 && e.originalEvent.keyCode >= 32) {
- results_list.children().first().trigger('click')
+ if (objects.results.length === 1 && e.originalEvent.keyCode >= 32) {
+ $('#' + prefix + '_' + objects.results[0].id).trigger('click')
}
})
})
diff --git a/note_kfet/templates/autocomplete_model.html b/note_kfet/templates/autocomplete_model.html
index 0e5d17cd..20c8041e 100644
--- a/note_kfet/templates/autocomplete_model.html
+++ b/note_kfet/templates/autocomplete_model.html
@@ -9,9 +9,9 @@ SPDX-License-Identifier: GPL-3.0-or-later
name="{{ widget.name }}_name" autocomplete="off"
{% for name, value in widget.attrs.items %}
{% ifnotequal value False %}{{ name }}{% ifnotequal value True %}="{{ value|stringformat:'s' }}"{% endifnotequal %}{% endifnotequal %}
- {% endfor %}>
+ {% endfor %}
+ aria-describedby="{{widget.attrs.id}}_tooltip">
{% if widget.resetable %}
{% trans "Reset" %}
{% endif %}
-
+