|
|
|
@ -6,6 +6,8 @@ from datetime import date |
|
|
|
from datetime import timedelta |
|
|
|
from datetime import timedelta |
|
|
|
from dateutil import relativedelta |
|
|
|
from dateutil import relativedelta |
|
|
|
from email.MIMEImage import MIMEImage |
|
|
|
from email.MIMEImage import MIMEImage |
|
|
|
|
|
|
|
from random import choice |
|
|
|
|
|
|
|
from itertools import chain |
|
|
|
import copy |
|
|
|
import copy |
|
|
|
import operator |
|
|
|
import operator |
|
|
|
|
|
|
|
|
|
|
|
@ -25,7 +27,7 @@ from django.contrib.contenttypes.models import ContentType |
|
|
|
from django.contrib.auth.models import Group |
|
|
|
from django.contrib.auth.models import Group |
|
|
|
from django.template.loader import render_to_string, get_template |
|
|
|
from django.template.loader import render_to_string, get_template |
|
|
|
from django.template import Context |
|
|
|
from django.template import Context |
|
|
|
|
|
|
|
from django.http import QueryDict |
|
|
|
|
|
|
|
|
|
|
|
from emencia.django.newsletter.managers import ContactManager |
|
|
|
from emencia.django.newsletter.managers import ContactManager |
|
|
|
from emencia.django.newsletter.settings import BASE_PATH |
|
|
|
from emencia.django.newsletter.settings import BASE_PATH |
|
|
|
@ -198,15 +200,19 @@ class Contact(models.Model): |
|
|
|
return reverse('admin:newsletter_contact_change', args=(self.pk,)) |
|
|
|
return reverse('admin:newsletter_contact_change', args=(self.pk,)) |
|
|
|
|
|
|
|
|
|
|
|
def get_announce_context_v2(self, date=None): |
|
|
|
def get_announce_context_v2(self, date=None): |
|
|
|
|
|
|
|
# import error |
|
|
|
|
|
|
|
from emencia.django.newsletter.utils.tokens import tokenize |
|
|
|
|
|
|
|
|
|
|
|
date = date or datetime.today().date() |
|
|
|
date = date or datetime.today().date() |
|
|
|
activate('ru') |
|
|
|
activate('ru') |
|
|
|
ctx = { |
|
|
|
ctx = { |
|
|
|
'recomended': [], |
|
|
|
'recommended': [], |
|
|
|
'moscow': [], |
|
|
|
'moscow': [], |
|
|
|
'russia': [], |
|
|
|
'russia': [], |
|
|
|
'foreign': [], |
|
|
|
'foreign': [], |
|
|
|
'news': [], |
|
|
|
'news': [], |
|
|
|
'blog': [], |
|
|
|
'blog': [], |
|
|
|
|
|
|
|
'mailing_settings_url': reverse('newsletter-authmailingsettings', args=tokenize(self)), |
|
|
|
} |
|
|
|
} |
|
|
|
th_tg_filter_params = [] |
|
|
|
th_tg_filter_params = [] |
|
|
|
th_tg_structure = {} |
|
|
|
th_tg_structure = {} |
|
|
|
@ -223,12 +229,20 @@ class Contact(models.Model): |
|
|
|
th_tg_filter_params.append(SQ(**p)) |
|
|
|
th_tg_filter_params.append(SQ(**p)) |
|
|
|
th_tg_filter = reduce(operator.or_, th_tg_filter_params) |
|
|
|
th_tg_filter = reduce(operator.or_, th_tg_filter_params) |
|
|
|
|
|
|
|
|
|
|
|
# recomended |
|
|
|
# recommended |
|
|
|
recomended = RelatedSearchQuerySet().models(Exposition, Conference) |
|
|
|
paid_recommend = NewsletterRecommend.objects.filter( |
|
|
|
|
|
|
|
fr__gte=date, |
|
|
|
|
|
|
|
to__lte=date) |
|
|
|
|
|
|
|
recommended = RelatedSearchQuerySet().models(Exposition, Conference)\ |
|
|
|
|
|
|
|
.filter(expohit=True) |
|
|
|
if th_tg_filter: |
|
|
|
if th_tg_filter: |
|
|
|
recomended = recomended.filter(th_tg_filter) |
|
|
|
paid_recommend = list(paid_recommend.filter(theme__in=th_tg_structure.keys())) |
|
|
|
|
|
|
|
recommended = recommended.filter(th_tg_filter) |
|
|
|
try: |
|
|
|
try: |
|
|
|
ctx['recomended'] = recomended[0] |
|
|
|
ctx['recommended'] = choice(paid_recommend) |
|
|
|
|
|
|
|
except: |
|
|
|
|
|
|
|
try: |
|
|
|
|
|
|
|
ctx['recommended'] = recommended[0] |
|
|
|
except: |
|
|
|
except: |
|
|
|
pass |
|
|
|
pass |
|
|
|
|
|
|
|
|
|
|
|
@ -239,6 +253,12 @@ class Contact(models.Model): |
|
|
|
if th_tg_filter is not None: |
|
|
|
if th_tg_filter is not None: |
|
|
|
moscow_sqs = moscow_sqs.filter(th_tg_filter) |
|
|
|
moscow_sqs = moscow_sqs.filter(th_tg_filter) |
|
|
|
ctx['moscow'] = moscow_sqs.order_by('data_begin')[:4] |
|
|
|
ctx['moscow'] = moscow_sqs.order_by('data_begin')[:4] |
|
|
|
|
|
|
|
moscow_filter_url = QueryDict('', mutable=True) |
|
|
|
|
|
|
|
moscow_filter_url.setlist('theme', th_tg_structure.keys()) |
|
|
|
|
|
|
|
moscow_filter_url.setlist('tag', list(chain(th_tg_structure.values()))) |
|
|
|
|
|
|
|
moscow_filter_url['city'] = settings.MOSCOW_PK |
|
|
|
|
|
|
|
moscow_filter_url['date_from'] = date.strftime('%d.%m.%Y') |
|
|
|
|
|
|
|
ctx['moscow_filter_url'] = moscow_filter_url.urlencode() |
|
|
|
|
|
|
|
|
|
|
|
# russia |
|
|
|
# russia |
|
|
|
if self.russia: |
|
|
|
if self.russia: |
|
|
|
@ -252,7 +272,12 @@ class Contact(models.Model): |
|
|
|
if th_tg_filter is not None: |
|
|
|
if th_tg_filter is not None: |
|
|
|
russia_sqs = russia_sqs.filter(th_tg_filter) |
|
|
|
russia_sqs = russia_sqs.filter(th_tg_filter) |
|
|
|
ctx['russia'] = russia_sqs.order_by('data_begin')[:3] |
|
|
|
ctx['russia'] = russia_sqs.order_by('data_begin')[:3] |
|
|
|
|
|
|
|
russia_filter_url = QueryDict('', mutable=True) |
|
|
|
|
|
|
|
russia_filter_url.setlist('theme', th_tg_structure.keys()) |
|
|
|
|
|
|
|
russia_filter_url.setlist('tag', list(chain(th_tg_structure.values()))) |
|
|
|
|
|
|
|
russia_filter_url['country'] = settings.RUSSIA_PK |
|
|
|
|
|
|
|
russia_filter_url['date_from'] = r_date.strftime('%d.%m.%Y') |
|
|
|
|
|
|
|
ctx['russia_filter_url'] = russia_filter_url.urlencode() |
|
|
|
|
|
|
|
|
|
|
|
# foreign |
|
|
|
# foreign |
|
|
|
if self.foreign: |
|
|
|
if self.foreign: |
|
|
|
@ -262,6 +287,12 @@ class Contact(models.Model): |
|
|
|
if th_tg_filter is not None: |
|
|
|
if th_tg_filter is not None: |
|
|
|
foreign_sqs = foreign_sqs.filter(th_tg_filter) |
|
|
|
foreign_sqs = foreign_sqs.filter(th_tg_filter) |
|
|
|
ctx['foreign'] = foreign_sqs.order_by('data_begin')[:4] |
|
|
|
ctx['foreign'] = foreign_sqs.order_by('data_begin')[:4] |
|
|
|
|
|
|
|
foreign_filter_url = QueryDict('', mutable=True) |
|
|
|
|
|
|
|
foreign_filter_url.setlist('theme', th_tg_structure.keys()) |
|
|
|
|
|
|
|
foreign_filter_url.setlist('tag', list(chain(th_tg_structure.values()))) |
|
|
|
|
|
|
|
foreign_filter_url.setlist('country', f_countries) |
|
|
|
|
|
|
|
foreign_filter_url['date_from'] = date.strftime('%d.%m.%Y') |
|
|
|
|
|
|
|
ctx['foreign_filter_url'] = foreign_filter_url.urlencode() |
|
|
|
|
|
|
|
|
|
|
|
# news |
|
|
|
# news |
|
|
|
if self.content_news: |
|
|
|
if self.content_news: |
|
|
|
|