[WEI] Change color of validation button of WEI registrations

Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
This commit is contained in:
Yohann D'ANELLO 2021-08-29 14:10:52 +02:00
parent 0887e4bbde
commit a7bdffd71a
Signed by: ynerant
GPG Key ID: 3A75C55819C8CF85
6 changed files with 646 additions and 566 deletions

View File

@ -262,6 +262,33 @@ class WEIRegistration(models.Model):
""" """
self.information_json = json.dumps(information, indent=2) self.information_json = json.dumps(information, indent=2)
@property
def fee(self):
bde = Club.objects.get(pk=1)
kfet = Club.objects.get(pk=2)
kfet_member = Membership.objects.filter(
club_id=kfet.id,
user=self.user,
date_start__gte=kfet.membership_start,
).exists()
bde_member = Membership.objects.filter(
club_id=bde.id,
user=self.user,
date_start__gte=bde.membership_start,
).exists()
fee = self.wei.membership_fee_paid if self.user.profile.paid \
else self.wei.membership_fee_unpaid
if not kfet_member:
fee += kfet.membership_fee_paid if self.user.profile.paid \
else kfet.membership_fee_unpaid
if not bde_member:
fee += bde.membership_fee_paid if self.user.profile.paid \
else bde.membership_fee_unpaid
return fee
@property @property
def is_validated(self): def is_validated(self):
try: try:

View File

