mirror of
				https://gitlab.crans.org/bde/nk20
				synced 2025-10-31 07:49:57 +01:00 
			
		
		
		
	Add shortcuts for transfers and credits in the activity entry page
This commit is contained in:
		| @@ -155,4 +155,8 @@ class ActivityEntryView(LoginRequiredMixin, TemplateView): | ||||
|         ctx["noteuser_ctype"] = ContentType.objects.get_for_model(NoteUser).pk | ||||
|         ctx["notespecial_ctype"] = ContentType.objects.get_for_model(NoteSpecial).pk | ||||
|  | ||||
|         ctx["activities_open"] = Activity.objects.filter(open=True).filter( | ||||
|             PermissionBackend.filter_queryset(self.request.user, Activity, "view")).filter( | ||||
|             PermissionBackend.filter_queryset(self.request.user, Activity, "change")).all() | ||||
|  | ||||
|         return ctx | ||||
|   | ||||
| @@ -1,6 +1,7 @@ | ||||
| # Copyright (C) 2018-2020 by BDE ENS Paris-Saclay | ||||
| # SPDX-License-Identifier: GPL-3.0-or-later | ||||
|  | ||||
| from django.conf import settings | ||||
| from django.contrib.auth.mixins import LoginRequiredMixin | ||||
| from django.contrib.contenttypes.models import ContentType | ||||
| from django.utils.translation import gettext_lazy as _ | ||||
| @@ -29,7 +30,7 @@ class TransactionCreateView(ProtectQuerysetMixin, LoginRequiredMixin, SingleTabl | ||||
|     table_class = HistoryTable | ||||
|  | ||||
|     def get_queryset(self, **kwargs): | ||||
|         return super().get_queryset(**kwargs).order_by("-id").all()[:50] | ||||
|         return super().get_queryset(**kwargs).order_by("-id").all()[:20] | ||||
|  | ||||
|     def get_context_data(self, **kwargs): | ||||
|         """ | ||||
| @@ -44,6 +45,12 @@ class TransactionCreateView(ProtectQuerysetMixin, LoginRequiredMixin, SingleTabl | ||||
|             .filter(PermissionBackend.filter_queryset(self.request.user, NoteSpecial, "view"))\ | ||||
|             .order_by("special_type").all() | ||||
|  | ||||
|         if "activity" in settings.INSTALLED_APPS: | ||||
|             from activity.models import Activity | ||||
|             context["activities_open"] = Activity.objects.filter(open=True).filter( | ||||
|                 PermissionBackend.filter_queryset(self.request.user, Activity, "view")).filter( | ||||
|                 PermissionBackend.filter_queryset(self.request.user, Activity, "change")).all() | ||||
|  | ||||
|         return context | ||||
|  | ||||
|  | ||||
|   | ||||
| @@ -8,7 +8,7 @@ msgid "" | ||||
| msgstr "" | ||||
| "Project-Id-Version: PACKAGE VERSION\n" | ||||
| "Report-Msgid-Bugs-To: \n" | ||||
| "POT-Creation-Date: 2020-04-05 15:39+0200\n" | ||||
| "POT-Creation-Date: 2020-04-06 06:43+0200\n" | ||||
| "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" | ||||
| "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" | ||||
| "Language-Team: LANGUAGE <LL@li.org>\n" | ||||
| @@ -171,13 +171,14 @@ msgstr "" | ||||
| msgid "Type" | ||||
| msgstr "" | ||||
|  | ||||
| #: apps/activity/tables.py:77 apps/registration/forms.py:49 | ||||
| #: apps/treasury/forms.py:121 | ||||
| #: apps/activity/tables.py:77 apps/member/forms.py:75 | ||||
| #: apps/registration/forms.py:49 apps/treasury/forms.py:121 | ||||
| msgid "Last name" | ||||
| msgstr "" | ||||
|  | ||||
| #: apps/activity/tables.py:79 apps/registration/forms.py:54 | ||||
| #: apps/treasury/forms.py:123 templates/note/transaction_form.html:92 | ||||
| #: apps/activity/tables.py:79 apps/member/forms.py:80 | ||||
| #: apps/registration/forms.py:54 apps/treasury/forms.py:123 | ||||
| #: templates/note/transaction_form.html:97 | ||||
| msgid "First name" | ||||
| msgstr "" | ||||
|  | ||||
| @@ -193,7 +194,7 @@ msgstr "" | ||||
| msgid "Activities" | ||||
| msgstr "" | ||||
|  | ||||
| #: apps/activity/views.py:153 | ||||
| #: apps/activity/views.py:154 | ||||
| msgid "Entry for activity \"{}\"" | ||||
| msgstr "" | ||||
|  | ||||
| @@ -254,6 +255,35 @@ msgstr "" | ||||
| msgid "member" | ||||
| msgstr "" | ||||
|  | ||||
| #: apps/member/forms.py:54 apps/registration/forms.py:29 | ||||
| msgid "Inscription paid by Société Générale" | ||||
| msgstr "" | ||||
|  | ||||
| #: apps/member/forms.py:56 apps/registration/forms.py:31 | ||||
| msgid "Check this case is the Société Générale paid the inscription." | ||||
| msgstr "" | ||||
|  | ||||
| #: apps/member/forms.py:61 apps/registration/forms.py:36 | ||||
| msgid "Credit type" | ||||
| msgstr "" | ||||
|  | ||||
| #: apps/member/forms.py:62 apps/registration/forms.py:37 | ||||
| msgid "No credit" | ||||
| msgstr "" | ||||
|  | ||||
| #: apps/member/forms.py:64 | ||||
| msgid "You can credit the note of the user." | ||||
| msgstr "" | ||||
|  | ||||
| #: apps/member/forms.py:68 apps/registration/forms.py:42 | ||||
| msgid "Credit amount" | ||||
| msgstr "" | ||||
|  | ||||
| #: apps/member/forms.py:85 apps/registration/forms.py:59 | ||||
| #: apps/treasury/forms.py:125 templates/note/transaction_form.html:103 | ||||
| msgid "Bank" | ||||
| msgstr "" | ||||
|  | ||||
| #: apps/member/models.py:32 | ||||
| #: templates/registration/future_profile_detail.html:47 | ||||
| msgid "phone number" | ||||
| @@ -382,11 +412,11 @@ msgstr "" | ||||
| msgid "fee" | ||||
| msgstr "" | ||||
|  | ||||
| #: apps/member/models.py:261 apps/member/views.py:385 | ||||
| #: apps/member/models.py:261 apps/member/views.py:447 | ||||
| msgid "User is not a member of the parent club" | ||||
| msgstr "" | ||||
|  | ||||
| #: apps/member/models.py:271 apps/member/views.py:394 | ||||
| #: apps/member/models.py:271 apps/member/views.py:456 | ||||
| msgid "User is already a member of the club" | ||||
| msgstr "" | ||||
|  | ||||
| @@ -407,39 +437,41 @@ msgstr "" | ||||
| msgid "Renew" | ||||
| msgstr "" | ||||
|  | ||||
| #: apps/member/views.py:59 apps/registration/forms.py:20 | ||||
| #: apps/member/views.py:56 apps/registration/forms.py:20 | ||||
| msgid "This address must be valid." | ||||
| msgstr "" | ||||
|  | ||||
| #: apps/member/views.py:62 templates/member/profile_info.html:45 | ||||
| #: apps/member/views.py:59 templates/member/profile_info.html:45 | ||||
| #: templates/registration/future_profile_detail.html:55 | ||||
| msgid "Update Profile" | ||||
| msgstr "" | ||||
|  | ||||
| #: apps/member/views.py:72 | ||||
| #: apps/member/views.py:69 | ||||
| msgid "An alias with a similar name already exists." | ||||
| msgstr "" | ||||
|  | ||||
| #: apps/member/views.py:167 | ||||
| #: apps/member/views.py:164 | ||||
| msgid "Search user" | ||||
| msgstr "" | ||||
|  | ||||
| #: apps/member/views.py:381 | ||||
| #: apps/member/views.py:442 | ||||
| msgid "" | ||||
| "This user don't have enough money to join this club, and can't have a " | ||||
| "negative balance." | ||||
| msgstr "" | ||||
|  | ||||
| #: apps/member/views.py:398 apps/member/views.py:430 | ||||
| #: apps/member/views.py:460 | ||||
| msgid "The membership must start after {:%m-%d-%Y}." | ||||
| msgstr "" | ||||
|  | ||||
| #: apps/member/views.py:403 apps/member/views.py:435 | ||||
| #: apps/member/views.py:465 | ||||
| msgid "The membership must begin before {:%m-%d-%Y}." | ||||
| msgstr "" | ||||
|  | ||||
| #: apps/member/views.py:457 | ||||
| msgid "This membership is already renewed" | ||||
| #: apps/member/views.py:472 apps/member/views.py:474 apps/member/views.py:476 | ||||
| #: apps/registration/views.py:237 apps/registration/views.py:239 | ||||
| #: apps/registration/views.py:241 | ||||
| msgid "This field is required." | ||||
| msgstr "" | ||||
|  | ||||
| #: apps/note/admin.py:120 apps/note/models/transactions.py:99 | ||||
| @@ -617,9 +649,10 @@ msgstr "" | ||||
| msgid "transactions" | ||||
| msgstr "" | ||||
|  | ||||
| #: apps/note/models/transactions.py:207 templates/base.html:84 | ||||
| #: apps/note/models/transactions.py:207 | ||||
| #: templates/activity/activity_entry.html:13 templates/base.html:84 | ||||
| #: templates/note/transaction_form.html:19 | ||||
| #: templates/note/transaction_form.html:140 | ||||
| #: templates/note/transaction_form.html:145 | ||||
| msgid "Transfer" | ||||
| msgstr "" | ||||
|  | ||||
| @@ -635,7 +668,9 @@ msgstr "" | ||||
| msgid "bank" | ||||
| msgstr "" | ||||
|  | ||||
| #: apps/note/models/transactions.py:253 templates/note/transaction_form.html:24 | ||||
| #: apps/note/models/transactions.py:253 | ||||
| #: templates/activity/activity_entry.html:17 | ||||
| #: templates/note/transaction_form.html:24 | ||||
| msgid "Credit" | ||||
| msgstr "" | ||||
|  | ||||
| @@ -672,11 +707,11 @@ msgstr "" | ||||
| msgid "Edit" | ||||
| msgstr "" | ||||
|  | ||||
| #: apps/note/views.py:39 | ||||
| #: apps/note/views.py:40 | ||||
| msgid "Transfer money" | ||||
| msgstr "" | ||||
|  | ||||
| #: apps/note/views.py:100 templates/base.html:79 | ||||
| #: apps/note/views.py:107 templates/base.html:79 | ||||
| msgid "Consumptions" | ||||
| msgstr "" | ||||
|  | ||||
| @@ -702,31 +737,6 @@ msgstr "" | ||||
| msgid "registration" | ||||
| msgstr "" | ||||
|  | ||||
| #: apps/registration/forms.py:29 | ||||
| msgid "Inscription paid by Société Générale" | ||||
| msgstr "" | ||||
|  | ||||
| #: apps/registration/forms.py:31 | ||||
| msgid "Check this case is the Société Générale paid the inscription." | ||||
| msgstr "" | ||||
|  | ||||
| #: apps/registration/forms.py:36 | ||||
| msgid "Credit type" | ||||
| msgstr "" | ||||
|  | ||||
| #: apps/registration/forms.py:37 | ||||
| msgid "No credit" | ||||
| msgstr "" | ||||
|  | ||||
| #: apps/registration/forms.py:42 | ||||
| msgid "Credit amount" | ||||
| msgstr "" | ||||
|  | ||||
| #: apps/registration/forms.py:59 apps/treasury/forms.py:125 | ||||
| #: templates/note/transaction_form.html:98 | ||||
| msgid "Bank" | ||||
| msgstr "" | ||||
|  | ||||
| #: apps/registration/forms.py:64 | ||||
| msgid "Join BDE Club" | ||||
| msgstr "" | ||||
| @@ -760,11 +770,6 @@ msgid "" | ||||
| "The entered amount is not enough for the memberships, should be at least {}" | ||||
| msgstr "" | ||||
|  | ||||
| #: apps/registration/views.py:237 apps/registration/views.py:239 | ||||
| #: apps/registration/views.py:241 | ||||
| msgid "This field is required." | ||||
| msgstr "" | ||||
|  | ||||
| #: apps/treasury/apps.py:12 templates/base.html:111 | ||||
| msgid "Treasury" | ||||
| msgstr "" | ||||
| @@ -791,7 +796,7 @@ msgid "You can't change the type of the remittance." | ||||
| msgstr "" | ||||
|  | ||||
| #: apps/treasury/forms.py:127 apps/treasury/tables.py:47 | ||||
| #: templates/note/transaction_form.html:128 | ||||
| #: templates/note/transaction_form.html:133 | ||||
| #: templates/treasury/remittance_form.html:18 | ||||
| msgid "Amount" | ||||
| msgstr "" | ||||
| @@ -812,7 +817,7 @@ msgstr "" | ||||
| msgid "Description" | ||||
| msgstr "" | ||||
|  | ||||
| #: apps/treasury/models.py:46 templates/note/transaction_form.html:86 | ||||
| #: apps/treasury/models.py:46 templates/note/transaction_form.html:91 | ||||
| msgid "Name" | ||||
| msgstr "" | ||||
|  | ||||
| @@ -938,15 +943,20 @@ msgstr "" | ||||
| msgid "Guests list" | ||||
| msgstr "" | ||||
|  | ||||
| #: templates/activity/activity_entry.html:10 | ||||
| #: templates/activity/activity_entry.html:22 | ||||
| #: templates/note/transaction_form.html:33 | ||||
| msgid "Entries" | ||||
| msgstr "" | ||||
|  | ||||
| #: templates/activity/activity_entry.html:30 | ||||
| msgid "Return to activity page" | ||||
| msgstr "" | ||||
|  | ||||
| #: templates/activity/activity_entry.html:18 | ||||
| #: templates/activity/activity_entry.html:38 | ||||
| msgid "entries" | ||||
| msgstr "" | ||||
|  | ||||
| #: templates/activity/activity_entry.html:18 | ||||
| #: templates/activity/activity_entry.html:38 | ||||
| msgid "entry" | ||||
| msgstr "" | ||||
|  | ||||
| @@ -1145,7 +1155,7 @@ msgstr "" | ||||
| msgid "Save Changes" | ||||
| msgstr "" | ||||
|  | ||||
| #: templates/note/conso_form.html:28 templates/note/transaction_form.html:50 | ||||
| #: templates/note/conso_form.html:28 templates/note/transaction_form.html:55 | ||||
| msgid "Select emitters" | ||||
| msgstr "" | ||||
|  | ||||
| @@ -1169,7 +1179,7 @@ msgstr "" | ||||
| msgid "Double consumptions" | ||||
| msgstr "" | ||||
|  | ||||
| #: templates/note/conso_form.html:141 templates/note/transaction_form.html:147 | ||||
| #: templates/note/conso_form.html:141 templates/note/transaction_form.html:152 | ||||
| msgid "Recent transactions history" | ||||
| msgstr "" | ||||
|  | ||||
| @@ -1177,29 +1187,29 @@ msgstr "" | ||||
| msgid "Gift" | ||||
| msgstr "" | ||||
|  | ||||
| #: templates/note/transaction_form.html:68 | ||||
| #: templates/note/transaction_form.html:73 | ||||
| msgid "External payment" | ||||
| msgstr "" | ||||
|  | ||||
| #: templates/note/transaction_form.html:76 | ||||
| #: templates/note/transaction_form.html:81 | ||||
| msgid "Transfer type" | ||||
| msgstr "" | ||||
|  | ||||
| #: templates/note/transaction_form.html:111 | ||||
| #: templates/note/transaction_form.html:164 | ||||
| #: templates/note/transaction_form.html:171 | ||||
| #: templates/note/transaction_form.html:116 | ||||
| #: templates/note/transaction_form.html:169 | ||||
| #: templates/note/transaction_form.html:176 | ||||
| msgid "Select receivers" | ||||
| msgstr "" | ||||
|  | ||||
| #: templates/note/transaction_form.html:133 | ||||
| #: templates/note/transaction_form.html:138 | ||||
| msgid "Reason" | ||||
| msgstr "" | ||||
|  | ||||
| #: templates/note/transaction_form.html:178 | ||||
| #: templates/note/transaction_form.html:183 | ||||
| msgid "Credit note" | ||||
| msgstr "" | ||||
|  | ||||
| #: templates/note/transaction_form.html:185 | ||||
| #: templates/note/transaction_form.html:190 | ||||
| msgid "Debit note" | ||||
| msgstr "" | ||||
|  | ||||
|   | ||||
| @@ -3,7 +3,7 @@ msgid "" | ||||
| msgstr "" | ||||
| "Project-Id-Version: PACKAGE VERSION\n" | ||||
| "Report-Msgid-Bugs-To: \n" | ||||
| "POT-Creation-Date: 2020-04-05 15:31+0200\n" | ||||
| "POT-Creation-Date: 2020-04-06 06:43+0200\n" | ||||
| "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" | ||||
| "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" | ||||
| "Language-Team: LANGUAGE <LL@li.org>\n" | ||||
| @@ -167,13 +167,14 @@ msgstr "supprimer" | ||||
| msgid "Type" | ||||
| msgstr "Type" | ||||
|  | ||||
| #: apps/activity/tables.py:77 apps/registration/forms.py:49 | ||||
| #: apps/treasury/forms.py:121 | ||||
| #: apps/activity/tables.py:77 apps/member/forms.py:75 | ||||
| #: apps/registration/forms.py:49 apps/treasury/forms.py:121 | ||||
| msgid "Last name" | ||||
| msgstr "Nom de famille" | ||||
|  | ||||
| #: apps/activity/tables.py:79 apps/registration/forms.py:54 | ||||
| #: apps/treasury/forms.py:123 templates/note/transaction_form.html:92 | ||||
| #: apps/activity/tables.py:79 apps/member/forms.py:80 | ||||
| #: apps/registration/forms.py:54 apps/treasury/forms.py:123 | ||||
| #: templates/note/transaction_form.html:97 | ||||
| msgid "First name" | ||||
| msgstr "Prénom" | ||||
|  | ||||
| @@ -189,7 +190,7 @@ msgstr "Solde du compte" | ||||
| msgid "Activities" | ||||
| msgstr "Activités" | ||||
|  | ||||
| #: apps/activity/views.py:153 | ||||
| #: apps/activity/views.py:154 | ||||
| msgid "Entry for activity \"{}\"" | ||||
| msgstr "Entrées pour l'activité « {} »" | ||||
|  | ||||
| @@ -250,6 +251,35 @@ msgstr "Les logs ne peuvent pas être détruits." | ||||
| msgid "member" | ||||
| msgstr "adhérent" | ||||
|  | ||||
| #: apps/member/forms.py:54 apps/registration/forms.py:29 | ||||
| msgid "Inscription paid by Société Générale" | ||||
| msgstr "Inscription payée par la Société générale" | ||||
|  | ||||
| #: apps/member/forms.py:56 apps/registration/forms.py:31 | ||||
| msgid "Check this case is the Société Générale paid the inscription." | ||||
| msgstr "Cochez cette case si la Société Générale a payé l'inscription." | ||||
|  | ||||
| #: apps/member/forms.py:61 apps/registration/forms.py:36 | ||||
| msgid "Credit type" | ||||
| msgstr "Type de rechargement" | ||||
|  | ||||
| #: apps/member/forms.py:62 apps/registration/forms.py:37 | ||||
| msgid "No credit" | ||||
| msgstr "Pas de rechargement" | ||||
|  | ||||
| #: apps/member/forms.py:64 | ||||
| msgid "You can credit the note of the user." | ||||
| msgstr "Vous pouvez créditer la note de l'utisateur avant l'adhésion." | ||||
|  | ||||
| #: apps/member/forms.py:68 apps/registration/forms.py:42 | ||||
| msgid "Credit amount" | ||||
| msgstr "Montant à créditer" | ||||
|  | ||||
| #: apps/member/forms.py:85 apps/registration/forms.py:59 | ||||
| #: apps/treasury/forms.py:125 templates/note/transaction_form.html:103 | ||||
| msgid "Bank" | ||||
| msgstr "Banque" | ||||
|  | ||||
| #: apps/member/models.py:32 | ||||
| #: templates/registration/future_profile_detail.html:47 | ||||
| msgid "phone number" | ||||
| @@ -382,11 +412,11 @@ msgstr "l'adhésion finit le" | ||||
| msgid "fee" | ||||
| msgstr "cotisation" | ||||
|  | ||||
| #: apps/member/models.py:261 apps/member/views.py:385 | ||||
| #: apps/member/models.py:261 apps/member/views.py:447 | ||||
| msgid "User is not a member of the parent club" | ||||
| msgstr "L'utilisateur n'est pas membre du club parent" | ||||
|  | ||||
| #: apps/member/models.py:271 apps/member/views.py:394 | ||||
| #: apps/member/models.py:271 apps/member/views.py:456 | ||||
| msgid "User is already a member of the club" | ||||
| msgstr "L'utilisateur est déjà membre du club" | ||||
|  | ||||
| @@ -407,42 +437,44 @@ msgstr "adhésions" | ||||
| msgid "Renew" | ||||
| msgstr "Renouveler" | ||||
|  | ||||
| #: apps/member/views.py:59 apps/registration/forms.py:20 | ||||
| #: apps/member/views.py:56 apps/registration/forms.py:20 | ||||
| msgid "This address must be valid." | ||||
| msgstr "Cette adresse doit être valide." | ||||
|  | ||||
| #: apps/member/views.py:62 templates/member/profile_info.html:45 | ||||
| #: apps/member/views.py:59 templates/member/profile_info.html:45 | ||||
| #: templates/registration/future_profile_detail.html:55 | ||||
| msgid "Update Profile" | ||||
| msgstr "Modifier le profil" | ||||
|  | ||||
| #: apps/member/views.py:72 | ||||
| #: apps/member/views.py:69 | ||||
| msgid "An alias with a similar name already exists." | ||||
| msgstr "Un alias avec un nom similaire existe déjà." | ||||
|  | ||||
| #: apps/member/views.py:167 | ||||
| #: apps/member/views.py:164 | ||||
| msgid "Search user" | ||||
| msgstr "Chercher un utilisateur" | ||||
|  | ||||
| #: apps/member/views.py:381 | ||||
| #: apps/member/views.py:442 | ||||
| msgid "" | ||||
| "This user don't have enough money to join this club, and can't have a " | ||||
| "negative balance." | ||||
| msgstr "" | ||||
| "Cet utilisateur n'a pas assez d'argent pour rejoindre ce club et ne " | ||||
| "peut pas avoir un solde négatif." | ||||
| "Cet utilisateur n'a pas assez d'argent pour rejoindre ce club et ne peut pas " | ||||
| "avoir un solde négatif." | ||||
|  | ||||
| #: apps/member/views.py:398 apps/member/views.py:430 | ||||
| #: apps/member/views.py:460 | ||||
| msgid "The membership must start after {:%m-%d-%Y}." | ||||
| msgstr "L'adhésion doit commencer après le {:%d/%m/%Y}." | ||||
|  | ||||
| #: apps/member/views.py:403 apps/member/views.py:435 | ||||
| #: apps/member/views.py:465 | ||||
| msgid "The membership must begin before {:%m-%d-%Y}." | ||||
| msgstr "L'adhésion doit commencer avant le {:%d/%m/%Y}." | ||||
|  | ||||
| #: apps/member/views.py:457 | ||||
| msgid "This membership is already renewed" | ||||
| msgstr "Cette adhésion est déjà renouvelée" | ||||
| #: apps/member/views.py:472 apps/member/views.py:474 apps/member/views.py:476 | ||||
| #: apps/registration/views.py:237 apps/registration/views.py:239 | ||||
| #: apps/registration/views.py:241 | ||||
| msgid "This field is required." | ||||
| msgstr "Ce champ est requis." | ||||
|  | ||||
| #: apps/note/admin.py:120 apps/note/models/transactions.py:99 | ||||
| msgid "source" | ||||
| @@ -620,9 +652,10 @@ msgstr "transaction" | ||||
| msgid "transactions" | ||||
| msgstr "transactions" | ||||
|  | ||||
| #: apps/note/models/transactions.py:207 templates/base.html:84 | ||||
| #: apps/note/models/transactions.py:207 | ||||
| #: templates/activity/activity_entry.html:13 templates/base.html:84 | ||||
| #: templates/note/transaction_form.html:19 | ||||
| #: templates/note/transaction_form.html:140 | ||||
| #: templates/note/transaction_form.html:145 | ||||
| msgid "Transfer" | ||||
| msgstr "Virement" | ||||
|  | ||||
| @@ -638,7 +671,9 @@ msgstr "prénom" | ||||
| msgid "bank" | ||||
| msgstr "banque" | ||||
|  | ||||
| #: apps/note/models/transactions.py:253 templates/note/transaction_form.html:24 | ||||
| #: apps/note/models/transactions.py:253 | ||||
| #: templates/activity/activity_entry.html:17 | ||||
| #: templates/note/transaction_form.html:24 | ||||
| msgid "Credit" | ||||
| msgstr "Crédit" | ||||
|  | ||||
| @@ -675,11 +710,11 @@ msgstr "Supprimer" | ||||
| msgid "Edit" | ||||
| msgstr "Éditer" | ||||
|  | ||||
| #: apps/note/views.py:39 | ||||
| #: apps/note/views.py:40 | ||||
| msgid "Transfer money" | ||||
| msgstr "Transférer de l'argent" | ||||
|  | ||||
| #: apps/note/views.py:100 templates/base.html:79 | ||||
| #: apps/note/views.py:107 templates/base.html:79 | ||||
| msgid "Consumptions" | ||||
| msgstr "Consommations" | ||||
|  | ||||
| @@ -705,31 +740,6 @@ msgstr "" | ||||
| msgid "registration" | ||||
| msgstr "inscription" | ||||
|  | ||||
| #: apps/registration/forms.py:29 | ||||
| msgid "Inscription paid by Société Générale" | ||||
| msgstr "Inscription payée par la Société générale" | ||||
|  | ||||
| #: apps/registration/forms.py:31 | ||||
| msgid "Check this case is the Société Générale paid the inscription." | ||||
| msgstr "Cochez cette case si la Société Générale a payé l'inscription." | ||||
|  | ||||
| #: apps/registration/forms.py:36 | ||||
| msgid "Credit type" | ||||
| msgstr "Type de rechargement" | ||||
|  | ||||
| #: apps/registration/forms.py:37 | ||||
| msgid "No credit" | ||||
| msgstr "Pas de rechargement" | ||||
|  | ||||
| #: apps/registration/forms.py:42 | ||||
| msgid "Credit amount" | ||||
| msgstr "Montant à créditer" | ||||
|  | ||||
| #: apps/registration/forms.py:59 apps/treasury/forms.py:125 | ||||
| #: templates/note/transaction_form.html:98 | ||||
| msgid "Bank" | ||||
| msgstr "Banque" | ||||
|  | ||||
| #: apps/registration/forms.py:64 | ||||
| msgid "Join BDE Club" | ||||
| msgstr "Adhérer au club BDE" | ||||
| @@ -761,12 +771,9 @@ msgstr "Vous devez adhérer au club BDE avant d'adhérer au club Kfet." | ||||
| #: apps/registration/views.py:230 | ||||
| msgid "" | ||||
| "The entered amount is not enough for the memberships, should be at least {}" | ||||
| msgstr "Le montant crédité est trop faible pour adhérer, il doit être au minimum de {}" | ||||
|  | ||||
| #: apps/registration/views.py:237 apps/registration/views.py:239 | ||||
| #: apps/registration/views.py:241 | ||||
| msgid "This field is required." | ||||
| msgstr "Ce champ est requis." | ||||
| msgstr "" | ||||
| "Le montant crédité est trop faible pour adhérer, il doit être au minimum de " | ||||
| "{}" | ||||
|  | ||||
| #: apps/treasury/apps.py:12 templates/base.html:111 | ||||
| msgid "Treasury" | ||||
| @@ -794,7 +801,7 @@ 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:127 apps/treasury/tables.py:47 | ||||
| #: templates/note/transaction_form.html:128 | ||||
| #: templates/note/transaction_form.html:133 | ||||
| #: templates/treasury/remittance_form.html:18 | ||||
| msgid "Amount" | ||||
| msgstr "Montant" | ||||
| @@ -815,7 +822,7 @@ msgstr "Objet" | ||||
| msgid "Description" | ||||
| msgstr "Description" | ||||
|  | ||||
| #: apps/treasury/models.py:46 templates/note/transaction_form.html:86 | ||||
| #: apps/treasury/models.py:46 templates/note/transaction_form.html:91 | ||||
| msgid "Name" | ||||
| msgstr "Nom" | ||||
|  | ||||
| @@ -941,15 +948,20 @@ msgstr "Inviter" | ||||
| msgid "Guests list" | ||||
| msgstr "Liste des invités" | ||||
|  | ||||
| #: templates/activity/activity_entry.html:10 | ||||
| #: templates/activity/activity_entry.html:22 | ||||
| #: templates/note/transaction_form.html:33 | ||||
| msgid "Entries" | ||||
| msgstr "Entrées" | ||||
|  | ||||
| #: templates/activity/activity_entry.html:30 | ||||
| msgid "Return to activity page" | ||||
| msgstr "Retour à la page de l'activité" | ||||
|  | ||||
| #: templates/activity/activity_entry.html:18 | ||||
| #: templates/activity/activity_entry.html:38 | ||||
| msgid "entries" | ||||
| msgstr "entrées" | ||||
|  | ||||
| #: templates/activity/activity_entry.html:18 | ||||
| #: templates/activity/activity_entry.html:38 | ||||
| msgid "entry" | ||||
| msgstr "entrée" | ||||
|  | ||||
| @@ -975,7 +987,7 @@ msgstr "La note du BDE de l'ENS Paris-Saclay." | ||||
|  | ||||
| #: templates/base.html:89 | ||||
| msgid "Users" | ||||
| msgstr "" | ||||
| msgstr "Utilisateurs" | ||||
|  | ||||
| #: templates/base.html:94 | ||||
| msgid "Clubs" | ||||
| @@ -1150,7 +1162,7 @@ msgstr "Voir mes adhésions" | ||||
| msgid "Save Changes" | ||||
| msgstr "Sauvegarder les changements" | ||||
|  | ||||
| #: templates/note/conso_form.html:28 templates/note/transaction_form.html:50 | ||||
| #: templates/note/conso_form.html:28 templates/note/transaction_form.html:55 | ||||
| msgid "Select emitters" | ||||
| msgstr "Sélection des émetteurs" | ||||
|  | ||||
| @@ -1174,7 +1186,7 @@ msgstr "Consommations simples" | ||||
| msgid "Double consumptions" | ||||
| msgstr "Consommations doubles" | ||||
|  | ||||
| #: templates/note/conso_form.html:141 templates/note/transaction_form.html:147 | ||||
| #: templates/note/conso_form.html:141 templates/note/transaction_form.html:152 | ||||
| msgid "Recent transactions history" | ||||
| msgstr "Historique des transactions récentes" | ||||
|  | ||||
| @@ -1182,29 +1194,29 @@ msgstr "Historique des transactions récentes" | ||||
| msgid "Gift" | ||||
| msgstr "Don" | ||||
|  | ||||
| #: templates/note/transaction_form.html:68 | ||||
| #: templates/note/transaction_form.html:73 | ||||
| msgid "External payment" | ||||
| msgstr "Paiement externe" | ||||
|  | ||||
| #: templates/note/transaction_form.html:76 | ||||
| #: templates/note/transaction_form.html:81 | ||||
| msgid "Transfer type" | ||||
| msgstr "Type de transfert" | ||||
|  | ||||
| #: templates/note/transaction_form.html:111 | ||||
| #: templates/note/transaction_form.html:164 | ||||
| #: templates/note/transaction_form.html:171 | ||||
| #: templates/note/transaction_form.html:116 | ||||
| #: templates/note/transaction_form.html:169 | ||||
| #: templates/note/transaction_form.html:176 | ||||
| msgid "Select receivers" | ||||
| msgstr "Sélection des destinataires" | ||||
|  | ||||
| #: templates/note/transaction_form.html:133 | ||||
| #: templates/note/transaction_form.html:138 | ||||
| msgid "Reason" | ||||
| msgstr "Raison" | ||||
|  | ||||
| #: templates/note/transaction_form.html:178 | ||||
| #: templates/note/transaction_form.html:183 | ||||
| msgid "Credit note" | ||||
| msgstr "Note à recharger" | ||||
|  | ||||
| #: templates/note/transaction_form.html:185 | ||||
| #: templates/note/transaction_form.html:190 | ||||
| msgid "Debit note" | ||||
| msgstr "Note à débiter" | ||||
|  | ||||
| @@ -1424,3 +1436,6 @@ msgstr "Il n'y a pas de transaction associée à une remise ouverte." | ||||
| #: templates/treasury/remittance_list.html:54 | ||||
| msgid "Closed remittances" | ||||
| msgstr "Remises fermées" | ||||
|  | ||||
| #~ msgid "This membership is already renewed" | ||||
| #~ msgstr "Cette adhésion est déjà renouvelée" | ||||
|   | ||||
| @@ -19,23 +19,32 @@ function pretty_money(value) { | ||||
|  * Add a message on the top of the page. | ||||
|  * @param msg The message to display | ||||
|  * @param alert_type The type of the alert. Choices: info, success, warning, danger | ||||
|  * @param timeout The delay (in millis) after that the message is auto-closed. If negative, then it is ignored. | ||||
|  */ | ||||
| function addMsg(msg, alert_type) { | ||||
| function addMsg(msg, alert_type, timeout=-1) { | ||||
|     let msgDiv = $("#messages"); | ||||
|     let html = msgDiv.html(); | ||||
|     let id = Math.floor(10000 * Math.random() + 1); | ||||
|     html += "<div class=\"alert alert-" + alert_type + " alert-dismissible\">" + | ||||
|         "<button class=\"close\" data-dismiss=\"alert\" href=\"#\"><span aria-hidden=\"true\">×</span></button>" | ||||
|         "<button id=\"close-message-" + id + "\" class=\"close\" data-dismiss=\"alert\" href=\"#\"><span aria-hidden=\"true\">×</span></button>" | ||||
|         + msg + "</div>\n"; | ||||
|     msgDiv.html(html); | ||||
|  | ||||
|     if (timeout > 0) { | ||||
|         setTimeout(function () { | ||||
|             $("#close-message-" + id).click(); | ||||
|         }, timeout); | ||||
|     } | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * add Muliple error message from err_obj | ||||
|  * @param errs_obj [{error_code:erro_message}] | ||||
|  * @param timeout The delay (in millis) after that the message is auto-closed. If negative, then it is ignored. | ||||
|  */ | ||||
| function errMsg(errs_obj){ | ||||
| function errMsg(errs_obj, timeout=-1) { | ||||
|     for (const err_msg of Object.values(errs_obj)) { | ||||
|               addMsg(err_msg,'danger'); | ||||
|               addMsg(err_msg,'danger', timeout); | ||||
|           } | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -28,6 +28,7 @@ function reset() { | ||||
| } | ||||
|  | ||||
| $(document).ready(function() { | ||||
|     console.log(42); | ||||
|     autoCompleteNote("source_note", "source_alias_matched", "source_note_list", sources, sources_notes_display, | ||||
|         "source_alias", "source_note", "user_note", "profile_pic"); | ||||
|     autoCompleteNote("dest_note", "dest_alias_matched", "dest_note_list", dests, dests_notes_display, | ||||
| @@ -61,16 +62,25 @@ $(document).ready(function() { | ||||
|  | ||||
|  | ||||
|     // Ensure we begin in gift mode. Removing these lines may cause problems when reloading. | ||||
|     $("#type_gift").prop('checked', 'true'); | ||||
|     let type_gift = $("#type_gift"); // Default mode | ||||
|     type_gift.removeAttr('checked'); | ||||
|     $("#type_transfer").removeAttr('checked'); | ||||
|     $("#type_credit").removeAttr('checked'); | ||||
|     $("#type_debit").removeAttr('checked'); | ||||
|     $("label[for='type_gift']").attr('class', 'btn btn-sm btn-outline-primary'); | ||||
|     $("label[for='type_transfer']").attr('class', 'btn btn-sm btn-outline-primary'); | ||||
|     $("label[for='type_credit']").attr('class', 'btn btn-sm btn-outline-primary'); | ||||
|     $("label[for='type_debit']").attr('class', 'btn btn-sm btn-outline-primary'); | ||||
|  | ||||
|     console.log("#type_" + location.hash.substr(1)); | ||||
|     if (location.hash) | ||||
|         $("#type_" + location.hash.substr(1)).click(); | ||||
|     else | ||||
|         type_gift.click(); | ||||
|     location.hash = ""; | ||||
| }); | ||||
|  | ||||
| $("#transfer").click(function() { | ||||
| $("#btn_transfer").click(function() { | ||||
|     if ($("#type_gift").is(':checked')) { | ||||
|         dests_notes_display.forEach(function (dest) { | ||||
|             $.post("/api/note/transaction/transaction/", | ||||
|   | ||||
| @@ -6,6 +6,26 @@ | ||||
| {% load perms %} | ||||
|  | ||||
| {% block content %} | ||||
|     <div class="row"> | ||||
|         <div class="col-xl-12"> | ||||
|             <div class="btn-group btn-group-toggle" style="width: 100%; padding: 0 0 2em 0" data-toggle="buttons"> | ||||
|                 <a href="{% url "note:transfer" %}#transfer" class="btn btn-sm btn-outline-primary"> | ||||
|                     {% trans "Transfer" %} | ||||
|                 </a> | ||||
|                 {% if "note.notespecial"|not_empty_model_list %} | ||||
|                     <a href="{% url "note:transfer" %}#credit" class="btn btn-sm btn-outline-primary"> | ||||
|                         {% trans "Credit" %} | ||||
|                     </a> | ||||
|                 {% endif %} | ||||
|                 {% for a in activities_open %} | ||||
|                     <a href="{% url "activity:activity_entry" pk=a.pk %}" class="btn btn-sm btn-outline-primary{% if a.pk == activity.pk %} active{% endif %}"> | ||||
|                         {% trans "Entries" %} {{ a.name }} | ||||
|                     </a> | ||||
|                 {% endfor %} | ||||
|             </div> | ||||
|         </div> | ||||
|     </div> | ||||
|  | ||||
|     <a href="{% url "activity:activity_detail" pk=activity.pk %}"> | ||||
|         <button class="btn btn-light">{% trans "Return to activity page" %}</button> | ||||
|     </a> | ||||
| @@ -56,10 +76,10 @@ | ||||
|                         note: id, | ||||
|                         guest: null | ||||
|                     }).done(function () { | ||||
|                         addMsg("Entrée effectuée !", "success"); | ||||
|                         addMsg("Entrée effectuée !", "success", 4000); | ||||
|                         reloadTable(true); | ||||
|                     }).fail(function(xhr) { | ||||
|                         errMsg(xhr.responseJSON); | ||||
|                         errMsg(xhr.responseJSON, 4000); | ||||
|                     }); | ||||
|                 } | ||||
|                 else { | ||||
| @@ -84,10 +104,10 @@ | ||||
|                             note: target.attr("data-inviter"), | ||||
|                             guest: id | ||||
|                         }).done(function () { | ||||
|                             addMsg("Entrée effectuée !", "success"); | ||||
|                             addMsg("Entrée effectuée !", "success", 4000); | ||||
|                             reloadTable(true); | ||||
|                         }).fail(function (xhr) { | ||||
|                             errMsg(xhr.responseJSON); | ||||
|                             errMsg(xhr.responseJSON, 4000); | ||||
|                         }); | ||||
|                     }; | ||||
|  | ||||
| @@ -111,7 +131,7 @@ | ||||
|                                 makeTransaction(); | ||||
|                                 reset(); | ||||
|                             }).fail(function (xhr) { | ||||
|                                 errMsg(xhr.responseJSON); | ||||
|                                 errMsg(xhr.responseJSON, 4000); | ||||
|                             }); | ||||
|                         }; | ||||
|                     }; | ||||
|   | ||||
| @@ -28,6 +28,11 @@ SPDX-License-Identifier: GPL-2.0-or-later | ||||
|                         {% trans "Debit" %} | ||||
|                     </label> | ||||
|                 {% endif %} | ||||
|                 {% for activity in activities_open %} | ||||
|                     <a href="{% url "activity:activity_entry" pk=activity.pk %}" class="btn btn-sm btn-outline-primary"> | ||||
|                         {% trans "Entries" %} {{ activity.name }} | ||||
|                     </a> | ||||
|                 {% endfor %} | ||||
|             </div> | ||||
|         </div> | ||||
|     </div> | ||||
| @@ -137,7 +142,7 @@ SPDX-License-Identifier: GPL-2.0-or-later | ||||
|  | ||||
|     <div class="form-row"> | ||||
|         <div class="col-md-12"> | ||||
|             <button id="transfer" class="form-control btn btn-primary">{% trans 'Transfer' %}</button> | ||||
|             <button id="btn_transfer" class="form-control btn btn-primary">{% trans 'Transfer' %}</button> | ||||
|         </div> | ||||
|     </div> | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user