From 226cad5922e9e04be63630f852a2902777bf175a Mon Sep 17 00:00:00 2001 From: Alexander Burdeiny Date: Sat, 2 Jul 2016 17:44:15 +0300 Subject: [PATCH] =?UTF-8?q?1393:=20=D0=AD=D1=82=D0=B0=D0=BF=20=E2=84=964?= =?UTF-8?q?=20-=20=D0=A0=D0=B0=D1=81=D1=81=D1=8B=D0=BB=D0=BA=D0=B0=20?= =?UTF-8?q?=D0=BF=D0=BE=20=D1=82=D0=B5=D0=BC=D0=B0=D1=82=D0=B8=D0=BA=D0=B5?= =?UTF-8?q?=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B0=20?= =?UTF-8?q?=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=BA=D0=B0=20=D0=B7=D0=B0?= =?UTF-8?q?=20=D0=BF=D0=BE=D1=81=D0=BB=D0=B5=D0=B4=D0=BD=D0=B8=D0=B5=2048?= =?UTF-8?q?=20=D1=87=D0=B0=D1=81=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- emencia/django/newsletter/mailer.py | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/emencia/django/newsletter/mailer.py b/emencia/django/newsletter/mailer.py index ddfe7ec7..9d4e4dae 100644 --- a/emencia/django/newsletter/mailer.py +++ b/emencia/django/newsletter/mailer.py @@ -35,6 +35,7 @@ from django.utils.encoding import smart_str from django.utils.encoding import smart_unicode from django.core.urlresolvers import reverse from django.core.exceptions import SuspiciousOperation +from django.db.models import Q from emencia.django.newsletter.models import Newsletter from emencia.django.newsletter.models import ContactMailingStatus @@ -344,11 +345,28 @@ class NewsLetterSender(object): expedition_list = self.newsletter.mailing_list.expedition_set().exclude(id__in=already_sent) return expedition_list else: - already_sent = ContactMailingStatus.objects.filter(status=ContactMailingStatus.SENT, - newsletter=self.newsletter).values_list('contact__id', flat=True) - qs = self.newsletter.mailing_list.expedition_set().exclude(id__in=already_sent) - if self.newsletter.mailing_list.theme_for_filter.all(): + qs = self.newsletter.mailing_list.expedition_set() + + if self.newsletter.theme_for_filter: + already_sent = \ + ContactMailingStatus.objects.filter( + status=ContactMailingStatus.SENT, + Q(newsletter=self.newsletter) | \ + Q(newsletter__mailing_list=self.newsletter.mailing_list, + creation_date__gte=datetime.now() - timedelta(days=2)) + ).values_list('contact__id', flat=True) + qs = qs.filter(contactsettings__theme=self.newsletter.theme_for_filter) + + else: + already_sent = \ + ContactMailingStatus.objects.filter( + status=ContactMailingStatus.SENT, + newsletter=self.newsletter + ).values_list('contact__id', flat=True) + + qs = qs.exclude(id__in=already_sent) + return qs def update_contact_status(self, contact, exception, send):