@ -43,6 +43,7 @@ class WEIRegistrationTable(tables.Table):
edit = tables.LinkColumn( edit = tables.LinkColumn(
'wei:wei_update_registration', 'wei:wei_update_registration',
orderable=False,
args=[A('pk')], args=[A('pk')],
verbose_name=_("Edit"), verbose_name=_("Edit"),
text=_("Edit"), text=_("Edit"),
@ -53,18 +54,14 @@ class WEIRegistrationTable(tables.Table):
} }
} }
) )
validate = tables.LinkColumn(
'wei:validate_registration', validate = tables.Column(
args=[A('pk')],
verbose_name=_("Validate"), verbose_name=_("Validate"),
text=_("Validate"), orderable=False,
accessor=A('pk'),
attrs={ attrs={
'th': { 'th': {
'id': 'validate-membership-header' 'id': 'validate-membership-header'
},
'a': {
'class': 'btn btn-success',
'data-type': 'validate-membership'
} }
} }
) )
@ -72,6 +69,7 @@ class WEIRegistrationTable(tables.Table):
delete = tables.LinkColumn( delete = tables.LinkColumn(
'wei:wei_delete_registration', 'wei:wei_delete_registration',
args=[A('pk')], args=[A('pk')],
orderable=False,
verbose_name=_("delete"), verbose_name=_("delete"),
text=_("Delete"), text=_("Delete"),
attrs={ attrs={
@ -96,7 +94,20 @@ class WEIRegistrationTable(tables.Table):
registration=record, registration=record,
) )
) )
return _("Validate") if hasperm else format_html("<span class='no-perm'></span>") if not hasperm:
return format_html("<span class='no-perm'></span>")
url = reverse_lazy('wei:validate_registration', args=(record.pk,))
text = _('Validate')
if record.fee > record.user.note.balance:
btn_class = 'btn-secondary'
tooltip = _("The user does not have enough money.")
else:
btn_class = 'btn-success'
tooltip = _("The user has enough money, you can validate the registration.")
return format_html(f"<a class=\"btn {btn_class}\" data-type='validate-membership' data-toggle=\"tooltip\" "
f"title=\"{tooltip}\" href=\"{url}\">{text}</a>")
def render_delete(self, record): def render_delete(self, record):
hasperm = PermissionBackend.check_perm(get_current_authenticated_user(), "wei.delete_weimembership", record) hasperm = PermissionBackend.check_perm(get_current_authenticated_user(), "wei.delete_weimembership", record)
@ -108,7 +119,8 @@ class WEIRegistrationTable(tables.Table):
} }
model = WEIRegistration model = WEIRegistration
template_name = 'django_tables2/bootstrap4.html' template_name = 'django_tables2/bootstrap4.html'
fields = ('user', 'user__first_name', 'user__last_name', 'first_year', 'caution_check',) fields = ('user', 'user__first_name', 'user__last_name', 'first_year', 'caution_check',
'edit', 'validate', 'delete',)
row_attrs = { row_attrs = {
'class': 'table-row', 'class': 'table-row',
'id': lambda record: "row-" + str(record.pk), 'id': lambda record: "row-" + str(record.pk),

View File

@ -818,22 +818,13 @@ class WEIValidateRegistrationView(ProtectQuerysetMixin, ProtectedCreateView):
date_start__gte=bde.membership_start, date_start__gte=bde.membership_start,
).exists() ).exists()
fee = registration.wei.membership_fee_paid if registration.user.profile.paid \ context["fee"] = registration.fee
else registration.wei.membership_fee_unpaid
if not context["kfet_member"]:
fee += kfet.membership_fee_paid if registration.user.profile.paid \
else kfet.membership_fee_unpaid
if not context["bde_member"]:
fee += bde.membership_fee_paid if registration.user.profile.paid \
else bde.membership_fee_unpaid
context["fee"] = fee
form = context["form"] form = context["form"]
if registration.soge_credit: if registration.soge_credit:
form.fields["credit_amount"].initial = fee form.fields["credit_amount"].initial = registration.fee
else: else:
form.fields["credit_amount"].initial = max(0, fee - registration.user.note.balance) form.fields["credit_amount"].initial = max(0, registration.fee - registration.user.note.balance)
return context return context

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: \n" "Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-08-25 23:24+0200\n" "POT-Creation-Date: 2021-08-29 14:06+0200\n"
"PO-Revision-Date: 2020-11-16 20:02+0000\n" "PO-Revision-Date: 2020-11-16 20:02+0000\n"
"Last-Translator: Yohann D'ANELLO <ynerant@crans.org>\n" "Last-Translator: Yohann D'ANELLO <ynerant@crans.org>\n"
"Language-Team: French <http://translate.ynerant.fr/projects/nk20/nk20/fr/>\n" "Language-Team: French <http://translate.ynerant.fr/projects/nk20/nk20/fr/>\n"
@ -461,7 +461,7 @@ msgstr "créer"
#: apps/logs/models.py:65 apps/note/tables.py:165 apps/note/tables.py:201 #: apps/logs/models.py:65 apps/note/tables.py:165 apps/note/tables.py:201
#: apps/permission/models.py:127 apps/treasury/tables.py:38 #: apps/permission/models.py:127 apps/treasury/tables.py:38
#: apps/wei/tables.py:75 #: apps/wei/tables.py:73
msgid "delete" msgid "delete"
msgstr "supprimer" msgstr "supprimer"
@ -508,7 +508,7 @@ msgstr "rôles"
msgid "fee" msgid "fee"
msgstr "cotisation" msgstr "cotisation"
#: apps/member/apps.py:14 apps/wei/tables.py:181 apps/wei/tables.py:212 #: apps/member/apps.py:14 apps/wei/tables.py:193 apps/wei/tables.py:224
msgid "member" msgid "member"
msgstr "adhérent" msgstr "adhérent"
@ -1137,7 +1137,7 @@ msgstr "Modifier le club"
msgid "Add new member to the club" msgid "Add new member to the club"
msgstr "Ajouter un nouveau membre au club" msgstr "Ajouter un nouveau membre au club"
#: apps/member/views.py:642 apps/wei/views.py:924 #: apps/member/views.py:642 apps/wei/views.py:917
msgid "" msgid ""
"This user don't have enough money to join this club, and can't have a " "This user don't have enough money to join this club, and can't have a "
"negative balance." "negative balance."
@ -1443,8 +1443,8 @@ msgstr ""
"mode de paiement et un utilisateur ou un club" "mode de paiement et un utilisateur ou un club"
#: apps/note/models/transactions.py:355 apps/note/models/transactions.py:358 #: apps/note/models/transactions.py:355 apps/note/models/transactions.py:358
#: apps/note/models/transactions.py:361 apps/wei/views.py:929 #: apps/note/models/transactions.py:361 apps/wei/views.py:922
#: apps/wei/views.py:933 #: apps/wei/views.py:926
msgid "This field is required." msgid "This field is required."
msgstr "Ce champ est requis." msgstr "Ce champ est requis."
@ -1479,13 +1479,13 @@ msgstr "Pas de motif spécifié"
#: apps/note/tables.py:169 apps/note/tables.py:203 apps/treasury/tables.py:39 #: apps/note/tables.py:169 apps/note/tables.py:203 apps/treasury/tables.py:39
#: apps/treasury/templates/treasury/invoice_confirm_delete.html:30 #: apps/treasury/templates/treasury/invoice_confirm_delete.html:30
#: apps/treasury/templates/treasury/sogecredit_detail.html:65 #: apps/treasury/templates/treasury/sogecredit_detail.html:65
#: apps/wei/tables.py:76 apps/wei/tables.py:103 #: apps/wei/tables.py:74 apps/wei/tables.py:114
#: apps/wei/templates/wei/weiregistration_confirm_delete.html:31 #: apps/wei/templates/wei/weiregistration_confirm_delete.html:31
msgid "Delete" msgid "Delete"
msgstr "Supprimer" msgstr "Supprimer"
#: apps/note/tables.py:197 apps/note/templates/note/conso_form.html:132 #: apps/note/tables.py:197 apps/note/templates/note/conso_form.html:132
#: apps/wei/tables.py:47 apps/wei/tables.py:48 #: apps/wei/tables.py:48 apps/wei/tables.py:49
#: apps/wei/templates/wei/base.html:89 #: apps/wei/templates/wei/base.html:89
#: apps/wei/templates/wei/bus_detail.html:20 #: apps/wei/templates/wei/bus_detail.html:20
#: apps/wei/templates/wei/busteam_detail.html:20 #: apps/wei/templates/wei/busteam_detail.html:20
@ -2363,7 +2363,7 @@ msgstr ""
"demande de crédit." "demande de crédit."
#: apps/treasury/templates/treasury/sogecredit_detail.html:63 #: apps/treasury/templates/treasury/sogecredit_detail.html:63
#: apps/wei/tables.py:59 apps/wei/tables.py:60 apps/wei/tables.py:99 #: apps/wei/tables.py:59 apps/wei/tables.py:101
msgid "Validate" msgid "Validate"
msgstr "Valider" msgstr "Valider"
@ -2429,7 +2429,7 @@ msgid "WEI"
msgstr "WEI" msgstr "WEI"
#: apps/wei/forms/registration.py:51 apps/wei/models.py:118 #: apps/wei/forms/registration.py:51 apps/wei/models.py:118
#: apps/wei/models.py:288 #: apps/wei/models.py:315
msgid "bus" msgid "bus"
msgstr "bus" msgstr "bus"
@ -2467,7 +2467,7 @@ msgstr "Sélectionnez les rôles qui vous intéressent."
msgid "This team doesn't belong to the given bus." msgid "This team doesn't belong to the given bus."
msgstr "Cette équipe n'appartient pas à ce bus." msgstr "Cette équipe n'appartient pas à ce bus."
#: apps/wei/forms/surveys/wei2021.py:30 #: apps/wei/forms/surveys/wei2021.py:31
msgid "Choose a word:" msgid "Choose a word:"
msgstr "Choisissez un mot :" msgstr "Choisissez un mot :"
@ -2593,44 +2593,52 @@ msgstr ""
"Informations sur l'inscription (bus pour les 2A+, questionnaire pour les " "Informations sur l'inscription (bus pour les 2A+, questionnaire pour les "
"1A), encodées en JSON" "1A), encodées en JSON"
#: apps/wei/models.py:277 #: apps/wei/models.py:304
msgid "WEI User" msgid "WEI User"
msgstr "Participant au WEI" msgstr "Participant au WEI"
#: apps/wei/models.py:278 #: apps/wei/models.py:305
msgid "WEI Users" msgid "WEI Users"
msgstr "Participants au WEI" msgstr "Participants au WEI"
#: apps/wei/models.py:298 #: apps/wei/models.py:325
msgid "team" msgid "team"
msgstr "équipe" msgstr "équipe"
#: apps/wei/models.py:308 #: apps/wei/models.py:335
msgid "WEI registration" msgid "WEI registration"
msgstr "Inscription au WEI" msgstr "Inscription au WEI"
#: apps/wei/models.py:312 #: apps/wei/models.py:339
msgid "WEI membership" msgid "WEI membership"
msgstr "Adhésion au WEI" msgstr "Adhésion au WEI"
#: apps/wei/models.py:313 #: apps/wei/models.py:340
msgid "WEI memberships" msgid "WEI memberships"
msgstr "Adhésions au WEI" msgstr "Adhésions au WEI"
#: apps/wei/tables.py:127 #: apps/wei/tables.py:104
msgid "The user does not have enough money."
msgstr "L'utilisateur n'a pas assez d'argent."
#: apps/wei/tables.py:107
msgid "The user has enough money, you can validate the registration."
msgstr "L'utilisateur a assez d'argent, l'inscription est possible."
#: apps/wei/tables.py:139
msgid "Year" msgid "Year"
msgstr "Année" msgstr "Année"
#: apps/wei/tables.py:165 apps/wei/templates/wei/bus_detail.html:32 #: apps/wei/tables.py:177 apps/wei/templates/wei/bus_detail.html:32
#: apps/wei/templates/wei/busteam_detail.html:50 #: apps/wei/templates/wei/busteam_detail.html:50
msgid "Teams" msgid "Teams"
msgstr "Équipes" msgstr "Équipes"
#: apps/wei/tables.py:174 apps/wei/tables.py:215 #: apps/wei/tables.py:186 apps/wei/tables.py:227
msgid "Members count" msgid "Members count"
msgstr "Nombre de membres" msgstr "Nombre de membres"
#: apps/wei/tables.py:181 apps/wei/tables.py:212 #: apps/wei/tables.py:193 apps/wei/tables.py:224
msgid "members" msgid "members"
msgstr "adhérents" msgstr "adhérents"
@ -2650,11 +2658,11 @@ msgstr "Prix du WEI (étudiants)"
msgid "WEI list" msgid "WEI list"
msgstr "Liste des WEI" msgstr "Liste des WEI"
#: apps/wei/templates/wei/base.html:81 apps/wei/views.py:508 #: apps/wei/templates/wei/base.html:81 apps/wei/views.py:510
msgid "Register 1A" msgid "Register 1A"
msgstr "Inscrire un 1A" msgstr "Inscrire un 1A"
#: apps/wei/templates/wei/base.html:85 apps/wei/views.py:576 #: apps/wei/templates/wei/base.html:85 apps/wei/views.py:578
msgid "Register 2A+" msgid "Register 2A+"
msgstr "Inscrire un 2A+" msgstr "Inscrire un 2A+"
@ -2683,8 +2691,8 @@ msgstr "Télécharger au format PDF"
#: apps/wei/templates/wei/survey.html:11 #: apps/wei/templates/wei/survey.html:11
#: apps/wei/templates/wei/survey_closed.html:11 #: apps/wei/templates/wei/survey_closed.html:11
#: apps/wei/templates/wei/survey_end.html:11 apps/wei/views.py:980 #: apps/wei/templates/wei/survey_end.html:11 apps/wei/views.py:973
#: apps/wei/views.py:1035 apps/wei/views.py:1045 #: apps/wei/views.py:1028 apps/wei/views.py:1038
msgid "Survey WEI" msgid "Survey WEI"
msgstr "Questionnaire WEI" msgstr "Questionnaire WEI"
@ -2902,31 +2910,31 @@ msgstr "Ajouter un nouveau bus"
msgid "Update bus" msgid "Update bus"
msgstr "Modifier le bus" msgstr "Modifier le bus"
#: apps/wei/views.py:364 #: apps/wei/views.py:366
msgid "Manage bus" msgid "Manage bus"
msgstr "Gérer le bus" msgstr "Gérer le bus"
#: apps/wei/views.py:391 #: apps/wei/views.py:393
msgid "Create new team" msgid "Create new team"
msgstr "Créer une nouvelle équipe" msgstr "Créer une nouvelle équipe"
#: apps/wei/views.py:431 #: apps/wei/views.py:433
msgid "Update team" msgid "Update team"
msgstr "Modifier l'équipe" msgstr "Modifier l'équipe"
#: apps/wei/views.py:462 #: apps/wei/views.py:464
msgid "Manage WEI team" msgid "Manage WEI team"
msgstr "Gérer l'équipe WEI" msgstr "Gérer l'équipe WEI"
#: apps/wei/views.py:484 #: apps/wei/views.py:486
msgid "Register first year student to the WEI" msgid "Register first year student to the WEI"
msgstr "Inscrire un 1A au WEI" msgstr "Inscrire un 1A au WEI"
#: apps/wei/views.py:530 apps/wei/views.py:611 #: apps/wei/views.py:532 apps/wei/views.py:613
msgid "This user is already registered to this WEI." msgid "This user is already registered to this WEI."
msgstr "Cette personne est déjà inscrite au WEI." msgstr "Cette personne est déjà inscrite au WEI."
#: apps/wei/views.py:535 #: apps/wei/views.py:537
msgid "" msgid ""
"This user can't be in her/his first year since he/she has already " "This user can't be in her/his first year since he/she has already "
"participated to a WEI." "participated to a WEI."
@ -2934,27 +2942,27 @@ msgstr ""
"Cet utilisateur ne peut pas être en première année puisqu'il a déjà " "Cet utilisateur ne peut pas être en première année puisqu'il a déjà "
"participé à un WEI." "participé à un WEI."
#: apps/wei/views.py:552 #: apps/wei/views.py:554
msgid "Register old student to the WEI" msgid "Register old student to the WEI"
msgstr "Inscrire un 2A+ au WEI" msgstr "Inscrire un 2A+ au WEI"
#: apps/wei/views.py:595 apps/wei/views.py:684 #: apps/wei/views.py:597 apps/wei/views.py:686
msgid "You already opened an account in the Société générale." msgid "You already opened an account in the Société générale."
msgstr "Vous avez déjà ouvert un compte auprès de la société générale." msgstr "Vous avez déjà ouvert un compte auprès de la société générale."
#: apps/wei/views.py:641 #: apps/wei/views.py:643
msgid "Update WEI Registration" msgid "Update WEI Registration"
msgstr "Modifier l'inscription WEI" msgstr "Modifier l'inscription WEI"
#: apps/wei/views.py:744 #: apps/wei/views.py:746
msgid "Delete WEI registration" msgid "Delete WEI registration"
msgstr "Supprimer l'inscription WEI" msgstr "Supprimer l'inscription WEI"
#: apps/wei/views.py:755 #: apps/wei/views.py:757
msgid "You don't have the right to delete this WEI registration." msgid "You don't have the right to delete this WEI registration."
msgstr "Vous n'avez pas la permission de supprimer cette inscription au WEI." msgstr "Vous n'avez pas la permission de supprimer cette inscription au WEI."
#: apps/wei/views.py:774 #: apps/wei/views.py:776
msgid "Validate WEI registration" msgid "Validate WEI registration"
msgstr "Valider l'inscription WEI" msgstr "Valider l'inscription WEI"