1
0
mirror of https://gitlab.crans.org/bde/nk20 synced 2024-12-22 23:42:25 +00:00

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_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):
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(
null=True,
blank=True,
default="",
verbose_name=_('previous data'),
)
data = models.TextField(
null=True,
blank=True,
default="",
verbose_name=_('new data'),
)
@ -80,3 +82,7 @@ class Changelog(models.Model):
class Meta:
verbose_name = _("changelog")
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__
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")
Changelog.objects.create(user=user,
@ -149,6 +149,6 @@ def delete_object(sender, instance, **kwargs):
model=ContentType.objects.get_for_model(instance),
instance_pk=instance.pk,
previous=instance_json,
data=None,
data="",
action="delete"
).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"'),
max_length=255,
blank=True,
null=True,
default="",
)
department = models.CharField(
@ -83,7 +83,7 @@ class Profile(models.Model):
verbose_name=_('address'),
max_length=255,
blank=True,
null=True,
default="",
)
paid = models.BooleanField(
@ -94,11 +94,10 @@ class Profile(models.Model):
ml_events_registration = models.CharField(
blank=True,
null=True,
default=None,
default='',
max_length=2,
choices=[
(None, _("No")),
('', _("No")),
('fr', _("Yes (receive them in french)")),
('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.")),
('forced', _("The note is blocked by the the BDE and can't be manually reactivated.")),
],
null=True,
default=None,
blank=True,
default="",
)
class Meta:

View File

@ -90,6 +90,9 @@ class TransactionTemplate(models.Model):
def get_absolute_url(self):
return reverse('note:template_update', args=(self.pk,))
def __str__(self):
return self.name
class Transaction(PolymorphicModel):
"""
@ -150,8 +153,7 @@ class Transaction(PolymorphicModel):
invalidity_reason = models.CharField(
verbose_name=_('invalidity reason'),
max_length=255,
default=None,
null=True,
default='',
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
# previously invalid
self.invalidity_reason = None
self.invalidity_reason = ""
if source_balance > 9223372036854775807 or source_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_plural = _("invoices")
def __str__(self):
return _("Invoice #{id}").format(id=self.id)
class Product(models.Model):
"""
@ -151,6 +154,9 @@ class Product(models.Model):
verbose_name = _("product")
verbose_name_plural = _("products")
def __str__(self):
return f"{self.designation} ({self.invoice})"
class RemittanceType(models.Model):
"""
@ -256,6 +262,9 @@ class SpecialTransactionProxy(models.Model):
verbose_name = _("special transaction proxy")
verbose_name_plural = _("special transaction proxies")
def __str__(self):
return str(self.transaction)
class SogeCredit(models.Model):
"""
@ -354,3 +363,6 @@ class SogeCredit(models.Model):
class Meta:
verbose_name = _("Credit 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 ""
"Project-Id-Version: \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"
"Last-Translator: \n"
"Language-Team: \n"
@ -27,33 +27,33 @@ msgstr "Veranstaltung"
msgid "The end date must be after the start date."
msgstr "Das Abschlussdatum muss nach das Anfangsdatum sein."
#: apps/activity/forms.py:76 apps/activity/models.py:262
#: apps/activity/forms.py:76 apps/activity/models.py:268
msgid "You can't invite someone once the activity is started."
msgstr ""
"Sie dürfen nicht jemandem einladen wenn die Veranstaltung angefangen hat."
#: apps/activity/forms.py:79 apps/activity/models.py:265
#: apps/activity/forms.py:79 apps/activity/models.py:271
msgid "This activity is not validated yet."
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."
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."
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."
msgstr "Sie dürfen höchstens 3 Leute zu dieser Veranstaltung einladen."
#: 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/profile_info.html:4
#: 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/registration/templates/registration/future_profile_detail.html:16
#: 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"
msgstr "Type"
#: apps/activity/models.py:89 apps/logs/models.py:22 apps/member/models.py:305
#: apps/note/models/notes.py:144 apps/treasury/models.py:267
#: 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:276
#: apps/treasury/templates/treasury/sogecredit_detail.html:14
#: apps/wei/models.py:160 apps/wei/templates/wei/survey.html:15
msgid "user"
@ -149,7 +149,7 @@ msgstr "Abschlussdatum"
#: apps/activity/models.py:118
#: apps/activity/templates/activity/includes/activity_info.html:50
#: apps/note/models/transactions.py:146
#: apps/note/models/transactions.py:149
msgid "valid"
msgstr "gültig"
@ -181,42 +181,53 @@ msgstr "Eintritt"
msgid "entries"
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 "
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}"
msgstr "{:%Y-%m-%d %H:%M:%S}"
#: apps/activity/models.py:203
#: apps/activity/models.py:209
msgid "The balance is negative."
msgstr "Kontostand ist im Rot."
#: apps/activity/models.py:233
#: apps/activity/models.py:239
msgid "last name"
msgstr "Nachname"
#: apps/activity/models.py:238
#: apps/activity/models.py:244
#: apps/member/templates/member/includes/profile_info.html:4
#: apps/registration/templates/registration/future_profile_detail.html:16
#: apps/wei/templates/wei/weimembership_form.html:14
msgid "first name"
msgstr "Vorname"
#: apps/activity/models.py:245
#: apps/activity/models.py:251
msgid "inviter"
msgstr "Einlader"
#: apps/activity/models.py:289
#: apps/activity/models.py:295
msgid "guest"
msgstr "Gast"
#: apps/activity/models.py:290
#: apps/activity/models.py:296
msgid "guests"
msgstr "Gäste"
#: apps/activity/models.py:302
#: apps/activity/models.py:308
msgid "Invitation"
msgstr "Einladung"
@ -240,7 +251,7 @@ msgstr "Eingetreten um "
msgid "remove"
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"
msgstr "Type"
@ -270,7 +281,7 @@ msgid "Guests list"
msgstr "Gastliste"
#: 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:148
#: note_kfet/templates/base.html:70
@ -278,13 +289,13 @@ msgid "Transfer"
msgstr "Überweisen"
#: 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
msgid "Credit"
msgstr "Kredit"
#: 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
msgid "Debit"
msgstr "Soll"
@ -356,7 +367,7 @@ msgid "validate"
msgstr "validate"
#: 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"
msgstr "bearbeiten"
@ -420,59 +431,64 @@ msgstr "Model"
msgid "identifier"
msgstr "Kennzeichnung"
#: apps/logs/models.py:48
#: apps/logs/models.py:49
msgid "previous data"
msgstr "ehemalige Daten"
#: apps/logs/models.py:53
#: apps/logs/models.py:55
msgid "new data"
msgstr "neue Daten"
#: apps/logs/models.py:61
#: apps/logs/models.py:63
msgid "create"
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/wei/tables.py:75
msgid "delete"
msgstr "entfernen"
#: apps/logs/models.py:66
#: apps/logs/models.py:68
msgid "action"
msgstr "Aktion"
#: apps/logs/models.py:74
#: apps/logs/models.py:76
msgid "timestamp"
msgstr "Zeitstempel"
#: apps/logs/models.py:78
#: apps/logs/models.py:80
msgid "Logs cannot be destroyed."
msgstr "Logs können nicht entfernen sein."
#: apps/logs/models.py:81
#: apps/logs/models.py:83
msgid "changelog"
msgstr "Changelog"
#: apps/logs/models.py:82
#: apps/logs/models.py:84
msgid "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
msgid "membership fee (paid students)"
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
msgid "membership fee (unpaid students)"
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"
msgstr "Rollen"
#: apps/member/admin.py:66 apps/member/models.py:330
#: apps/member/admin.py:66 apps/member/models.py:329
msgid "fee"
msgstr "Preis"
@ -666,19 +682,19 @@ msgstr "bezahlt"
msgid "Tells if the user receive a salary."
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"
msgstr "Nein"
#: apps/member/models.py:102
#: apps/member/models.py:101
msgid "Yes (receive them in french)"
msgstr "Ja (auf Fränzosich)"
#: apps/member/models.py:103
#: apps/member/models.py:102
msgid "Yes (receive them in english)"
msgstr "Ja (auf English)"
#: apps/member/models.py:105
#: apps/member/models.py:104
msgid ""
"Register on the mailing list to stay informed of the events of the campus (1 "
"mail/week)"
@ -686,7 +702,7 @@ msgstr ""
"Melden Sie sich auf der Mailingliste an, um über die Ereignisse des Campus "
"informiert zu bleiben (1 Mail / Woche)"
#: apps/member/models.py:110
#: apps/member/models.py:109
msgid ""
"Register on the mailing list to stay informed of the sport events of the "
"campus (1 mail/week)"
@ -694,7 +710,7 @@ msgstr ""
"Melden Sie sich auf der Mailingliste an, um über die Sportereignisse des "
"Campus informiert zu bleiben (1 Mail / Woche)"
#: apps/member/models.py:115
#: apps/member/models.py:114
msgid ""
"Register on the mailing list to stay informed of the art events of the "
"campus (1 mail/week)"
@ -702,31 +718,31 @@ msgstr ""
"Melden Sie sich auf der Mailingliste an, um über die Kunstereignisse des "
"Campus informiert zu bleiben (1 Mail / Woche)"
#: apps/member/models.py:119
#: apps/member/models.py:118
msgid "report frequency (in days)"
msgstr "Bericht Frequenz (Tagen)"
#: apps/member/models.py:124
#: apps/member/models.py:123
msgid "last report date"
msgstr "letzen Bericht Datum"
#: apps/member/models.py:129
#: apps/member/models.py:128
msgid "email confirmed"
msgstr "email bestätigt"
#: apps/member/models.py:134
#: apps/member/models.py:133
msgid "registration valid"
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"
msgstr "Userprofile"
#: apps/member/models.py:174
#: apps/member/models.py:173
msgid "Activate your Note Kfet account"
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/profile_info.html:31
#: apps/registration/templates/registration/future_profile_detail.html:22
@ -735,88 +751,88 @@ msgstr "Ihre Note Kfet Konto bestätigen"
msgid "email"
msgstr "Email"
#: apps/member/models.py:212
#: apps/member/models.py:211
msgid "parent club"
msgstr "Urclub"
#: apps/member/models.py:221
#: apps/member/models.py:220
msgid "require memberships"
msgstr "erfordern Mitgliedschaft"
#: apps/member/models.py:222
#: apps/member/models.py:221
msgid "Uncheck if this club don't require memberships."
msgstr ""
"Deaktivieren Sie diese Option, wenn für diesen Club keine Mitgliedschaft "
"erforderlich ist."
#: apps/member/models.py:238
#: apps/member/models.py:237
#: apps/member/templates/member/includes/club_info.html:26
msgid "membership duration"
msgstr "Mitgliedscahftzeit"
#: apps/member/models.py:239
#: apps/member/models.py:238
msgid "The longest time (in days) a membership can last (NULL = infinite)."
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
msgid "membership start"
msgstr "Mitgliedschaftanfangsdatum"
#: apps/member/models.py:247
#: apps/member/models.py:246
msgid "Date from which the members can renew their membership."
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
msgid "membership end"
msgstr "Mitgliedschaftenddatum"
#: apps/member/models.py:254
#: apps/member/models.py:253
msgid "Maximal date of a membership, after which members must renew it."
msgstr ""
"Maximales Datum einer Mitgliedschaft, nach dem Mitglieder es erneuern müssen."
#: apps/member/models.py:286 apps/member/models.py:311
#: apps/member/models.py:285 apps/member/models.py:310
#: apps/note/models/notes.py:185
msgid "club"
msgstr "Club"
#: apps/member/models.py:287
#: apps/member/models.py:286
msgid "clubs"
msgstr "Clubs"
#: apps/member/models.py:321
#: apps/member/models.py:320
msgid "membership starts on"
msgstr "Mitgliedschaft fängt an"
#: apps/member/models.py:325
#: apps/member/models.py:324
msgid "membership ends on"
msgstr "Mitgliedschaft endet am"
#: apps/member/models.py:420
#: apps/member/models.py:419
#, python-brace-format
msgid "The role {role} does not apply to the club {club}."
msgstr "Die Rolle {role} ist nicht erlaubt für das Club {club}."
#: apps/member/models.py: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"
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"
msgstr "User ist noch nicht Mitglied des Urclubs"
#: apps/member/models.py:489
#: apps/member/models.py:488
#, python-brace-format
msgid "Membership of {user} for the 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"
msgstr "Mitgliedschaft"
#: apps/member/models.py:493
#: apps/member/models.py:492
msgid "memberships"
msgstr "Mitgliedschaften"
@ -1116,22 +1132,22 @@ msgstr "Rollen in diesen Club bearbeiten"
msgid "Members of the 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"
msgstr "Sender"
#: 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"
msgstr "Empfänger"
#: 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"
msgstr "Anzahl"
#: apps/note/api/serializers.py:183 apps/note/api/serializers.py:189
#: apps/note/models/transactions.py:224
#: apps/note/models/transactions.py:226
msgid ""
"The transaction can't be saved since the source note or the destination note "
"is not active."
@ -1191,7 +1207,7 @@ msgstr "letztes mal im Rot"
msgid "display image"
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"
msgstr "erschafft am"
@ -1316,33 +1332,33 @@ msgstr "Transaktionsvorlage"
msgid "transaction templates"
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
msgid "used alias"
msgstr "benutzte Aliasen"
#: apps/note/models/transactions.py:133
#: apps/note/models/transactions.py:136
msgid "quantity"
msgstr "Anzahl"
#: apps/note/models/transactions.py:141
#: apps/note/models/transactions.py:144
msgid "reason"
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"
msgstr "Ungültigkeit Grund"
#: apps/note/models/transactions.py:159
#: apps/note/models/transactions.py:161
msgid "transaction"
msgstr "Transaktion"
#: apps/note/models/transactions.py:160
#: apps/note/models/transactions.py:162
#: apps/treasury/templates/treasury/sogecredit_detail.html:22
msgid "transactions"
msgstr "Transaktionen"
#: apps/note/models/transactions.py:182
#: apps/note/models/transactions.py:184
#, python-brace-format
msgid ""
"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 es ungültig und erstellen Sie eine andere."
#: apps/note/models/transactions.py:202
#: apps/note/models/transactions.py:204
msgid ""
"The note balances must be between - 92 233 720 368 547 758.08 € and 92 233 "
"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 "
"720 368 547 758,07 € liegen."
#: apps/note/models/transactions.py:279
#: apps/note/models/transactions.py:273
msgid ""
"The destination of this transaction must equal to the destination of the "
"template."
msgstr ""
"Der Empfänger dieser Transaktion muss dem Empfänger der Vorlage entsprechen."
#: apps/note/models/transactions.py:288
#: apps/note/models/transactions.py:282
msgid "Template"
msgstr "Vorlage"
#: apps/note/models/transactions.py:291
#: apps/note/models/transactions.py:285
msgid "recurrent transaction"
msgstr "wiederkehrende Transaktion"
#: apps/note/models/transactions.py:292
#: apps/note/models/transactions.py:286
msgid "recurrent transactions"
msgstr "wiederkehrende Transaktionen"
#: apps/note/models/transactions.py:307
#: apps/note/models/transactions.py:301
msgid "first_name"
msgstr "Vorname"
#: apps/note/models/transactions.py:312
#: apps/note/models/transactions.py:306
msgid "bank"
msgstr "Bank"
#: apps/note/models/transactions.py:329
#: apps/note/models/transactions.py:323
msgid ""
"A special transaction is only possible between a Note associated to a "
"payment method and a User or a Club"
@ -1394,19 +1410,19 @@ msgstr ""
"Eine Sondertransaktion ist nur zwischen einer Note, die einer "
"Zahlungsmethode zugeordnet ist, und einem User oder einem Club möglich"
#: apps/note/models/transactions.py:337
#: apps/note/models/transactions.py:331
msgid "Special transaction"
msgstr "Sondertransaktion"
#: apps/note/models/transactions.py:338
#: apps/note/models/transactions.py:332
msgid "Special transactions"
msgstr "Sondertranskationen"
#: apps/note/models/transactions.py:354
#: apps/note/models/transactions.py:348
msgid "membership transaction"
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"
msgstr "Mitgliedschaftttransaktionen"
@ -1678,7 +1694,7 @@ msgstr ""
"Sie haben nicht die Berechtigung, das Feld {field} in dieser Instanz von "
"Modell {app_label} zu ändern. {model_name}"
#: apps/permission/signals.py:73 apps/permission/views.py:89
#: apps/permission/signals.py:73 apps/permission/views.py:101
#, python-brace-format
msgid ""
"You don't have the permission to add an instance of model {app_label}."
@ -1736,7 +1752,7 @@ msgstr "Abfrage:"
msgid "No associated permission"
msgstr "Keine zugehörige Berechtigung"
#: apps/permission/views.py:56
#: apps/permission/views.py:68
#, python-brace-format
msgid ""
"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 "
"versuchen Sie es erneut."
#: apps/permission/views.py:60
#: apps/permission/views.py:72
#, python-brace-format
msgid ""
"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 "
"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"
msgstr "Rechten"
#: apps/permission/views.py:101
#: apps/permission/views.py:113
msgid "All rights"
msgstr "Alle Rechten"
@ -1967,7 +1983,7 @@ msgstr "Überweisung ist bereits geschlossen."
msgid "You can't change the type of the remittance."
msgstr "Sie können die Art der Überweisung nicht ändern."
#: apps/treasury/forms.py: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/templates/treasury/invoice_list.html:16
#: apps/treasury/templates/treasury/remittance_list.html:16
@ -1999,7 +2015,7 @@ msgstr "Beschreibung"
msgid "Address"
msgstr "Adresse"
#: apps/treasury/models.py:60 apps/treasury/models.py:180
#: apps/treasury/models.py:60 apps/treasury/models.py:186
msgid "Date"
msgstr "Datum"
@ -2019,7 +2035,7 @@ msgstr "Eine Rechnung kann nicht bearbeitet werden, wenn sie gesperrt ist."
msgid "tex source"
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"
msgstr "Rechnung"
@ -2027,67 +2043,73 @@ msgstr "Rechnung"
msgid "invoices"
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"
msgstr "Bezeichnung"
#: apps/treasury/models.py:131
#: apps/treasury/models.py:134
msgid "Quantity"
msgstr "Qualität"
#: apps/treasury/models.py:135
#: apps/treasury/models.py:138
msgid "Unit price"
msgstr "Einzelpreis"
#: apps/treasury/models.py:151
#: apps/treasury/models.py:154
msgid "product"
msgstr "Produkt"
#: apps/treasury/models.py:152
#: apps/treasury/models.py:155
msgid "products"
msgstr "Produkten"
#: apps/treasury/models.py:169
#: apps/treasury/models.py:175
msgid "remittance type"
msgstr "Überweisungstyp"
#: apps/treasury/models.py:170
#: apps/treasury/models.py:176
msgid "remittance types"
msgstr "Überweisungstypen"
#: apps/treasury/models.py:191
#: apps/treasury/models.py:197
msgid "Comment"
msgstr "Kommentar"
#: apps/treasury/models.py:196
#: apps/treasury/models.py:202
msgid "Closed"
msgstr "Geschlossen"
#: apps/treasury/models.py:200
#: apps/treasury/models.py:206
msgid "remittance"
msgstr "Überweisung"
#: apps/treasury/models.py:201
#: apps/treasury/models.py:207
msgid "remittances"
msgstr "Überweisungen"
#: apps/treasury/models.py:233
#: apps/treasury/models.py:239
msgid "Remittance #{:d}: {}"
msgstr "Überweisung #{:d}:{}"
#: apps/treasury/models.py:256
#: apps/treasury/models.py:262
msgid "special transaction proxy"
msgstr "spezielle Transaktion Proxy"
#: apps/treasury/models.py:257
#: apps/treasury/models.py:263
msgid "special transaction proxies"
msgstr "spezielle Transaktion Proxies"
#: apps/treasury/models.py:279
#: apps/treasury/models.py:288
msgid "credit transaction"
msgstr "Kredit Transaktion"
#: apps/treasury/models.py:343
#: apps/treasury/models.py:352
msgid ""
"This user doesn't have enough money to pay the memberships with its note. "
"Please ask her/him to credit the note before invalidating this credit."
@ -2095,15 +2117,20 @@ msgstr ""
"Dieser Benutzer hat nicht genug Geld, um die Mitgliedschaften mit seiner "
"Note zu bezahlen."
#: apps/treasury/models.py:355
#: apps/treasury/models.py:364
#: apps/treasury/templates/treasury/sogecredit_detail.html:10
msgid "Credit from the Société générale"
msgstr "Kredit von der Société générale"
#: apps/treasury/models.py:356
#: apps/treasury/models.py:365
msgid "Credits from the 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
msgid "Invoice #{:d}"
msgstr "Rechnung #{:d}"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \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"
"Last-Translator: \n"
"Language-Team: \n"
@ -27,33 +27,33 @@ msgstr "activité"
msgid "The end date must be after the start date."
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."
msgstr ""
"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."
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."
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."
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."
msgstr "Vous ne pouvez pas inviter plus de 3 personnes à cette activité."
#: 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/profile_info.html:4
#: 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/registration/templates/registration/future_profile_detail.html:16
#: 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"
msgstr "type"
#: apps/activity/models.py:89 apps/logs/models.py:22 apps/member/models.py:305
#: apps/note/models/notes.py:144 apps/treasury/models.py:267
#: 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:276
#: apps/treasury/templates/treasury/sogecredit_detail.html:14
#: apps/wei/models.py:160 apps/wei/templates/wei/survey.html:15
msgid "user"
@ -149,7 +149,7 @@ msgstr "date de fin"
#: apps/activity/models.py:118
#: apps/activity/templates/activity/includes/activity_info.html:50
#: apps/note/models/transactions.py:146
#: apps/note/models/transactions.py:149
msgid "valid"
msgstr "valide"
@ -181,42 +181,52 @@ msgstr "entrée"
msgid "entries"
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 "
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}"
msgstr "{:%d/%m/%Y %H:%M:%S}"
#: apps/activity/models.py:203
#: apps/activity/models.py:209
msgid "The balance is negative."
msgstr "La note est en négatif."
#: apps/activity/models.py:233
#: apps/activity/models.py:239
msgid "last name"
msgstr "nom de famille"
#: apps/activity/models.py:238
#: apps/activity/models.py:244
#: apps/member/templates/member/includes/profile_info.html:4
#: apps/registration/templates/registration/future_profile_detail.html:16
#: apps/wei/templates/wei/weimembership_form.html:14
msgid "first name"
msgstr "prénom"
#: apps/activity/models.py:245
#: apps/activity/models.py:251
msgid "inviter"
msgstr "hôte"
#: apps/activity/models.py:289
#: apps/activity/models.py:295
msgid "guest"
msgstr "invité"
#: apps/activity/models.py:290
#: apps/activity/models.py:296
msgid "guests"
msgstr "invités"
#: apps/activity/models.py:302
#: apps/activity/models.py:308
msgid "Invitation"
msgstr "Invitation"
@ -240,7 +250,7 @@ msgstr "Entré le "
msgid "remove"
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"
msgstr "Type"
@ -270,7 +280,7 @@ msgid "Guests list"
msgstr "Liste des invités"
#: 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:148
#: note_kfet/templates/base.html:70
@ -278,13 +288,13 @@ msgid "Transfer"
msgstr "Virement"
#: 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
msgid "Credit"
msgstr "Crédit"
#: 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
msgid "Debit"
msgstr "Débit"
@ -356,7 +366,7 @@ msgid "validate"
msgstr "valider"
#: 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"
msgstr "modifier"
@ -422,59 +432,64 @@ msgstr "modèle"
msgid "identifier"
msgstr "identifiant"
#: apps/logs/models.py:48
#: apps/logs/models.py:49
msgid "previous data"
msgstr "données précédentes"
#: apps/logs/models.py:53
#: apps/logs/models.py:55
msgid "new data"
msgstr "ouvelles données"
#: apps/logs/models.py:61
#: apps/logs/models.py:63
msgid "create"
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/wei/tables.py:75
msgid "delete"
msgstr "supprimer"
#: apps/logs/models.py:66
#: apps/logs/models.py:68
msgid "action"
msgstr "action"
#: apps/logs/models.py:74
#: apps/logs/models.py:76
msgid "timestamp"
msgstr "date"
#: apps/logs/models.py:78
#: apps/logs/models.py:80
msgid "Logs cannot be destroyed."
msgstr "Les logs ne peuvent pas être détruits."
#: apps/logs/models.py:81
#: apps/logs/models.py:83
msgid "changelog"
msgstr "journal de modification"
#: apps/logs/models.py:82
#: apps/logs/models.py:84
msgid "changelogs"
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
msgid "membership fee (paid students)"
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
msgid "membership fee (unpaid students)"
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"
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"
msgstr "cotisation"
@ -668,19 +683,19 @@ msgstr "payé"
msgid "Tells if the user receive a salary."
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"
msgstr "Non"
#: apps/member/models.py:102
#: apps/member/models.py:101
msgid "Yes (receive them in french)"
msgstr "Oui (les recevoir en français)"
#: apps/member/models.py:103
#: apps/member/models.py:102
msgid "Yes (receive them in english)"
msgstr "Oui (les recevoir en anglais)"
#: apps/member/models.py:105
#: apps/member/models.py:104
msgid ""
"Register on the mailing list to stay informed of the events of the campus (1 "
"mail/week)"
@ -688,7 +703,7 @@ msgstr ""
"S'inscrire sur la liste de diffusion pour rester informé des événements sur "
"le campus (1 mail par semaine)"
#: apps/member/models.py:110
#: apps/member/models.py:109
msgid ""
"Register on the mailing list to stay informed of the sport events of the "
"campus (1 mail/week)"
@ -696,7 +711,7 @@ msgstr ""
"S'inscrire sur la liste de diffusion pour rester informé des actualités "
"sportives sur le campus (1 mail par semaine)"
#: apps/member/models.py:115
#: apps/member/models.py:114
msgid ""
"Register on the mailing list to stay informed of the art events of the "
"campus (1 mail/week)"
@ -704,31 +719,31 @@ msgstr ""
"S'inscrire sur la liste de diffusion pour rester informé des actualités "
"artistiques sur le campus (1 mail par semaine)"
#: apps/member/models.py:119
#: apps/member/models.py:118
msgid "report frequency (in days)"
msgstr "fréquence des rapports (en jours)"
#: apps/member/models.py:124
#: apps/member/models.py:123
msgid "last report date"
msgstr "date de dernier rapport"
#: apps/member/models.py:129
#: apps/member/models.py:128
msgid "email confirmed"
msgstr "adresse email confirmée"
#: apps/member/models.py:134
#: apps/member/models.py:133
msgid "registration valid"
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"
msgstr "profil utilisateur"
#: apps/member/models.py:174
#: apps/member/models.py:173
msgid "Activate your Note Kfet account"
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/profile_info.html:31
#: apps/registration/templates/registration/future_profile_detail.html:22
@ -737,88 +752,88 @@ msgstr "Activez votre compte Note Kfet"
msgid "email"
msgstr "courriel"
#: apps/member/models.py:212
#: apps/member/models.py:211
msgid "parent club"
msgstr "club parent"
#: apps/member/models.py:221
#: apps/member/models.py:220
msgid "require memberships"
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."
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
msgid "membership duration"
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)."
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
msgid "membership start"
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."
msgstr ""
"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
msgid "membership end"
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."
msgstr ""
"Date maximale d'une fin d'adhésion, après laquelle les adhérents doivent la "
"renouveler."
#: apps/member/models.py:286 apps/member/models.py:311
#: apps/member/models.py:285 apps/member/models.py:310
#: apps/note/models/notes.py:185
msgid "club"
msgstr "club"
#: apps/member/models.py:287
#: apps/member/models.py:286
msgid "clubs"
msgstr "clubs"
#: apps/member/models.py:321
#: apps/member/models.py:320
msgid "membership starts on"
msgstr "l'adhésion commence le"
#: apps/member/models.py:325
#: apps/member/models.py:324
msgid "membership ends on"
msgstr "l'adhésion finit le"
#: apps/member/models.py:420
#: apps/member/models.py:419
#, python-brace-format
msgid "The role {role} does not apply to the club {club}."
msgstr "Le rôle {role} ne s'applique pas au club {club}."
#: apps/member/models.py: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"
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"
msgstr "L'utilisateur n'est pas membre du club parent"
#: apps/member/models.py:489
#: apps/member/models.py:488
#, python-brace-format
msgid "Membership of {user} for the 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"
msgstr "adhésion"
#: apps/member/models.py:493
#: apps/member/models.py:492
msgid "memberships"
msgstr "adhésions"
@ -1118,22 +1133,22 @@ msgstr "Gérer les rôles d'un utilisateur dans le club"
msgid "Members of the 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"
msgstr "source"
#: 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"
msgstr "destination"
#: 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"
msgstr "montant"
#: apps/note/api/serializers.py:183 apps/note/api/serializers.py:189
#: apps/note/models/transactions.py:224
#: apps/note/models/transactions.py:226
msgid ""
"The transaction can't be saved since the source note or the destination note "
"is not active."
@ -1193,7 +1208,7 @@ msgstr "dernier instant où la note était en négatif"
msgid "display image"
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"
msgstr "créée le"
@ -1319,33 +1334,33 @@ msgstr "modèle de transaction"
msgid "transaction templates"
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
msgid "used alias"
msgstr "alias utilisé"
#: apps/note/models/transactions.py:133
#: apps/note/models/transactions.py:136
msgid "quantity"
msgstr "quantité"
#: apps/note/models/transactions.py:141
#: apps/note/models/transactions.py:144
msgid "reason"
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"
msgstr "motif d'invalidité"
#: apps/note/models/transactions.py:159
#: apps/note/models/transactions.py:161
msgid "transaction"
msgstr "transaction"
#: apps/note/models/transactions.py:160
#: apps/note/models/transactions.py:162
#: apps/treasury/templates/treasury/sogecredit_detail.html:22
msgid "transactions"
msgstr "transactions"
#: apps/note/models/transactions.py:182
#: apps/note/models/transactions.py:184
#, python-brace-format
msgid ""
"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. "
"Merci de l'invalider et d'en créer une autre."
#: apps/note/models/transactions.py:202
#: apps/note/models/transactions.py:204
msgid ""
"The note balances must be between - 92 233 720 368 547 758.08 € and 92 233 "
"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 "
"BDE."
#: apps/note/models/transactions.py:279
#: apps/note/models/transactions.py:273
msgid ""
"The destination of this transaction must equal to the destination of the "
"template."
@ -1371,27 +1386,27 @@ msgstr ""
"Le destinataire de cette transaction doit être identique à celui du bouton "
"utilisé."
#: apps/note/models/transactions.py:288
#: apps/note/models/transactions.py:282
msgid "Template"
msgstr "Bouton"
#: apps/note/models/transactions.py:291
#: apps/note/models/transactions.py:285
msgid "recurrent transaction"
msgstr "transaction issue de bouton"
#: apps/note/models/transactions.py:292
#: apps/note/models/transactions.py:286
msgid "recurrent transactions"
msgstr "transactions issues de boutons"
#: apps/note/models/transactions.py:307
#: apps/note/models/transactions.py:301
msgid "first_name"
msgstr "prénom"
#: apps/note/models/transactions.py:312
#: apps/note/models/transactions.py:306
msgid "bank"
msgstr "banque"
#: apps/note/models/transactions.py:329
#: apps/note/models/transactions.py:323
msgid ""
"A special transaction is only possible between a Note associated to a "
"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 "
"mode de paiement et un utilisateur ou un club"
#: apps/note/models/transactions.py:337
#: apps/note/models/transactions.py:331
msgid "Special transaction"
msgstr "Transaction de crédit/retrait"
#: apps/note/models/transactions.py:338
#: apps/note/models/transactions.py:332
msgid "Special transactions"
msgstr "Transactions de crédit/retrait"
#: apps/note/models/transactions.py:354
#: apps/note/models/transactions.py:348
msgid "membership transaction"
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"
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 "
"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
msgid ""
"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"
msgstr "Pas de permission associée"
#: apps/permission/views.py:56
#: apps/permission/views.py:68
#, python-brace-format
msgid ""
"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} "
"» 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
msgid ""
"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} » "
"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"
msgstr "Droits"
#: apps/permission/views.py:101
#: apps/permission/views.py:113
msgid "All rights"
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."
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/templates/treasury/invoice_list.html:16
#: apps/treasury/templates/treasury/remittance_list.html:16
@ -2003,7 +2018,7 @@ msgstr "Description"
msgid "Address"
msgstr "Adresse"
#: apps/treasury/models.py:60 apps/treasury/models.py:180
#: apps/treasury/models.py:60 apps/treasury/models.py:186
msgid "Date"
msgstr "Date"
@ -2023,7 +2038,7 @@ msgstr "Une facture ne peut plus être modifiée si elle est verrouillée."
msgid "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"
msgstr "facture"
@ -2031,67 +2046,72 @@ msgstr "facture"
msgid "invoices"
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"
msgstr "Désignation"
#: apps/treasury/models.py:131
#: apps/treasury/models.py:134
msgid "Quantity"
msgstr "Quantité"
#: apps/treasury/models.py:135
#: apps/treasury/models.py:138
msgid "Unit price"
msgstr "Prix unitaire"
#: apps/treasury/models.py:151
#: apps/treasury/models.py:154
msgid "product"
msgstr "produit"
#: apps/treasury/models.py:152
#: apps/treasury/models.py:155
msgid "products"
msgstr "produits"
#: apps/treasury/models.py:169
#: apps/treasury/models.py:175
msgid "remittance type"
msgstr "type de remise"
#: apps/treasury/models.py:170
#: apps/treasury/models.py:176
msgid "remittance types"
msgstr "types de remises"
#: apps/treasury/models.py:191
#: apps/treasury/models.py:197
msgid "Comment"
msgstr "Commentaire"
#: apps/treasury/models.py:196
#: apps/treasury/models.py:202
msgid "Closed"
msgstr "Fermée"
#: apps/treasury/models.py:200
#: apps/treasury/models.py:206
msgid "remittance"
msgstr "remise"
#: apps/treasury/models.py:201
#: apps/treasury/models.py:207
msgid "remittances"
msgstr "remises"
#: apps/treasury/models.py:233
#: apps/treasury/models.py:239
msgid "Remittance #{:d}: {}"
msgstr "Remise n°{:d} : {}"
#: apps/treasury/models.py:256
#: apps/treasury/models.py:262
msgid "special transaction proxy"
msgstr "proxy de transaction spéciale"
#: apps/treasury/models.py:257
#: apps/treasury/models.py:263
msgid "special transaction proxies"
msgstr "proxys de transactions spéciales"
#: apps/treasury/models.py:279
#: apps/treasury/models.py:288
msgid "credit transaction"
msgstr "transaction de crédit"
#: apps/treasury/models.py:343
#: apps/treasury/models.py:352
msgid ""
"This user doesn't have enough money to pay the memberships with its note. "
"Please ask her/him to credit the note before invalidating this credit."
@ -2099,15 +2119,20 @@ msgstr ""
"Cet utilisateur n'a pas assez d'argent pour payer les adhésions avec sa "
"note. Merci de lui demander de recharger sa note avant d'invalider ce crédit."
#: apps/treasury/models.py:355
#: apps/treasury/models.py:364
#: apps/treasury/templates/treasury/sogecredit_detail.html:10
msgid "Credit from the Société générale"
msgstr "Crédit de la Société générale"
#: apps/treasury/models.py:356
#: apps/treasury/models.py:365
msgid "Credits from the 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
msgid "Invoice #{:d}"
msgstr "Facture n°{:d}"