Merge branch 'no_null_charfield' into 'beta'

Add __str__ to models, remove null=True in CharField and TextField

See merge request bde/nk20!117
This commit is contained in:
ynerant 2020-09-07 11:39:19 +02:00
commit 9eff3d8850
15 changed files with 459 additions and 254 deletions

View File

@ -188,6 +188,12 @@ class Entry(models.Model):
verbose_name = _("entry") verbose_name = _("entry")
verbose_name_plural = _("entries") verbose_name_plural = _("entries")
def __str__(self):
return _("Entry for {guest}, invited by {note} to the activity {activity}").format(
guest=str(self.guest), note=str(self.note), activity=str(self.activity)) if self.guest \
else _("Entry for {note} to the activity {activity}").format(
guest=str(self.guest), note=str(self.note), activity=str(self.activity))
def save(self, *args, **kwargs): def save(self, *args, **kwargs):
qs = Entry.objects.filter(~Q(pk=self.pk), activity=self.activity, note=self.note, guest=self.guest) qs = Entry.objects.filter(~Q(pk=self.pk), activity=self.activity, note=self.note, guest=self.guest)

View File

@ -0,0 +1,17 @@
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('logs', '0001_initial'),
]
operations = [
migrations.RunSQL(
"UPDATE logs_changelog SET previous = '' WHERE previous IS NULL;"
),
migrations.RunSQL(
"UPDATE logs_changelog SET data = '' WHERE data IS NULL;"
),
]

View File

@ -0,0 +1,23 @@
# Generated by Django 2.2.16 on 2020-09-06 19:17
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('logs', '0002_replace_null_by_blank'),
]
operations = [
migrations.AlterField(
model_name='changelog',
name='data',
field=models.TextField(blank=True, default='', verbose_name='new data'),
),
migrations.AlterField(
model_name='changelog',
name='previous',
field=models.TextField(blank=True, default='', verbose_name='previous data'),
),
]

View File

@ -44,12 +44,14 @@ class Changelog(models.Model):
) )
previous = models.TextField( previous = models.TextField(
null=True, blank=True,
default="",
verbose_name=_('previous data'), verbose_name=_('previous data'),
) )
data = models.TextField( data = models.TextField(
null=True, blank=True,
default="",
verbose_name=_('new data'), verbose_name=_('new data'),
) )
@ -80,3 +82,7 @@ class Changelog(models.Model):
class Meta: class Meta:
verbose_name = _("changelog") verbose_name = _("changelog")
verbose_name_plural = _("changelogs") verbose_name_plural = _("changelogs")
def __str__(self):
return _("Changelog of type \"{action}\" for model {model} at {timestamp}").format(
action=self.get_action_display(), model=str(self.model), timestamp=str(self.timestamp))

View File

@ -99,7 +99,7 @@ def save_object(sender, instance, **kwargs):
model = instance.__class__ model = instance.__class__
fields = changed_fields fields = changed_fields
previous_json = JSONRenderer().render(CustomSerializer(previous).data).decode("UTF-8") if previous else None previous_json = JSONRenderer().render(CustomSerializer(previous).data).decode("UTF-8") if previous else ""
instance_json = JSONRenderer().render(CustomSerializer(instance).data).decode("UTF-8") instance_json = JSONRenderer().render(CustomSerializer(instance).data).decode("UTF-8")
Changelog.objects.create(user=user, Changelog.objects.create(user=user,
@ -149,6 +149,6 @@ def delete_object(sender, instance, **kwargs):
model=ContentType.objects.get_for_model(instance), model=ContentType.objects.get_for_model(instance),
instance_pk=instance.pk, instance_pk=instance.pk,
previous=instance_json, previous=instance_json,
data=None, data="",
action="delete" action="delete"
).save() ).save()

View File

@ -0,0 +1,20 @@
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('member', '0003_create_bde_and_kfet'),
]
operations = [
migrations.RunSQL(
"UPDATE member_profile SET address = '' WHERE address IS NULL;",
),
migrations.RunSQL(
"UPDATE member_profile SET ml_events_registration = '' WHERE ml_events_registration IS NULL;",
),
migrations.RunSQL(
"UPDATE member_profile SET section = '' WHERE section IS NULL;",
),
]

View File

@ -0,0 +1,28 @@
# Generated by Django 2.2.16 on 2020-09-06 19:17
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('member', '0004_replace_null_by_blank'),
]
operations = [
migrations.AlterField(
model_name='profile',
name='address',
field=models.CharField(blank=True, default='', max_length=255, verbose_name='address'),
),
migrations.AlterField(
model_name='profile',
name='ml_events_registration',
field=models.CharField(blank=True, choices=[('', 'No'), ('fr', 'Yes (receive them in french)'), ('en', 'Yes (receive them in english)')], default='', max_length=2, verbose_name='Register on the mailing list to stay informed of the events of the campus (1 mail/week)'),
),
migrations.AlterField(
model_name='profile',
name='section',
field=models.CharField(blank=True, default='', help_text='e.g. "1A0", "9A♥", "SAPHIRE"', max_length=255, verbose_name='section'),
),
]

View File

@ -46,7 +46,7 @@ class Profile(models.Model):
help_text=_('e.g. "1A0", "9A♥", "SAPHIRE"'), help_text=_('e.g. "1A0", "9A♥", "SAPHIRE"'),
max_length=255, max_length=255,
blank=True, blank=True,
null=True, default="",
) )
department = models.CharField( department = models.CharField(
@ -83,7 +83,7 @@ class Profile(models.Model):
verbose_name=_('address'), verbose_name=_('address'),
max_length=255, max_length=255,
blank=True, blank=True,
null=True, default="",
) )
paid = models.BooleanField( paid = models.BooleanField(
@ -94,11 +94,10 @@ class Profile(models.Model):
ml_events_registration = models.CharField( ml_events_registration = models.CharField(
blank=True, blank=True,
null=True, default='',
default=None,
max_length=2, max_length=2,
choices=[ choices=[
(None, _("No")), ('', _("No")),
('fr', _("Yes (receive them in french)")), ('fr', _("Yes (receive them in french)")),
('en', _("Yes (receive them in english)")), ('en', _("Yes (receive them in english)")),
], ],

View File

@ -0,0 +1,17 @@
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('note', '0002_create_special_notes'),
]
operations = [
migrations.RunSQL(
"UPDATE note_note SET inactivity_reason = '' WHERE inactivity_reason IS NULL;"
),
migrations.RunSQL(
"UPDATE note_transaction SET invalidity_reason = '' WHERE invalidity_reason IS NULL;"
),
]

View File

@ -0,0 +1,23 @@
# Generated by Django 2.2.16 on 2020-09-06 19:17
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('note', '0003_replace_null_by_blank'),
]
operations = [
migrations.AlterField(
model_name='note',
name='inactivity_reason',
field=models.CharField(blank=True, choices=[('manual', 'The user blocked his/her note manually, eg. when he/she left the school for holidays. It can be reactivated at any time.'), ('forced', "The note is blocked by the the BDE and can't be manually reactivated.")], default='', max_length=255),
),
migrations.AlterField(
model_name='transaction',
name='invalidity_reason',
field=models.CharField(blank=True, default='', max_length=255, verbose_name='invalidity reason'),
),
]

View File

@ -70,8 +70,8 @@ class Note(PolymorphicModel):
"It can be reactivated at any time.")), "It can be reactivated at any time.")),
('forced', _("The note is blocked by the the BDE and can't be manually reactivated.")), ('forced', _("The note is blocked by the the BDE and can't be manually reactivated.")),
], ],
null=True, blank=True,
default=None, default="",
) )
class Meta: class Meta:

View File

@ -90,6 +90,9 @@ class TransactionTemplate(models.Model):
def get_absolute_url(self): def get_absolute_url(self):
return reverse('note:template_update', args=(self.pk,)) return reverse('note:template_update', args=(self.pk,))
def __str__(self):
return self.name
class Transaction(PolymorphicModel): class Transaction(PolymorphicModel):
""" """
@ -150,8 +153,7 @@ class Transaction(PolymorphicModel):
invalidity_reason = models.CharField( invalidity_reason = models.CharField(
verbose_name=_('invalidity reason'), verbose_name=_('invalidity reason'),
max_length=255, max_length=255,
default=None, default='',
null=True,
blank=True, blank=True,
) )
@ -195,7 +197,7 @@ class Transaction(PolymorphicModel):
# When a transaction is declared valid, we ensure that the invalidity reason is null, if it was # When a transaction is declared valid, we ensure that the invalidity reason is null, if it was
# previously invalid # previously invalid
self.invalidity_reason = None self.invalidity_reason = ""
if source_balance > 9223372036854775807 or source_balance < -9223372036854775808\ if source_balance > 9223372036854775807 or source_balance < -9223372036854775808\
or dest_balance > 9223372036854775807 or dest_balance < -9223372036854775808: or dest_balance > 9223372036854775807 or dest_balance < -9223372036854775808:

View File

