diff --git a/visits/admin.py b/visits/admin.py index 3e2376a8db9efcf944ebf26939811a48f3e1b553..28072ccc4490277e3f0435526dcd5916d1d28ea8 100644 --- a/visits/admin.py +++ b/visits/admin.py @@ -1,3 +1,4 @@ + """Visits admin panel configuration.""" from django import forms @@ -122,7 +123,7 @@ class ParticipationInline(admin.TabularInline): def accept_selected_participations(modeladmin, request, queryset): """Accept selected participations in list view.""" for obj in queryset: - obj.accepted = True + obj.accepted = 1 obj.save() count = queryset.count() s = pluralize(count) @@ -137,12 +138,12 @@ accept_selected_participations.short_description = ( def reject_selected_participations(modeladmin, request, queryset): """Reject selected participations in list view.""" for obj in queryset: - obj.accepted = False + obj.accepted = 0 obj.save() count = queryset.count() s = pluralize(count) messages.add_message(request, messages.SUCCESS, - f'{count} participation{s} rejetée{s} avec succès.') ## rejeté place accepté + f'{count} participation{s} rejetée{s} avec succès.') # rejeté place accepté reject_selected_participations.short_description = ( @@ -162,6 +163,21 @@ def wait_selected_participations(modeladmin, request, queryset): wait_selected_participations.short_description = ( 'Mettre en attentes les participations sélectionnées') +def wait_selected_participations(modeladmin, request, queryset): + """Reject selected participations in list view.""" + for obj in queryset: + obj.accepted = 2 # in wait + obj.save() + count = queryset.count() + s = pluralize(count) + messages.add_message(request, messages.SUCCESS, + f'{count} participation{s} en attente{s} avec succès.') + + +wait_selected_participations.short_description = ( + 'Mettre en attentes les participations sélectionnées') + + @admin.register(Participation) class ParticipationAdmin(admin.ModelAdmin): """Admin panel for visit participations.""" @@ -195,7 +211,6 @@ class ParticipationAdmin(admin.ModelAdmin): response.write(codecs.BOM_UTF8) # force response to be UTF-8 writer = csv.writer(response, delimiter=';') - writer.writerow(['first_name', 'last_name', 'school', 'grade', 'phone_number', 'scholarship'] + field_names) @@ -211,7 +226,6 @@ class ParticipationAdmin(admin.ModelAdmin): row = writer.writerow([name[0]['first_name'], name[0]['last_name'], school[0]['school'], school[0]['grade'], name[0]['phone_number'], school[0]['scholarship']] + [getattr(obj, field) for field in field_names]) - nb_user += 1 return response diff --git a/visits/models.py b/visits/models.py index 65fb58b98c7a359223205b32bfdba128a42a2a32..1a0ad4cc848c2a9d0d55a86674f76dcf9a451ae6 100644 --- a/visits/models.py +++ b/visits/models.py @@ -42,10 +42,11 @@ class Participation(models.Model): Allows to store whether the user was present to the visit, and whether their files were validated. """ - STATUS_CHOICES = ( - ( 0 , 'refusé' ), - ( 1 , 'accepté' ), - ( 2 , 'en attente' ), + STATUS_CHOICES = ( + (0, 'refusé'), + (1, 'accepté'), + (2, 'en attente'), + (3, 'inconnue'), ) user = models.ForeignKey('users.User', verbose_name='utilisateur', related_name='participations', @@ -58,7 +59,7 @@ class Participation(models.Model): verbose_name='soumis le', help_text='Date de soumission de la participation') accepted = models.IntegerField( - default=0, + default=3, choices=STATUS_CHOICES, help_text=( "Cocher pour confirmer au tutoré sa participation à la sortie.")) diff --git a/visits/signals.py b/visits/signals.py index 49653bef932951ccb827ab84958c3792a191fad3..594fc97cb537e4500511a5e021039a52ce3d0482 100644 --- a/visits/signals.py +++ b/visits/signals.py @@ -23,7 +23,7 @@ def notify_participation(sender, instance: Participation, **kwargs): The notification is only sent if the participation status has changed. """ - if instance.accepted is None: + if instance.accepted is 3: return if instance.accepted == 2 : ConfirmParticipationWait(participation=instance).send()