From b63f7a8efff21ba9f9e9f3d37806d8b8b920ed22 Mon Sep 17 00:00:00 2001 From: Benjamin Dauvergne Date: Wed, 26 Jun 2013 10:57:24 +0200 Subject: [PATCH 1/3] admin: add a __name__ attribute to actions --- portail_citoyen_announces/admin.py | 1 + 1 file changed, 1 insertion(+) diff --git a/portail_citoyen_announces/admin.py b/portail_citoyen_announces/admin.py index 2686cba..d08799d 100644 --- a/portail_citoyen_announces/admin.py +++ b/portail_citoyen_announces/admin.py @@ -14,6 +14,7 @@ class SendingAction(object): def __init__(self, mode): self.mode = mode + self.__name__ = mode @property def short_description(self): From 5df43b7ceabd2b52e50239443ddbdfb7fa4f7e33 Mon Sep 17 00:00:00 2001 From: Benjamin Dauvergne Date: Wed, 26 Jun 2013 11:09:04 +0200 Subject: [PATCH 2/3] for subscribe users always extract identifier from the user model --- portail_citoyen_announces/forms.py | 2 +- portail_citoyen_announces/models.py | 2 +- portail_citoyen_announces/transports.py | 8 +++++++- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/portail_citoyen_announces/forms.py b/portail_citoyen_announces/forms.py index 934d723..38af4b1 100644 --- a/portail_citoyen_announces/forms.py +++ b/portail_citoyen_announces/forms.py @@ -45,6 +45,6 @@ class SubscriptionForm(forms.Form): for category, transport in wanted_subscriptions: models.Subscription.objects.get_or_create( user=self.user, - identifier=self.user.mobile, + identifier='', category=category, transport=transport) diff --git a/portail_citoyen_announces/models.py b/portail_citoyen_announces/models.py index 271bcda..320ed12 100644 --- a/portail_citoyen_announces/models.py +++ b/portail_citoyen_announces/models.py @@ -80,7 +80,7 @@ class Subscription(TimeStampedModel): user = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name=_('user'), blank=True, null=True) category = models.ForeignKey('Category', verbose_name=_('category')) - identifier = models.CharField(_('identifier'), max_length=128, blank=False, + identifier = models.CharField(_('identifier'), max_length=128, blank=True, help_text=_('ex.: email, mobile phone number, jabber id')) transport = models.CharField(_('transport'), max_length=32, choices=transports.get_transport_choices(), diff --git a/portail_citoyen_announces/transports.py b/portail_citoyen_announces/transports.py index e27cbfc..6d90f8f 100644 --- a/portail_citoyen_announces/transports.py +++ b/portail_citoyen_announces/transports.py @@ -181,7 +181,13 @@ class EmailTransport(object): def get_emails(self, category): qs = self.get_subscriptions(category) - return qs.values_list('identifier', flat=True).distinct() + for subscription in qs: + email = '' + if subscription.identifier: + email = subscription.identifier + elif subscription.user: + email = subscription.user.email + yield email def send(self, announce): category = announce.category From 270a1e29be64a2a6ce060b332d7daefc4f873544 Mon Sep 17 00:00:00 2001 From: Benjamin Dauvergne Date: Wed, 26 Jun 2013 11:15:51 +0200 Subject: [PATCH 3/3] transports: convert generator to list before using it --- portail_citoyen_announces/transports.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/portail_citoyen_announces/transports.py b/portail_citoyen_announces/transports.py index 6d90f8f..2acfcd4 100644 --- a/portail_citoyen_announces/transports.py +++ b/portail_citoyen_announces/transports.py @@ -199,7 +199,7 @@ class EmailTransport(object): ctx = Context({ 'announce': announce, 'site': site, 'category': category }) subject = subject_template.render(ctx).replace('\r', '').replace('\n', '') body = body_template.render(ctx) - emails = self.get_emails(category) + emails = list(self.get_emails(category)) logger.info(u'sending announce %(announce)s through %(mode)s to %(count)s emails', dict(announce=announce, mode=self.identifier, count=len(emails))) try: