Sending block complete

remotes/origin/1203
Nazar Kotjuk 10 years ago
parent c44ecb244b
commit 76b2610b80
  1. 7
      article/admin_urls.py
  2. 20
      emencia/django/newsletter/mailer.py
  3. 16
      emencia/django/newsletter/models.py
  4. 9
      emencia/django/newsletter/views/admin_views.py
  5. 15
      emencia/django/newsletter/views/tracking.py
  6. 4
      templates/admin/includes/admin_nav.html

@ -3,18 +3,11 @@ from django.conf.urls import patterns, url
from admin import BlogList, BlogView, NewsList, NewsView, ArticleDeleteView
urlpatterns = patterns('article.admin',
#url(r'^add/$', 'article_add'),
#url(r'^delete/(?P<url>.*)/$', 'article_delete'),
#url(r'^change/(.*)/$', 'article_change'),
#url(r'^copy/(.*)/$', 'article_copy'),
#url(r'^all/$', 'article_all'),
url(r'^blog/all/$', BlogList.as_view()),
url(r'^blog/$', BlogView.as_view()),
url(r'^delete/(?P<slug>.*)/$', ArticleDeleteView.as_view()),
url(r'^news/all/$', NewsList.as_view()),
url(r'^news/$', NewsView.as_view()),
url(r'^blog/(?P<slug>.*)/$', BlogView.as_view()),
url(r'^news/(?P<slug>.*)/$', NewsView.as_view()),
)

@ -184,7 +184,7 @@ class NewsLetterSender(object):
return attachments
def build_announce_attachments(self, context):
# todo: move hardcoded prefixes to setting
# todo: move hardcoded prefixes to setting (uses in templates)
events = context['events']
news = context.get('news')
blogs = context.get('blogs')
@ -236,8 +236,6 @@ class NewsLetterSender(object):
return message_attachment
def build_title_content(self, contact):
"""Generate the email title for a contact"""
context = Context({'contact': contact,
@ -310,10 +308,18 @@ class NewsLetterSender(object):
if self.test:
return self.newsletter.test_contacts.all()
already_sent = ContactMailingStatus.objects.filter(status=ContactMailingStatus.SENT,
newsletter=self.newsletter).values_list('contact__id', flat=True)
expedition_list = self.newsletter.mailing_list.expedition_set().exclude(id__in=already_sent)
return expedition_list
if self.announce:
already_sent = ContactMailingStatus.objects\
.filter(status__in=(ContactMailingStatus.SENT, ContactMailingStatus.ANNOUNCE_NO_DATA),
newsletter=self.newsletter)\
.values_list('contact__id', flat=True)
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)
expedition_list = self.newsletter.mailing_list.expedition_set().exclude(id__in=already_sent)
return expedition_list
def update_contact_status(self, contact, exception, send):
if not send:

@ -171,7 +171,7 @@ class Contact(models.Model):
return None
if country:
events = events.filter(country=country)
events = list(events[:3])
events = list(events[:5])
if events:
context = {'themes': themes, 'place': country, 'events': events}
@ -179,10 +179,12 @@ class Contact(models.Model):
# no events for announce
return None
news = list(Article.objects.news().filter(publish_date__gt=datetime.now()-timedelta(days=7))[:3])
news = list(Article.objects.news()
.filter(publish_date__gt=datetime.now()-timedelta(days=30), theme__in=theme_ids)[:3])
if news:
context['news'] = news
blogs = list(Article.objects.blogs().filter(publish_date__gt=datetime.now()-timedelta(days=7))[:3])
blogs = list(Article.objects.blogs()[:1])
if blogs:
context['blogs'] = blogs
return context
@ -275,8 +277,12 @@ class MailingList(models.Model):
def expedition_set(self):
unsubscribers_id = self.unsubscribers.values_list('id', flat=True)
return self.subscribers.valid_subscribers().exclude(
id__in=unsubscribers_id)
if not self.announce:
return self.subscribers.valid_subscribers().exclude(
id__in=unsubscribers_id)
else:
return self.subscribers.valid_subscribers().exclude(
id__in=unsubscribers_id).filter(contactsettings__theme__isnull=False)
def __unicode__(self):
return self.name

@ -1,15 +1,14 @@
# -*- coding: utf-8 -*-
from django.views.generic import TemplateView, CreateView, ListView, UpdateView, DeleteView, FormView
from django.views.generic import CreateView, ListView, UpdateView, DeleteView, FormView
from django.conf import settings
from django.utils.translation import ugettext_lazy as _
from django.forms.formsets import BaseFormSet, formset_factory
from django.forms.formsets import formset_factory
from django.http import HttpResponseRedirect, HttpResponse
from django.core.urlresolvers import reverse_lazy
from django.shortcuts import get_object_or_404
from django.core.urlresolvers import reverse_lazy
from HTMLParser import HTMLParseError
from emencia.django.newsletter.models import Contact, ContactSettings, MailingList, Newsletter, Attachment
from emencia.django.newsletter.admin_forms import ContactSettingsForm, MailingListForm, NewsletterForm, AttachmentForm
from django.core.urlresolvers import reverse_lazy
from emencia.django.newsletter.mailer import Mailer
from ..forms import ContactFilterForm
from ..utils.excel import ExcelResponse
@ -24,14 +23,12 @@ class ContactList(FormView):
queryset = Contact.objects.all()
def get_form(self, form_class):
if self.request.GET:
return form_class(self.request.GET)
else:
return form_class(**self.get_form_kwargs())
def get(self, request, *args, **kwargs):
if request.GET:
form_class = self.get_form_class()
form = self.get_form(form_class)

@ -3,11 +3,8 @@ import base64
from urllib import urlencode
from urlparse import urlparse
from urlparse import urlunparse
# For Python < 2.6
try:
from urlparse import parse_qs
except ImportError:
from cgi import parse_qs
from urlparse import parse_qs
from django.http import HttpResponse
from django.http import HttpResponseRedirect
@ -51,11 +48,11 @@ def view_newsletter_tracking_link(request, slug, uidb36, token, link_id):
url_parts = urlparse(link.url)
query_dict = parse_qs(url_parts.query)
query_dict.update({'utm_source': 'newsletter_%s' % newsletter.pk,
'utm_medium': 'mail',
'utm_campaign': smart_str(newsletter.title)})
query_dict.update({'utm_source': 'Expomap',
'utm_medium': 'email',
'utm_campaign': str(newsletter.sending_date.date())})
url = urlunparse((url_parts.scheme, url_parts.netloc, url_parts.path,
url_parts.params, urlencode(query_dict), url_parts.fragment))
url_parts.params, urlencode(query_dict, True), url_parts.fragment))
return HttpResponseRedirect(url)

@ -114,8 +114,8 @@
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><i class=" icon-circle-arrow-up"></i> Рассылка<b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="/admin/newsletters/contact/all/">Подписчики</a></li>
<li><a href="/admin/newsletters/newsletters/all/">Списки рассылок</a></li>
<li><a href="/admin/newsletters/mailinglist/all/">Рассылки</a></li>
<li><a href="/admin/newsletters/mailinglist/all/">Списки рассылок</a></li>
<li><a href="/admin/newsletters/newsletters/all/">Рассылки</a></li>
<li><a href="#">Статистика</a></li>
</ul>
</li>

Loading…
Cancel
Save