From 56a1f8e634fbf29b80863e9e3fa559c6ab618048 Mon Sep 17 00:00:00 2001 From: Ludovic Stephan Date: Thu, 27 Oct 2016 23:46:57 -0200 Subject: [PATCH 1/4] add transfer & reinit functions --- bda/admin.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/bda/admin.py b/bda/admin.py index e07a5d49..d0483281 100644 --- a/bda/admin.py +++ b/bda/admin.py @@ -13,6 +13,7 @@ from bda.models import Spectacle, Salle, Participant, ChoixSpectacle,\ from django import forms from datetime import timedelta +from django.utils import timezone import autocomplete_light @@ -224,6 +225,28 @@ class SpectacleReventeAdmin(admin.ModelAdmin): 'seller__user__first_name', 'seller__user__last_name'] + actions = ['transfer', 'reinit', ] + actions_on_bottom = True + + def transfer(self, request, queryset): + for revente in queryset.all(): + if revente.soldTo: + attrib = revente.attribution + attrib.participant = revente.soldTo + attrib.save() + transfer.short_description = "Transférer les reventes sélectionnées" + + def reinit(self, request, queryset): + for revente in queryset.all(): + revente.date = timezone.now() - timedelta(hours=1) + revente.soldTo = None + revente.notif_sent = False + revente.tirage_done = False + if revente.answered_mail: + revente.answered_mail.clear() + revente.save() + reinit.short_description = "Réinitialiser les reventes sélectionnées" + admin.site.register(CategorieSpectacle) admin.site.register(Spectacle, SpectacleAdmin) From e408437ab158d6ae74654fa98be1f9303d07a350 Mon Sep 17 00:00:00 2001 From: Ludovic Stephan Date: Thu, 27 Oct 2016 23:47:11 -0200 Subject: [PATCH 2/4] fix reinit --- bda/views.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/bda/views.py b/bda/views.py index b9ce0825..756525f2 100644 --- a/bda/views.py +++ b/bda/views.py @@ -333,6 +333,8 @@ def revente(request, tirage_id): revente = rev.get() revente.date = timezone.now() - timedelta(hours=1) revente.soldTo = None + revente.notif_sent = False + revente.tirage_done = False if revente.answered_mail: revente.answered_mail.clear() revente.save() From 8d1f599577d9044229f16cc3225ffdcd2dc252b9 Mon Sep 17 00:00:00 2001 From: Ludovic Stephan Date: Fri, 28 Oct 2016 14:15:37 -0200 Subject: [PATCH 3/4] filter sold attributions --- bda/admin.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/bda/admin.py b/bda/admin.py index d0483281..668cc6dd 100644 --- a/bda/admin.py +++ b/bda/admin.py @@ -229,11 +229,10 @@ class SpectacleReventeAdmin(admin.ModelAdmin): actions_on_bottom = True def transfer(self, request, queryset): - for revente in queryset.all(): - if revente.soldTo: - attrib = revente.attribution - attrib.participant = revente.soldTo - attrib.save() + for revente in queryset.exclude(soldTo__isnull=True).all(): + attrib = revente.attribution + attrib.participant = revente.soldTo + attrib.save() transfer.short_description = "Transférer les reventes sélectionnées" def reinit(self, request, queryset): From 33545b028e7f10f9e1b1481e5a2cdde970cc2537 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20P=C3=A9pin?= Date: Fri, 4 Nov 2016 08:35:17 +0100 Subject: [PATCH 4/4] Messages et docstrings MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Ajout d'un message à l'aide de `message_user` lorsque les actions sont effectuées - Ajouts de docstrings là où c'est préconisé par pylint. --- bda/admin.py | 37 ++++++++++++++++++++++++++++++++----- 1 file changed, 32 insertions(+), 5 deletions(-) diff --git a/bda/admin.py b/bda/admin.py index 668cc6dd..87a269d4 100644 --- a/bda/admin.py +++ b/bda/admin.py @@ -5,15 +5,15 @@ from __future__ import print_function from __future__ import unicode_literals from django.core.mail import send_mail - from django.contrib import admin from django.db.models import Sum, Count +from django.template.defaultfilters import pluralize +from django.utils import timezone +from django import forms from bda.models import Spectacle, Salle, Participant, ChoixSpectacle,\ Attribution, Tirage, Quote, CategorieSpectacle, SpectacleRevente -from django import forms from datetime import timedelta -from django.utils import timezone import autocomplete_light @@ -212,9 +212,15 @@ class SalleAdmin(admin.ModelAdmin): class SpectacleReventeAdmin(admin.ModelAdmin): + """ + Administration des reventes de spectacles + """ model = SpectacleRevente def spectacle(self, obj): + """ + Raccourci vers le spectacle associé à la revente. + """ return obj.attribution.spectacle list_display = ("spectacle", "seller", "date", "soldTo") @@ -225,17 +231,32 @@ class SpectacleReventeAdmin(admin.ModelAdmin): 'seller__user__first_name', 'seller__user__last_name'] - actions = ['transfer', 'reinit', ] + actions = ['transfer', 'reinit'] actions_on_bottom = True def transfer(self, request, queryset): - for revente in queryset.exclude(soldTo__isnull=True).all(): + """ + Effectue le transfert des reventes pour lesquels on connaît l'acheteur. + """ + reventes = queryset.exclude(soldTo__isnull=True).all() + count = reventes.count() + for revente in reventes: attrib = revente.attribution attrib.participant = revente.soldTo attrib.save() + self.message_user( + request, + "%d attribution%s %s été transférée%s avec succès." % ( + count, pluralize(count), + pluralize(count, "a,ont"), pluralize(count)) + ) transfer.short_description = "Transférer les reventes sélectionnées" def reinit(self, request, queryset): + """ + Réinitialise les reventes. + """ + count = queryset.count() for revente in queryset.all(): revente.date = timezone.now() - timedelta(hours=1) revente.soldTo = None @@ -244,6 +265,12 @@ class SpectacleReventeAdmin(admin.ModelAdmin): if revente.answered_mail: revente.answered_mail.clear() revente.save() + self.message_user( + request, + "%d attribution%s %s été réinitialisée%s avec succès." % ( + count, pluralize(count), + pluralize(count, "a,ont"), pluralize(count)) + ) reinit.short_description = "Réinitialiser les reventes sélectionnées"