Merge branch 'better-friendship-view' into 'main'

Rework of the friendships page

See merge request bde/nk20!220
This commit is contained in:
nicomarg 2023-09-21 15:48:00 +02:00
commit 4ee02345d4
17 changed files with 434 additions and 235 deletions

View File

@ -1,7 +1,7 @@
/** /**
* On form submit, create a new friendship * On form submit, create a new friendship
*/ */
function create_trust (e) { function form_create_trust (e) {
// Do not submit HTML form // Do not submit HTML form
e.preventDefault() e.preventDefault()
@ -14,25 +14,35 @@ function create_trust (e) {
addMsg(gettext("You can't add yourself as a friend"), "danger") addMsg(gettext("You can't add yourself as a friend"), "danger")
return return
} }
$.post('/api/note/trust/', { create_trust(formData.get('trusting'), trusted_alias.note)
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) { }).fail(function (xhr, _textStatus, _error) {
errMsg(xhr.responseJSON) errMsg(xhr.responseJSON)
}) })
} }
/** /**
* On click of "delete", delete the alias * Create a trust between users
* @param button_id:Integer Alias id to remove * @param trusting:Integer trusting note id
* @param trusted:Integer trusted note id
*/
function create_trust(trusting, trusted) {
$.post('/api/note/trust/', {
trusting: trusting,
trusted: trusted,
csrfmiddlewaretoken: CSRF_TOKEN
}).done(function () {
// Reload tables
$('#trust_table').load(location.pathname + ' #trust_table')
$('#trusted_table').load(location.pathname + ' #trusted_table')
addMsg(gettext('Friendship successfully added'), 'success')
}).fail(function (xhr, _textStatus, _error) {
errMsg(xhr.responseJSON)
})
}
/**
* On click of "delete", delete the trust
* @param button_id:Integer Trust id to remove
*/ */
function delete_button (button_id) { function delete_button (button_id) {
$.ajax({ $.ajax({
@ -42,6 +52,7 @@ function delete_button (button_id) {
}).done(function () { }).done(function () {
addMsg(gettext('Friendship successfully deleted'), 'success') addMsg(gettext('Friendship successfully deleted'), 'success')
$('#trust_table').load(location.pathname + ' #trust_table') $('#trust_table').load(location.pathname + ' #trust_table')
$('#trusted_table').load(location.pathname + ' #trusted_table')
}).fail(function (xhr, _textStatus, _error) { }).fail(function (xhr, _textStatus, _error) {
errMsg(xhr.responseJSON) errMsg(xhr.responseJSON)
}) })
@ -49,5 +60,5 @@ function delete_button (button_id) {
$(document).ready(function () { $(document).ready(function () {
// Attach event // Attach event
document.getElementById('form_trust').addEventListener('submit', create_trust) document.getElementById('form_trust').addEventListener('submit', form_create_trust)
}) })

View File

@ -7,7 +7,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
{% block profile_content %} {% block profile_content %}
<div class="card bg-light mb-3"> <div class="card bg-light mb-3">
<h3 class="card-header text-center"> <h3 class="card-header text-center">
{% trans "Note friendships" %} {% trans "Add friends" %}
</h3> </h3>
<div class="card-body"> <div class="card-body">
{% if can_create %} {% if can_create %}
@ -24,7 +24,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
{% render_table trusting %} {% render_table trusting %}
</div> </div>
<div class="alert alert-warning card"> <div class="alert alert-warning card mb-3">
{% blocktrans trimmed %} {% blocktrans trimmed %}
Adding someone as a friend enables them to initiate transactions coming Adding someone as a friend enables them to initiate transactions coming
from your account (while keeping your balance positive). This is from your account (while keeping your balance positive). This is
@ -33,6 +33,13 @@ SPDX-License-Identifier: GPL-3.0-or-later
friends without needing additional rights among them. friends without needing additional rights among them.
{% endblocktrans %} {% endblocktrans %}
</div> </div>
<div class="card bg-light mb-3">
<h3 class="card-header text-center">
{% trans "People having you as a friend" %}
</h3>
{% render_table trusted_by %}
</div>
{% endblock %} {% endblock %}
{% block extrajavascript %} {% block extrajavascript %}

View File

@ -8,7 +8,6 @@ from django.contrib.auth import logout
from django.contrib.auth.mixins import LoginRequiredMixin from django.contrib.auth.mixins import LoginRequiredMixin
from django.contrib.auth.models import User from django.contrib.auth.models import User
from django.contrib.auth.views import LoginView from django.contrib.auth.views import LoginView
from django.contrib.contenttypes.models import ContentType
from django.db import transaction from django.db import transaction
from django.db.models import Q, F from django.db.models import Q, F
from django.shortcuts import redirect from django.shortcuts import redirect
@ -21,7 +20,7 @@ from django_tables2.views import SingleTableView
from rest_framework.authtoken.models import Token from rest_framework.authtoken.models import Token
from note.models import Alias, NoteClub, NoteUser, Trust from note.models import Alias, NoteClub, NoteUser, Trust
from note.models.transactions import Transaction, SpecialTransaction from note.models.transactions import Transaction, SpecialTransaction
from note.tables import HistoryTable, AliasTable, TrustTable from note.tables import HistoryTable, AliasTable, TrustTable, TrustedTable
from note_kfet.middlewares import _set_current_request from note_kfet.middlewares import _set_current_request
from permission.backends import PermissionBackend from permission.backends import PermissionBackend
from permission.models import Role from permission.models import Role
@ -258,17 +257,18 @@ class ProfileTrustView(ProtectQuerysetMixin, LoginRequiredMixin, DetailView):
note = context['object'].note note = context['object'].note
context["trusting"] = TrustTable( context["trusting"] = TrustTable(
note.trusting.filter(PermissionBackend.filter_queryset(self.request, Trust, "view")).distinct().all()) note.trusting.filter(PermissionBackend.filter_queryset(self.request, Trust, "view")).distinct().all())
context["trusted_by"] = TrustedTable(
note.trusted.filter(PermissionBackend.filter_queryset(self.request, Trust, "view")).distinct().all())
context["can_create"] = PermissionBackend.check_perm(self.request, "note.add_trust", Trust( context["can_create"] = PermissionBackend.check_perm(self.request, "note.add_trust", Trust(
trusting=context["object"].note, trusting=context["object"].note,
trusted=context["object"].note trusted=context["object"].note
)) ))
context["widget"] = { context["widget"] = {
"name": "trusted", "name": "trusted",
"resetable": True,
"attrs": { "attrs": {
"model_pk": ContentType.objects.get_for_model(Alias).pk,
"class": "autocomplete form-control", "class": "autocomplete form-control",
"id": "trusted", "id": "trusted",
"resetable": True,
"api_url": "/api/note/alias/?note__polymorphic_ctype__model=noteuser", "api_url": "/api/note/alias/?note__polymorphic_ctype__model=noteuser",
"name_field": "name", "name_field": "name",
"placeholder": "" "placeholder": ""

View File

@ -7,7 +7,7 @@ from polymorphic.admin import PolymorphicChildModelAdmin, \
PolymorphicChildModelFilter, PolymorphicParentModelAdmin PolymorphicChildModelFilter, PolymorphicParentModelAdmin
from note_kfet.admin import admin_site from note_kfet.admin import admin_site
from .models.notes import Alias, Note, NoteClub, NoteSpecial, NoteUser from .models.notes import Alias, Note, NoteClub, NoteSpecial, NoteUser, Trust
from .models.transactions import Transaction, TemplateCategory, TransactionTemplate, \ from .models.transactions import Transaction, TemplateCategory, TransactionTemplate, \
RecurrentTransaction, MembershipTransaction, SpecialTransaction RecurrentTransaction, MembershipTransaction, SpecialTransaction
from .templatetags.pretty_money import pretty_money from .templatetags.pretty_money import pretty_money
@ -21,6 +21,16 @@ class AliasInlines(admin.TabularInline):
model = Alias model = Alias
class TrustInlines(admin.TabularInline):
"""
Define trusts when editing the trusting note
"""
model = Trust
fk_name = "trusting"
extra = 0
readonly_fields = ("trusted",)
@admin.register(Note, site=admin_site) @admin.register(Note, site=admin_site)
class NoteAdmin(PolymorphicParentModelAdmin): class NoteAdmin(PolymorphicParentModelAdmin):
""" """
@ -92,7 +102,7 @@ class NoteUserAdmin(PolymorphicChildModelAdmin):
""" """
Child for an user note, see NoteAdmin Child for an user note, see NoteAdmin
""" """
inlines = (AliasInlines,) inlines = (AliasInlines, TrustInlines)
# We can't change user after creation or the balance # We can't change user after creation or the balance
readonly_fields = ('user', 'balance') readonly_fields = ('user', 'balance')

View File

@ -11,6 +11,7 @@ from member.models import Membership
from note_kfet.middlewares import get_current_request from note_kfet.middlewares import get_current_request
from permission.backends import PermissionBackend from permission.backends import PermissionBackend
from rest_framework.utils import model_meta from rest_framework.utils import model_meta
from rest_framework.validators import UniqueTogetherValidator
from ..models.notes import Note, NoteClub, NoteSpecial, NoteUser, Alias, Trust from ..models.notes import Note, NoteClub, NoteSpecial, NoteUser, Alias, Trust
from ..models.transactions import TransactionTemplate, Transaction, MembershipTransaction, TemplateCategory, \ from ..models.transactions import TransactionTemplate, Transaction, MembershipTransaction, TemplateCategory, \
@ -86,11 +87,9 @@ class TrustSerializer(serializers.ModelSerializer):
class Meta: class Meta:
model = Trust model = Trust
fields = '__all__' fields = '__all__'
validators = [UniqueTogetherValidator(
def validate(self, attrs): queryset=Trust.objects.all(), fields=('trusting', 'trusted'),
instance = Trust(**attrs) message=_("This friendship already exists"))]
instance.clean()
return attrs
class AliasSerializer(serializers.ModelSerializer): class AliasSerializer(serializers.ModelSerializer):

View File

@ -159,11 +159,11 @@ class TrustTable(tables.Table):
template_name = 'django_tables2/bootstrap4.html' template_name = 'django_tables2/bootstrap4.html'
show_header = False show_header = False
trusted = tables.Column(attrs={'td': {'class': 'text_center'}}) trusted = tables.Column(attrs={'td': {'class': 'text-center'}})
delete_col = tables.TemplateColumn( delete_col = tables.TemplateColumn(
template_code=DELETE_TEMPLATE, template_code=DELETE_TEMPLATE,
extra_context={"delete_trans": _('delete')}, extra_context={"delete_trans": _('Delete')},
attrs={ attrs={
'td': { 'td': {
'class': lambda record: 'col-sm-1' 'class': lambda record: 'col-sm-1'
@ -173,6 +173,46 @@ class TrustTable(tables.Table):
verbose_name=_("Delete"),) verbose_name=_("Delete"),)
class TrustedTable(tables.Table):
class Meta:
attrs = {
'class': 'table table condensed table-striped',
'id': 'trusted_table'
}
Model = Trust
fields = ("trusting",)
template_name = "django_tables2/bootstrap4.html"
show_header = False
trusting = tables.Column(attrs={
'td': {'class': 'text-center', 'width': '100%'}})
trust_back = tables.Column(
verbose_name=_("Trust back"),
accessor="pk",
attrs={
'td': {
'class': '',
'id': lambda record: "trust_back_" + str(record.pk),
}
},
)
def render_trust_back(self, record):
user_note = record.trusted
trusting_note = record.trusting
if Trust.objects.filter(trusted=trusting_note, trusting=user_note):
return ""
val = '<button id="'
val += str(record.pk)
val += '" class="btn btn-success btn-sm text-nowrap" \
onclick="create_trust(' + str(record.trusted.pk) + ',' + \
str(record.trusting.pk) + ')">'
val += str(_("Add back"))
val += '</button>'
return mark_safe(val)
class AliasTable(tables.Table): class AliasTable(tables.Table):
class Meta: class Meta:
attrs = { attrs = {

View File

@ -3094,6 +3094,22 @@
"permanent": false, "permanent": false,
"description": "Créer un crédit quelconque" "description": "Créer un crédit quelconque"
} }
},
{
"model": "permission.permission",
"pk": 198,
"fields": {
"model": [
"note",
"trust"
],
"query": "{\"trusted__noteuser__user\": [\"user\"]}",
"type": "view",
"mask": 1,
"field": "",
"permanent": true,
"description": "Voir ceux nous ayant pour ami, pour toujours"
}
}, },
{ {
"model": "permission.role", "model": "permission.role",
@ -3135,7 +3151,8 @@
190, 190,
191, 191,
195, 195,
196 196,
198
] ]
} }
}, },

View File

@ -2,7 +2,7 @@
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
import random import random
from datetime import date from datetime import date, timedelta
from django.contrib.auth.models import User from django.contrib.auth.models import User
from django.test import TestCase from django.test import TestCase
@ -40,10 +40,10 @@ class TestWEIAlgorithm(TestCase):
parent_club_id=2, parent_club_id=2,
membership_fee_paid=12500, membership_fee_paid=12500,
membership_fee_unpaid=5500, membership_fee_unpaid=5500,
membership_start='2023-08-26', membership_start='2023-01-01',
membership_end='2023-09-15', membership_end='2023-12-31',
date_start='2023-09-16', date_start=date.today() + timedelta(days=2),
date_end='2023-09-18', date_end='2023-12-31',
year=2023, year=2023,
) )

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: \n" "Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-08-31 13:25+0200\n" "POT-Creation-Date: 2023-09-18 17:27+0200\n"
"PO-Revision-Date: 2020-11-16 20:02+0000\n" "PO-Revision-Date: 2020-11-16 20:02+0000\n"
"Last-Translator: bleizi <bleizi@crans.org>\n" "Last-Translator: bleizi <bleizi@crans.org>\n"
"Language-Team: German <http://translate.ynerant.fr/projects/nk20/nk20/de/>\n" "Language-Team: German <http://translate.ynerant.fr/projects/nk20/nk20/de/>\n"
@ -263,14 +263,14 @@ msgid "Type"
msgstr "Type" msgstr "Type"
#: apps/activity/tables.py:84 apps/member/forms.py:193 #: apps/activity/tables.py:84 apps/member/forms.py:193
#: apps/registration/forms.py:93 apps/treasury/forms.py:131 #: apps/registration/forms.py:92 apps/treasury/forms.py:131
#: apps/wei/forms/registration.py:104 #: apps/wei/forms/registration.py:104
msgid "Last name" msgid "Last name"
msgstr "Nachname" msgstr "Nachname"
#: apps/activity/tables.py:86 apps/member/forms.py:198 #: apps/activity/tables.py:86 apps/member/forms.py:198
#: apps/note/templates/note/transaction_form.html:138 #: apps/note/templates/note/transaction_form.html:138
#: apps/registration/forms.py:98 apps/treasury/forms.py:133 #: apps/registration/forms.py:97 apps/treasury/forms.py:133
#: apps/wei/forms/registration.py:109 #: apps/wei/forms/registration.py:109
msgid "First name" msgid "First name"
msgstr "Vorname" msgstr "Vorname"
@ -391,7 +391,7 @@ msgid "validate"
msgstr "" msgstr ""
#: apps/activity/templates/activity/includes/activity_info.html:71 #: apps/activity/templates/activity/includes/activity_info.html:71
#: apps/logs/models.py:64 apps/note/tables.py:220 #: apps/logs/models.py:64 apps/note/tables.py:260
msgid "edit" msgid "edit"
msgstr "bearbeiten" msgstr "bearbeiten"
@ -467,9 +467,9 @@ msgstr "neue Daten"
msgid "create" msgid "create"
msgstr "schaffen" msgstr "schaffen"
#: apps/logs/models.py:65 apps/note/tables.py:166 apps/note/tables.py:190 #: apps/logs/models.py:65 apps/note/tables.py:230 apps/note/tables.py:277
#: apps/note/tables.py:237 apps/permission/models.py:127 #: apps/permission/models.py:127 apps/treasury/tables.py:38
#: apps/treasury/tables.py:38 apps/wei/tables.py:74 #: apps/wei/tables.py:74
msgid "delete" msgid "delete"
msgstr "entfernen" msgstr "entfernen"
@ -536,7 +536,8 @@ msgstr "Letzen Bericht Datum"
msgid "" msgid ""
"Anti-VSS (<em>Violences Sexistes et Sexuelles</em>) charter read and approved" "Anti-VSS (<em>Violences Sexistes et Sexuelles</em>) charter read and approved"
msgstr "" msgstr ""
"Anti-VSS (<em>Violences Sexistes et Sexuelles</em>) Charta gelesen und angenommen" "Anti-VSS (<em>Violences Sexistes et Sexuelles</em>) Charta gelesen und "
"angenommen"
#: apps/member/forms.py:53 #: apps/member/forms.py:53
msgid "" msgid ""
@ -544,9 +545,9 @@ msgid ""
"href=https://perso.crans.org/club-bde/Charte-anti-VSS.pdf target=_blank> " "href=https://perso.crans.org/club-bde/Charte-anti-VSS.pdf target=_blank> "
"available here in pdf</a>" "available here in pdf</a>"
msgstr "" msgstr ""
"Kreuzen Sie an, nachdem Sie die Anti-VSS-Charta gelesen und akzeptiert haben, <a " "Kreuzen Sie an, nachdem Sie die Anti-VSS-Charta gelesen und akzeptiert "
"href=https://perso.crans.org/club-bde/Charte-anti-VSS.pdf target=_blank> " "haben, <a href=https://perso.crans.org/club-bde/Charte-anti-VSS.pdf "
"die hier als pdf-Datei verfügbar ist</a>" "target=_blank> die hier als pdf-Datei verfügbar ist</a>"
#: apps/member/forms.py:60 #: apps/member/forms.py:60
msgid "You can't register to the note if you come from the future." msgid "You can't register to the note if you come from the future."
@ -564,8 +565,8 @@ msgstr "Maximal Größe: 2MB"
msgid "This image cannot be loaded." msgid "This image cannot be loaded."
msgstr "Dieses Bild kann nicht geladen werden." msgstr "Dieses Bild kann nicht geladen werden."
#: apps/member/forms.py:148 apps/member/views.py:103 #: apps/member/forms.py:148 apps/member/views.py:102
#: apps/registration/forms.py:35 apps/registration/views.py:266 #: apps/registration/forms.py:34 apps/registration/views.py:266
msgid "An alias with a similar name already exists." msgid "An alias with a similar name already exists."
msgstr "Ein ähnliches Alias ist schon benutzt." msgstr "Ein ähnliches Alias ist schon benutzt."
@ -577,12 +578,12 @@ msgstr "Mitgliedschaft von der Société Générale bezahlt"
msgid "Check this case if the Société Générale paid the inscription." msgid "Check this case if the Société Générale paid the inscription."
msgstr "Die Société Générale die Mitgliedschaft bezahlt." msgstr "Die Société Générale die Mitgliedschaft bezahlt."
#: apps/member/forms.py:179 apps/registration/forms.py:80 #: apps/member/forms.py:179 apps/registration/forms.py:79
#: apps/wei/forms/registration.py:91 #: apps/wei/forms/registration.py:91
msgid "Credit type" msgid "Credit type"
msgstr "Kredittype" msgstr "Kredittype"
#: apps/member/forms.py:180 apps/registration/forms.py:81 #: apps/member/forms.py:180 apps/registration/forms.py:80
#: apps/wei/forms/registration.py:92 #: apps/wei/forms/registration.py:92
msgid "No credit" msgid "No credit"
msgstr "Kein Kredit" msgstr "Kein Kredit"
@ -591,13 +592,13 @@ msgstr "Kein Kredit"
msgid "You can credit the note of the user." msgid "You can credit the note of the user."
msgstr "Sie dûrfen diese Note kreditieren." msgstr "Sie dûrfen diese Note kreditieren."
#: apps/member/forms.py:186 apps/registration/forms.py:86 #: apps/member/forms.py:186 apps/registration/forms.py:85
#: apps/wei/forms/registration.py:97 #: apps/wei/forms/registration.py:97
msgid "Credit amount" msgid "Credit amount"
msgstr "Kreditanzahl" msgstr "Kreditanzahl"
#: apps/member/forms.py:203 apps/note/templates/note/transaction_form.html:144 #: apps/member/forms.py:203 apps/note/templates/note/transaction_form.html:144
#: apps/registration/forms.py:103 apps/treasury/forms.py:135 #: apps/registration/forms.py:102 apps/treasury/forms.py:135
#: apps/wei/forms/registration.py:114 #: apps/wei/forms/registration.py:114
msgid "Bank" msgid "Bank"
msgstr "Bank" msgstr "Bank"
@ -950,7 +951,7 @@ msgid "Account #"
msgstr "Konto #" msgstr "Konto #"
#: apps/member/templates/member/base.html:48 #: apps/member/templates/member/base.html:48
#: apps/member/templates/member/base.html:62 apps/member/views.py:60 #: apps/member/templates/member/base.html:62 apps/member/views.py:59
#: apps/registration/templates/registration/future_profile_detail.html:48 #: apps/registration/templates/registration/future_profile_detail.html:48
#: apps/wei/templates/wei/weimembership_form.html:117 #: apps/wei/templates/wei/weimembership_form.html:117
msgid "Update Profile" msgid "Update Profile"
@ -1192,8 +1193,8 @@ msgstr "Click hier um eine Bestätigunglinke zu schicken."
msgid "View my memberships" msgid "View my memberships"
msgstr "Meine Mitgliedschaften schauen" msgstr "Meine Mitgliedschaften schauen"
#: apps/member/templates/member/profile_trust.html:10 apps/member/views.py:254 #: apps/member/templates/member/profile_trust.html:10
msgid "Note friendships" msgid "Add friends"
msgstr "" msgstr ""
#: apps/member/templates/member/profile_trust.html:28 #: apps/member/templates/member/profile_trust.html:28
@ -1205,6 +1206,10 @@ msgid ""
"without needing additional rights among them." "without needing additional rights among them."
msgstr "" msgstr ""
#: apps/member/templates/member/profile_trust.html:39
msgid "People having you as a friend"
msgstr ""
#: apps/member/templates/member/profile_update.html:18 #: apps/member/templates/member/profile_update.html:18
msgid "Save Changes" msgid "Save Changes"
msgstr "Speichern" msgstr "Speichern"
@ -1213,18 +1218,22 @@ msgstr "Speichern"
msgid "Registrations" msgid "Registrations"
msgstr "Anmeldung" msgstr "Anmeldung"
#: apps/member/views.py:73 apps/registration/forms.py:24 #: apps/member/views.py:72 apps/registration/forms.py:24
msgid "This address must be valid." msgid "This address must be valid."
msgstr "Diese Adresse muss gültig sein." msgstr "Diese Adresse muss gültig sein."
#: apps/member/views.py:140 #: apps/member/views.py:139
msgid "Profile detail" msgid "Profile detail"
msgstr "Profile detail" msgstr "Profile detail"
#: apps/member/views.py:206 #: apps/member/views.py:205
msgid "Search user" msgid "Search user"
msgstr "User finden" msgstr "User finden"
#: apps/member/views.py:253
msgid "Note friendships"
msgstr ""
#: apps/member/views.py:308 #: apps/member/views.py:308
msgid "Update note picture" msgid "Update note picture"
msgstr "Notebild ändern" msgstr "Notebild ändern"
@ -1291,7 +1300,13 @@ msgstr "Empfänger"
msgid "amount" msgid "amount"
msgstr "Anzahl" msgstr "Anzahl"
#: apps/note/api/serializers.py:199 apps/note/api/serializers.py:205 #: apps/note/api/serializers.py:92
#, fuzzy
#| msgid "This credit is already validated."
msgid "This friendship already exists"
msgstr "Dieser Kredit ist bereits validiert."
#: apps/note/api/serializers.py:198 apps/note/api/serializers.py:204
#: apps/note/models/transactions.py:228 #: apps/note/models/transactions.py:228
msgid "" msgid ""
"The transaction can't be saved since the source note or the destination note " "The transaction can't be saved since the source note or the destination note "
@ -1606,8 +1621,8 @@ msgstr "Klicken Sie zum gültigmachen"
msgid "No reason specified" msgid "No reason specified"
msgstr "Kein Grund gegeben" msgstr "Kein Grund gegeben"
#: apps/note/tables.py:173 apps/note/tables.py:194 apps/note/tables.py:239 #: apps/note/tables.py:166 apps/note/tables.py:173 apps/note/tables.py:234
#: apps/treasury/tables.py:39 #: apps/note/tables.py:279 apps/treasury/tables.py:39
#: apps/treasury/templates/treasury/invoice_confirm_delete.html:30 #: apps/treasury/templates/treasury/invoice_confirm_delete.html:30
#: apps/treasury/templates/treasury/sogecredit_detail.html:65 #: apps/treasury/templates/treasury/sogecredit_detail.html:65
#: apps/wei/tables.py:75 apps/wei/tables.py:118 #: apps/wei/tables.py:75 apps/wei/tables.py:118
@ -1618,7 +1633,17 @@ msgstr "Kein Grund gegeben"
msgid "Delete" msgid "Delete"
msgstr "Löschen" msgstr "Löschen"
#: apps/note/tables.py:222 apps/note/templates/note/conso_form.html:132 #: apps/note/tables.py:191
msgid "Trust back"
msgstr ""
#: apps/note/tables.py:211
#, fuzzy
#| msgid "Add bus"
msgid "Add back"
msgstr "Neue Bus"
#: apps/note/tables.py:262 apps/note/templates/note/conso_form.html:132
#: apps/wei/tables.py:49 apps/wei/tables.py:50 #: apps/wei/tables.py:49 apps/wei/tables.py:50
#: apps/wei/templates/wei/base.html:89 #: apps/wei/templates/wei/base.html:89
#: apps/wei/templates/wei/bus_detail.html:20 #: apps/wei/templates/wei/bus_detail.html:20
@ -1628,7 +1653,7 @@ msgstr "Löschen"
msgid "Edit" msgid "Edit"
msgstr "Bearbeiten" msgstr "Bearbeiten"
#: apps/note/tables.py:226 apps/note/tables.py:253 #: apps/note/tables.py:266 apps/note/tables.py:293
msgid "Hide/Show" msgid "Hide/Show"
msgstr "" msgstr ""
@ -2002,15 +2027,15 @@ msgstr "Alle Rechten"
msgid "registration" msgid "registration"
msgstr "Anmeldung" msgstr "Anmeldung"
#: apps/registration/forms.py:41 #: apps/registration/forms.py:40
msgid "This email address is already used." msgid "This email address is already used."
msgstr "Diese email adresse ist schon benutzt." msgstr "Diese email adresse ist schon benutzt."
#: apps/registration/forms.py:61 #: apps/registration/forms.py:60
msgid "Register to the WEI" msgid "Register to the WEI"
msgstr "Zu WEI anmelden" msgstr "Zu WEI anmelden"
#: apps/registration/forms.py:63 #: apps/registration/forms.py:62
msgid "" msgid ""
"Check this case if you want to register to the WEI. If you hesitate, you " "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." "will be able to register later, after validating your account in the Kfet."
@ -2019,15 +2044,15 @@ msgstr ""
"falls Zweifel, können Sie sich später nach Bestätigung Ihres Kontos im Kfet " "falls Zweifel, können Sie sich später nach Bestätigung Ihres Kontos im Kfet "
"registrieren." "registrieren."
#: apps/registration/forms.py:108 #: apps/registration/forms.py:107
msgid "Join BDE Club" msgid "Join BDE Club"
msgstr "BDE Mitglieder werden" msgstr "BDE Mitglieder werden"
#: apps/registration/forms.py:115 #: apps/registration/forms.py:114
msgid "Join Kfet Club" msgid "Join Kfet Club"
msgstr "Kfet Mitglieder werden" msgstr "Kfet Mitglieder werden"
#: apps/registration/forms.py:124 #: apps/registration/forms.py:123
msgid "Join BDA Club" msgid "Join BDA Club"
msgstr "BDA Mitglieder werden" msgstr "BDA Mitglieder werden"
@ -2651,7 +2676,6 @@ msgid "This team doesn't belong to the given bus."
msgstr "Dieses Team gehört nicht zum angegebenen Bus." msgstr "Dieses Team gehört nicht zum angegebenen Bus."
#: apps/wei/forms/surveys/wei2021.py:35 apps/wei/forms/surveys/wei2022.py:38 #: apps/wei/forms/surveys/wei2021.py:35 apps/wei/forms/surveys/wei2022.py:38
#: apps/wei/forms/surveys/wei2023.py:38
msgid "Choose a word:" msgid "Choose a word:"
msgstr "Wählen Sie ein Wort:" msgstr "Wählen Sie ein Wort:"
@ -2952,7 +2976,7 @@ msgstr "Als PDF schauen"
#: apps/wei/templates/wei/survey.html:11 #: apps/wei/templates/wei/survey.html:11
#: apps/wei/templates/wei/survey_closed.html:11 #: apps/wei/templates/wei/survey_closed.html:11
#: apps/wei/templates/wei/survey_end.html:11 apps/wei/views.py:1028 #: apps/wei/templates/wei/survey_end.html:11 apps/wei/views.py:1028
#: apps/wei/views.py:1083 apps/wei/views.py:1093 #: apps/wei/views.py:1083 apps/wei/views.py:1130
msgid "Survey WEI" msgid "Survey WEI"
msgstr "WEI Umfrage" msgstr "WEI Umfrage"
@ -3230,11 +3254,11 @@ msgstr "Sie haben nicht das Recht, diese WEI-Registrierung zu löschen."
msgid "Validate WEI registration" msgid "Validate WEI registration"
msgstr "Überprüfen Sie die WEI-Registrierung" msgstr "Überprüfen Sie die WEI-Registrierung"
#: apps/wei/views.py:1186 #: apps/wei/views.py:1223
msgid "Attribute buses to first year members" msgid "Attribute buses to first year members"
msgstr "" msgstr ""
#: apps/wei/views.py:1211 #: apps/wei/views.py:1248
msgid "Attribute bus" msgid "Attribute bus"
msgstr "" msgstr ""

View File

@ -7,11 +7,11 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-11-15 23:21+0100\n" "POT-Creation-Date: 2022-10-07 09:07+0200\n"
"PO-Revision-Date: 2020-11-16 20:21+0000\n" "PO-Revision-Date: 2020-11-16 20:21+0000\n"
"Last-Translator: Yohann D'ANELLO <ynerant@crans.org>\n" "Last-Translator: Yohann D'ANELLO <ynerant@crans.org>\n"
"Language-Team: German <http://translate.ynerant.fr/projects/nk20/nk20-js/de/>" "Language-Team: German <http://translate.ynerant.fr/projects/nk20/nk20-js/de/"
"\n" ">\n"
"Language: de\n" "Language: de\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
@ -27,6 +27,22 @@ msgstr "Alias erfolgreich hinzugefügt"
msgid "Alias successfully deleted" msgid "Alias successfully deleted"
msgstr "Alias erfolgreich gelöscht" msgstr "Alias erfolgreich gelöscht"
#: apps/member/static/member/js/trust.js:14
msgid "You can't add yourself as a friend"
msgstr ""
#: apps/member/static/member/js/trust.js:37
#, fuzzy
#| msgid "Alias successfully added"
msgid "Friendship successfully added"
msgstr "Alias erfolgreich hinzugefügt"
#: apps/member/static/member/js/trust.js:53
#, fuzzy
#| msgid "Alias successfully deleted"
msgid "Friendship successfully deleted"
msgstr "Alias erfolgreich gelöscht"
#: apps/note/static/note/js/consos.js:225 #: apps/note/static/note/js/consos.js:225
#, javascript-format #, javascript-format
msgid "" msgid ""
@ -46,32 +62,32 @@ msgstr ""
"ist negativ." "ist negativ."
#: apps/note/static/note/js/consos.js:232 #: apps/note/static/note/js/consos.js:232
#: apps/note/static/note/js/transfer.js:298 #: apps/note/static/note/js/transfer.js:309
#: apps/note/static/note/js/transfer.js:401 #: apps/note/static/note/js/transfer.js:412
#, javascript-format #, javascript-format
msgid "Warning, the emitter note %s is no more a BDE member." msgid "Warning, the emitter note %s is no more a BDE member."
msgstr "Warnung, der Emittent Hinweis %s ist kein BDE-Mitglied mehr." msgstr "Warnung, der Emittent Hinweis %s ist kein BDE-Mitglied mehr."
#: apps/note/static/note/js/consos.js:253 #: apps/note/static/note/js/consos.js:254
msgid "The transaction couldn't be validated because of insufficient balance." msgid "The transaction couldn't be validated because of insufficient balance."
msgstr "" msgstr ""
"Die Transaktion konnte aufgrund eines unzureichenden Saldos nicht validiert " "Die Transaktion konnte aufgrund eines unzureichenden Saldos nicht validiert "
"werden." "werden."
#: apps/note/static/note/js/transfer.js:238 #: apps/note/static/note/js/transfer.js:249
msgid "This field is required and must contain a decimal positive number." msgid "This field is required and must contain a decimal positive number."
msgstr "" msgstr ""
"Dieses Feld ist erforderlich und muss eine positive Dezimalzahl enthalten." "Dieses Feld ist erforderlich und muss eine positive Dezimalzahl enthalten."
#: apps/note/static/note/js/transfer.js:245 #: apps/note/static/note/js/transfer.js:256
msgid "The amount must stay under 21,474,836.47 €." msgid "The amount must stay under 21,474,836.47 €."
msgstr "Der Betrag muss unter 21.474.836,47 € bleiben." msgstr "Der Betrag muss unter 21.474.836,47 € bleiben."
#: apps/note/static/note/js/transfer.js:251 #: apps/note/static/note/js/transfer.js:262
msgid "This field is required." msgid "This field is required."
msgstr "Dies ist ein Pflichtfeld." msgstr "Dies ist ein Pflichtfeld."
#: apps/note/static/note/js/transfer.js:277 #: apps/note/static/note/js/transfer.js:288
#, javascript-format #, javascript-format
msgid "" msgid ""
"Warning: the transaction of %s from %s to %s was not made because it is the " "Warning: the transaction of %s from %s to %s was not made because it is the "
@ -80,12 +96,12 @@ msgstr ""
"Warnung: Die Transaktion von %s von %s nach %s wurde nicht durchgeführt, da " "Warnung: Die Transaktion von %s von %s nach %s wurde nicht durchgeführt, da "
"es sich um die gleiche Quell- und Zielnotiz handelt." "es sich um die gleiche Quell- und Zielnotiz handelt."
#: apps/note/static/note/js/transfer.js:301 #: apps/note/static/note/js/transfer.js:312
#, javascript-format #, javascript-format
msgid "Warning, the destination note %s is no more a BDE member." msgid "Warning, the destination note %s is no more a BDE member."
msgstr "Warnung, der Bestimmungsvermerk %s ist kein BDE-Mitglied mehr." msgstr "Warnung, der Bestimmungsvermerk %s ist kein BDE-Mitglied mehr."
#: apps/note/static/note/js/transfer.js:307 #: apps/note/static/note/js/transfer.js:318
#, javascript-format #, javascript-format
msgid "" msgid ""
"Warning, the transaction of %s from the note %s to the note %s succeed, but " "Warning, the transaction of %s from the note %s to the note %s succeed, but "
@ -94,7 +110,7 @@ msgstr ""
"Warnung, die Transaktion von %s von der Note %s zur Note %s gelingt, aber " "Warnung, die Transaktion von %s von der Note %s zur Note %s gelingt, aber "
"die Emitternote %s ist sehr negativ." "die Emitternote %s ist sehr negativ."
#: apps/note/static/note/js/transfer.js:312 #: apps/note/static/note/js/transfer.js:323
#, javascript-format #, javascript-format
msgid "" msgid ""
"Warning, the transaction of %s from the note %s to the note %s succeed, but " "Warning, the transaction of %s from the note %s to the note %s succeed, but "
@ -103,31 +119,32 @@ msgstr ""
"Warnung, die Transaktion von %s von der Note %s zur Note %s gelingt, aber " "Warnung, die Transaktion von %s von der Note %s zur Note %s gelingt, aber "
"die Emitternote %s ist negativ." "die Emitternote %s ist negativ."
#: apps/note/static/note/js/transfer.js:318 #: apps/note/static/note/js/transfer.js:329
#, javascript-format #, javascript-format
msgid "Transfer of %s from %s to %s succeed!" msgid "Transfer of %s from %s to %s succeed!"
msgstr "Übertragung von %s von %s auf %s gelingt!" msgstr "Übertragung von %s von %s auf %s gelingt!"
#: apps/note/static/note/js/transfer.js:325 #: apps/note/static/note/js/transfer.js:336
#: apps/note/static/note/js/transfer.js:346 #: apps/note/static/note/js/transfer.js:357
#: apps/note/static/note/js/transfer.js:353 #: apps/note/static/note/js/transfer.js:364
#, javascript-format #, javascript-format
msgid "Transfer of %s from %s to %s failed: %s" msgid "Transfer of %s from %s to %s failed: %s"
msgstr "Übertragung von %s von %s auf %s fehlgeschlagen: %s" msgstr "Übertragung von %s von %s auf %s fehlgeschlagen: %s"
#: apps/note/static/note/js/transfer.js:347 #: apps/note/static/note/js/transfer.js:358
msgid "insufficient funds" msgid "insufficient funds"
msgstr "unzureichende Geldmittel" msgstr "unzureichende Geldmittel"
#: apps/note/static/note/js/transfer.js:400 #: apps/note/static/note/js/transfer.js:411
msgid "Credit/debit succeed!" msgid "Credit/debit succeed!"
msgstr "Kredit/Debit erfolgreich!" msgstr "Kredit/Debit erfolgreich!"
#: apps/note/static/note/js/transfer.js:407 #: apps/note/static/note/js/transfer.js:418
#, javascript-format #, javascript-format
msgid "Credit/debit failed: %s" msgid "Credit/debit failed: %s"
msgstr "Kredit/Debit fehlgeschlagen: %s" msgstr "Kredit/Debit fehlgeschlagen: %s"
#: note_kfet/static/js/base.js:366 #: note_kfet/static/js/base.js:370
msgid "An error occured while (in)validating this transaction:" msgid "An error occured while (in)validating this transaction:"
msgstr "Bei der (Un-)Validierung dieser Transaktion ist ein Fehler aufgetreten:" msgstr ""
"Bei der (Un-)Validierung dieser Transaktion ist ein Fehler aufgetreten:"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: \n" "Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-08-31 13:25+0200\n" "POT-Creation-Date: 2023-09-18 17:27+0200\n"
"PO-Revision-Date: 2022-04-11 23:12+0200\n" "PO-Revision-Date: 2022-04-11 23:12+0200\n"
"Last-Translator: bleizi <bleizi@crans.org>\n" "Last-Translator: bleizi <bleizi@crans.org>\n"
"Language-Team: \n" "Language-Team: \n"
@ -16,7 +16,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 3.0\n" "X-Generator: Poedit 3.0.1\n"
#: apps/activity/apps.py:10 apps/activity/models.py:151 #: apps/activity/apps.py:10 apps/activity/models.py:151
#: apps/activity/models.py:167 #: apps/activity/models.py:167
@ -262,14 +262,14 @@ msgid "Type"
msgstr "Tipo" msgstr "Tipo"
#: apps/activity/tables.py:84 apps/member/forms.py:193 #: apps/activity/tables.py:84 apps/member/forms.py:193
#: apps/registration/forms.py:93 apps/treasury/forms.py:131 #: apps/registration/forms.py:92 apps/treasury/forms.py:131
#: apps/wei/forms/registration.py:104 #: apps/wei/forms/registration.py:104
msgid "Last name" msgid "Last name"
msgstr "Apellido" msgstr "Apellido"
#: apps/activity/tables.py:86 apps/member/forms.py:198 #: apps/activity/tables.py:86 apps/member/forms.py:198
#: apps/note/templates/note/transaction_form.html:138 #: apps/note/templates/note/transaction_form.html:138
#: apps/registration/forms.py:98 apps/treasury/forms.py:133 #: apps/registration/forms.py:97 apps/treasury/forms.py:133
#: apps/wei/forms/registration.py:109 #: apps/wei/forms/registration.py:109
msgid "First name" msgid "First name"
msgstr "Nombre" msgstr "Nombre"
@ -386,7 +386,7 @@ msgid "validate"
msgstr "validar" msgstr "validar"
#: apps/activity/templates/activity/includes/activity_info.html:71 #: apps/activity/templates/activity/includes/activity_info.html:71
#: apps/logs/models.py:64 apps/note/tables.py:220 #: apps/logs/models.py:64 apps/note/tables.py:260
msgid "edit" msgid "edit"
msgstr "modificar" msgstr "modificar"
@ -464,9 +464,9 @@ msgstr "nuevos datos"
msgid "create" msgid "create"
msgstr "crear" msgstr "crear"
#: apps/logs/models.py:65 apps/note/tables.py:166 apps/note/tables.py:190 #: apps/logs/models.py:65 apps/note/tables.py:230 apps/note/tables.py:277
#: apps/note/tables.py:237 apps/permission/models.py:127 #: apps/permission/models.py:127 apps/treasury/tables.py:38
#: apps/treasury/tables.py:38 apps/wei/tables.py:74 #: apps/wei/tables.py:74
msgid "delete" msgid "delete"
msgstr "suprimir" msgstr "suprimir"
@ -541,9 +541,9 @@ msgid ""
"href=https://perso.crans.org/club-bde/Charte-anti-VSS.pdf target=_blank> " "href=https://perso.crans.org/club-bde/Charte-anti-VSS.pdf target=_blank> "
"available here in pdf</a>" "available here in pdf</a>"
msgstr "" msgstr ""
"Marque después de leer y aceptar la carta anti-VVS <a " "Marque después de leer y aceptar la carta anti-VVS <a href=https://"
"href=https://perso.crans.org/club-bde/Charte-anti-VSS.pdf target=_blank> " "perso.crans.org/club-bde/Charte-anti-VSS.pdf target=_blank> disponible en "
"disponible en pdf aquí</a>" "pdf aquí</a>"
#: apps/member/forms.py:60 #: apps/member/forms.py:60
msgid "You can't register to the note if you come from the future." msgid "You can't register to the note if you come from the future."
@ -561,8 +561,8 @@ msgstr "Tamaño máximo : 2Mo"
msgid "This image cannot be loaded." msgid "This image cannot be loaded."
msgstr "Esta imagen no puede ser cargada." msgstr "Esta imagen no puede ser cargada."
#: apps/member/forms.py:148 apps/member/views.py:103 #: apps/member/forms.py:148 apps/member/views.py:102
#: apps/registration/forms.py:35 apps/registration/views.py:266 #: apps/registration/forms.py:34 apps/registration/views.py:266
msgid "An alias with a similar name already exists." msgid "An alias with a similar name already exists."
msgstr "Un alias similar ya existe." msgstr "Un alias similar ya existe."
@ -574,12 +574,12 @@ msgstr "Registración pagadas por Société Générale"
msgid "Check this case if the Société Générale paid the inscription." 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." msgstr "Marcar esta casilla si Société Générale pagó la registración."
#: apps/member/forms.py:179 apps/registration/forms.py:80 #: apps/member/forms.py:179 apps/registration/forms.py:79
#: apps/wei/forms/registration.py:91 #: apps/wei/forms/registration.py:91
msgid "Credit type" msgid "Credit type"
msgstr "Tipo de crédito" msgstr "Tipo de crédito"
#: apps/member/forms.py:180 apps/registration/forms.py:81 #: apps/member/forms.py:180 apps/registration/forms.py:80
#: apps/wei/forms/registration.py:92 #: apps/wei/forms/registration.py:92
msgid "No credit" msgid "No credit"
msgstr "No crédito" msgstr "No crédito"
@ -588,13 +588,13 @@ msgstr "No crédito"
msgid "You can credit the note of the user." msgid "You can credit the note of the user."
msgstr "Usted puede acreditar la note del usuario." msgstr "Usted puede acreditar la note del usuario."
#: apps/member/forms.py:186 apps/registration/forms.py:86 #: apps/member/forms.py:186 apps/registration/forms.py:85
#: apps/wei/forms/registration.py:97 #: apps/wei/forms/registration.py:97
msgid "Credit amount" msgid "Credit amount"
msgstr "Valor del crédito" msgstr "Valor del crédito"
#: apps/member/forms.py:203 apps/note/templates/note/transaction_form.html:144 #: apps/member/forms.py:203 apps/note/templates/note/transaction_form.html:144
#: apps/registration/forms.py:103 apps/treasury/forms.py:135 #: apps/registration/forms.py:102 apps/treasury/forms.py:135
#: apps/wei/forms/registration.py:114 #: apps/wei/forms/registration.py:114
msgid "Bank" msgid "Bank"
msgstr "Banco" msgstr "Banco"
@ -941,7 +941,7 @@ msgid "Account #"
msgstr "Cuenta n°" msgstr "Cuenta n°"
#: apps/member/templates/member/base.html:48 #: apps/member/templates/member/base.html:48
#: apps/member/templates/member/base.html:62 apps/member/views.py:60 #: apps/member/templates/member/base.html:62 apps/member/views.py:59
#: apps/registration/templates/registration/future_profile_detail.html:48 #: apps/registration/templates/registration/future_profile_detail.html:48
#: apps/wei/templates/wei/weimembership_form.html:117 #: apps/wei/templates/wei/weimembership_form.html:117
msgid "Update Profile" msgid "Update Profile"
@ -1175,9 +1175,9 @@ msgstr "Hacer clic aquí para reenviar un enlace de validación."
msgid "View my memberships" msgid "View my memberships"
msgstr "Ver mis afiliaciones" msgstr "Ver mis afiliaciones"
#: apps/member/templates/member/profile_trust.html:10 apps/member/views.py:254 #: apps/member/templates/member/profile_trust.html:10
msgid "Note friendships" msgid "Add friends"
msgstr "Amistades de note" msgstr "Añadir amig@s"
#: apps/member/templates/member/profile_trust.html:28 #: apps/member/templates/member/profile_trust.html:28
msgid "" msgid ""
@ -1192,6 +1192,10 @@ msgstr ""
"simplificar el reembolso entre amig@s por Note Kfet. Pues una persona puede " "simplificar el reembolso entre amig@s por Note Kfet. Pues una persona puede "
"crear todas la transacciones sin tener derechos particulares." "crear todas la transacciones sin tener derechos particulares."
#: apps/member/templates/member/profile_trust.html:39
msgid "People having you as a friend"
msgstr "Personas que tienen usted como amig@"
#: apps/member/templates/member/profile_update.html:18 #: apps/member/templates/member/profile_update.html:18
msgid "Save Changes" msgid "Save Changes"
msgstr "Guardar cambios" msgstr "Guardar cambios"
@ -1200,18 +1204,22 @@ msgstr "Guardar cambios"
msgid "Registrations" msgid "Registrations"
msgstr "Registraciones" msgstr "Registraciones"
#: apps/member/views.py:73 apps/registration/forms.py:24 #: apps/member/views.py:72 apps/registration/forms.py:24
msgid "This address must be valid." msgid "This address must be valid."
msgstr "Este correo tiene que ser valido." msgstr "Este correo tiene que ser valido."
#: apps/member/views.py:140 #: apps/member/views.py:139
msgid "Profile detail" msgid "Profile detail"
msgstr "Detalles del usuario" msgstr "Detalles del usuario"
#: apps/member/views.py:206 #: apps/member/views.py:205
msgid "Search user" msgid "Search user"
msgstr "Buscar un usuario" msgstr "Buscar un usuario"
#: apps/member/views.py:253
msgid "Note friendships"
msgstr "Amistades de note"
#: apps/member/views.py:308 #: apps/member/views.py:308
msgid "Update note picture" msgid "Update note picture"
msgstr "Modificar la imagen de la note" msgstr "Modificar la imagen de la note"
@ -1278,7 +1286,13 @@ msgstr "destino"
msgid "amount" msgid "amount"
msgstr "monto" msgstr "monto"
#: apps/note/api/serializers.py:199 apps/note/api/serializers.py:205 #: apps/note/api/serializers.py:92
#, fuzzy
#| msgid "This credit is already validated."
msgid "This friendship already exists"
msgstr "Este crédito ya fue validado."
#: apps/note/api/serializers.py:198 apps/note/api/serializers.py:204
#: apps/note/models/transactions.py:228 #: apps/note/models/transactions.py:228
msgid "" msgid ""
"The transaction can't be saved since the source note or the destination note " "The transaction can't be saved since the source note or the destination note "
@ -1593,8 +1607,8 @@ msgstr "Hacer clic para validar"
msgid "No reason specified" msgid "No reason specified"
msgstr "Ningún motivo dado" msgstr "Ningún motivo dado"
#: apps/note/tables.py:173 apps/note/tables.py:194 apps/note/tables.py:239 #: apps/note/tables.py:166 apps/note/tables.py:173 apps/note/tables.py:234
#: apps/treasury/tables.py:39 #: apps/note/tables.py:279 apps/treasury/tables.py:39
#: apps/treasury/templates/treasury/invoice_confirm_delete.html:30 #: apps/treasury/templates/treasury/invoice_confirm_delete.html:30
#: apps/treasury/templates/treasury/sogecredit_detail.html:65 #: apps/treasury/templates/treasury/sogecredit_detail.html:65
#: apps/wei/tables.py:75 apps/wei/tables.py:118 #: apps/wei/tables.py:75 apps/wei/tables.py:118
@ -1605,7 +1619,15 @@ msgstr "Ningún motivo dado"
msgid "Delete" msgid "Delete"
msgstr "Suprimir" msgstr "Suprimir"
#: apps/note/tables.py:222 apps/note/templates/note/conso_form.html:132 #: apps/note/tables.py:191
msgid "Trust back"
msgstr "Añadir como amig@"
#: apps/note/tables.py:211
msgid "Add back"
msgstr "Añadir en retorno"
#: apps/note/tables.py:262 apps/note/templates/note/conso_form.html:132
#: apps/wei/tables.py:49 apps/wei/tables.py:50 #: apps/wei/tables.py:49 apps/wei/tables.py:50
#: apps/wei/templates/wei/base.html:89 #: apps/wei/templates/wei/base.html:89
#: apps/wei/templates/wei/bus_detail.html:20 #: apps/wei/templates/wei/bus_detail.html:20
@ -1615,7 +1637,7 @@ msgstr "Suprimir"
msgid "Edit" msgid "Edit"
msgstr "Editar" msgstr "Editar"
#: apps/note/tables.py:226 apps/note/tables.py:253 #: apps/note/tables.py:266 apps/note/tables.py:293
msgid "Hide/Show" msgid "Hide/Show"
msgstr "Ocultar/Mostrar" msgstr "Ocultar/Mostrar"
@ -1983,15 +2005,15 @@ msgstr "Todos los permisos"
msgid "registration" msgid "registration"
msgstr "afiliación" msgstr "afiliación"
#: apps/registration/forms.py:41 #: apps/registration/forms.py:40
msgid "This email address is already used." msgid "This email address is already used."
msgstr "Este correo electrónico ya esta utilizado." msgstr "Este correo electrónico ya esta utilizado."
#: apps/registration/forms.py:61 #: apps/registration/forms.py:60
msgid "Register to the WEI" msgid "Register to the WEI"
msgstr "Registrarse en el WEI" msgstr "Registrarse en el WEI"
#: apps/registration/forms.py:63 #: apps/registration/forms.py:62
msgid "" msgid ""
"Check this case if you want to register to the WEI. If you hesitate, you " "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." "will be able to register later, after validating your account in the Kfet."
@ -1999,15 +2021,15 @@ msgstr ""
"Marcar esta casilla si usted quiere registrarse en el WEI. Si duda, podrá " "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." "registrarse más tarde, después de validar su cuenta Note Kfet."
#: apps/registration/forms.py:108 #: apps/registration/forms.py:107
msgid "Join BDE Club" msgid "Join BDE Club"
msgstr "Afiliarse al club BDE" msgstr "Afiliarse al club BDE"
#: apps/registration/forms.py:115 #: apps/registration/forms.py:114
msgid "Join Kfet Club" msgid "Join Kfet Club"
msgstr "Afiliarse al club Kfet" msgstr "Afiliarse al club Kfet"
#: apps/registration/forms.py:124 #: apps/registration/forms.py:123
msgid "Join BDA Club" msgid "Join BDA Club"
msgstr "Afiliarse al club BDA" msgstr "Afiliarse al club BDA"
@ -2621,7 +2643,6 @@ msgid "This team doesn't belong to the given bus."
msgstr "Este equipo no pertenece al bus dado." msgstr "Este equipo no pertenece al bus dado."
#: apps/wei/forms/surveys/wei2021.py:35 apps/wei/forms/surveys/wei2022.py:38 #: apps/wei/forms/surveys/wei2021.py:35 apps/wei/forms/surveys/wei2022.py:38
#: apps/wei/forms/surveys/wei2023.py:38
msgid "Choose a word:" msgid "Choose a word:"
msgstr "Elegir una palabra :" msgstr "Elegir una palabra :"
@ -2908,7 +2929,7 @@ msgstr "Descargar un PDF"
#: apps/wei/templates/wei/survey.html:11 #: apps/wei/templates/wei/survey.html:11
#: apps/wei/templates/wei/survey_closed.html:11 #: apps/wei/templates/wei/survey_closed.html:11
#: apps/wei/templates/wei/survey_end.html:11 apps/wei/views.py:1028 #: apps/wei/templates/wei/survey_end.html:11 apps/wei/views.py:1028
#: apps/wei/views.py:1083 apps/wei/views.py:1093 #: apps/wei/views.py:1083 apps/wei/views.py:1130
msgid "Survey WEI" msgid "Survey WEI"
msgstr "Cuestionario WEI" msgstr "Cuestionario WEI"
@ -3179,11 +3200,11 @@ msgstr "Usted no tiene derecho a suprimir esta inscripción WEI."
msgid "Validate WEI registration" msgid "Validate WEI registration"
msgstr "Validar la inscripción WEI" msgstr "Validar la inscripción WEI"
#: apps/wei/views.py:1186 #: apps/wei/views.py:1223
msgid "Attribute buses to first year members" msgid "Attribute buses to first year members"
msgstr "Repartir los primer años en los buses" msgstr "Repartir los primer años en los buses"
#: apps/wei/views.py:1211 #: apps/wei/views.py:1248
msgid "Attribute bus" msgid "Attribute bus"
msgstr "Repartir en un bus" msgstr "Repartir en un bus"
@ -3558,6 +3579,11 @@ msgstr ""
"pagar su afiliación. Tambien tiene que validar su correo electronico con el " "pagar su afiliación. Tambien tiene que validar su correo electronico con el "
"enlace que recibió." "enlace que recibió."
#, fuzzy
#~| msgid "People having you as a friend"
#~ msgid "You already have that person as a friend"
#~ msgstr "Personas que tienen usted como amig@"
#~ msgid "" #~ msgid ""
#~ "I declare that I opened or I will open soon a bank account in the Société " #~ "I declare that I opened or I will open soon a bank account in the Société "
#~ "générale with the BDE partnership." #~ "générale with the BDE partnership."

View File

@ -7,16 +7,16 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: \n" "Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-11-15 23:21+0100\n" "POT-Creation-Date: 2022-10-07 09:07+0200\n"
"PO-Revision-Date: 2020-11-21 12:23+0100\n" "PO-Revision-Date: 2022-10-07 13:20+0200\n"
"Last-Translator: elkmaennchen <elkmaennchen@crans.org>\n"
"Language-Team: \n"
"Language: es\n" "Language: es\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
"Last-Translator: elkmaennchen <elkmaennchen@crans.org>\n" "X-Generator: Poedit 3.0.1\n"
"Language-Team: \n"
"X-Generator: Poedit 2.3\n"
#: apps/member/static/member/js/alias.js:17 #: apps/member/static/member/js/alias.js:17
msgid "Alias successfully added" msgid "Alias successfully added"
@ -26,6 +26,18 @@ msgstr "Alias añadido con éxito"
msgid "Alias successfully deleted" msgid "Alias successfully deleted"
msgstr "Alias suprimido con éxito" msgstr "Alias suprimido con éxito"
#: apps/member/static/member/js/trust.js:14
msgid "You can't add yourself as a friend"
msgstr "No puede añadir asimismo como amig@"
#: apps/member/static/member/js/trust.js:37
msgid "Friendship successfully added"
msgstr "Amig@ añadido con éxito"
#: apps/member/static/member/js/trust.js:53
msgid "Friendship successfully deleted"
msgstr "Amig@ suprimido con éxito"
#: apps/note/static/note/js/consos.js:225 #: apps/note/static/note/js/consos.js:225
#, javascript-format #, javascript-format
msgid "" msgid ""
@ -44,30 +56,29 @@ msgstr ""
"Cuidado, la transacción de %s fue un éxito, pero la note %s está negativa." "Cuidado, la transacción de %s fue un éxito, pero la note %s está negativa."
#: apps/note/static/note/js/consos.js:232 #: apps/note/static/note/js/consos.js:232
#: apps/note/static/note/js/transfer.js:298 #: apps/note/static/note/js/transfer.js:309
#: apps/note/static/note/js/transfer.js:401 #: apps/note/static/note/js/transfer.js:412
#, javascript-format #, javascript-format
msgid "Warning, the emitter note %s is no more a BDE member." msgid "Warning, the emitter note %s is no more a BDE member."
msgstr "Cuidado, la note remitente %s no está más miembro del BDE." msgstr "Cuidado, la note remitente %s no está más miembro del BDE."
#: apps/note/static/note/js/consos.js:253 #: apps/note/static/note/js/consos.js:254
msgid "The transaction couldn't be validated because of insufficient balance." msgid "The transaction couldn't be validated because of insufficient balance."
msgstr "" msgstr "La transacción no pudo ser validada por culpa de saldo demasiado bajo."
"La transacción no pudo ser validada por culpa de saldo demasiado bajo."
#: apps/note/static/note/js/transfer.js:238 #: apps/note/static/note/js/transfer.js:249
msgid "This field is required and must contain a decimal positive number." msgid "This field is required and must contain a decimal positive number."
msgstr "Este campo obligatorio requiere un número decimal positivo." msgstr "Este campo obligatorio requiere un número decimal positivo."
#: apps/note/static/note/js/transfer.js:245 #: apps/note/static/note/js/transfer.js:256
msgid "The amount must stay under 21,474,836.47 €." msgid "The amount must stay under 21,474,836.47 €."
msgstr "El monto no puede superar los 21 474 836,47 €." msgstr "El monto no puede superar los 21 474 836,47 €."
#: apps/note/static/note/js/transfer.js:251 #: apps/note/static/note/js/transfer.js:262
msgid "This field is required." msgid "This field is required."
msgstr "Este campo es obligatorio." msgstr "Este campo es obligatorio."
#: apps/note/static/note/js/transfer.js:277 #: apps/note/static/note/js/transfer.js:288
#, javascript-format #, javascript-format
msgid "" msgid ""
"Warning: the transaction of %s from %s to %s was not made because it is the " "Warning: the transaction of %s from %s to %s was not made because it is the "
@ -76,12 +87,12 @@ msgstr ""
"Cuidado : la transacción de %s de %s a %s no fue echa porque la fuente y el " "Cuidado : la transacción de %s de %s a %s no fue echa porque la fuente y el "
"destino son iguales." "destino son iguales."
#: apps/note/static/note/js/transfer.js:301 #: apps/note/static/note/js/transfer.js:312
#, javascript-format #, javascript-format
msgid "Warning, the destination note %s is no more a BDE member." msgid "Warning, the destination note %s is no more a BDE member."
msgstr "Cuidado, la note destino %s no está más miembro del BDE." msgstr "Cuidado, la note destino %s no está más miembro del BDE."
#: apps/note/static/note/js/transfer.js:307 #: apps/note/static/note/js/transfer.js:318
#, javascript-format #, javascript-format
msgid "" msgid ""
"Warning, the transaction of %s from the note %s to the note %s succeed, but " "Warning, the transaction of %s from the note %s to the note %s succeed, but "
@ -90,7 +101,7 @@ msgstr ""
"Cuidado, la transacción de %s de la note %s a la note %s fue un éxito, pero " "Cuidado, la transacción de %s de la note %s a la note %s fue un éxito, pero "
"la note fuente %s está muy negativa." "la note fuente %s está muy negativa."
#: apps/note/static/note/js/transfer.js:312 #: apps/note/static/note/js/transfer.js:323
#, javascript-format #, javascript-format
msgid "" msgid ""
"Warning, the transaction of %s from the note %s to the note %s succeed, but " "Warning, the transaction of %s from the note %s to the note %s succeed, but "
@ -99,31 +110,31 @@ msgstr ""
"Cuidado, la transacción de %s de la note %s a la note %s fue un éxito, pero " "Cuidado, la transacción de %s de la note %s a la note %s fue un éxito, pero "
"la note fuente %s está negativa." "la note fuente %s está negativa."
#: apps/note/static/note/js/transfer.js:318 #: apps/note/static/note/js/transfer.js:329
#, javascript-format #, javascript-format
msgid "Transfer of %s from %s to %s succeed!" msgid "Transfer of %s from %s to %s succeed!"
msgstr "¡ La transacción de %s de %s a %s fue un éxito !" msgstr "¡ La transacción de %s de %s a %s fue un éxito !"
#: apps/note/static/note/js/transfer.js:325 #: apps/note/static/note/js/transfer.js:336
#: apps/note/static/note/js/transfer.js:346 #: apps/note/static/note/js/transfer.js:357
#: apps/note/static/note/js/transfer.js:353 #: apps/note/static/note/js/transfer.js:364
#, javascript-format #, javascript-format
msgid "Transfer of %s from %s to %s failed: %s" msgid "Transfer of %s from %s to %s failed: %s"
msgstr "La transacción de %s de %s a %s fue un fracaso : %s" msgstr "La transacción de %s de %s a %s fue un fracaso : %s"
#: apps/note/static/note/js/transfer.js:347 #: apps/note/static/note/js/transfer.js:358
msgid "insufficient funds" msgid "insufficient funds"
msgstr "fundos insuficientes" msgstr "fundos insuficientes"
#: apps/note/static/note/js/transfer.js:400 #: apps/note/static/note/js/transfer.js:411
msgid "Credit/debit succeed!" msgid "Credit/debit succeed!"
msgstr "¡ Crédito/débito tubo éxito !" msgstr "¡ Crédito/débito tubo éxito !"
#: apps/note/static/note/js/transfer.js:407 #: apps/note/static/note/js/transfer.js:418
#, javascript-format #, javascript-format
msgid "Credit/debit failed: %s" msgid "Credit/debit failed: %s"
msgstr "Crédito/débito falló : %s" msgstr "Crédito/débito falló : %s"
#: note_kfet/static/js/base.js:366 #: note_kfet/static/js/base.js:370
msgid "An error occured while (in)validating this transaction:" msgid "An error occured while (in)validating this transaction:"
msgstr "Un error ocurrió durante la (in)validación de esta transacción :" msgstr "Un error ocurrió durante la (in)validación de esta transacción :"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: \n" "Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-08-31 13:25+0200\n" "POT-Creation-Date: 2023-09-18 17:27+0200\n"
"PO-Revision-Date: 2022-04-11 22:05+0200\n" "PO-Revision-Date: 2022-04-11 22:05+0200\n"
"Last-Translator: bleizi <bleizi@crans.org>\n" "Last-Translator: bleizi <bleizi@crans.org>\n"
"Language-Team: French <http://translate.ynerant.fr/projects/nk20/nk20/fr/>\n" "Language-Team: French <http://translate.ynerant.fr/projects/nk20/nk20/fr/>\n"
@ -263,14 +263,14 @@ msgid "Type"
msgstr "Type" msgstr "Type"
#: apps/activity/tables.py:84 apps/member/forms.py:193 #: apps/activity/tables.py:84 apps/member/forms.py:193
#: apps/registration/forms.py:93 apps/treasury/forms.py:131 #: apps/registration/forms.py:92 apps/treasury/forms.py:131
#: apps/wei/forms/registration.py:104 #: apps/wei/forms/registration.py:104
msgid "Last name" msgid "Last name"
msgstr "Nom de famille" msgstr "Nom de famille"
#: apps/activity/tables.py:86 apps/member/forms.py:198 #: apps/activity/tables.py:86 apps/member/forms.py:198
#: apps/note/templates/note/transaction_form.html:138 #: apps/note/templates/note/transaction_form.html:138
#: apps/registration/forms.py:98 apps/treasury/forms.py:133 #: apps/registration/forms.py:97 apps/treasury/forms.py:133
#: apps/wei/forms/registration.py:109 #: apps/wei/forms/registration.py:109
msgid "First name" msgid "First name"
msgstr "Prénom" msgstr "Prénom"
@ -388,7 +388,7 @@ msgid "validate"
msgstr "valider" msgstr "valider"
#: apps/activity/templates/activity/includes/activity_info.html:71 #: apps/activity/templates/activity/includes/activity_info.html:71
#: apps/logs/models.py:64 apps/note/tables.py:220 #: apps/logs/models.py:64 apps/note/tables.py:260
msgid "edit" msgid "edit"
msgstr "modifier" msgstr "modifier"
@ -466,9 +466,9 @@ msgstr "nouvelles données"
msgid "create" msgid "create"
msgstr "créer" msgstr "créer"
#: apps/logs/models.py:65 apps/note/tables.py:166 apps/note/tables.py:190 #: apps/logs/models.py:65 apps/note/tables.py:230 apps/note/tables.py:277
#: apps/note/tables.py:237 apps/permission/models.py:127 #: apps/permission/models.py:127 apps/treasury/tables.py:38
#: apps/treasury/tables.py:38 apps/wei/tables.py:74 #: apps/wei/tables.py:74
msgid "delete" msgid "delete"
msgstr "supprimer" msgstr "supprimer"
@ -534,8 +534,7 @@ msgstr "Date de dernier rapport"
#: apps/member/forms.py:52 #: apps/member/forms.py:52
msgid "" msgid ""
"Anti-VSS (<em>Violences Sexistes et Sexuelles</em>) charter read and approved" "Anti-VSS (<em>Violences Sexistes et Sexuelles</em>) charter read and approved"
msgstr "" msgstr "Charte Anti-VSS (Violences Sexistes et Sexuelles) lue et approuvée"
"Charte Anti-VSS (Violences Sexistes et Sexuelles) lue et approuvée"
#: apps/member/forms.py:53 #: apps/member/forms.py:53
msgid "" msgid ""
@ -543,9 +542,9 @@ msgid ""
"href=https://perso.crans.org/club-bde/Charte-anti-VSS.pdf target=_blank> " "href=https://perso.crans.org/club-bde/Charte-anti-VSS.pdf target=_blank> "
"available here in pdf</a>" "available here in pdf</a>"
msgstr "" msgstr ""
"Cochez après avoir lu la chartre anti-VSS <a " "Cochez après avoir lu la chartre anti-VSS <a href=https://perso."
"href=https://perso.crans.org/club-bde/Charte-anti-VSS.pdf target=_blank> " "crans.org/club-bde/Charte-anti-VSS.pdf target=_blank> disponible en pdf ici</"
"disponible en pdf ici</a>" "a>"
#: apps/member/forms.py:60 #: apps/member/forms.py:60
msgid "You can't register to the note if you come from the future." msgid "You can't register to the note if you come from the future."
@ -563,8 +562,8 @@ msgstr "Taille maximale : 2 Mo"
msgid "This image cannot be loaded." msgid "This image cannot be loaded."
msgstr "Cette image ne peut pas être chargée." msgstr "Cette image ne peut pas être chargée."
#: apps/member/forms.py:148 apps/member/views.py:103 #: apps/member/forms.py:148 apps/member/views.py:102
#: apps/registration/forms.py:35 apps/registration/views.py:266 #: apps/registration/forms.py:34 apps/registration/views.py:266
msgid "An alias with a similar name already exists." msgid "An alias with a similar name already exists."
msgstr "Un alias avec un nom similaire existe déjà." msgstr "Un alias avec un nom similaire existe déjà."
@ -576,12 +575,12 @@ msgstr "Inscription payée par la Société générale"
msgid "Check this case if the Société Générale paid the inscription." msgid "Check this case if the Société Générale paid the inscription."
msgstr "Cochez cette case si la Société Générale a payé l'inscription." msgstr "Cochez cette case si la Société Générale a payé l'inscription."
#: apps/member/forms.py:179 apps/registration/forms.py:80 #: apps/member/forms.py:179 apps/registration/forms.py:79
#: apps/wei/forms/registration.py:91 #: apps/wei/forms/registration.py:91
msgid "Credit type" msgid "Credit type"
msgstr "Type de rechargement" msgstr "Type de rechargement"
#: apps/member/forms.py:180 apps/registration/forms.py:81 #: apps/member/forms.py:180 apps/registration/forms.py:80
#: apps/wei/forms/registration.py:92 #: apps/wei/forms/registration.py:92
msgid "No credit" msgid "No credit"
msgstr "Pas de rechargement" msgstr "Pas de rechargement"
@ -590,13 +589,13 @@ msgstr "Pas de rechargement"
msgid "You can credit the note of the user." msgid "You can credit the note of the user."
msgstr "Vous pouvez créditer la note de l'utilisateur avant l'adhésion." msgstr "Vous pouvez créditer la note de l'utilisateur avant l'adhésion."
#: apps/member/forms.py:186 apps/registration/forms.py:86 #: apps/member/forms.py:186 apps/registration/forms.py:85
#: apps/wei/forms/registration.py:97 #: apps/wei/forms/registration.py:97
msgid "Credit amount" msgid "Credit amount"
msgstr "Montant à créditer" msgstr "Montant à créditer"
#: apps/member/forms.py:203 apps/note/templates/note/transaction_form.html:144 #: apps/member/forms.py:203 apps/note/templates/note/transaction_form.html:144
#: apps/registration/forms.py:103 apps/treasury/forms.py:135 #: apps/registration/forms.py:102 apps/treasury/forms.py:135
#: apps/wei/forms/registration.py:114 #: apps/wei/forms/registration.py:114
msgid "Bank" msgid "Bank"
msgstr "Banque" msgstr "Banque"
@ -944,7 +943,7 @@ msgid "Account #"
msgstr "Compte n°" msgstr "Compte n°"
#: apps/member/templates/member/base.html:48 #: apps/member/templates/member/base.html:48
#: apps/member/templates/member/base.html:62 apps/member/views.py:60 #: apps/member/templates/member/base.html:62 apps/member/views.py:59
#: apps/registration/templates/registration/future_profile_detail.html:48 #: apps/registration/templates/registration/future_profile_detail.html:48
#: apps/wei/templates/wei/weimembership_form.html:117 #: apps/wei/templates/wei/weimembership_form.html:117
msgid "Update Profile" msgid "Update Profile"
@ -1178,9 +1177,9 @@ msgstr "Cliquez ici pour renvoyer un lien de validation."
msgid "View my memberships" msgid "View my memberships"
msgstr "Voir mes adhésions" msgstr "Voir mes adhésions"
#: apps/member/templates/member/profile_trust.html:10 apps/member/views.py:254 #: apps/member/templates/member/profile_trust.html:10
msgid "Note friendships" msgid "Add friends"
msgstr "Amitiés note" msgstr "Ajouter des amis"
#: apps/member/templates/member/profile_trust.html:28 #: apps/member/templates/member/profile_trust.html:28
msgid "" msgid ""
@ -1195,6 +1194,10 @@ msgstr ""
"ami⋅es via note. En effet, une personne peut effectuer tous les transferts " "ami⋅es via note. En effet, une personne peut effectuer tous les transferts "
"sans posséder de droits supplémentaires." "sans posséder de droits supplémentaires."
#: apps/member/templates/member/profile_trust.html:39
msgid "People having you as a friend"
msgstr "Personnes vous ayant ajouté"
#: apps/member/templates/member/profile_update.html:18 #: apps/member/templates/member/profile_update.html:18
msgid "Save Changes" msgid "Save Changes"
msgstr "Sauvegarder les changements" msgstr "Sauvegarder les changements"
@ -1203,18 +1206,22 @@ msgstr "Sauvegarder les changements"
msgid "Registrations" msgid "Registrations"
msgstr "Inscriptions" msgstr "Inscriptions"
#: apps/member/views.py:73 apps/registration/forms.py:24 #: apps/member/views.py:72 apps/registration/forms.py:24
msgid "This address must be valid." msgid "This address must be valid."
msgstr "Cette adresse doit être valide." msgstr "Cette adresse doit être valide."
#: apps/member/views.py:140 #: apps/member/views.py:139
msgid "Profile detail" msgid "Profile detail"
msgstr "Détails de l'utilisateur" msgstr "Détails de l'utilisateur"
#: apps/member/views.py:206 #: apps/member/views.py:205
msgid "Search user" msgid "Search user"
msgstr "Chercher un utilisateur" msgstr "Chercher un utilisateur"
#: apps/member/views.py:253
msgid "Note friendships"
msgstr "Amitiés note"
#: apps/member/views.py:308 #: apps/member/views.py:308
msgid "Update note picture" msgid "Update note picture"
msgstr "Modifier la photo de la note" msgstr "Modifier la photo de la note"
@ -1281,7 +1288,11 @@ msgstr "destination"
msgid "amount" msgid "amount"
msgstr "montant" msgstr "montant"
#: apps/note/api/serializers.py:199 apps/note/api/serializers.py:205 #: apps/note/api/serializers.py:92
msgid "This friendship already exists"
msgstr "Cette amitié existe déjà"
#: apps/note/api/serializers.py:198 apps/note/api/serializers.py:204
#: apps/note/models/transactions.py:228 #: apps/note/models/transactions.py:228
msgid "" msgid ""
"The transaction can't be saved since the source note or the destination note " "The transaction can't be saved since the source note or the destination note "
@ -1599,8 +1610,8 @@ msgstr "Cliquez pour valider"
msgid "No reason specified" msgid "No reason specified"
msgstr "Pas de motif spécifié" msgstr "Pas de motif spécifié"
#: apps/note/tables.py:173 apps/note/tables.py:194 apps/note/tables.py:239 #: apps/note/tables.py:166 apps/note/tables.py:173 apps/note/tables.py:234
#: apps/treasury/tables.py:39 #: apps/note/tables.py:279 apps/treasury/tables.py:39
#: apps/treasury/templates/treasury/invoice_confirm_delete.html:30 #: apps/treasury/templates/treasury/invoice_confirm_delete.html:30
#: apps/treasury/templates/treasury/sogecredit_detail.html:65 #: apps/treasury/templates/treasury/sogecredit_detail.html:65
#: apps/wei/tables.py:75 apps/wei/tables.py:118 #: apps/wei/tables.py:75 apps/wei/tables.py:118
@ -1611,7 +1622,15 @@ msgstr "Pas de motif spécifié"
msgid "Delete" msgid "Delete"
msgstr "Supprimer" msgstr "Supprimer"
#: apps/note/tables.py:222 apps/note/templates/note/conso_form.html:132 #: apps/note/tables.py:191
msgid "Trust back"
msgstr "Ajouter en ami"
#: apps/note/tables.py:211
msgid "Add back"
msgstr "Ajouter"
#: apps/note/tables.py:262 apps/note/templates/note/conso_form.html:132
#: apps/wei/tables.py:49 apps/wei/tables.py:50 #: apps/wei/tables.py:49 apps/wei/tables.py:50
#: apps/wei/templates/wei/base.html:89 #: apps/wei/templates/wei/base.html:89
#: apps/wei/templates/wei/bus_detail.html:20 #: apps/wei/templates/wei/bus_detail.html:20
@ -1621,7 +1640,7 @@ msgstr "Supprimer"
msgid "Edit" msgid "Edit"
msgstr "Éditer" msgstr "Éditer"
#: apps/note/tables.py:226 apps/note/tables.py:253 #: apps/note/tables.py:266 apps/note/tables.py:293
msgid "Hide/Show" msgid "Hide/Show"
msgstr "Afficher/Masquer" msgstr "Afficher/Masquer"
@ -1992,15 +2011,15 @@ msgstr "Tous les droits"
msgid "registration" msgid "registration"
msgstr "inscription" msgstr "inscription"
#: apps/registration/forms.py:41 #: apps/registration/forms.py:40
msgid "This email address is already used." msgid "This email address is already used."
msgstr "Cet email est déjà pris." msgstr "Cet email est déjà pris."
#: apps/registration/forms.py:61 #: apps/registration/forms.py:60
msgid "Register to the WEI" msgid "Register to the WEI"
msgstr "S'inscrire au WEI" msgstr "S'inscrire au WEI"
#: apps/registration/forms.py:63 #: apps/registration/forms.py:62
msgid "" msgid ""
"Check this case if you want to register to the WEI. If you hesitate, you " "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." "will be able to register later, after validating your account in the Kfet."
@ -2009,15 +2028,15 @@ msgstr ""
"pourrez toujours vous inscrire plus tard, après avoir validé votre compte à " "pourrez toujours vous inscrire plus tard, après avoir validé votre compte à "
"la Kfet." "la Kfet."
#: apps/registration/forms.py:108 #: apps/registration/forms.py:107
msgid "Join BDE Club" msgid "Join BDE Club"
msgstr "Adhérer au club BDE" msgstr "Adhérer au club BDE"
#: apps/registration/forms.py:115 #: apps/registration/forms.py:114
msgid "Join Kfet Club" msgid "Join Kfet Club"
msgstr "Adhérer au club Kfet" msgstr "Adhérer au club Kfet"
#: apps/registration/forms.py:124 #: apps/registration/forms.py:123
msgid "Join BDA Club" msgid "Join BDA Club"
msgstr "Adhérer au club BDA" msgstr "Adhérer au club BDA"
@ -2633,7 +2652,6 @@ msgid "This team doesn't belong to the given bus."
msgstr "Cette équipe n'appartient pas à ce bus." msgstr "Cette équipe n'appartient pas à ce bus."
#: apps/wei/forms/surveys/wei2021.py:35 apps/wei/forms/surveys/wei2022.py:38 #: apps/wei/forms/surveys/wei2021.py:35 apps/wei/forms/surveys/wei2022.py:38
#: apps/wei/forms/surveys/wei2023.py:38
msgid "Choose a word:" msgid "Choose a word:"
msgstr "Choisissez un mot :" msgstr "Choisissez un mot :"
@ -2922,7 +2940,7 @@ msgstr "Télécharger au format PDF"
#: apps/wei/templates/wei/survey.html:11 #: apps/wei/templates/wei/survey.html:11
#: apps/wei/templates/wei/survey_closed.html:11 #: apps/wei/templates/wei/survey_closed.html:11
#: apps/wei/templates/wei/survey_end.html:11 apps/wei/views.py:1028 #: apps/wei/templates/wei/survey_end.html:11 apps/wei/views.py:1028
#: apps/wei/views.py:1083 apps/wei/views.py:1093 #: apps/wei/views.py:1083 apps/wei/views.py:1130
msgid "Survey WEI" msgid "Survey WEI"
msgstr "Questionnaire WEI" msgstr "Questionnaire WEI"
@ -3196,11 +3214,11 @@ msgstr "Vous n'avez pas la permission de supprimer cette inscription au WEI."
msgid "Validate WEI registration" msgid "Validate WEI registration"
msgstr "Valider l'inscription WEI" msgstr "Valider l'inscription WEI"
#: apps/wei/views.py:1186 #: apps/wei/views.py:1223
msgid "Attribute buses to first year members" msgid "Attribute buses to first year members"
msgstr "Répartir les 1A dans les bus" msgstr "Répartir les 1A dans les bus"
#: apps/wei/views.py:1211 #: apps/wei/views.py:1248
msgid "Attribute bus" msgid "Attribute bus"
msgstr "Attribuer un bus" msgstr "Attribuer un bus"
@ -3586,6 +3604,11 @@ msgstr ""
"d'adhésion. Vous devez également valider votre adresse email en suivant le " "d'adhésion. Vous devez également valider votre adresse email en suivant le "
"lien que vous avez reçu." "lien que vous avez reçu."
#, fuzzy
#~| msgid "People having you as a friend"
#~ msgid "You already have that person as a friend"
#~ msgstr "Personnes vous ayant ajouté"
#~ msgid "" #~ msgid ""
#~ "I declare that I opened or I will open soon a bank account in the Société " #~ "I declare that I opened or I will open soon a bank account in the Société "
#~ "générale with the BDE partnership." #~ "générale with the BDE partnership."

View File

@ -3,12 +3,11 @@
# This file is distributed under the same license as the PACKAGE package. # This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
# #
#, fuzzy
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-11-15 23:21+0100\n" "POT-Creation-Date: 2022-10-07 09:07+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -26,6 +25,18 @@ msgstr "Alias ajouté avec succès"
msgid "Alias successfully deleted" msgid "Alias successfully deleted"
msgstr "Alias supprimé avec succès" msgstr "Alias supprimé avec succès"
#: apps/member/static/member/js/trust.js:14
msgid "You can't add yourself as a friend"
msgstr "Vous ne pouvez pas vous ajouter vous-même en ami"
#: apps/member/static/member/js/trust.js:37
msgid "Friendship successfully added"
msgstr "Amitié ajoutée avec succès"
#: apps/member/static/member/js/trust.js:53
msgid "Friendship successfully deleted"
msgstr "Amitié supprimée avec succès"
#: apps/note/static/note/js/consos.js:225 #: apps/note/static/note/js/consos.js:225
#, javascript-format #, javascript-format
msgid "" msgid ""
@ -45,31 +56,31 @@ msgstr ""
"la note émettrice %s est en négatif." "la note émettrice %s est en négatif."
#: apps/note/static/note/js/consos.js:232 #: apps/note/static/note/js/consos.js:232
#: apps/note/static/note/js/transfer.js:298 #: apps/note/static/note/js/transfer.js:309
#: apps/note/static/note/js/transfer.js:401 #: apps/note/static/note/js/transfer.js:412
#, javascript-format #, javascript-format
msgid "Warning, the emitter note %s is no more a BDE member." msgid "Warning, the emitter note %s is no more a BDE member."
msgstr "Attention, la note émettrice %s n'est plus adhérente." msgstr "Attention, la note émettrice %s n'est plus adhérente."
#: apps/note/static/note/js/consos.js:253 #: apps/note/static/note/js/consos.js:254
msgid "The transaction couldn't be validated because of insufficient balance." msgid "The transaction couldn't be validated because of insufficient balance."
msgstr "" msgstr ""
"La transaction n'a pas pu être validée pour cause de solde insuffisant." "La transaction n'a pas pu être validée pour cause de solde insuffisant."
#: apps/note/static/note/js/transfer.js:238 #: apps/note/static/note/js/transfer.js:249
msgid "This field is required and must contain a decimal positive number." msgid "This field is required and must contain a decimal positive number."
msgstr "" msgstr ""
"Ce champ est requis et doit comporter un nombre décimal strictement positif." "Ce champ est requis et doit comporter un nombre décimal strictement positif."
#: apps/note/static/note/js/transfer.js:245 #: apps/note/static/note/js/transfer.js:256
msgid "The amount must stay under 21,474,836.47 €." msgid "The amount must stay under 21,474,836.47 €."
msgstr "Le montant ne doit pas excéder 21 474 836.47 €." msgstr "Le montant ne doit pas excéder 21 474 836.47 €."
#: apps/note/static/note/js/transfer.js:251 #: apps/note/static/note/js/transfer.js:262
msgid "This field is required." msgid "This field is required."
msgstr "Ce champ est requis." msgstr "Ce champ est requis."
#: apps/note/static/note/js/transfer.js:277 #: apps/note/static/note/js/transfer.js:288
#, javascript-format #, javascript-format
msgid "" msgid ""
"Warning: the transaction of %s from %s to %s was not made because it is the " "Warning: the transaction of %s from %s to %s was not made because it is the "
@ -78,12 +89,12 @@ msgstr ""
"Attention : la transaction de %s de la note %s vers la note %s n'a pas été " "Attention : la transaction de %s de la note %s vers la note %s n'a pas été "
"faite car il s'agit de la même note au départ et à l'arrivée." "faite car il s'agit de la même note au départ et à l'arrivée."
#: apps/note/static/note/js/transfer.js:301 #: apps/note/static/note/js/transfer.js:312
#, javascript-format #, javascript-format
msgid "Warning, the destination note %s is no more a BDE member." msgid "Warning, the destination note %s is no more a BDE member."
msgstr "Attention, la note de destination %s n'est plus adhérente." msgstr "Attention, la note de destination %s n'est plus adhérente."
#: apps/note/static/note/js/transfer.js:307 #: apps/note/static/note/js/transfer.js:318
#, javascript-format #, javascript-format
msgid "" msgid ""
"Warning, the transaction of %s from the note %s to the note %s succeed, but " "Warning, the transaction of %s from the note %s to the note %s succeed, but "
@ -92,7 +103,7 @@ msgstr ""
"Attention, La transaction de %s depuis la note %s vers la note %s a été " "Attention, La transaction de %s depuis la note %s vers la note %s a été "
"réalisée avec succès, mais la note émettrice %s est en négatif sévère." "réalisée avec succès, mais la note émettrice %s est en négatif sévère."
#: apps/note/static/note/js/transfer.js:312 #: apps/note/static/note/js/transfer.js:323
#, javascript-format #, javascript-format
msgid "" msgid ""
"Warning, the transaction of %s from the note %s to the note %s succeed, but " "Warning, the transaction of %s from the note %s to the note %s succeed, but "
@ -101,33 +112,33 @@ msgstr ""
"Attention, La transaction de %s depuis la note %s vers la note %s a été " "Attention, La transaction de %s depuis la note %s vers la note %s a été "
"réalisée avec succès, mais la note émettrice %s est en négatif." "réalisée avec succès, mais la note émettrice %s est en négatif."
#: apps/note/static/note/js/transfer.js:318 #: apps/note/static/note/js/transfer.js:329
#, javascript-format #, javascript-format
msgid "Transfer of %s from %s to %s succeed!" msgid "Transfer of %s from %s to %s succeed!"
msgstr "" msgstr ""
"Le transfert de %s de la note %s vers la note %s a été fait avec succès !" "Le transfert de %s de la note %s vers la note %s a été fait avec succès !"
#: apps/note/static/note/js/transfer.js:325 #: apps/note/static/note/js/transfer.js:336
#: apps/note/static/note/js/transfer.js:346 #: apps/note/static/note/js/transfer.js:357
#: apps/note/static/note/js/transfer.js:353 #: apps/note/static/note/js/transfer.js:364
#, javascript-format #, javascript-format
msgid "Transfer of %s from %s to %s failed: %s" msgid "Transfer of %s from %s to %s failed: %s"
msgstr "Le transfert de %s de la note %s vers la note %s a échoué : %s" msgstr "Le transfert de %s de la note %s vers la note %s a échoué : %s"
#: apps/note/static/note/js/transfer.js:347 #: apps/note/static/note/js/transfer.js:358
msgid "insufficient funds" msgid "insufficient funds"
msgstr "solde insuffisant" msgstr "solde insuffisant"
#: apps/note/static/note/js/transfer.js:400 #: apps/note/static/note/js/transfer.js:411
msgid "Credit/debit succeed!" msgid "Credit/debit succeed!"
msgstr "Le crédit/retrait a bien été effectué !" msgstr "Le crédit/retrait a bien été effectué !"
#: apps/note/static/note/js/transfer.js:407 #: apps/note/static/note/js/transfer.js:418
#, javascript-format #, javascript-format
msgid "Credit/debit failed: %s" msgid "Credit/debit failed: %s"
msgstr "Le crédit/retrait a échoué : %s" msgstr "Le crédit/retrait a échoué : %s"
#: note_kfet/static/js/base.js:366 #: note_kfet/static/js/base.js:370
msgid "An error occured while (in)validating this transaction:" msgid "An error occured while (in)validating this transaction:"
msgstr "" msgstr ""
"Une erreur est survenue lors de la validation/dévalidation de cette " "Une erreur est survenue lors de la validation/dévalidation de cette "

View File

@ -1,3 +1,5 @@
const keycodes = [32, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 106, 107, 109, 110, 111, 186, 187, 188, 189, 190, 191, 219, 220, 221, 222]
$(document).ready(function () { $(document).ready(function () {
$('.autocomplete').keyup(function (e) { $('.autocomplete').keyup(function (e) {
const target = $('#' + e.target.id) const target = $('#' + e.target.id)
@ -10,7 +12,6 @@ $(document).ready(function () {
const input = target.val() const input = target.val()
target.addClass('is-invalid') target.addClass('is-invalid')
target.removeClass('is-valid') target.removeClass('is-valid')
$('#' + prefix + '_reset').removeClass('d-none')
$.getJSON(api_url + (api_url.includes('?') ? '&' : '?') + 'format=json&search=^' + input + api_url_suffix, function (objects) { $.getJSON(api_url + (api_url.includes('?') ? '&' : '?') + 'format=json&search=^' + input + api_url_suffix, function (objects) {
let html = '<ul class="list-group list-group-flush" id="' + prefix + '_list">' let html = '<ul class="list-group list-group-flush" id="' + prefix + '_list">'
@ -41,11 +42,14 @@ $(document).ready(function () {
if (typeof autocompleted !== 'undefined') { autocompleted(obj, prefix) } if (typeof autocompleted !== 'undefined') { autocompleted(obj, prefix) }
}) })
if (input === obj[name_field]) { $('#' + prefix + '_pk').val(obj.id) }
}) })
if (objects.results.length === 1 && e.originalEvent.keyCode >= 32) { if (objects.results.length >= 2) {
$('#' + prefix + '_pk').val(objects.results[0].id)
}
if (objects.results.length === 1 &&
(keycodes.includes(e.originalEvent.keyCode) ||
input === objects.results[0][name_field])) {
$('#' + prefix + '_' + objects.results[0].id).trigger('click') $('#' + prefix + '_' + objects.results[0].id).trigger('click')
} }
}) })
@ -55,7 +59,6 @@ $(document).ready(function () {
const name = $(this).attr('id').replace('_reset', '') const name = $(this).attr('id').replace('_reset', '')
$('#' + name + '_pk').val('') $('#' + name + '_pk').val('')
$('#' + name).val('') $('#' + name).val('')
$('#' + name + '_list').html('') $('#' + name).tooltip('hide')
$(this).addClass('d-none')
}) })
}) })

View File

@ -12,6 +12,6 @@ SPDX-License-Identifier: GPL-3.0-or-later
{% endfor %} {% endfor %}
aria-describedby="{{widget.attrs.id}}_tooltip"> aria-describedby="{{widget.attrs.id}}_tooltip">
{% if widget.resetable %} {% if widget.resetable %}
<a id="{{ widget.attrs.id }}_reset" class="btn btn-light autocomplete-reset{% if not widget.value %} d-none{% endif %}">{% trans "Reset" %}</a> <a id="{{ widget.attrs.id }}_reset" class="btn btn-light autocomplete-reset">{% trans "Reset" %}</a>
{% endif %} {% endif %}