1
0
mirror of https://gitlab.crans.org/bde/nk20 synced 2025-06-30 21:11:15 +02:00

Compare commits

..

16 Commits

31 changed files with 340 additions and 688 deletions

2
.gitignore vendored
View File

@ -42,12 +42,12 @@ map.json
backups/
/static/
/media/
/tmp/
# Virtualenv
env/
venv/
db.sqlite3
shell.nix
# ansibles customs host
ansible/host_vars/*.yaml

View File

@ -6,7 +6,7 @@
"name": "Pot",
"manage_entries": true,
"can_invite": true,
"guest_entry_fee": 500
"guest_entry_fee": 1000
}
},
{
@ -28,5 +28,25 @@
"can_invite": false,
"guest_entry_fee": 0
}
},
{
"model": "activity.activitytype",
"pk": 5,
"fields": {
"name": "Soir\u00e9e avec entrées",
"manage_entries": true,
"can_invite": false,
"guest_entry_fee": 0
}
},
{
"model": "activity.activitytype",
"pk": 7,
"fields": {
"name": "Soir\u00e9e avec invitations",
"manage_entries": true,
"can_invite": true,
"guest_entry_fee": 0
}
}
]

View File

@ -1,18 +0,0 @@
# Generated by Django 2.2.26 on 2022-09-04 21:25
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('member', '0008_auto_20211005_1544'),
]
operations = [
migrations.AlterField(
model_name='profile',
name='promotion',
field=models.PositiveSmallIntegerField(default=2022, help_text='Year of entry to the school (None if not ENS student)', null=True, verbose_name='promotion'),
),
]

View File

@ -221,7 +221,7 @@ function consume (source, source_alias, dest, quantity, amount, reason, type, ca
.done(function () {
if (!isNaN(source.balance)) {
const newBalance = source.balance - quantity * amount
if (newBalance <= -5000) {
if (newBalance <= -2000) {
addMsg(interpolate(gettext('Warning, the transaction from the note %s succeed, ' +
'but the emitter note %s is very negative.'), [source_alias, source_alias]), 'danger', 30000)
} else if (newBalance < 0) {

View File

@ -314,7 +314,7 @@ $('#btn_transfer').click(function () {
if (!isNaN(source.note.balance)) {
const newBalance = source.note.balance - source.quantity * dest.quantity * amount
if (newBalance <= -5000) {
if (newBalance <= -2000) {
addMsg(interpolate(gettext('Warning, the transaction of %s from the note %s to the note %s succeed, but the emitter note %s is very negative.'),
[pretty_money(source.quantity * dest.quantity * amount), source.name, dest.name, source.name]), 'danger', 10000)
reset()

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,19 @@
# Generated by Django 2.2.28 on 2023-07-24 10:15
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('permission', '0001_initial'),
]
operations = [
migrations.AlterField(
model_name='role',
name='for_club',
field=models.ForeignKey(blank=True, default=None, null=True, on_delete=django.db.models.deletion.PROTECT, to='member.Club', verbose_name='for club'),
),
]

View File

@ -339,6 +339,7 @@ class Role(models.Model):
"member.Club",
verbose_name=_("for club"),
on_delete=models.PROTECT,
blank=True,
null=True,
default=None,
)

View File

@ -1,18 +0,0 @@
# Generated by Django 2.2.28 on 2023-01-29 22:48
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('treasury', '0004_auto_20211005_1544'),
]
operations = [
migrations.AlterField(
model_name='invoice',
name='bde',
field=models.CharField(choices=[('TotalistSpies', 'Tota[list]Spies'), ('Saperlistpopette', 'Saper[list]popette'), ('Finalist', 'Fina[list]'), ('Listorique', '[List]orique'), ('Satellist', 'Satel[list]'), ('Monopolist', 'Monopo[list]'), ('Kataclist', 'Katac[list]')], default='TotalistSpies', max_length=32, verbose_name='BDE'),
),
]

View File

@ -1,18 +0,0 @@
# Generated by Django 2.2.28 on 2023-04-14 14:51
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('treasury', '0005_auto_20230129_2348'),
]
operations = [
migrations.AlterField(
model_name='invoice',
name='bde',
field=models.CharField(choices=[('SecretStorlist', 'SecretStor[list]'), ('TotalistSpies', 'Tota[list]Spies'), ('Saperlistpopette', 'Saper[list]popette'), ('Finalist', 'Fina[list]'), ('Listorique', '[List]orique'), ('Satellist', 'Satel[list]'), ('Monopolist', 'Monopo[list]'), ('Kataclist', 'Katac[list]')], default='SecretStorlist', max_length=32, verbose_name='BDE'),
),
]

View File

@ -28,10 +28,8 @@ class Invoice(models.Model):
bde = models.CharField(
max_length=32,
default='SecretStorlist',
default='Saperlistpopette',
choices=(
('SecretStorlist', 'SecretStor[list]'),
('TotalistSpies', 'Tota[list]Spies'),
('Saperlistpopette', 'Saper[list]popette'),
('Finalist', 'Fina[list]'),
('Listorique', '[List]orique'),
@ -97,7 +95,7 @@ class Invoice(models.Model):
products = self.products.all()
self.place = "Gif-sur-Yvette"
self.my_name = "BDE ENS Paris Saclay"
self.my_name = "BDE ENS Cachan"
self.my_address_street = "4 avenue des Sciences"
self.my_city = "91190 Gif-sur-Yvette"
self.bank_code = 30003

Binary file not shown.

Before

Width:  |  Height:  |  Size: 690 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 77 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

View File

@ -105,8 +105,8 @@
\renewcommand{\headrulewidth}{0pt}
\cfoot{
\small{\MonNom ~--~ \MonAdresseRue ~ \MonAdresseVille ~--~ Téléphone : +33(0)7 78 17 22 34\newline
Site web : bde.ens-cachan.fr ~--~ E-mail : tresorerie.bde@lists.crans.org \newline Numéro SIRET : 399 485 838 00029
\small{\MonNom ~--~ \MonAdresseRue ~ \MonAdresseVille ~--~ Téléphone : +33(0)6 89 88 56 50\newline
Site web : bde.ens-cachan.fr ~--~ E-mail : tresorerie.bde@lists.crans.org \newline Numéro SIRET : 399 485 838 00011
}
}

View File

@ -108,7 +108,7 @@ class InvoiceListView(LoginRequiredMixin, SingleTableView):
name="",
address="",
)
if not PermissionBackend.check_perm(self.request, "treasury.add_invoice", sample_invoice):
if not PermissionBackend.check_perm(self.request, "treasury.view_invoice", sample_invoice):
raise PermissionDenied(_("You are not able to see the treasury interface."))
return super().dispatch(request, *args, **kwargs)

View File

@ -1,18 +0,0 @@
# Generated by Django 2.2.26 on 2022-09-04 21:25
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('wei', '0003_bus_size'),
]
operations = [
migrations.AlterField(
model_name='weiclub',
name='year',
field=models.PositiveIntegerField(default=2022, unique=True, verbose_name='year'),
),
]

View File

@ -1,18 +0,0 @@
# Generated by Django 2.2.28 on 2023-01-28 17:50
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('wei', '0004_auto_20220904_2325'),
]
operations = [
migrations.AlterField(
model_name='weiclub',
name='year',
field=models.PositiveIntegerField(default=2023, unique=True, verbose_name='year'),
),
]

View File

@ -118,13 +118,13 @@ Exemples
{"F": [
"ADD",
["F", "source__balance"],
5000]
2000]
}
}
]
| si la destination est la note du club dont on est membre et si le montant est inférieur au solde de la source + 50 €,
autrement dit le solde final est au-dessus de -50 €.
| si la destination est la note du club dont on est membre et si le montant est inférieur au solde de la source + 20 €,
autrement dit le solde final est au-dessus de -20 €.
Masques de permissions

View File

@ -83,13 +83,6 @@ Je suis trésorier d'un club, qu'ai-je le droit de faire ?
bien sûr permis pour faciliter des transferts. Tout abus de droits constaté
pourra mener à des sanctions prises par le bureau du BDE.
.. warning::
Une fonctionnalité pour permettre de gérer plus proprement les remboursements
entre amis est en cours de développement. Temporairement et pour des raisons
de confort, les trésoriers de clubs ont le droit de prélever n'importe quelle
adhérente vers n'importe quelle autre note adhérente, tant que la source ne
descend pas sous ``- 50 €``. Ces droits seront retirés d'ici quelques semaines.
Je suis trésorier d'un club, je n'arrive pas à voir le solde du club / faire des transactions
---------------------------------------------------------------------------------------------------

View File

@ -7,9 +7,9 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-03-31 17:08+0200\n"
"POT-Creation-Date: 2022-04-10 22:34+0200\n"
"PO-Revision-Date: 2020-11-16 20:02+0000\n"
"Last-Translator: bleizi <bleizi@crans.org>\n"
"Last-Translator: Yohann D'ANELLO <ynerant@crans.org>\n"
"Language-Team: German <http://translate.ynerant.fr/projects/nk20/nk20/de/>\n"
"Language: de\n"
"MIME-Version: 1.0\n"
@ -115,7 +115,7 @@ msgid "type"
msgstr "Type"
#: apps/activity/models.py:89 apps/logs/models.py:22 apps/member/models.py:307
#: apps/note/models/notes.py:148 apps/treasury/models.py:286
#: apps/note/models/notes.py:148 apps/treasury/models.py:285
#: apps/wei/models.py:173 apps/wei/templates/wei/attribute_bus_1A.html:13
#: apps/wei/templates/wei/survey.html:15
msgid "user"
@ -258,7 +258,7 @@ msgstr "Eingetreten um "
msgid "remove"
msgstr "entfernen"
#: apps/activity/tables.py:82 apps/note/forms.py:68 apps/treasury/models.py:200
#: apps/activity/tables.py:82 apps/note/forms.py:68 apps/treasury/models.py:199
msgid "Type"
msgstr "Type"
@ -1570,7 +1570,7 @@ msgstr "Sondertranskationen"
msgid "membership transaction"
msgstr "Mitgliedschafttransaktion"
#: apps/note/models/transactions.py:385 apps/treasury/models.py:293
#: apps/note/models/transactions.py:385 apps/treasury/models.py:292
msgid "membership transactions"
msgstr "Mitgliedschaftttransaktionen"
@ -1689,7 +1689,7 @@ msgid "Amount"
msgstr "Anzahl"
#: apps/note/templates/note/transaction_form.html:132
#: apps/treasury/models.py:55
#: apps/treasury/models.py:54
msgid "Name"
msgstr "Name"
@ -2183,7 +2183,7 @@ msgstr "Ungültige Vorregistrierung"
msgid "Treasury"
msgstr "Quaestor"
#: apps/treasury/forms.py:26 apps/treasury/models.py:94
#: apps/treasury/forms.py:26 apps/treasury/models.py:93
#: apps/treasury/templates/treasury/invoice_form.html:22
msgid "This invoice is locked and can no longer be edited."
msgstr "Diese Rechnung ist gesperrt und kann nicht mehr bearbeitet werden."
@ -2196,7 +2196,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:125 apps/treasury/models.py:268
#: apps/treasury/forms.py:125 apps/treasury/models.py:267
#: apps/treasury/tables.py:97 apps/treasury/tables.py:105
#: apps/treasury/templates/treasury/invoice_list.html:16
#: apps/treasury/templates/treasury/remittance_list.html:16
@ -2212,116 +2212,116 @@ msgstr "Keine beigefügte Überweisung"
msgid "Invoice identifier"
msgstr "Rechnungskennung"
#: apps/treasury/models.py:41
#: apps/treasury/models.py:40
msgid "BDE"
msgstr "BDE"
#: apps/treasury/models.py:46
#: apps/treasury/models.py:45
msgid "Object"
msgstr "Objekt"
#: apps/treasury/models.py:50
#: apps/treasury/models.py:49
msgid "Description"
msgstr "Beschreibung"
#: apps/treasury/models.py:59
#: apps/treasury/models.py:58
msgid "Address"
msgstr "Adresse"
#: apps/treasury/models.py:64 apps/treasury/models.py:194
#: apps/treasury/models.py:63 apps/treasury/models.py:193
msgid "Date"
msgstr "Datum"
#: apps/treasury/models.py:68
#: apps/treasury/models.py:67
msgid "Acquitted"
msgstr "Bezahlt"
#: apps/treasury/models.py:73
#: apps/treasury/models.py:72
msgid "Locked"
msgstr "Gesperrt"
#: apps/treasury/models.py:74
#: apps/treasury/models.py:73
msgid "An invoice can't be edited when it is locked."
msgstr "Eine Rechnung kann nicht bearbeitet werden, wenn sie gesperrt ist."
#: apps/treasury/models.py:80
#: apps/treasury/models.py:79
msgid "tex source"
msgstr "Tex Quelle"
#: apps/treasury/models.py:114 apps/treasury/models.py:130
#: apps/treasury/models.py:113 apps/treasury/models.py:129
msgid "invoice"
msgstr "Rechnung"
#: apps/treasury/models.py:115
#: apps/treasury/models.py:114
msgid "invoices"
msgstr "Rechnungen"
#: apps/treasury/models.py:118
#: apps/treasury/models.py:117
#, python-brace-format
msgid "Invoice #{id}"
msgstr "Rechnung #{id}"
#: apps/treasury/models.py:135
#: apps/treasury/models.py:134
msgid "Designation"
msgstr "Bezeichnung"
#: apps/treasury/models.py:141
#: apps/treasury/models.py:140
msgid "Quantity"
msgstr "Qualität"
#: apps/treasury/models.py:146
#: apps/treasury/models.py:145
msgid "Unit price"
msgstr "Einzelpreis"
#: apps/treasury/models.py:162
#: apps/treasury/models.py:161
msgid "product"
msgstr "Produkt"
#: apps/treasury/models.py:163
#: apps/treasury/models.py:162
msgid "products"
msgstr "Produkten"
#: apps/treasury/models.py:183
#: apps/treasury/models.py:182
msgid "remittance type"
msgstr "Überweisungstyp"
#: apps/treasury/models.py:184
#: apps/treasury/models.py:183
msgid "remittance types"
msgstr "Überweisungstypen"
#: apps/treasury/models.py:205
#: apps/treasury/models.py:204
msgid "Comment"
msgstr "Kommentar"
#: apps/treasury/models.py:210
#: apps/treasury/models.py:209
msgid "Closed"
msgstr "Geschlossen"
#: apps/treasury/models.py:214
#: apps/treasury/models.py:213
msgid "remittance"
msgstr "Überweisung"
#: apps/treasury/models.py:215
#: apps/treasury/models.py:214
msgid "remittances"
msgstr "Überweisungen"
#: apps/treasury/models.py:248
#: apps/treasury/models.py:247
msgid "Remittance #{:d}: {}"
msgstr "Überweisung #{:d}:{}"
#: apps/treasury/models.py:272
#: apps/treasury/models.py:271
msgid "special transaction proxy"
msgstr "spezielle Transaktion Proxy"
#: apps/treasury/models.py:273
#: apps/treasury/models.py:272
msgid "special transaction proxies"
msgstr "spezielle Transaktion Proxies"
#: apps/treasury/models.py:299
#: apps/treasury/models.py:298
msgid "credit transaction"
msgstr "Kredit Transaktion"
#: apps/treasury/models.py:432
#: apps/treasury/models.py:430
msgid ""
"This user doesn't have enough money to pay the memberships with its note. "
"Please ask her/him to credit the note before invalidating this credit."
@ -2329,16 +2329,16 @@ msgstr ""
"Dieser Benutzer hat nicht genug Geld, um die Mitgliedschaften mit seiner "
"Note zu bezahlen."
#: apps/treasury/models.py:453
#: apps/treasury/models.py:451
#: apps/treasury/templates/treasury/sogecredit_detail.html:10
msgid "Credit from the Société générale"
msgstr "Kredit von der Société générale"
#: apps/treasury/models.py:454
#: apps/treasury/models.py:452
msgid "Credits from the Société générale"
msgstr "Krediten von der Société générale"
#: apps/treasury/models.py:457
#: apps/treasury/models.py:455
#, python-brace-format
msgid "Soge credit for {user}"
msgstr "Kredit von der Société générale für {user}"
@ -2640,7 +2640,7 @@ msgstr "Wählen Sie die Rollen aus, an denen Sie interessiert sind."
msgid "This team doesn't belong to the given bus."
msgstr "Dieses Team gehört nicht zum angegebenen Bus."
#: apps/wei/forms/surveys/wei2021.py:35 apps/wei/forms/surveys/wei2022.py:38
#: apps/wei/forms/surveys/wei2021.py:35 apps/wei/forms/surveys/wei2022.py:35
msgid "Choose a word:"
msgstr "Wählen Sie ein Wort:"
@ -3361,10 +3361,6 @@ msgstr "Kontakt"
msgid "Technical Support"
msgstr ""
#: note_kfet/templates/base.html:198
msgid "FAQ (FR)"
msgstr "FAQ (FR)"
#: note_kfet/templates/base_search.html:15
msgid "Search by attribute such as name…"
msgstr "Suche nach Attributen wie Name…"
@ -3615,6 +3611,7 @@ msgstr ""
#~ msgid "This user didn't give her/his caution check."
#~ msgstr "Dieser User hat seine / ihre Vorsicht nicht überprüft."
#, python-format
#~ msgid ""
#~ "A new version of the application is available. This instance runs "
#~ "%(VERSION)s and the last version is %(LAST_VERSION)s. Please consider "

View File

@ -7,9 +7,9 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-03-31 17:08+0200\n"
"POT-Creation-Date: 2022-04-10 22:34+0200\n"
"PO-Revision-Date: 2022-04-11 23:12+0200\n"
"Last-Translator: bleizi <bleizi@crans.org>\n"
"Last-Translator: elkmaennchen <elkmaennchen@crans.org>\n"
"Language-Team: \n"
"Language: es\n"
"MIME-Version: 1.0\n"
@ -114,7 +114,7 @@ msgid "type"
msgstr "tipo"
#: apps/activity/models.py:89 apps/logs/models.py:22 apps/member/models.py:307
#: apps/note/models/notes.py:148 apps/treasury/models.py:286
#: apps/note/models/notes.py:148 apps/treasury/models.py:285
#: apps/wei/models.py:173 apps/wei/templates/wei/attribute_bus_1A.html:13
#: apps/wei/templates/wei/survey.html:15
msgid "user"
@ -257,7 +257,7 @@ msgstr "Entrado el "
msgid "remove"
msgstr "quitar"
#: apps/activity/tables.py:82 apps/note/forms.py:68 apps/treasury/models.py:200
#: apps/activity/tables.py:82 apps/note/forms.py:68 apps/treasury/models.py:199
msgid "Type"
msgstr "Tipo"
@ -1557,7 +1557,7 @@ msgstr "Transacciones especiales"
msgid "membership transaction"
msgstr "transacción de afiliación"
#: apps/note/models/transactions.py:385 apps/treasury/models.py:293
#: apps/note/models/transactions.py:385 apps/treasury/models.py:292
msgid "membership transactions"
msgstr "transacciones de afiliación"
@ -1676,7 +1676,7 @@ msgid "Amount"
msgstr "Monto"
#: apps/note/templates/note/transaction_form.html:132
#: apps/treasury/models.py:55
#: apps/treasury/models.py:54
msgid "Name"
msgstr "Nombre"
@ -2163,7 +2163,7 @@ msgstr "Invalidar la afiliación"
msgid "Treasury"
msgstr "Tesorería"
#: apps/treasury/forms.py:26 apps/treasury/models.py:94
#: apps/treasury/forms.py:26 apps/treasury/models.py:93
#: apps/treasury/templates/treasury/invoice_form.html:22
msgid "This invoice is locked and can no longer be edited."
msgstr "Esta factura esta bloqueada y no puede ser modificada."
@ -2176,7 +2176,7 @@ msgstr "El descuento ya esta cerrado."
msgid "You can't change the type of the remittance."
msgstr "No puede cambiar el tipo de descuento."
#: apps/treasury/forms.py:125 apps/treasury/models.py:268
#: apps/treasury/forms.py:125 apps/treasury/models.py:267
#: apps/treasury/tables.py:97 apps/treasury/tables.py:105
#: apps/treasury/templates/treasury/invoice_list.html:16
#: apps/treasury/templates/treasury/remittance_list.html:16
@ -2192,116 +2192,116 @@ msgstr "No hay descuento relacionado"
msgid "Invoice identifier"
msgstr "Numero de factura"
#: apps/treasury/models.py:41
#: apps/treasury/models.py:40
msgid "BDE"
msgstr "BDE"
#: apps/treasury/models.py:46
#: apps/treasury/models.py:45
msgid "Object"
msgstr "Asunto"
#: apps/treasury/models.py:50
#: apps/treasury/models.py:49
msgid "Description"
msgstr "Descripción"
#: apps/treasury/models.py:59
#: apps/treasury/models.py:58
msgid "Address"
msgstr "Dirección"
#: apps/treasury/models.py:64 apps/treasury/models.py:194
#: apps/treasury/models.py:63 apps/treasury/models.py:193
msgid "Date"
msgstr "Fecha"
#: apps/treasury/models.py:68
#: apps/treasury/models.py:67
msgid "Acquitted"
msgstr "Pagada"
#: apps/treasury/models.py:73
#: apps/treasury/models.py:72
msgid "Locked"
msgstr "Bloqueada"
#: apps/treasury/models.py:74
#: apps/treasury/models.py:73
msgid "An invoice can't be edited when it is locked."
msgstr "Une factura no puede ser modificada cuando esta bloqueada."
#: apps/treasury/models.py:80
#: apps/treasury/models.py:79
msgid "tex source"
msgstr "código fuente TeX"
#: apps/treasury/models.py:114 apps/treasury/models.py:130
#: apps/treasury/models.py:113 apps/treasury/models.py:129
msgid "invoice"
msgstr "factura"
#: apps/treasury/models.py:115
#: apps/treasury/models.py:114
msgid "invoices"
msgstr "facturas"
#: apps/treasury/models.py:118
#: apps/treasury/models.py:117
#, python-brace-format
msgid "Invoice #{id}"
msgstr "Factura n°{id}"
#: apps/treasury/models.py:135
#: apps/treasury/models.py:134
msgid "Designation"
msgstr "Designación"
#: apps/treasury/models.py:141
#: apps/treasury/models.py:140
msgid "Quantity"
msgstr "Cantidad"
#: apps/treasury/models.py:146
#: apps/treasury/models.py:145
msgid "Unit price"
msgstr "Precio unitario"
#: apps/treasury/models.py:162
#: apps/treasury/models.py:161
msgid "product"
msgstr "producto"
#: apps/treasury/models.py:163
#: apps/treasury/models.py:162
msgid "products"
msgstr "productos"
#: apps/treasury/models.py:183
#: apps/treasury/models.py:182
msgid "remittance type"
msgstr "tipo de descuento"
#: apps/treasury/models.py:184
#: apps/treasury/models.py:183
msgid "remittance types"
msgstr "tipos de descuentos"
#: apps/treasury/models.py:205
#: apps/treasury/models.py:204
msgid "Comment"
msgstr "Comentario"
#: apps/treasury/models.py:210
#: apps/treasury/models.py:209
msgid "Closed"
msgstr "Cerrada"
#: apps/treasury/models.py:214
#: apps/treasury/models.py:213
msgid "remittance"
msgstr "descuento"
#: apps/treasury/models.py:215
#: apps/treasury/models.py:214
msgid "remittances"
msgstr "descuentos"
#: apps/treasury/models.py:248
#: apps/treasury/models.py:247
msgid "Remittance #{:d}: {}"
msgstr "Descuento n°{:d} : {}"
#: apps/treasury/models.py:272
#: apps/treasury/models.py:271
msgid "special transaction proxy"
msgstr "proxy de transacción especial"
#: apps/treasury/models.py:273
#: apps/treasury/models.py:272
msgid "special transaction proxies"
msgstr "proxys de transacciones especiales"
#: apps/treasury/models.py:299
#: apps/treasury/models.py:298
msgid "credit transaction"
msgstr "transacción de crédito"
#: apps/treasury/models.py:432
#: apps/treasury/models.py:430
msgid ""
"This user doesn't have enough money to pay the memberships with its note. "
"Please ask her/him to credit the note before invalidating this credit."
@ -2310,16 +2310,16 @@ msgstr ""
"afiliaciones. Por favor pídelo acreditar su note antes de invalidar este "
"crédito."
#: apps/treasury/models.py:453
#: apps/treasury/models.py:451
#: apps/treasury/templates/treasury/sogecredit_detail.html:10
msgid "Credit from the Société générale"
msgstr "Crédito de la Société Générale"
#: apps/treasury/models.py:454
#: apps/treasury/models.py:452
msgid "Credits from the Société générale"
msgstr "Créditos de la Société Générale"
#: apps/treasury/models.py:457
#: apps/treasury/models.py:455
#, python-brace-format
msgid "Soge credit for {user}"
msgstr "Crédito de la Société Générale para {user}"
@ -2612,7 +2612,7 @@ msgstr "Elegir los papeles que le interesa."
msgid "This team doesn't belong to the given bus."
msgstr "Este equipo no pertenece al bus dado."
#: apps/wei/forms/surveys/wei2021.py:35 apps/wei/forms/surveys/wei2022.py:38
#: apps/wei/forms/surveys/wei2021.py:35 apps/wei/forms/surveys/wei2022.py:35
msgid "Choose a word:"
msgstr "Elegir una palabra :"
@ -3316,10 +3316,6 @@ msgstr "Contactarnos"
msgid "Technical Support"
msgstr "Soporte técnico"
#: note_kfet/templates/base.html:198
msgid "FAQ (FR)"
msgstr "FAQ (FR)"
#: note_kfet/templates/base_search.html:15
msgid "Search by attribute such as name…"
msgstr "Buscar con atributo, como el nombre…"

View File

@ -7,9 +7,9 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-03-31 17:08+0200\n"
"POT-Creation-Date: 2022-04-10 22:34+0200\n"
"PO-Revision-Date: 2022-04-11 22:05+0200\n"
"Last-Translator: bleizi <bleizi@crans.org>\n"
"Last-Translator: elkmaennchen <elkmaennchen@crans.org>\n"
"Language-Team: French <http://translate.ynerant.fr/projects/nk20/nk20/fr/>\n"
"Language: fr\n"
"MIME-Version: 1.0\n"
@ -115,7 +115,7 @@ msgid "type"
msgstr "type"
#: apps/activity/models.py:89 apps/logs/models.py:22 apps/member/models.py:307
#: apps/note/models/notes.py:148 apps/treasury/models.py:286
#: apps/note/models/notes.py:148 apps/treasury/models.py:285
#: apps/wei/models.py:173 apps/wei/templates/wei/attribute_bus_1A.html:13
#: apps/wei/templates/wei/survey.html:15
msgid "user"
@ -258,7 +258,7 @@ msgstr "Entré le "
msgid "remove"
msgstr "supprimer"
#: apps/activity/tables.py:82 apps/note/forms.py:68 apps/treasury/models.py:200
#: apps/activity/tables.py:82 apps/note/forms.py:68 apps/treasury/models.py:199
msgid "Type"
msgstr "Type"
@ -1563,7 +1563,7 @@ msgstr "Transactions de crédit/retrait"
msgid "membership transaction"
msgstr "transaction d'adhésion"
#: apps/note/models/transactions.py:385 apps/treasury/models.py:293
#: apps/note/models/transactions.py:385 apps/treasury/models.py:292
msgid "membership transactions"
msgstr "transactions d'adhésion"
@ -1682,7 +1682,7 @@ msgid "Amount"
msgstr "Montant"
#: apps/note/templates/note/transaction_form.html:132
#: apps/treasury/models.py:55
#: apps/treasury/models.py:54
msgid "Name"
msgstr "Nom"
@ -2171,7 +2171,7 @@ msgstr "Invalider l'inscription"
msgid "Treasury"
msgstr "Trésorerie"
#: apps/treasury/forms.py:26 apps/treasury/models.py:94
#: apps/treasury/forms.py:26 apps/treasury/models.py:93
#: apps/treasury/templates/treasury/invoice_form.html:22
msgid "This invoice is locked and can no longer be edited."
msgstr "Cette facture est verrouillée et ne peut plus être éditée."
@ -2184,7 +2184,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:125 apps/treasury/models.py:268
#: apps/treasury/forms.py:125 apps/treasury/models.py:267
#: apps/treasury/tables.py:97 apps/treasury/tables.py:105
#: apps/treasury/templates/treasury/invoice_list.html:16
#: apps/treasury/templates/treasury/remittance_list.html:16
@ -2200,116 +2200,116 @@ msgstr "Pas de remise associée"
msgid "Invoice identifier"
msgstr "Numéro de facture"
#: apps/treasury/models.py:41
#: apps/treasury/models.py:40
msgid "BDE"
msgstr "BDE"
#: apps/treasury/models.py:46
#: apps/treasury/models.py:45
msgid "Object"
msgstr "Objet"
#: apps/treasury/models.py:50
#: apps/treasury/models.py:49
msgid "Description"
msgstr "Description"
#: apps/treasury/models.py:59
#: apps/treasury/models.py:58
msgid "Address"
msgstr "Adresse"
#: apps/treasury/models.py:64 apps/treasury/models.py:194
#: apps/treasury/models.py:63 apps/treasury/models.py:193
msgid "Date"
msgstr "Date"
#: apps/treasury/models.py:68
#: apps/treasury/models.py:67
msgid "Acquitted"
msgstr "Acquittée"
#: apps/treasury/models.py:73
#: apps/treasury/models.py:72
msgid "Locked"
msgstr "Verrouillée"
#: apps/treasury/models.py:74
#: apps/treasury/models.py:73
msgid "An invoice can't be edited when it is locked."
msgstr "Une facture ne peut plus être modifiée si elle est verrouillée."
#: apps/treasury/models.py:80
#: apps/treasury/models.py:79
msgid "tex source"
msgstr "fichier TeX source"
#: apps/treasury/models.py:114 apps/treasury/models.py:130
#: apps/treasury/models.py:113 apps/treasury/models.py:129
msgid "invoice"
msgstr "facture"
#: apps/treasury/models.py:115
#: apps/treasury/models.py:114
msgid "invoices"
msgstr "factures"
#: apps/treasury/models.py:118
#: apps/treasury/models.py:117
#, python-brace-format
msgid "Invoice #{id}"
msgstr "Facture n°{id}"
#: apps/treasury/models.py:135
#: apps/treasury/models.py:134
msgid "Designation"
msgstr "Désignation"
#: apps/treasury/models.py:141
#: apps/treasury/models.py:140
msgid "Quantity"
msgstr "Quantité"
#: apps/treasury/models.py:146
#: apps/treasury/models.py:145
msgid "Unit price"
msgstr "Prix unitaire"
#: apps/treasury/models.py:162
#: apps/treasury/models.py:161
msgid "product"
msgstr "produit"
#: apps/treasury/models.py:163
#: apps/treasury/models.py:162
msgid "products"
msgstr "produits"
#: apps/treasury/models.py:183
#: apps/treasury/models.py:182
msgid "remittance type"
msgstr "type de remise"
#: apps/treasury/models.py:184
#: apps/treasury/models.py:183
msgid "remittance types"
msgstr "types de remises"
#: apps/treasury/models.py:205
#: apps/treasury/models.py:204
msgid "Comment"
msgstr "Commentaire"
#: apps/treasury/models.py:210
#: apps/treasury/models.py:209
msgid "Closed"
msgstr "Fermée"
#: apps/treasury/models.py:214
#: apps/treasury/models.py:213
msgid "remittance"
msgstr "remise"
#: apps/treasury/models.py:215
#: apps/treasury/models.py:214
msgid "remittances"
msgstr "remises"
#: apps/treasury/models.py:248
#: apps/treasury/models.py:247
msgid "Remittance #{:d}: {}"
msgstr "Remise n°{:d} : {}"
#: apps/treasury/models.py:272
#: apps/treasury/models.py:271
msgid "special transaction proxy"
msgstr "proxy de transaction spéciale"
#: apps/treasury/models.py:273
#: apps/treasury/models.py:272
msgid "special transaction proxies"
msgstr "proxys de transactions spéciales"
#: apps/treasury/models.py:299
#: apps/treasury/models.py:298
msgid "credit transaction"
msgstr "transaction de crédit"
#: apps/treasury/models.py:432
#: apps/treasury/models.py:430
msgid ""
"This user doesn't have enough money to pay the memberships with its note. "
"Please ask her/him to credit the note before invalidating this credit."
@ -2317,16 +2317,16 @@ msgstr ""
"Cet utilisateur n'a pas assez d'argent pour payer les adhésions avec sa "
"note. Merci de lui demander de recharger sa note avant d'invalider ce crédit."
#: apps/treasury/models.py:453
#: apps/treasury/models.py:451
#: 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:454
#: apps/treasury/models.py:452
msgid "Credits from the Société générale"
msgstr "Crédits de la Société générale"
#: apps/treasury/models.py:457
#: apps/treasury/models.py:455
#, python-brace-format
msgid "Soge credit for {user}"
msgstr "Crédit de la société générale pour l'utilisateur {user}"
@ -2624,7 +2624,7 @@ msgstr "Sélectionnez les rôles qui vous intéressent."
msgid "This team doesn't belong to the given bus."
msgstr "Cette équipe n'appartient pas à ce bus."
#: apps/wei/forms/surveys/wei2021.py:35 apps/wei/forms/surveys/wei2022.py:38
#: apps/wei/forms/surveys/wei2021.py:35 apps/wei/forms/surveys/wei2022.py:35
msgid "Choose a word:"
msgstr "Choisissez un mot :"
@ -3335,10 +3335,6 @@ msgstr "Nous contacter"
msgid "Technical Support"
msgstr "Support technique"
#: note_kfet/templates/base.html:198
msgid "FAQ (FR)"
msgstr "FAQ (FR)"
#: note_kfet/templates/base_search.html:15
msgid "Search by attribute such as name…"
msgstr "Chercher par un attribut tel que le nom …"

View File

@ -18,7 +18,7 @@ MAILTO=notekfet2020@lists.crans.org
# Spammer les gens en négatif
00 5 * * 2 root cd /var/www/note_kfet && env/bin/python manage.py send_mail_to_negative_balances --spam --negative-amount 1 -v 0
# Envoyer le rapport mensuel aux trésoriers et respos info
00 8 * * 5 root cd /var/www/note_kfet && env/bin/python manage.py send_mail_to_negative_balances --report --add-years 1 -v 0
00 8 6 * * root cd /var/www/note_kfet && env/bin/python manage.py send_mail_to_negative_balances --report --add-years 1 -v 0
# Envoyer les rapports aux gens
55 6 * * * root cd /var/www/note_kfet && env/bin/python manage.py send_reports -v 0
# Mettre à jour les boutons mis en avant

72
note_kfet/static/css/custom.css Executable file → Normal file
View File

@ -65,10 +65,7 @@ mark {
/* Last BDE colors */
.bg-primary {
/* background-color: rgb(18, 67, 4) !important; */
/* MODE VIEUXCON=ON */
/* background-color: rgb(166, 0, 2) !important; */
background-color: rgb(0, 0, 0) !important;
background-color: rgb(102, 83, 105) !important;
}
html {
@ -83,15 +80,15 @@ body {
.btn-outline-primary:hover,
.btn-outline-primary:not(:disabled):not(.disabled).active,
.btn-outline-primary:not(:disabled):not(.disabled):active {
color: rgb(241, 229, 52);
background-color: rgb(228, 35, 132);
border-color: rgb(228, 35, 132);
color: #fff;
background-color: rgb(102, 83, 105);
border-color: rgb(102, 83, 105);
}
.btn-outline-primary {
color: #fff;
background-color: #000;
border-color: #464647;
color: rgb(102, 83, 105);
background-color: rgba(248, 249, 250, 0.9);
border-color: rgb(102, 83, 105);
}
.turbolinks-progress-bar {
@ -101,63 +98,36 @@ body {
.btn-primary:hover,
.btn-primary:not(:disabled):not(.disabled).active,
.btn-primary:not(:disabled):not(.disabled):active {
color: rgb(241, 229, 52);
background-color: rgb(228, 35, 132);
border-color: rgb(228, 35, 132);
color: #fff;
background-color: rgb(102, 83, 105);
border-color: rgb(102, 83, 105);
}
.btn-primary {
color: #fff;
background-color: #000;
border-color: #adb5bd;
color: rgba(248, 249, 250, 0.9);
background-color: rgb(102, 83, 105);
border-color: rgb(102, 83, 105);
}
.border-primary {
border-color: rgb(228, 35, 132) !important;
border-color: rgb(115, 15, 115) !important;
}
.btn-secondary {
color: #fff;
background-color: #000;
border-color: #adb5bd;
}
.btn-secondary:hover,
.btn-secondary:not(:disabled):not(.disabled).active,
.btn-secondary:not(:disabled):not(.disabled):active {
color: rgb(241, 229, 52);
background-color: rgb(228, 35, 132);
border-color: rgb(228, 35, 132);
}
.btn-outline-dark {
color: #343a40;
border-color: #343a40;
}
.btn-outline-dark:hover,
.btn-outline-dark:not(:disabled):not(.disabled).active,
.btn-outline-dark:not(:disabled):not(.disabled):active {
color: rgb(241, 229, 52);
background-color: rgb(228, 35, 132);
border-color: rgb(228, 35, 132);
}
a {
color: rgb(228, 35, 132);
color: rgb(102, 83, 105);
}
a:hover {
color: rgb(228, 35, 132);
color: rgb(200, 30, 200);
}
.form-control:focus {
box-shadow: 0 0 0 0.25rem rgb(228 35 132 / 50%);
border-color: rgb(228, 35, 132);
box-shadow: 0 0 0 0.25rem rgba(200, 30, 200, 0.25);
border-color: rgb(200, 30, 200);
}
.btn-outline-primary.focus {
box-shadow: 0 0 0 0.25rem rgb(228 35 132 / 10%);
box-shadow: 0 0 0 0.25rem rgba(200, 30, 200, 0.5);
}

View File

@ -96,7 +96,7 @@ function displayStyle (note) {
if (!note) { return '' }
const balance = note.balance
var css = ''
if (balance < -5000) { css += ' text-danger bg-dark' }
if (balance < -2000) { css += ' text-danger bg-dark' }
else if (balance < -1000) { css += ' text-danger' }
else if (balance < 0) { css += ' text-warning' }
if (!note.email_confirmed) { css += ' bg-primary' }

View File

@ -194,8 +194,6 @@ SPDX-License-Identifier: GPL-3.0-or-later
class="text-muted">{% trans "Contact us" %}</a> &mdash;
<a href="mailto:{{ "SUPPORT_EMAIL" | getenv }}"
class="text-muted">{% trans "Technical Support" %}</a> &mdash;
<a href="https://note.crans.org/doc/faq/"
class="text-muted">{% trans "FAQ (FR)" %}</a> &mdash;
</span>
{% csrf_token %}
<select title="language" name="language"

View File

@ -1,34 +0,0 @@
# This is a workaround meant for use with the nix package manager. If you don't know what it is or don't use it, please ignore this file.
#
# The nk20 javascript static location are hardcoded for imperative system.
# This make ./manage.py collectstatic hard to use with nixos.
#
# A workaround is to enter a FHSUserEnv with the static placed under /share/javascript/<static>.
# This emulate a debian like system and enable collecting static normally with ./manage.py collectstatics.
# The regular shell.nix should be enough for other configurations.
#
# Warning, you are still supposed to use pip package with a venv !
{ pkgs ? import <nixpkgs> {} }:
(pkgs.buildFHSUserEnv {
name = "pipzone";
targetPkgs = pkgs: (with pkgs;
let
fhs-static = stdenv.mkDerivation {
name = "fhs-static";
buildCommand = ''
mkdir -p $out/share/javascript/bootstrap4
mkdir -p $out/share/javascript/jquery
ln -s ${python39Packages.xstatic-bootstrap}/lib/python3.9/site-packages/xstatic/pkg/bootstrap/data/* $out/share/javascript/bootstrap4
ln -s ${python39Packages.xstatic-jquery}/lib/python3.9/site-packages/xstatic/pkg/jquery/data/* $out/share/javascript/jquery
'';
};
in [
fhs-static
python39
gettext
python39Packages.pip
python39Packages.virtualenv
python39Packages.setuptools
]);
runScript = "bash";
}).env

View File

@ -1,23 +0,0 @@
# This is meant for use with the nix package manager. If you don't know what it is or don't use it, please ignore this file.
#
# This shell.nix contains all dependencies require to create a venv and pip install -r requirements.txt.
#
# Please check shell-static.nix for running ./manage.py collectstatics.
{ pkgs ? import <nixpkgs> {} }:
pkgs.mkShell {
buildInputs = with pkgs; [
python39
python39Packages.pip
python39Packages.setuptools
gettext
];
shellHook = ''
# Tells pip to put packages into $PIP_PREFIX instead of the usual locations.
# See https://pip.pypa.io/en/stable/user_guide/#environment-variables.
export PIP_PREFIX=$(pwd)/_build/pip_packages
export PYTHONPATH="$PIP_PREFIX/${pkgs.python39.sitePackages}:$PYTHONPATH"
export PATH="$PIP_PREFIX/bin:$PATH"
unset SOURCE_DATE_EPOCH
'';
}