diff --git a/emencia/django/newsletter/mailer.py b/emencia/django/newsletter/mailer.py
index 172a52a4..072ec830 100644
--- a/emencia/django/newsletter/mailer.py
+++ b/emencia/django/newsletter/mailer.py
@@ -469,10 +469,10 @@ class Mailer(NewsLetterSender):
if self.announce:
# check if events for this newsletter exists
announce_context = contact.get_announce_context()
- if not announce_context:
- send = False
else:
announce_context = None
+ if not announce_context:
+ send = False
try:
# pass
diff --git a/emencia/django/newsletter/models.py b/emencia/django/newsletter/models.py
index a346e40d..62546b32 100644
--- a/emencia/django/newsletter/models.py
+++ b/emencia/django/newsletter/models.py
@@ -6,20 +6,21 @@ from datetime import timedelta
from email.MIMEImage import MIMEImage
import copy
-from django.core.mail import EmailMessage
-from django.core.validators import MaxValueValidator, MinValueValidator
-from django.template import Context
from django.db import models
-from django.contrib.sites.models import Site
-from django.conf import settings
+from django.db.models import Q
from django.utils.encoding import smart_str
-from django.core.urlresolvers import reverse
+from django.utils.encoding import force_unicode
from django.utils.translation import ugettext_lazy as _
+from django.conf import settings
+from django.core.mail import EmailMessage
+from django.core.validators import MaxValueValidator, MinValueValidator
+from django.core.urlresolvers import reverse
+from django.contrib.sites.models import Site
from django.contrib.contenttypes import generic
from django.contrib.contenttypes.models import ContentType
from django.contrib.auth.models import Group
-from django.utils.encoding import force_unicode
from django.template.loader import render_to_string, get_template
+from django.template import Context
from emencia.django.newsletter.managers import ContactManager
@@ -155,38 +156,55 @@ class Contact(models.Model):
def get_announce_context(self):
from exposition.models import Exposition
+ from conference.models import Conference
from article.models import Article
from django.utils.translation import activate
activate('ru')
- events = Exposition.enable.upcoming()
+ expo = Exposition.enable.upcoming()
+ conf = Conference.enable.upcoming()
themes = list(self.contactsettings.theme.all())
- try:
- country = self.contactsettings.country.all()[0]
- except IndexError:
- country = None
- if themes:
- theme_ids = [item.id for item in themes]
- events = events.filter(theme__in=theme_ids)
- else:
- return None
- if country:
- events = events.filter(country=country)
- events = list(events[:5])
+ # making query
+ params = Q()
+
+ countries = self.contactsettings.country.all().values_list('pk', flat=True)
+ if countries:
+ params |= Q(country__in=countries)
+
+ cities = self.contactsettings.city.all().values_list('pk', flat=True)
+ if cities:
+ params |= Q(country__in=cities)
- if events:
- context = {'themes': themes, 'place': country, 'events': events}
+ if themes:
+ theme_ids = set([item.id for item in themes])
+ params &= Q(theme__in=theme_ids)
+
+ expo = list(expo.filter(params)[:5])
+ conf = list(conf.filter(params)[:5])
+
+ if expo or conf:
+ context = {
+ 'themes': themes,
+ 'expo': expo,
+ 'conf': conf,
+ }
+ if expo:
+ context['expo_places'] = ', '.join(set([x.country.inflect for x in expo]))
+ if conf:
+ context['conf_places'] = ', '.join(set([x.country.inflect for x in conf]))
else:
# no events for announce
return None
news = list(Article.objects.news()
- .filter(publish_date__gt=datetime.now()-timedelta(days=30), theme__in=theme_ids)
+ .filter(publish_date__gt=datetime.now()-timedelta(days=7), theme__in=theme_ids)
.distinct()[:3])
if news:
context['news'] = news
- blogs = list(Article.objects.blogs()[:1])
+ blogs = list(Article.objects.blogs()
+ .filter(publish_date__gt=datetime.now()-timedelta(days=7))
+ .distinct()[:3])
if blogs:
context['blogs'] = blogs
return context
diff --git a/emencia/django/newsletter/templates/newsletter/announce_template.html b/emencia/django/newsletter/templates/newsletter/announce_template.html
index c65b56d4..5ce43997 100644
--- a/emencia/django/newsletter/templates/newsletter/announce_template.html
+++ b/emencia/django/newsletter/templates/newsletter/announce_template.html
@@ -33,10 +33,10 @@
{# end header #}
{# events #}
- {% with events=events %}
+ {% with events=expo place=expo_places %}