@ -109,6 +109,9 @@ class Invoice(models.Model):
verbose_name = _("invoice") verbose_name = _("invoice")
verbose_name_plural = _("invoices") verbose_name_plural = _("invoices")
def __str__(self):
return _("Invoice #{id}").format(id=self.id)
class Product(models.Model): class Product(models.Model):
""" """
@ -151,6 +154,9 @@ class Product(models.Model):
verbose_name = _("product") verbose_name = _("product")
verbose_name_plural = _("products") verbose_name_plural = _("products")
def __str__(self):
return f"{self.designation} ({self.invoice})"
class RemittanceType(models.Model): class RemittanceType(models.Model):
""" """
@ -256,6 +262,9 @@ class SpecialTransactionProxy(models.Model):
verbose_name = _("special transaction proxy") verbose_name = _("special transaction proxy")
verbose_name_plural = _("special transaction proxies") verbose_name_plural = _("special transaction proxies")
def __str__(self):
return str(self.transaction)
class SogeCredit(models.Model): class SogeCredit(models.Model):
""" """
@ -354,3 +363,6 @@ class SogeCredit(models.Model):
class Meta: class Meta:
verbose_name = _("Credit from the Société générale") verbose_name = _("Credit from the Société générale")
verbose_name_plural = _("Credits from the Société générale") verbose_name_plural = _("Credits from the Société générale")
def __str__(self):
return _("Soge credit for {user}").format(user=str(self.user))

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: 2020-09-06 20:16+0200\n" "POT-Creation-Date: 2020-09-07 11:14+0200\n"
"PO-Revision-Date: 2020-09-03 23:47+0200\n" "PO-Revision-Date: 2020-09-03 23:47+0200\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: \n" "Language-Team: \n"
@ -27,33 +27,33 @@ msgstr "Veranstaltung"
msgid "The end date must be after the start date." msgid "The end date must be after the start date."
msgstr "Das Abschlussdatum muss nach das Anfangsdatum sein." msgstr "Das Abschlussdatum muss nach das Anfangsdatum sein."
#: apps/activity/forms.py:76 apps/activity/models.py:262 #: apps/activity/forms.py:76 apps/activity/models.py:268
msgid "You can't invite someone once the activity is started." msgid "You can't invite someone once the activity is started."
msgstr "" msgstr ""
"Sie dürfen nicht jemandem einladen wenn die Veranstaltung angefangen hat." "Sie dürfen nicht jemandem einladen wenn die Veranstaltung angefangen hat."
#: apps/activity/forms.py:79 apps/activity/models.py:265 #: apps/activity/forms.py:79 apps/activity/models.py:271
msgid "This activity is not validated yet." msgid "This activity is not validated yet."
msgstr "Diese Veranstaltung ist noch nicht bestätigt." msgstr "Diese Veranstaltung ist noch nicht bestätigt."
#: apps/activity/forms.py:89 apps/activity/models.py:273 #: apps/activity/forms.py:89 apps/activity/models.py:279
msgid "This person has been already invited 5 times this year." msgid "This person has been already invited 5 times this year."
msgstr "Diese Person wurde schon 5 mal dieses Jahr eingeladen." msgstr "Diese Person wurde schon 5 mal dieses Jahr eingeladen."
#: apps/activity/forms.py:93 apps/activity/models.py:277 #: apps/activity/forms.py:93 apps/activity/models.py:283
msgid "This person is already invited." msgid "This person is already invited."
msgstr "Diese Person wurde schon eingeladen." msgstr "Diese Person wurde schon eingeladen."
#: apps/activity/forms.py:97 apps/activity/models.py:281 #: apps/activity/forms.py:97 apps/activity/models.py:287
msgid "You can't invite more than 3 people to this activity." msgid "You can't invite more than 3 people to this activity."
msgstr "Sie dürfen höchstens 3 Leute zu dieser Veranstaltung einladen." msgstr "Sie dürfen höchstens 3 Leute zu dieser Veranstaltung einladen."
#: apps/activity/models.py:28 apps/activity/models.py:63 #: apps/activity/models.py:28 apps/activity/models.py:63
#: apps/member/models.py:200 #: apps/member/models.py:199
#: apps/member/templates/member/includes/club_info.html:4 #: apps/member/templates/member/includes/club_info.html:4
#: apps/member/templates/member/includes/profile_info.html:4 #: apps/member/templates/member/includes/profile_info.html:4
#: apps/note/models/notes.py:253 apps/note/models/transactions.py:26 #: apps/note/models/notes.py:253 apps/note/models/transactions.py:26
#: apps/note/models/transactions.py:46 apps/note/models/transactions.py:302 #: apps/note/models/transactions.py:46 apps/note/models/transactions.py:296
#: apps/permission/models.py:329 #: apps/permission/models.py:329
#: apps/registration/templates/registration/future_profile_detail.html:16 #: apps/registration/templates/registration/future_profile_detail.html:16
#: apps/wei/models.py:66 apps/wei/models.py:118 #: apps/wei/models.py:66 apps/wei/models.py:118
@ -110,8 +110,8 @@ msgstr "Wo findet die Veranstaltung statt ? (z.B Kfet)"
msgid "type" msgid "type"
msgstr "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:304
#: apps/note/models/notes.py:144 apps/treasury/models.py:267 #: apps/note/models/notes.py:144 apps/treasury/models.py:276
#: apps/treasury/templates/treasury/sogecredit_detail.html:14 #: apps/treasury/templates/treasury/sogecredit_detail.html:14
#: apps/wei/models.py:160 apps/wei/templates/wei/survey.html:15 #: apps/wei/models.py:160 apps/wei/templates/wei/survey.html:15
msgid "user" msgid "user"
@ -149,7 +149,7 @@ msgstr "Abschlussdatum"
#: apps/activity/models.py:118 #: apps/activity/models.py:118
#: apps/activity/templates/activity/includes/activity_info.html:50 #: apps/activity/templates/activity/includes/activity_info.html:50
#: apps/note/models/transactions.py:146 #: apps/note/models/transactions.py:149
msgid "valid" msgid "valid"
msgstr "gültig" msgstr "gültig"
@ -181,42 +181,53 @@ msgstr "Eintritt"
msgid "entries" msgid "entries"
msgstr "Eintritte" msgstr "Eintritte"
#: apps/activity/models.py:195 #: apps/activity/models.py:192
#, python-brace-format
msgid "Entry for {guest}, invited by {note} to the activity {activity}"
msgstr "Eintritt für {guest}, von {note} zur Vanstaltung {activity} eingeladen"
#: apps/activity/models.py:194
#, fuzzy, python-brace-format
#| msgid "Entry for activity \"{}\""
msgid "Entry for {note} to the activity {activity}"
msgstr "Eintritt zur Veranstaltung \"{}\""
#: apps/activity/models.py:201
msgid "Already entered on " msgid "Already entered on "
msgstr "Schon eingetretten " msgstr "Schon eingetretten "
#: apps/activity/models.py:195 apps/activity/tables.py:54 #: apps/activity/models.py:201 apps/activity/tables.py:54
msgid "{:%Y-%m-%d %H:%M:%S}" msgid "{:%Y-%m-%d %H:%M:%S}"
msgstr "{:%Y-%m-%d %H:%M:%S}" msgstr "{:%Y-%m-%d %H:%M:%S}"
#: apps/activity/models.py:203 #: apps/activity/models.py:209
msgid "The balance is negative." msgid "The balance is negative."
msgstr "Kontostand ist im Rot." msgstr "Kontostand ist im Rot."
#: apps/activity/models.py:233 #: apps/activity/models.py:239
msgid "last name" msgid "last name"
msgstr "Nachname" msgstr "Nachname"
#: apps/activity/models.py:238 #: apps/activity/models.py:244
#: apps/member/templates/member/includes/profile_info.html:4 #: apps/member/templates/member/includes/profile_info.html:4
#: apps/registration/templates/registration/future_profile_detail.html:16 #: apps/registration/templates/registration/future_profile_detail.html:16
#: apps/wei/templates/wei/weimembership_form.html:14 #: apps/wei/templates/wei/weimembership_form.html:14
msgid "first name" msgid "first name"
msgstr "Vorname" msgstr "Vorname"
#: apps/activity/models.py:245 #: apps/activity/models.py:251
msgid "inviter" msgid "inviter"
msgstr "Einlader" msgstr "Einlader"
#: apps/activity/models.py:289 #: apps/activity/models.py:295
msgid "guest" msgid "guest"
msgstr "Gast" msgstr "Gast"
#: apps/activity/models.py:290 #: apps/activity/models.py:296
msgid "guests" msgid "guests"
msgstr "Gäste" msgstr "Gäste"
#: apps/activity/models.py:302 #: apps/activity/models.py:308
msgid "Invitation" msgid "Invitation"
msgstr "Einladung" msgstr "Einladung"
@ -240,7 +251,7 @@ msgstr "Eingetreten um "
msgid "remove" msgid "remove"
msgstr "entfernen" msgstr "entfernen"
#: apps/activity/tables.py:80 apps/note/forms.py:68 apps/treasury/models.py:186 #: apps/activity/tables.py:80 apps/note/forms.py:68 apps/treasury/models.py:192
msgid "Type" msgid "Type"
msgstr "Type" msgstr "Type"
@ -270,7 +281,7 @@ msgid "Guests list"
msgstr "Gastliste" msgstr "Gastliste"
#: apps/activity/templates/activity/activity_entry.html:14 #: apps/activity/templates/activity/activity_entry.html:14
#: apps/note/models/transactions.py:259 #: apps/note/models/transactions.py:253
#: apps/note/templates/note/transaction_form.html:16 #: apps/note/templates/note/transaction_form.html:16
#: apps/note/templates/note/transaction_form.html:148 #: apps/note/templates/note/transaction_form.html:148
#: note_kfet/templates/base.html:70 #: note_kfet/templates/base.html:70
@ -278,13 +289,13 @@ msgid "Transfer"
msgstr "Überweisen" msgstr "Überweisen"
#: apps/activity/templates/activity/activity_entry.html:18 #: apps/activity/templates/activity/activity_entry.html:18
#: apps/note/models/transactions.py:318 #: apps/note/models/transactions.py:312
#: apps/note/templates/note/transaction_form.html:21 #: apps/note/templates/note/transaction_form.html:21
msgid "Credit" msgid "Credit"
msgstr "Kredit" msgstr "Kredit"
#: apps/activity/templates/activity/activity_entry.html:21 #: apps/activity/templates/activity/activity_entry.html:21
#: apps/note/models/transactions.py:318 #: apps/note/models/transactions.py:312
#: apps/note/templates/note/transaction_form.html:25 #: apps/note/templates/note/transaction_form.html:25
msgid "Debit" msgid "Debit"
msgstr "Soll" msgstr "Soll"
@ -356,7 +367,7 @@ msgid "validate"
msgstr "validate" msgstr "validate"
#: apps/activity/templates/activity/includes/activity_info.html:71 #: apps/activity/templates/activity/includes/activity_info.html:71
#: apps/logs/models.py:62 apps/note/tables.py:195 #: apps/logs/models.py:64 apps/note/tables.py:195
msgid "edit" msgid "edit"
msgstr "bearbeiten" msgstr "bearbeiten"
@ -420,59 +431,64 @@ msgstr "Model"
msgid "identifier" msgid "identifier"
msgstr "Kennzeichnung" msgstr "Kennzeichnung"
#: apps/logs/models.py:48 #: apps/logs/models.py:49
msgid "previous data" msgid "previous data"
msgstr "ehemalige Daten" msgstr "ehemalige Daten"
#: apps/logs/models.py:53 #: apps/logs/models.py:55
msgid "new data" msgid "new data"
msgstr "neue Daten" msgstr "neue Daten"
#: apps/logs/models.py:61 #: apps/logs/models.py:63
msgid "create" msgid "create"
msgstr "schaffen" msgstr "schaffen"
#: apps/logs/models.py:63 apps/note/tables.py:165 apps/note/tables.py:201 #: apps/logs/models.py:65 apps/note/tables.py:165 apps/note/tables.py:201
#: apps/permission/models.py:127 apps/treasury/tables.py:38 #: apps/permission/models.py:127 apps/treasury/tables.py:38
#: apps/wei/tables.py:75 #: apps/wei/tables.py:75
msgid "delete" msgid "delete"
msgstr "entfernen" msgstr "entfernen"
#: apps/logs/models.py:66 #: apps/logs/models.py:68
msgid "action" msgid "action"
msgstr "Aktion" msgstr "Aktion"
#: apps/logs/models.py:74 #: apps/logs/models.py:76
msgid "timestamp" msgid "timestamp"
msgstr "Zeitstempel" msgstr "Zeitstempel"
#: apps/logs/models.py:78 #: apps/logs/models.py:80
msgid "Logs cannot be destroyed." msgid "Logs cannot be destroyed."
msgstr "Logs können nicht entfernen sein." msgstr "Logs können nicht entfernen sein."
#: apps/logs/models.py:81 #: apps/logs/models.py:83
msgid "changelog" msgid "changelog"
msgstr "Changelog" msgstr "Changelog"
#: apps/logs/models.py:82 #: apps/logs/models.py:84
msgid "changelogs" msgid "changelogs"
msgstr "Changelogs" msgstr "Changelogs"
#: apps/member/admin.py:50 apps/member/models.py:227 #: apps/logs/models.py:87
#, python-brace-format
msgid "Changelog of type \"{action}\" for model {model} at {timestamp}"
msgstr "Changelog \"{action}\" für Model {model} an {timestamp}"
#: apps/member/admin.py:50 apps/member/models.py:226
#: apps/member/templates/member/includes/club_info.html:34 #: apps/member/templates/member/includes/club_info.html:34
msgid "membership fee (paid students)" msgid "membership fee (paid students)"
msgstr "Mitgliedschaftpreis (bezahlte Studenten)" msgstr "Mitgliedschaftpreis (bezahlte Studenten)"
#: apps/member/admin.py:51 apps/member/models.py:232 #: apps/member/admin.py:51 apps/member/models.py:231
#: apps/member/templates/member/includes/club_info.html:37 #: apps/member/templates/member/includes/club_info.html:37
msgid "membership fee (unpaid students)" msgid "membership fee (unpaid students)"
msgstr "Mitgliedschaftpreis (unbezahlte Studenten)" msgstr "Mitgliedschaftpreis (unbezahlte Studenten)"
#: apps/member/admin.py:65 apps/member/models.py:316 #: apps/member/admin.py:65 apps/member/models.py:315
msgid "roles" msgid "roles"
msgstr "Rollen" msgstr "Rollen"
#: apps/member/admin.py:66 apps/member/models.py:330 #: apps/member/admin.py:66 apps/member/models.py:329
msgid "fee" msgid "fee"
msgstr "Preis" msgstr "Preis"
@ -666,19 +682,19 @@ msgstr "bezahlt"
msgid "Tells if the user receive a salary." msgid "Tells if the user receive a salary."
msgstr "User ist bezahlt." msgstr "User ist bezahlt."
#: apps/member/models.py:101 apps/treasury/tables.py:146 #: apps/member/models.py:100 apps/treasury/tables.py:146
msgid "No" msgid "No"
msgstr "Nein" msgstr "Nein"
#: apps/member/models.py:102 #: apps/member/models.py:101
msgid "Yes (receive them in french)" msgid "Yes (receive them in french)"
msgstr "Ja (auf Fränzosich)" msgstr "Ja (auf Fränzosich)"
#: apps/member/models.py:103 #: apps/member/models.py:102
msgid "Yes (receive them in english)" msgid "Yes (receive them in english)"
msgstr "Ja (auf English)" msgstr "Ja (auf English)"
#: apps/member/models.py:105 #: apps/member/models.py:104
msgid "" msgid ""
"Register on the mailing list to stay informed of the events of the campus (1 " "Register on the mailing list to stay informed of the events of the campus (1 "
"mail/week)" "mail/week)"
@ -686,7 +702,7 @@ msgstr ""
"Melden Sie sich auf der Mailingliste an, um über die Ereignisse des Campus " "Melden Sie sich auf der Mailingliste an, um über die Ereignisse des Campus "
"informiert zu bleiben (1 Mail / Woche)" "informiert zu bleiben (1 Mail / Woche)"
#: apps/member/models.py:110 #: apps/member/models.py:109
msgid "" msgid ""
"Register on the mailing list to stay informed of the sport events of the " "Register on the mailing list to stay informed of the sport events of the "
"campus (1 mail/week)" "campus (1 mail/week)"
@ -694,7 +710,7 @@ msgstr ""
"Melden Sie sich auf der Mailingliste an, um über die Sportereignisse des " "Melden Sie sich auf der Mailingliste an, um über die Sportereignisse des "
"Campus informiert zu bleiben (1 Mail / Woche)" "Campus informiert zu bleiben (1 Mail / Woche)"
#: apps/member/models.py:115 #: apps/member/models.py:114
msgid "" msgid ""
"Register on the mailing list to stay informed of the art events of the " "Register on the mailing list to stay informed of the art events of the "
"campus (1 mail/week)" "campus (1 mail/week)"
@ -702,31 +718,31 @@ msgstr ""
"Melden Sie sich auf der Mailingliste an, um über die Kunstereignisse des " "Melden Sie sich auf der Mailingliste an, um über die Kunstereignisse des "
"Campus informiert zu bleiben (1 Mail / Woche)" "Campus informiert zu bleiben (1 Mail / Woche)"
#: apps/member/models.py:119 #: apps/member/models.py:118
msgid "report frequency (in days)" msgid "report frequency (in days)"
msgstr "Bericht Frequenz (Tagen)" msgstr "Bericht Frequenz (Tagen)"
#: apps/member/models.py:124 #: apps/member/models.py:123
msgid "last report date" msgid "last report date"
msgstr "letzen Bericht Datum" msgstr "letzen Bericht Datum"
#: apps/member/models.py:129 #: apps/member/models.py:128
msgid "email confirmed" msgid "email confirmed"
msgstr "email bestätigt" msgstr "email bestätigt"
#: apps/member/models.py:134 #: apps/member/models.py:133
msgid "registration valid" msgid "registration valid"
msgstr "Anmeldung gültig" msgstr "Anmeldung gültig"
#: apps/member/models.py:163 apps/member/models.py:164 #: apps/member/models.py:162 apps/member/models.py:163
msgid "user profile" msgid "user profile"
msgstr "Userprofile" msgstr "Userprofile"
#: apps/member/models.py:174 #: apps/member/models.py:173
msgid "Activate your Note Kfet account" msgid "Activate your Note Kfet account"
msgstr "Ihre Note Kfet Konto bestätigen" msgstr "Ihre Note Kfet Konto bestätigen"
#: apps/member/models.py:205 #: apps/member/models.py:204
#: apps/member/templates/member/includes/club_info.html:55 #: apps/member/templates/member/includes/club_info.html:55
#: apps/member/templates/member/includes/profile_info.html:31 #: apps/member/templates/member/includes/profile_info.html:31
#: apps/registration/templates/registration/future_profile_detail.html:22 #: apps/registration/templates/registration/future_profile_detail.html:22
@ -735,88 +751,88 @@ msgstr "Ihre Note Kfet Konto bestätigen"
msgid "email" msgid "email"
msgstr "Email" msgstr "Email"
#: apps/member/models.py:212 #: apps/member/models.py:211
msgid "parent club" msgid "parent club"
msgstr "Urclub" msgstr "Urclub"
#: apps/member/models.py:221 #: apps/member/models.py:220
msgid "require memberships" msgid "require memberships"
msgstr "erfordern Mitgliedschaft" msgstr "erfordern Mitgliedschaft"
#: apps/member/models.py:222 #: apps/member/models.py:221
msgid "Uncheck if this club don't require memberships." msgid "Uncheck if this club don't require memberships."
msgstr "" msgstr ""
"Deaktivieren Sie diese Option, wenn für diesen Club keine Mitgliedschaft " "Deaktivieren Sie diese Option, wenn für diesen Club keine Mitgliedschaft "
"erforderlich ist." "erforderlich ist."
#: apps/member/models.py:238 #: apps/member/models.py:237
#: apps/member/templates/member/includes/club_info.html:26 #: apps/member/templates/member/includes/club_info.html:26
msgid "membership duration" msgid "membership duration"
msgstr "Mitgliedscahftzeit" msgstr "Mitgliedscahftzeit"
#: apps/member/models.py:239 #: apps/member/models.py:238
msgid "The longest time (in days) a membership can last (NULL = infinite)." msgid "The longest time (in days) a membership can last (NULL = infinite)."
msgstr "Wie lang am höchsten eine Mitgliedschaft dauern kann." msgstr "Wie lang am höchsten eine Mitgliedschaft dauern kann."
#: apps/member/models.py:246 #: apps/member/models.py:245
#: apps/member/templates/member/includes/club_info.html:16 #: apps/member/templates/member/includes/club_info.html:16
msgid "membership start" msgid "membership start"
msgstr "Mitgliedschaftanfangsdatum" msgstr "Mitgliedschaftanfangsdatum"
#: apps/member/models.py:247 #: apps/member/models.py:246
msgid "Date from which the members can renew their membership." msgid "Date from which the members can renew their membership."
msgstr "Ab wann kann man sein Mitgliedschaft erneuern." msgstr "Ab wann kann man sein Mitgliedschaft erneuern."
#: apps/member/models.py:253 #: apps/member/models.py:252
#: apps/member/templates/member/includes/club_info.html:21 #: apps/member/templates/member/includes/club_info.html:21
msgid "membership end" msgid "membership end"
msgstr "Mitgliedschaftenddatum" msgstr "Mitgliedschaftenddatum"
#: apps/member/models.py:254 #: apps/member/models.py:253
msgid "Maximal date of a membership, after which members must renew it." msgid "Maximal date of a membership, after which members must renew it."
msgstr "" msgstr ""
"Maximales Datum einer Mitgliedschaft, nach dem Mitglieder es erneuern müssen." "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:285 apps/member/models.py:310
#: apps/note/models/notes.py:185 #: apps/note/models/notes.py:185
msgid "club" msgid "club"
msgstr "Club" msgstr "Club"
#: apps/member/models.py:287 #: apps/member/models.py:286
msgid "clubs" msgid "clubs"
msgstr "Clubs" msgstr "Clubs"
#: apps/member/models.py:321 #: apps/member/models.py:320
msgid "membership starts on" msgid "membership starts on"
msgstr "Mitgliedschaft fängt an" msgstr "Mitgliedschaft fängt an"
#: apps/member/models.py:325 #: apps/member/models.py:324
msgid "membership ends on" msgid "membership ends on"
msgstr "Mitgliedschaft endet am" msgstr "Mitgliedschaft endet am"
#: apps/member/models.py:420 #: apps/member/models.py:419
#, python-brace-format #, python-brace-format
msgid "The role {role} does not apply to the club {club}." msgid "The role {role} does not apply to the club {club}."
msgstr "Die Rolle {role} ist nicht erlaubt für das Club {club}." msgstr "Die Rolle {role} ist nicht erlaubt für das Club {club}."
#: apps/member/models.py:429 apps/member/views.py:628 #: apps/member/models.py:428 apps/member/views.py:628
msgid "User is already a member of the club" msgid "User is already a member of the club"
msgstr "User ist schon ein Mitglied dieser club" msgstr "User ist schon ein Mitglied dieser club"
#: apps/member/models.py:441 #: apps/member/models.py:440
msgid "User is not a member of the parent club" msgid "User is not a member of the parent club"
msgstr "User ist noch nicht Mitglied des Urclubs" msgstr "User ist noch nicht Mitglied des Urclubs"
#: apps/member/models.py:489 #: apps/member/models.py:488
#, python-brace-format #, python-brace-format
msgid "Membership of {user} for the club {club}" msgid "Membership of {user} for the club {club}"
msgstr "Mitgliedschaft von {user} für das Club {club}" msgstr "Mitgliedschaft von {user} für das Club {club}"
#: apps/member/models.py:492 apps/note/models/transactions.py:359 #: apps/member/models.py:491 apps/note/models/transactions.py:353
msgid "membership" msgid "membership"
msgstr "Mitgliedschaft" msgstr "Mitgliedschaft"
#: apps/member/models.py:493 #: apps/member/models.py:492
msgid "memberships" msgid "memberships"
msgstr "Mitgliedschaften" msgstr "Mitgliedschaften"
@ -1116,22 +1132,22 @@ msgstr "Rollen in diesen Club bearbeiten"
msgid "Members of the club" msgid "Members of the club"
msgstr "Mitlglieder dieses Club" msgstr "Mitlglieder dieses Club"
#: apps/note/admin.py:129 apps/note/models/transactions.py:106 #: apps/note/admin.py:129 apps/note/models/transactions.py:109
msgid "source" msgid "source"
msgstr "Sender" msgstr "Sender"
#: apps/note/admin.py:137 apps/note/admin.py:205 #: apps/note/admin.py:137 apps/note/admin.py:205
#: apps/note/models/transactions.py:56 apps/note/models/transactions.py:119 #: apps/note/models/transactions.py:56 apps/note/models/transactions.py:122
msgid "destination" msgid "destination"
msgstr "Empfänger" msgstr "Empfänger"
#: apps/note/admin.py:210 apps/note/models/transactions.py:60 #: apps/note/admin.py:210 apps/note/models/transactions.py:60
#: apps/note/models/transactions.py:137 #: apps/note/models/transactions.py:140
msgid "amount" msgid "amount"
msgstr "Anzahl" msgstr "Anzahl"
#: apps/note/api/serializers.py:183 apps/note/api/serializers.py:189 #: apps/note/api/serializers.py:183 apps/note/api/serializers.py:189
#: apps/note/models/transactions.py:224 #: apps/note/models/transactions.py:226
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 "
"is not active." "is not active."
@ -1191,7 +1207,7 @@ msgstr "letztes mal im Rot"
msgid "display image" msgid "display image"
msgstr "Bild" msgstr "Bild"
#: apps/note/models/notes.py:54 apps/note/models/transactions.py:129 #: apps/note/models/notes.py:54 apps/note/models/transactions.py:132
msgid "created at" msgid "created at"
msgstr "erschafft am" msgstr "erschafft am"
@ -1316,33 +1332,33 @@ msgstr "Transaktionsvorlage"
msgid "transaction templates" msgid "transaction templates"
msgstr "Transaktionsvorlagen" msgstr "Transaktionsvorlagen"
#: apps/note/models/transactions.py:112 apps/note/models/transactions.py:125 #: apps/note/models/transactions.py:115 apps/note/models/transactions.py:128
#: apps/note/tables.py:34 apps/note/tables.py:44 #: apps/note/tables.py:34 apps/note/tables.py:44
msgid "used alias" msgid "used alias"
msgstr "benutzte Aliasen" msgstr "benutzte Aliasen"
#: apps/note/models/transactions.py:133 #: apps/note/models/transactions.py:136
msgid "quantity" msgid "quantity"
msgstr "Anzahl" msgstr "Anzahl"
#: apps/note/models/transactions.py:141 #: apps/note/models/transactions.py:144
msgid "reason" msgid "reason"
msgstr "Grund" msgstr "Grund"
#: apps/note/models/transactions.py:151 apps/note/tables.py:140 #: apps/note/models/transactions.py:154 apps/note/tables.py:140
msgid "invalidity reason" msgid "invalidity reason"
msgstr "Ungültigkeit Grund" msgstr "Ungültigkeit Grund"
#: apps/note/models/transactions.py:159 #: apps/note/models/transactions.py:161
msgid "transaction" msgid "transaction"
msgstr "Transaktion" msgstr "Transaktion"
#: apps/note/models/transactions.py:160 #: apps/note/models/transactions.py:162
#: apps/treasury/templates/treasury/sogecredit_detail.html:22 #: apps/treasury/templates/treasury/sogecredit_detail.html:22
msgid "transactions" msgid "transactions"
msgstr "Transaktionen" msgstr "Transaktionen"
#: apps/note/models/transactions.py:182 #: apps/note/models/transactions.py:184
#, python-brace-format #, python-brace-format
msgid "" msgid ""
"You can't update the {field} on a Transaction. Please invalidate it and " "You can't update the {field} on a Transaction. Please invalidate it and "
@ -1351,7 +1367,7 @@ msgstr ""
"Sie können das {field} einer Transaktion nicht aktualisieren. Bitte machen " "Sie können das {field} einer Transaktion nicht aktualisieren. Bitte machen "
"Sie es ungültig und erstellen Sie eine andere." "Sie es ungültig und erstellen Sie eine andere."
#: apps/note/models/transactions.py:202 #: apps/note/models/transactions.py:204
msgid "" msgid ""
"The note balances must be between - 92 233 720 368 547 758.08 € and 92 233 " "The note balances must be between - 92 233 720 368 547 758.08 € and 92 233 "
"720 368 547 758.07 €." "720 368 547 758.07 €."
@ -1359,34 +1375,34 @@ msgstr ""
"Die Notenguthaben müssen zwischen - 92 233 720 368 547 758,08 € und 92 233 " "Die Notenguthaben müssen zwischen - 92 233 720 368 547 758,08 € und 92 233 "
"720 368 547 758,07 € liegen." "720 368 547 758,07 € liegen."
#: apps/note/models/transactions.py:279 #: apps/note/models/transactions.py:273
msgid "" msgid ""
"The destination of this transaction must equal to the destination of the " "The destination of this transaction must equal to the destination of the "
"template." "template."
msgstr "" msgstr ""
"Der Empfänger dieser Transaktion muss dem Empfänger der Vorlage entsprechen." "Der Empfänger dieser Transaktion muss dem Empfänger der Vorlage entsprechen."
#: apps/note/models/transactions.py:288 #: apps/note/models/transactions.py:282
msgid "Template" msgid "Template"
msgstr "Vorlage" msgstr "Vorlage"
#: apps/note/models/transactions.py:291 #: apps/note/models/transactions.py:285
msgid "recurrent transaction" msgid "recurrent transaction"
msgstr "wiederkehrende Transaktion" msgstr "wiederkehrende Transaktion"
#: apps/note/models/transactions.py:292 #: apps/note/models/transactions.py:286
msgid "recurrent transactions" msgid "recurrent transactions"
msgstr "wiederkehrende Transaktionen" msgstr "wiederkehrende Transaktionen"
#: apps/note/models/transactions.py:307 #: apps/note/models/transactions.py:301
msgid "first_name" msgid "first_name"
msgstr "Vorname" msgstr "Vorname"
#: apps/note/models/transactions.py:312 #: apps/note/models/transactions.py:306
msgid "bank" msgid "bank"
msgstr "Bank" msgstr "Bank"
#: apps/note/models/transactions.py:329 #: apps/note/models/transactions.py:323
msgid "" msgid ""
"A special transaction is only possible between a Note associated to a " "A special transaction is only possible between a Note associated to a "
"payment method and a User or a Club" "payment method and a User or a Club"
@ -1394,19 +1410,19 @@ msgstr ""
"Eine Sondertransaktion ist nur zwischen einer Note, die einer " "Eine Sondertransaktion ist nur zwischen einer Note, die einer "
"Zahlungsmethode zugeordnet ist, und einem User oder einem Club möglich" "Zahlungsmethode zugeordnet ist, und einem User oder einem Club möglich"
#: apps/note/models/transactions.py:337 #: apps/note/models/transactions.py:331
msgid "Special transaction" msgid "Special transaction"
msgstr "Sondertransaktion" msgstr "Sondertransaktion"
#: apps/note/models/transactions.py:338 #: apps/note/models/transactions.py:332
msgid "Special transactions" msgid "Special transactions"
msgstr "Sondertranskationen" msgstr "Sondertranskationen"
#: apps/note/models/transactions.py:354 #: apps/note/models/transactions.py:348
msgid "membership transaction" msgid "membership transaction"
msgstr "Mitgliedschafttransaktion" msgstr "Mitgliedschafttransaktion"
#: apps/note/models/transactions.py:355 apps/treasury/models.py:273 #: apps/note/models/transactions.py:349 apps/treasury/models.py:282
msgid "membership transactions" msgid "membership transactions"
msgstr "Mitgliedschaftttransaktionen" msgstr "Mitgliedschaftttransaktionen"
@ -1678,7 +1694,7 @@ msgstr ""
"Sie haben nicht die Berechtigung, das Feld {field} in dieser Instanz von " "Sie haben nicht die Berechtigung, das Feld {field} in dieser Instanz von "
"Modell {app_label} zu ändern. {model_name}" "Modell {app_label} zu ändern. {model_name}"
#: apps/permission/signals.py:73 apps/permission/views.py:89 #: apps/permission/signals.py:73 apps/permission/views.py:101
#, python-brace-format #, python-brace-format
msgid "" msgid ""
"You don't have the permission to add an instance of model {app_label}." "You don't have the permission to add an instance of model {app_label}."
@ -1736,7 +1752,7 @@ msgstr "Abfrage:"
msgid "No associated permission" msgid "No associated permission"
msgstr "Keine zugehörige Berechtigung" msgstr "Keine zugehörige Berechtigung"
#: apps/permission/views.py:56 #: apps/permission/views.py:68
#, python-brace-format #, python-brace-format
msgid "" msgid ""
"You don't have the permission to update this instance of the model " "You don't have the permission to update this instance of the model "
@ -1746,7 +1762,7 @@ msgstr ""
"diesen Parametern zu aktualisieren. Bitte korrigieren Sie Ihre Daten und " "diesen Parametern zu aktualisieren. Bitte korrigieren Sie Ihre Daten und "
"versuchen Sie es erneut." "versuchen Sie es erneut."
#: apps/permission/views.py:60 #: apps/permission/views.py:72
#, python-brace-format #, python-brace-format
msgid "" msgid ""
"You don't have the permission to create an instance of the model \"{model}\" " "You don't have the permission to create an instance of the model \"{model}\" "
@ -1756,11 +1772,11 @@ msgstr ""
"diesen Parametern zu erstellen. Bitte korrigieren Sie Ihre Daten und " "diesen Parametern zu erstellen. Bitte korrigieren Sie Ihre Daten und "
"versuchen Sie es erneut." "versuchen Sie es erneut."
#: apps/permission/views.py:96 note_kfet/templates/base.html:106 #: apps/permission/views.py:108 note_kfet/templates/base.html:106
msgid "Rights" msgid "Rights"
msgstr "Rechten" msgstr "Rechten"
#: apps/permission/views.py:101 #: apps/permission/views.py:113
msgid "All rights" msgid "All rights"
msgstr "Alle Rechten" msgstr "Alle Rechten"
@ -1967,7 +1983,7 @@ msgstr "Überweisung ist bereits geschlossen."
msgid "You can't change the type of the remittance." msgid "You can't change the type of the remittance."
msgstr "Sie können die Art der Überweisung nicht ändern." msgstr "Sie können die Art der Überweisung nicht ändern."
#: apps/treasury/forms.py:123 apps/treasury/models.py:252 #: apps/treasury/forms.py:123 apps/treasury/models.py:258
#: apps/treasury/tables.py:97 apps/treasury/tables.py:105 #: apps/treasury/tables.py:97 apps/treasury/tables.py:105
#: apps/treasury/templates/treasury/invoice_list.html:16 #: apps/treasury/templates/treasury/invoice_list.html:16
#: apps/treasury/templates/treasury/remittance_list.html:16 #: apps/treasury/templates/treasury/remittance_list.html:16
@ -1999,7 +2015,7 @@ msgstr "Beschreibung"
msgid "Address" msgid "Address"
msgstr "Adresse" msgstr "Adresse"
#: apps/treasury/models.py:60 apps/treasury/models.py:180 #: apps/treasury/models.py:60 apps/treasury/models.py:186
msgid "Date" msgid "Date"
msgstr "Datum" msgstr "Datum"
@ -2019,7 +2035,7 @@ msgstr "Eine Rechnung kann nicht bearbeitet werden, wenn sie gesperrt ist."
msgid "tex source" msgid "tex source"
msgstr "Tex Quelle" msgstr "Tex Quelle"
#: apps/treasury/models.py:109 apps/treasury/models.py:122 #: apps/treasury/models.py:109 apps/treasury/models.py:125
msgid "invoice" msgid "invoice"
msgstr "Rechnung" msgstr "Rechnung"
@ -2027,67 +2043,73 @@ msgstr "Rechnung"
msgid "invoices" msgid "invoices"
msgstr "Rechnungen" msgstr "Rechnungen"
#: apps/treasury/models.py:127 #: apps/treasury/models.py:113
#, fuzzy, python-brace-format
#| msgid "Invoice #{:d}"
msgid "Invoice #{id}"
msgstr "Rechnung #{:d}"
#: apps/treasury/models.py:130
msgid "Designation" msgid "Designation"
msgstr "Bezeichnung" msgstr "Bezeichnung"
#: apps/treasury/models.py:131 #: apps/treasury/models.py:134
msgid "Quantity" msgid "Quantity"
msgstr "Qualität" msgstr "Qualität"
#: apps/treasury/models.py:135 #: apps/treasury/models.py:138
msgid "Unit price" msgid "Unit price"
msgstr "Einzelpreis" msgstr "Einzelpreis"
#: apps/treasury/models.py:151 #: apps/treasury/models.py:154
msgid "product" msgid "product"
msgstr "Produkt" msgstr "Produkt"
#: apps/treasury/models.py:152 #: apps/treasury/models.py:155
msgid "products" msgid "products"
msgstr "Produkten" msgstr "Produkten"
#: apps/treasury/models.py:169 #: apps/treasury/models.py:175
msgid "remittance type" msgid "remittance type"
msgstr "Überweisungstyp" msgstr "Überweisungstyp"
#: apps/treasury/models.py:170 #: apps/treasury/models.py:176
msgid "remittance types" msgid "remittance types"
msgstr "Überweisungstypen" msgstr "Überweisungstypen"
#: apps/treasury/models.py:191 #: apps/treasury/models.py:197
msgid "Comment" msgid "Comment"
msgstr "Kommentar" msgstr "Kommentar"
#: apps/treasury/models.py:196 #: apps/treasury/models.py:202
msgid "Closed" msgid "Closed"
msgstr "Geschlossen" msgstr "Geschlossen"
#: apps/treasury/models.py:200 #: apps/treasury/models.py:206
msgid "remittance" msgid "remittance"
msgstr "Überweisung" msgstr "Überweisung"
#: apps/treasury/models.py:201 #: apps/treasury/models.py:207
msgid "remittances" msgid "remittances"
msgstr "Überweisungen" msgstr "Überweisungen"
#: apps/treasury/models.py:233 #: apps/treasury/models.py:239
msgid "Remittance #{:d}: {}" msgid "Remittance #{:d}: {}"
msgstr "Überweisung #{:d}:{}" msgstr "Überweisung #{:d}:{}"
#: apps/treasury/models.py:256 #: apps/treasury/models.py:262
msgid "special transaction proxy" msgid "special transaction proxy"
msgstr "spezielle Transaktion Proxy" msgstr "spezielle Transaktion Proxy"
#: apps/treasury/models.py:257 #: apps/treasury/models.py:263
msgid "special transaction proxies" msgid "special transaction proxies"
msgstr "spezielle Transaktion Proxies" msgstr "spezielle Transaktion Proxies"
#: apps/treasury/models.py:279 #: apps/treasury/models.py:288
msgid "credit transaction" msgid "credit transaction"
msgstr "Kredit Transaktion" msgstr "Kredit Transaktion"
#: apps/treasury/models.py:343 #: apps/treasury/models.py:352
msgid "" msgid ""
"This user doesn't have enough money to pay the memberships with its note. " "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." "Please ask her/him to credit the note before invalidating this credit."
@ -2095,15 +2117,20 @@ msgstr ""
"Dieser Benutzer hat nicht genug Geld, um die Mitgliedschaften mit seiner " "Dieser Benutzer hat nicht genug Geld, um die Mitgliedschaften mit seiner "
"Note zu bezahlen." "Note zu bezahlen."
#: apps/treasury/models.py:355 #: apps/treasury/models.py:364
#: apps/treasury/templates/treasury/sogecredit_detail.html:10 #: apps/treasury/templates/treasury/sogecredit_detail.html:10
msgid "Credit from the Société générale" msgid "Credit from the Société générale"
msgstr "Kredit von der Société générale" msgstr "Kredit von der Société générale"
#: apps/treasury/models.py:356 #: apps/treasury/models.py:365
msgid "Credits from the Société générale" msgid "Credits from the Société générale"
msgstr "Krediten von der Société générale" msgstr "Krediten von der Société générale"
#: apps/treasury/models.py:368
#, python-brace-format
msgid "Soge credit for {user}"
msgstr "Kredit von der Société générale für {user}"
#: apps/treasury/tables.py:20 #: apps/treasury/tables.py:20
msgid "Invoice #{:d}" msgid "Invoice #{:d}"
msgstr "Rechnung #{:d}" msgstr "Rechnung #{:d}"

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: 2020-09-06 20:16+0200\n" "POT-Creation-Date: 2020-09-07 11:14+0200\n"
"PO-Revision-Date: 2020-09-02 23:18+0200\n" "PO-Revision-Date: 2020-09-02 23:18+0200\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: \n" "Language-Team: \n"
@ -27,33 +27,33 @@ msgstr "activité"
msgid "The end date must be after the start date." msgid "The end date must be after the start date."
msgstr "La date de fin doit être après celle de début." msgstr "La date de fin doit être après celle de début."
#: apps/activity/forms.py:76 apps/activity/models.py:262 #: apps/activity/forms.py:76 apps/activity/models.py:268
msgid "You can't invite someone once the activity is started." msgid "You can't invite someone once the activity is started."
msgstr "" msgstr ""
"Vous ne pouvez pas inviter quelqu'un une fois que l'activité a démarré." "Vous ne pouvez pas inviter quelqu'un une fois que l'activité a démarré."
#: apps/activity/forms.py:79 apps/activity/models.py:265 #: apps/activity/forms.py:79 apps/activity/models.py:271
msgid "This activity is not validated yet." msgid "This activity is not validated yet."
msgstr "Cette activité n'est pas encore validée." msgstr "Cette activité n'est pas encore validée."
#: apps/activity/forms.py:89 apps/activity/models.py:273 #: apps/activity/forms.py:89 apps/activity/models.py:279
msgid "This person has been already invited 5 times this year." msgid "This person has been already invited 5 times this year."
msgstr "Cette personne a déjà été invitée 5 fois cette année." msgstr "Cette personne a déjà été invitée 5 fois cette année."
#: apps/activity/forms.py:93 apps/activity/models.py:277 #: apps/activity/forms.py:93 apps/activity/models.py:283
msgid "This person is already invited." msgid "This person is already invited."
msgstr "Cette personne est déjà invitée." msgstr "Cette personne est déjà invitée."
#: apps/activity/forms.py:97 apps/activity/models.py:281 #: apps/activity/forms.py:97 apps/activity/models.py:287
msgid "You can't invite more than 3 people to this activity." msgid "You can't invite more than 3 people to this activity."
msgstr "Vous ne pouvez pas inviter plus de 3 personnes à cette activité." msgstr "Vous ne pouvez pas inviter plus de 3 personnes à cette activité."
#: apps/activity/models.py:28 apps/activity/models.py:63 #: apps/activity/models.py:28 apps/activity/models.py:63
#: apps/member/models.py:200 #: apps/member/models.py:199
#: apps/member/templates/member/includes/club_info.html:4 #: apps/member/templates/member/includes/club_info.html:4
#: apps/member/templates/member/includes/profile_info.html:4 #: apps/member/templates/member/includes/profile_info.html:4
#: apps/note/models/notes.py:253 apps/note/models/transactions.py:26 #: apps/note/models/notes.py:253 apps/note/models/transactions.py:26
#: apps/note/models/transactions.py:46 apps/note/models/transactions.py:302 #: apps/note/models/transactions.py:46 apps/note/models/transactions.py:296
#: apps/permission/models.py:329 #: apps/permission/models.py:329
#: apps/registration/templates/registration/future_profile_detail.html:16 #: apps/registration/templates/registration/future_profile_detail.html:16
#: apps/wei/models.py:66 apps/wei/models.py:118 #: apps/wei/models.py:66 apps/wei/models.py:118
@ -110,8 +110,8 @@ msgstr "Lieu où l'activité est organisée, par exemple la Kfet."
msgid "type" msgid "type"
msgstr "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:304
#: apps/note/models/notes.py:144 apps/treasury/models.py:267 #: apps/note/models/notes.py:144 apps/treasury/models.py:276
#: apps/treasury/templates/treasury/sogecredit_detail.html:14 #: apps/treasury/templates/treasury/sogecredit_detail.html:14
#: apps/wei/models.py:160 apps/wei/templates/wei/survey.html:15 #: apps/wei/models.py:160 apps/wei/templates/wei/survey.html:15
msgid "user" msgid "user"
@ -149,7 +149,7 @@ msgstr "date de fin"
#: apps/activity/models.py:118 #: apps/activity/models.py:118
#: apps/activity/templates/activity/includes/activity_info.html:50 #: apps/activity/templates/activity/includes/activity_info.html:50
#: apps/note/models/transactions.py:146 #: apps/note/models/transactions.py:149
msgid "valid" msgid "valid"
msgstr "valide" msgstr "valide"
@ -181,42 +181,52 @@ msgstr "entrée"
msgid "entries" msgid "entries"
msgstr "entrées" msgstr "entrées"
#: apps/activity/models.py:195 #: apps/activity/models.py:192
#, python-brace-format
msgid "Entry for {guest}, invited by {note} to the activity {activity}"
msgstr "Entrée pour {guest}, invité par {note} à l'activité {activity}"
#: apps/activity/models.py:194
#, python-brace-format
msgid "Entry for {note} to the activity {activity}"
msgstr "Entrée de la note {note} pour l'activité « {activity} »"
#: apps/activity/models.py:201
msgid "Already entered on " msgid "Already entered on "
msgstr "Déjà rentré le " msgstr "Déjà rentré le "
#: apps/activity/models.py:195 apps/activity/tables.py:54 #: apps/activity/models.py:201 apps/activity/tables.py:54
msgid "{:%Y-%m-%d %H:%M:%S}" msgid "{:%Y-%m-%d %H:%M:%S}"
msgstr "{:%d/%m/%Y %H:%M:%S}" msgstr "{:%d/%m/%Y %H:%M:%S}"
#: apps/activity/models.py:203 #: apps/activity/models.py:209
msgid "The balance is negative." msgid "The balance is negative."
msgstr "La note est en négatif." msgstr "La note est en négatif."
#: apps/activity/models.py:233 #: apps/activity/models.py:239
msgid "last name" msgid "last name"
msgstr "nom de famille" msgstr "nom de famille"
#: apps/activity/models.py:238 #: apps/activity/models.py:244
#: apps/member/templates/member/includes/profile_info.html:4 #: apps/member/templates/member/includes/profile_info.html:4
#: apps/registration/templates/registration/future_profile_detail.html:16 #: apps/registration/templates/registration/future_profile_detail.html:16
#: apps/wei/templates/wei/weimembership_form.html:14 #: apps/wei/templates/wei/weimembership_form.html:14
msgid "first name" msgid "first name"
msgstr "prénom" msgstr "prénom"
#: apps/activity/models.py:245 #: apps/activity/models.py:251
msgid "inviter" msgid "inviter"
msgstr "hôte" msgstr "hôte"
#: apps/activity/models.py:289 #: apps/activity/models.py:295
msgid "guest" msgid "guest"
msgstr "invité" msgstr "invité"
#: apps/activity/models.py:290 #: apps/activity/models.py:296
msgid "guests" msgid "guests"
msgstr "invités" msgstr "invités"
#: apps/activity/models.py:302 #: apps/activity/models.py:308
msgid "Invitation" msgid "Invitation"
msgstr "Invitation" msgstr "Invitation"
@ -240,7 +250,7 @@ msgstr "Entré le "
msgid "remove" msgid "remove"
msgstr "supprimer" msgstr "supprimer"
#: apps/activity/tables.py:80 apps/note/forms.py:68 apps/treasury/models.py:186 #: apps/activity/tables.py:80 apps/note/forms.py:68 apps/treasury/models.py:192
msgid "Type" msgid "Type"
msgstr "Type" msgstr "Type"
@ -270,7 +280,7 @@ msgid "Guests list"
msgstr "Liste des invités" msgstr "Liste des invités"
#: apps/activity/templates/activity/activity_entry.html:14 #: apps/activity/templates/activity/activity_entry.html:14
#: apps/note/models/transactions.py:259 #: apps/note/models/transactions.py:253
#: apps/note/templates/note/transaction_form.html:16 #: apps/note/templates/note/transaction_form.html:16
#: apps/note/templates/note/transaction_form.html:148 #: apps/note/templates/note/transaction_form.html:148
#: note_kfet/templates/base.html:70 #: note_kfet/templates/base.html:70
@ -278,13 +288,13 @@ msgid "Transfer"
msgstr "Virement" msgstr "Virement"
#: apps/activity/templates/activity/activity_entry.html:18 #: apps/activity/templates/activity/activity_entry.html:18
#: apps/note/models/transactions.py:318 #: apps/note/models/transactions.py:312
#: apps/note/templates/note/transaction_form.html:21 #: apps/note/templates/note/transaction_form.html:21
msgid "Credit" msgid "Credit"
msgstr "Crédit" msgstr "Crédit"
#: apps/activity/templates/activity/activity_entry.html:21 #: apps/activity/templates/activity/activity_entry.html:21
#: apps/note/models/transactions.py:318 #: apps/note/models/transactions.py:312
#: apps/note/templates/note/transaction_form.html:25 #: apps/note/templates/note/transaction_form.html:25
msgid "Debit" msgid "Debit"
msgstr "Débit" msgstr "Débit"
@ -356,7 +366,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:62 apps/note/tables.py:195 #: apps/logs/models.py:64 apps/note/tables.py:195
msgid "edit" msgid "edit"
msgstr "modifier" msgstr "modifier"
@ -422,59 +432,64 @@ msgstr "modèle"
msgid "identifier" msgid "identifier"
msgstr "identifiant" msgstr "identifiant"
#: apps/logs/models.py:48 #: apps/logs/models.py:49
msgid "previous data" msgid "previous data"
msgstr "données précédentes" msgstr "données précédentes"
#: apps/logs/models.py:53 #: apps/logs/models.py:55
msgid "new data" msgid "new data"
msgstr "ouvelles données" msgstr "ouvelles données"
#: apps/logs/models.py:61 #: apps/logs/models.py:63
msgid "create" msgid "create"
msgstr "créer" msgstr "créer"
#: apps/logs/models.py:63 apps/note/tables.py:165 apps/note/tables.py:201 #: apps/logs/models.py:65 apps/note/tables.py:165 apps/note/tables.py:201
#: apps/permission/models.py:127 apps/treasury/tables.py:38 #: apps/permission/models.py:127 apps/treasury/tables.py:38
#: apps/wei/tables.py:75 #: apps/wei/tables.py:75
msgid "delete" msgid "delete"
msgstr "supprimer" msgstr "supprimer"
#: apps/logs/models.py:66 #: apps/logs/models.py:68
msgid "action" msgid "action"
msgstr "action" msgstr "action"
#: apps/logs/models.py:74 #: apps/logs/models.py:76
msgid "timestamp" msgid "timestamp"
msgstr "date" msgstr "date"
#: apps/logs/models.py:78 #: apps/logs/models.py:80
msgid "Logs cannot be destroyed." msgid "Logs cannot be destroyed."
msgstr "Les logs ne peuvent pas être détruits." msgstr "Les logs ne peuvent pas être détruits."
#: apps/logs/models.py:81 #: apps/logs/models.py:83
msgid "changelog" msgid "changelog"
msgstr "journal de modification" msgstr "journal de modification"
#: apps/logs/models.py:82 #: apps/logs/models.py:84
msgid "changelogs" msgid "changelogs"
msgstr "journaux de modifications" msgstr "journaux de modifications"
#: apps/member/admin.py:50 apps/member/models.py:227 #: apps/logs/models.py:87
#, python-brace-format
msgid "Changelog of type \"{action}\" for model {model} at {timestamp}"
msgstr "Changelog de type « {action} » pour le modèle {model} à {timestamp}"
#: apps/member/admin.py:50 apps/member/models.py:226
#: apps/member/templates/member/includes/club_info.html:34 #: apps/member/templates/member/includes/club_info.html:34
msgid "membership fee (paid students)" msgid "membership fee (paid students)"
msgstr "cotisation pour adhérer (normalien élève)" msgstr "cotisation pour adhérer (normalien élève)"
#: apps/member/admin.py:51 apps/member/models.py:232 #: apps/member/admin.py:51 apps/member/models.py:231
#: apps/member/templates/member/includes/club_info.html:37 #: apps/member/templates/member/includes/club_info.html:37
msgid "membership fee (unpaid students)" msgid "membership fee (unpaid students)"
msgstr "cotisation pour adhérer (normalien étudiant)" msgstr "cotisation pour adhérer (normalien étudiant)"
#: apps/member/admin.py:65 apps/member/models.py:316 #: apps/member/admin.py:65 apps/member/models.py:315
msgid "roles" msgid "roles"
msgstr "rôles" msgstr "rôles"
#: apps/member/admin.py:66 apps/member/models.py:330 #: apps/member/admin.py:66 apps/member/models.py:329
msgid "fee" msgid "fee"
msgstr "cotisation" msgstr "cotisation"
@ -668,19 +683,19 @@ msgstr "payé"
msgid "Tells if the user receive a salary." msgid "Tells if the user receive a salary."
msgstr "Indique si l'utilisateur perçoit un salaire." msgstr "Indique si l'utilisateur perçoit un salaire."
#: apps/member/models.py:101 apps/treasury/tables.py:146 #: apps/member/models.py:100 apps/treasury/tables.py:146
msgid "No" msgid "No"
msgstr "Non" msgstr "Non"
#: apps/member/models.py:102 #: apps/member/models.py:101
msgid "Yes (receive them in french)" msgid "Yes (receive them in french)"
msgstr "Oui (les recevoir en français)" msgstr "Oui (les recevoir en français)"
#: apps/member/models.py:103 #: apps/member/models.py:102
msgid "Yes (receive them in english)" msgid "Yes (receive them in english)"
msgstr "Oui (les recevoir en anglais)" msgstr "Oui (les recevoir en anglais)"
#: apps/member/models.py:105 #: apps/member/models.py:104
msgid "" msgid ""
"Register on the mailing list to stay informed of the events of the campus (1 " "Register on the mailing list to stay informed of the events of the campus (1 "
"mail/week)" "mail/week)"
@ -688,7 +703,7 @@ msgstr ""
"S'inscrire sur la liste de diffusion pour rester informé des événements sur " "S'inscrire sur la liste de diffusion pour rester informé des événements sur "
"le campus (1 mail par semaine)" "le campus (1 mail par semaine)"
#: apps/member/models.py:110 #: apps/member/models.py:109
msgid "" msgid ""
"Register on the mailing list to stay informed of the sport events of the " "Register on the mailing list to stay informed of the sport events of the "
"campus (1 mail/week)" "campus (1 mail/week)"
@ -696,7 +711,7 @@ msgstr ""
"S'inscrire sur la liste de diffusion pour rester informé des actualités " "S'inscrire sur la liste de diffusion pour rester informé des actualités "
"sportives sur le campus (1 mail par semaine)" "sportives sur le campus (1 mail par semaine)"
#: apps/member/models.py:115 #: apps/member/models.py:114
msgid "" msgid ""
"Register on the mailing list to stay informed of the art events of the " "Register on the mailing list to stay informed of the art events of the "
"campus (1 mail/week)" "campus (1 mail/week)"
@ -704,31 +719,31 @@ msgstr ""
"S'inscrire sur la liste de diffusion pour rester informé des actualités " "S'inscrire sur la liste de diffusion pour rester informé des actualités "
"artistiques sur le campus (1 mail par semaine)" "artistiques sur le campus (1 mail par semaine)"
#: apps/member/models.py:119 #: apps/member/models.py:118
msgid "report frequency (in days)" msgid "report frequency (in days)"
msgstr "fréquence des rapports (en jours)" msgstr "fréquence des rapports (en jours)"
#: apps/member/models.py:124 #: apps/member/models.py:123
msgid "last report date" msgid "last report date"
msgstr "date de dernier rapport" msgstr "date de dernier rapport"
#: apps/member/models.py:129 #: apps/member/models.py:128
msgid "email confirmed" msgid "email confirmed"
msgstr "adresse email confirmée" msgstr "adresse email confirmée"
#: apps/member/models.py:134 #: apps/member/models.py:133
msgid "registration valid" msgid "registration valid"
msgstr "inscription valide" msgstr "inscription valide"
#: apps/member/models.py:163 apps/member/models.py:164 #: apps/member/models.py:162 apps/member/models.py:163
msgid "user profile" msgid "user profile"
msgstr "profil utilisateur" msgstr "profil utilisateur"
#: apps/member/models.py:174 #: apps/member/models.py:173
msgid "Activate your Note Kfet account" msgid "Activate your Note Kfet account"
msgstr "Activez votre compte Note Kfet" msgstr "Activez votre compte Note Kfet"
#: apps/member/models.py:205 #: apps/member/models.py:204
#: apps/member/templates/member/includes/club_info.html:55 #: apps/member/templates/member/includes/club_info.html:55
#: apps/member/templates/member/includes/profile_info.html:31 #: apps/member/templates/member/includes/profile_info.html:31
#: apps/registration/templates/registration/future_profile_detail.html:22 #: apps/registration/templates/registration/future_profile_detail.html:22
@ -737,88 +752,88 @@ msgstr "Activez votre compte Note Kfet"
msgid "email" msgid "email"
msgstr "courriel" msgstr "courriel"
#: apps/member/models.py:212 #: apps/member/models.py:211
msgid "parent club" msgid "parent club"
msgstr "club parent" msgstr "club parent"
#: apps/member/models.py:221 #: apps/member/models.py:220
msgid "require memberships" msgid "require memberships"
msgstr "nécessite des adhésions" msgstr "nécessite des adhésions"
#: apps/member/models.py:222 #: apps/member/models.py:221
msgid "Uncheck if this club don't require memberships." msgid "Uncheck if this club don't require memberships."
msgstr "Décochez si ce club n'utilise pas d'adhésions." msgstr "Décochez si ce club n'utilise pas d'adhésions."
#: apps/member/models.py:238 #: apps/member/models.py:237
#: apps/member/templates/member/includes/club_info.html:26 #: apps/member/templates/member/includes/club_info.html:26
msgid "membership duration" msgid "membership duration"
msgstr "durée de l'adhésion" msgstr "durée de l'adhésion"
#: apps/member/models.py:239 #: apps/member/models.py:238
msgid "The longest time (in days) a membership can last (NULL = infinite)." msgid "The longest time (in days) a membership can last (NULL = infinite)."
msgstr "La durée maximale (en jours) d'une adhésion (NULL = infinie)." msgstr "La durée maximale (en jours) d'une adhésion (NULL = infinie)."
#: apps/member/models.py:246 #: apps/member/models.py:245
#: apps/member/templates/member/includes/club_info.html:16 #: apps/member/templates/member/includes/club_info.html:16
msgid "membership start" msgid "membership start"
msgstr "début de l'adhésion" msgstr "début de l'adhésion"
#: apps/member/models.py:247 #: apps/member/models.py:246
msgid "Date from which the members can renew their membership." msgid "Date from which the members can renew their membership."
msgstr "" msgstr ""
"Date à partir de laquelle les adhérents peuvent renouveler leur adhésion." "Date à partir de laquelle les adhérents peuvent renouveler leur adhésion."
#: apps/member/models.py:253 #: apps/member/models.py:252
#: apps/member/templates/member/includes/club_info.html:21 #: apps/member/templates/member/includes/club_info.html:21
msgid "membership end" msgid "membership end"
msgstr "fin de l'adhésion" msgstr "fin de l'adhésion"
#: apps/member/models.py:254 #: apps/member/models.py:253
msgid "Maximal date of a membership, after which members must renew it." msgid "Maximal date of a membership, after which members must renew it."
msgstr "" msgstr ""
"Date maximale d'une fin d'adhésion, après laquelle les adhérents doivent la " "Date maximale d'une fin d'adhésion, après laquelle les adhérents doivent la "
"renouveler." "renouveler."
#: apps/member/models.py:286 apps/member/models.py:311 #: apps/member/models.py:285 apps/member/models.py:310
#: apps/note/models/notes.py:185 #: apps/note/models/notes.py:185
msgid "club" msgid "club"
msgstr "club" msgstr "club"
#: apps/member/models.py:287 #: apps/member/models.py:286
msgid "clubs" msgid "clubs"
msgstr "clubs" msgstr "clubs"
#: apps/member/models.py:321 #: apps/member/models.py:320
msgid "membership starts on" msgid "membership starts on"
msgstr "l'adhésion commence le" msgstr "l'adhésion commence le"
#: apps/member/models.py:325 #: apps/member/models.py:324
msgid "membership ends on" msgid "membership ends on"
msgstr "l'adhésion finit le" msgstr "l'adhésion finit le"
#: apps/member/models.py:420 #: apps/member/models.py:419
#, python-brace-format #, python-brace-format
msgid "The role {role} does not apply to the club {club}." msgid "The role {role} does not apply to the club {club}."
msgstr "Le rôle {role} ne s'applique pas au club {club}." msgstr "Le rôle {role} ne s'applique pas au club {club}."
#: apps/member/models.py:429 apps/member/views.py:628 #: apps/member/models.py:428 apps/member/views.py:628
msgid "User is already a member of the club" msgid "User is already a member of the club"
msgstr "L'utilisateur est déjà membre du club" msgstr "L'utilisateur est déjà membre du club"
#: apps/member/models.py:441 #: apps/member/models.py:440
msgid "User is not a member of the parent club" msgid "User is not a member of the parent club"
msgstr "L'utilisateur n'est pas membre du club parent" msgstr "L'utilisateur n'est pas membre du club parent"
#: apps/member/models.py:489 #: apps/member/models.py:488
#, python-brace-format #, python-brace-format
msgid "Membership of {user} for the club {club}" msgid "Membership of {user} for the club {club}"
msgstr "Adhésion de {user} pour le club {club}" msgstr "Adhésion de {user} pour le club {club}"
#: apps/member/models.py:492 apps/note/models/transactions.py:359 #: apps/member/models.py:491 apps/note/models/transactions.py:353
msgid "membership" msgid "membership"
msgstr "adhésion" msgstr "adhésion"
#: apps/member/models.py:493 #: apps/member/models.py:492
msgid "memberships" msgid "memberships"
msgstr "adhésions" msgstr "adhésions"
@ -1118,22 +1133,22 @@ msgstr "Gérer les rôles d'un utilisateur dans le club"
msgid "Members of the club" msgid "Members of the club"
msgstr "Membres du club" msgstr "Membres du club"
#: apps/note/admin.py:129 apps/note/models/transactions.py:106 #: apps/note/admin.py:129 apps/note/models/transactions.py:109
msgid "source" msgid "source"
msgstr "source" msgstr "source"
#: apps/note/admin.py:137 apps/note/admin.py:205 #: apps/note/admin.py:137 apps/note/admin.py:205
#: apps/note/models/transactions.py:56 apps/note/models/transactions.py:119 #: apps/note/models/transactions.py:56 apps/note/models/transactions.py:122
msgid "destination" msgid "destination"
msgstr "destination" msgstr "destination"
#: apps/note/admin.py:210 apps/note/models/transactions.py:60 #: apps/note/admin.py:210 apps/note/models/transactions.py:60
#: apps/note/models/transactions.py:137 #: apps/note/models/transactions.py:140
msgid "amount" msgid "amount"
msgstr "montant" msgstr "montant"
#: apps/note/api/serializers.py:183 apps/note/api/serializers.py:189 #: apps/note/api/serializers.py:183 apps/note/api/serializers.py:189
#: apps/note/models/transactions.py:224 #: apps/note/models/transactions.py:226
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 "
"is not active." "is not active."
@ -1193,7 +1208,7 @@ msgstr "dernier instant où la note était en négatif"
msgid "display image" msgid "display image"
msgstr "image affichée" msgstr "image affichée"
#: apps/note/models/notes.py:54 apps/note/models/transactions.py:129 #: apps/note/models/notes.py:54 apps/note/models/transactions.py:132
msgid "created at" msgid "created at"
msgstr "créée le" msgstr "créée le"
@ -1319,33 +1334,33 @@ msgstr "modèle de transaction"
msgid "transaction templates" msgid "transaction templates"
msgstr "modèles de transaction" msgstr "modèles de transaction"
#: apps/note/models/transactions.py:112 apps/note/models/transactions.py:125 #: apps/note/models/transactions.py:115 apps/note/models/transactions.py:128
#: apps/note/tables.py:34 apps/note/tables.py:44 #: apps/note/tables.py:34 apps/note/tables.py:44
msgid "used alias" msgid "used alias"
msgstr "alias utilisé" msgstr "alias utilisé"
#: apps/note/models/transactions.py:133 #: apps/note/models/transactions.py:136
msgid "quantity" msgid "quantity"
msgstr "quantité" msgstr "quantité"
#: apps/note/models/transactions.py:141 #: apps/note/models/transactions.py:144
msgid "reason" msgid "reason"
msgstr "raison" msgstr "raison"
#: apps/note/models/transactions.py:151 apps/note/tables.py:140 #: apps/note/models/transactions.py:154 apps/note/tables.py:140
msgid "invalidity reason" msgid "invalidity reason"
msgstr "motif d'invalidité" msgstr "motif d'invalidité"
#: apps/note/models/transactions.py:159 #: apps/note/models/transactions.py:161
msgid "transaction" msgid "transaction"
msgstr "transaction" msgstr "transaction"
#: apps/note/models/transactions.py:160 #: apps/note/models/transactions.py:162
#: apps/treasury/templates/treasury/sogecredit_detail.html:22 #: apps/treasury/templates/treasury/sogecredit_detail.html:22
msgid "transactions" msgid "transactions"
msgstr "transactions" msgstr "transactions"
#: apps/note/models/transactions.py:182 #: apps/note/models/transactions.py:184
#, python-brace-format #, python-brace-format
msgid "" msgid ""
"You can't update the {field} on a Transaction. Please invalidate it and " "You can't update the {field} on a Transaction. Please invalidate it and "
@ -1354,7 +1369,7 @@ msgstr ""
"Vous ne pouvez pas mettre à jour le champ {field} dans une transaction. " "Vous ne pouvez pas mettre à jour le champ {field} dans une transaction. "
"Merci de l'invalider et d'en créer une autre." "Merci de l'invalider et d'en créer une autre."
#: apps/note/models/transactions.py:202 #: apps/note/models/transactions.py:204
msgid "" msgid ""
"The note balances must be between - 92 233 720 368 547 758.08 € and 92 233 " "The note balances must be between - 92 233 720 368 547 758.08 € and 92 233 "
"720 368 547 758.07 €." "720 368 547 758.07 €."
@ -1363,7 +1378,7 @@ msgstr ""
"€ et 92 233 720 368 547 758.07 €. Ne cherchez pas à capitaliser l'argent du " "€ et 92 233 720 368 547 758.07 €. Ne cherchez pas à capitaliser l'argent du "
"BDE." "BDE."
#: apps/note/models/transactions.py:279 #: apps/note/models/transactions.py:273
msgid "" msgid ""
"The destination of this transaction must equal to the destination of the " "The destination of this transaction must equal to the destination of the "
"template." "template."
@ -1371,27 +1386,27 @@ msgstr ""
"Le destinataire de cette transaction doit être identique à celui du bouton " "Le destinataire de cette transaction doit être identique à celui du bouton "
"utilisé." "utilisé."
#: apps/note/models/transactions.py:288 #: apps/note/models/transactions.py:282
msgid "Template" msgid "Template"
msgstr "Bouton" msgstr "Bouton"
#: apps/note/models/transactions.py:291 #: apps/note/models/transactions.py:285
msgid "recurrent transaction" msgid "recurrent transaction"
msgstr "transaction issue de bouton" msgstr "transaction issue de bouton"
#: apps/note/models/transactions.py:292 #: apps/note/models/transactions.py:286
msgid "recurrent transactions" msgid "recurrent transactions"
msgstr "transactions issues de boutons" msgstr "transactions issues de boutons"
#: apps/note/models/transactions.py:307 #: apps/note/models/transactions.py:301
msgid "first_name" msgid "first_name"
msgstr "prénom" msgstr "prénom"
#: apps/note/models/transactions.py:312 #: apps/note/models/transactions.py:306
msgid "bank" msgid "bank"
msgstr "banque" msgstr "banque"
#: apps/note/models/transactions.py:329 #: apps/note/models/transactions.py:323
msgid "" msgid ""
"A special transaction is only possible between a Note associated to a " "A special transaction is only possible between a Note associated to a "
"payment method and a User or a Club" "payment method and a User or a Club"
@ -1399,19 +1414,19 @@ msgstr ""
"Une transaction spéciale n'est possible que entre une note associée à un " "Une transaction spéciale n'est possible que entre une note associée à un "
"mode de paiement et un utilisateur ou un club" "mode de paiement et un utilisateur ou un club"
#: apps/note/models/transactions.py:337 #: apps/note/models/transactions.py:331
msgid "Special transaction" msgid "Special transaction"
msgstr "Transaction de crédit/retrait" msgstr "Transaction de crédit/retrait"
#: apps/note/models/transactions.py:338 #: apps/note/models/transactions.py:332
msgid "Special transactions" msgid "Special transactions"
msgstr "Transactions de crédit/retrait" msgstr "Transactions de crédit/retrait"
#: apps/note/models/transactions.py:354 #: apps/note/models/transactions.py:348
msgid "membership transaction" msgid "membership transaction"
msgstr "transaction d'adhésion" msgstr "transaction d'adhésion"
#: apps/note/models/transactions.py:355 apps/treasury/models.py:273 #: apps/note/models/transactions.py:349 apps/treasury/models.py:282
msgid "membership transactions" msgid "membership transactions"
msgstr "transactions d'adhésion" msgstr "transactions d'adhésion"
@ -1685,7 +1700,7 @@ msgstr ""
"Vous n'avez pas la permission de modifier le champ {field} sur l'instance du " "Vous n'avez pas la permission de modifier le champ {field} sur l'instance du "
"modèle {app_label}.{model_name}." "modèle {app_label}.{model_name}."
#: apps/permission/signals.py:73 apps/permission/views.py:89 #: apps/permission/signals.py:73 apps/permission/views.py:101
#, python-brace-format #, python-brace-format
msgid "" msgid ""
"You don't have the permission to add an instance of model {app_label}." "You don't have the permission to add an instance of model {app_label}."
@ -1744,7 +1759,7 @@ msgstr "Requête :"
msgid "No associated permission" msgid "No associated permission"
msgstr "Pas de permission associée" msgstr "Pas de permission associée"
#: apps/permission/views.py:56 #: apps/permission/views.py:68
#, python-brace-format #, python-brace-format
msgid "" msgid ""
"You don't have the permission to update this instance of the model " "You don't have the permission to update this instance of the model "
@ -1753,7 +1768,7 @@ msgstr ""
"Vous n'avez pas la permission de modifier cette instance du modèle « {model} " "Vous n'avez pas la permission de modifier cette instance du modèle « {model} "
"» avec ces paramètres. Merci de les corriger et de réessayer." "» avec ces paramètres. Merci de les corriger et de réessayer."
#: apps/permission/views.py:60 #: apps/permission/views.py:72
#, python-brace-format #, python-brace-format
msgid "" msgid ""
"You don't have the permission to create an instance of the model \"{model}\" " "You don't have the permission to create an instance of the model \"{model}\" "
@ -1762,11 +1777,11 @@ msgstr ""
"Vous n'avez pas la permission d'ajouter une instance du modèle « {model} » " "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." "avec ces paramètres. Merci de les corriger et de réessayer."
#: apps/permission/views.py:96 note_kfet/templates/base.html:106 #: apps/permission/views.py:108 note_kfet/templates/base.html:106
msgid "Rights" msgid "Rights"
msgstr "Droits" msgstr "Droits"
#: apps/permission/views.py:101 #: apps/permission/views.py:113
msgid "All rights" msgid "All rights"
msgstr "Tous les droits" msgstr "Tous les droits"
@ -1971,7 +1986,7 @@ msgstr "La remise est déjà fermée."
msgid "You can't change the type of the remittance." msgid "You can't change the type of the remittance."
msgstr "Vous ne pouvez pas changer le type de la remise." msgstr "Vous ne pouvez pas changer le type de la remise."
#: apps/treasury/forms.py:123 apps/treasury/models.py:252 #: apps/treasury/forms.py:123 apps/treasury/models.py:258
#: apps/treasury/tables.py:97 apps/treasury/tables.py:105 #: apps/treasury/tables.py:97 apps/treasury/tables.py:105
#: apps/treasury/templates/treasury/invoice_list.html:16 #: apps/treasury/templates/treasury/invoice_list.html:16
#: apps/treasury/templates/treasury/remittance_list.html:16 #: apps/treasury/templates/treasury/remittance_list.html:16
@ -2003,7 +2018,7 @@ msgstr "Description"
msgid "Address" msgid "Address"
msgstr "Adresse" msgstr "Adresse"
#: apps/treasury/models.py:60 apps/treasury/models.py:180 #: apps/treasury/models.py:60 apps/treasury/models.py:186
msgid "Date" msgid "Date"
msgstr "Date" msgstr "Date"
@ -2023,7 +2038,7 @@ msgstr "Une facture ne peut plus être modifiée si elle est verrouillée."
msgid "tex source" msgid "tex source"
msgstr "fichier TeX source" msgstr "fichier TeX source"
#: apps/treasury/models.py:109 apps/treasury/models.py:122 #: apps/treasury/models.py:109 apps/treasury/models.py:125
msgid "invoice" msgid "invoice"
msgstr "facture" msgstr "facture"
@ -2031,67 +2046,72 @@ msgstr "facture"
msgid "invoices" msgid "invoices"
msgstr "factures" msgstr "factures"
#: apps/treasury/models.py:127 #: apps/treasury/models.py:113
#, python-brace-format
msgid "Invoice #{id}"
msgstr "Facture n°{id}"
#: apps/treasury/models.py:130
msgid "Designation" msgid "Designation"
msgstr "Désignation" msgstr "Désignation"
#: apps/treasury/models.py:131 #: apps/treasury/models.py:134
msgid "Quantity" msgid "Quantity"
msgstr "Quantité" msgstr "Quantité"
#: apps/treasury/models.py:135 #: apps/treasury/models.py:138
msgid "Unit price" msgid "Unit price"
msgstr "Prix unitaire" msgstr "Prix unitaire"
#: apps/treasury/models.py:151 #: apps/treasury/models.py:154
msgid "product" msgid "product"
msgstr "produit" msgstr "produit"
#: apps/treasury/models.py:152 #: apps/treasury/models.py:155
msgid "products" msgid "products"
msgstr "produits" msgstr "produits"
#: apps/treasury/models.py:169 #: apps/treasury/models.py:175
msgid "remittance type" msgid "remittance type"
msgstr "type de remise" msgstr "type de remise"
#: apps/treasury/models.py:170 #: apps/treasury/models.py:176
msgid "remittance types" msgid "remittance types"
msgstr "types de remises" msgstr "types de remises"
#: apps/treasury/models.py:191 #: apps/treasury/models.py:197
msgid "Comment" msgid "Comment"
msgstr "Commentaire" msgstr "Commentaire"
#: apps/treasury/models.py:196 #: apps/treasury/models.py:202
msgid "Closed" msgid "Closed"
msgstr "Fermée" msgstr "Fermée"
#: apps/treasury/models.py:200 #: apps/treasury/models.py:206
msgid "remittance" msgid "remittance"
msgstr "remise" msgstr "remise"
#: apps/treasury/models.py:201 #: apps/treasury/models.py:207
msgid "remittances" msgid "remittances"
msgstr "remises" msgstr "remises"
#: apps/treasury/models.py:233 #: apps/treasury/models.py:239
msgid "Remittance #{:d}: {}" msgid "Remittance #{:d}: {}"
msgstr "Remise n°{:d} : {}" msgstr "Remise n°{:d} : {}"
#: apps/treasury/models.py:256 #: apps/treasury/models.py:262
msgid "special transaction proxy" msgid "special transaction proxy"
msgstr "proxy de transaction spéciale" msgstr "proxy de transaction spéciale"
#: apps/treasury/models.py:257 #: apps/treasury/models.py:263
msgid "special transaction proxies" msgid "special transaction proxies"
msgstr "proxys de transactions spéciales" msgstr "proxys de transactions spéciales"
#: apps/treasury/models.py:279 #: apps/treasury/models.py:288
msgid "credit transaction" msgid "credit transaction"
msgstr "transaction de crédit" msgstr "transaction de crédit"
#: apps/treasury/models.py:343 #: apps/treasury/models.py:352
msgid "" msgid ""
"This user doesn't have enough money to pay the memberships with its note. " "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." "Please ask her/him to credit the note before invalidating this credit."
@ -2099,15 +2119,20 @@ msgstr ""
"Cet utilisateur n'a pas assez d'argent pour payer les adhésions avec sa " "Cet utilisateur n'a pas assez d'argent pour payer les adhésions avec sa "
"note. Merci de lui demander de recharger sa note avant d'invalider ce crédit." "note. Merci de lui demander de recharger sa note avant d'invalider ce crédit."
#: apps/treasury/models.py:355 #: apps/treasury/models.py:364
#: apps/treasury/templates/treasury/sogecredit_detail.html:10 #: apps/treasury/templates/treasury/sogecredit_detail.html:10
msgid "Credit from the Société générale" msgid "Credit from the Société générale"
msgstr "Crédit de la Société générale" msgstr "Crédit de la Société générale"
#: apps/treasury/models.py:356 #: apps/treasury/models.py:365
msgid "Credits from the Société générale" msgid "Credits from the Société générale"
msgstr "Crédits de la Société générale" msgstr "Crédits de la Société générale"
#: apps/treasury/models.py:368
#, python-brace-format
msgid "Soge credit for {user}"
msgstr "Crédit de la société générale pour l'utilisateur {user}"
#: apps/treasury/tables.py:20 #: apps/treasury/tables.py:20
msgid "Invoice #{:d}" msgid "Invoice #{:d}"
msgstr "Facture n°{:d}" msgstr "Facture n°{:d}"