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):