diff --git a/emencia/django/newsletter/admin_urls.py b/emencia/django/newsletter/admin_urls.py index eeaa6f2b..90afd4d5 100644 --- a/emencia/django/newsletter/admin_urls.py +++ b/emencia/django/newsletter/admin_urls.py @@ -2,12 +2,13 @@ from django.conf.urls import url from django.conf.urls import patterns from emencia.django.newsletter.views.admin_views import ContactList, UpdateContact, MailingListView, UpdateMailingList,\ CreateMailingList, NewsletterListView, NewsletterCreate, ExportContacts, DeleteContact, NewsletterUpdate, \ - DeleteMailingList, ImportContacts + DeleteMailingList, ImportContacts, NewsletterHistory urlpatterns = patterns('', url(r'^newsletters/all/$', NewsletterListView.as_view(), name='newsletters_newsletters_list'), url(r'^newsletters/(?P\d+)/edit/', NewsletterUpdate.as_view(), name='newsletters_newsletters_update'), + url(r'^newsletters/(?P\d+)/history/', NewsletterHistory.as_view(), name='newsletters_newsletters_history'), url(r'^newsletters/(?P\d+)/test/', 'emencia.django.newsletter.views.admin_views.send_test_newsletter', name='newsletters_newsletters_send_test'), diff --git a/emencia/django/newsletter/models.py b/emencia/django/newsletter/models.py index 48071e40..8778d036 100644 --- a/emencia/django/newsletter/models.py +++ b/emencia/django/newsletter/models.py @@ -471,6 +471,16 @@ class ContactMailingStatus(models.Model): creation_date = models.DateTimeField(_('creation date'), auto_now_add=True) + def get_verbose_status(self): + verbose = '' + for s in self.STATUS_CHOICES: + if s[0] == self.status: + verbose = unicode(s[1]) + break + if self.status == ContactMailingStatus.LINK_OPENED: + verbose +=": %s"% (self.link.url, self.link.url) + return verbose + def __unicode__(self): return '%s : %s : %s' % (self.newsletter.__unicode__(), self.contact.__unicode__(), diff --git a/emencia/django/newsletter/views/admin_views.py b/emencia/django/newsletter/views/admin_views.py index cd62387e..d31d0f09 100644 --- a/emencia/django/newsletter/views/admin_views.py +++ b/emencia/django/newsletter/views/admin_views.py @@ -8,7 +8,7 @@ from django.http import HttpResponseRedirect, HttpResponse 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.models import Contact, ContactSettings, MailingList, Newsletter, Attachment, ContactMailingStatus from emencia.django.newsletter.admin_forms import ContactSettingsForm, MailingListForm, NewsletterForm, AttachmentForm from emencia.django.newsletter.mailer import Mailer from ..forms import ContactFilterForm, ContactImportForm @@ -222,6 +222,25 @@ def send_test_newsletter(request, pk): return HttpResponseRedirect(redirect) +class NewsletterHistory(ListView): + model = ContactMailingStatus + template_name = 'admin/newsletters/newsletter_history.html' + paginate_by = 50 + + def get_queryset(self): + self.newsletter = get_object_or_404(Newsletter, pk=self.kwargs['pk']) + qs = self.newsletter.contactmailingstatus_set.select_related('contact', 'link').all() + if self.request.GET.get('filter'): + qs = qs.filter(status=self.request.GET['filter']) + return qs + + def get_context_data(self, **kwargs): + context = super(NewsletterHistory, self).get_context_data(**kwargs) + context['newsletter'] = self.newsletter + context['choices'] = ContactMailingStatus.STATUS_CHOICES + return context + + class ExportContacts(FormView): form_class = ContactFilterForm diff --git a/templates/admin/newsletters/newsletter_history.html b/templates/admin/newsletters/newsletter_history.html new file mode 100644 index 00000000..f024ef90 --- /dev/null +++ b/templates/admin/newsletters/newsletter_history.html @@ -0,0 +1,57 @@ +{% extends 'admin/base.html' %} +{% load staticfiles %} +{% block body %} + +
+
+

История для {{ newsletter.title }}

+
+
+
+
+ +
+
+ + + + + + + + + + + + + + + {% for item in object_list %} + + + + + + {% endfor %} + +
ДатаКонтактСтатус
{{ item.creation_date|date:"Y-m-d H:i:s" }}{{ item.contact.email }}{{ item.get_verbose_status|safe }}
+ +
+ {# pagination #} + {% include 'admin/includes/admin_pagination.html' with page_obj=object_list %} +
+ +{% endblock %} + diff --git a/templates/admin/newsletters/newsletter_list.html b/templates/admin/newsletters/newsletter_list.html index 6f7d712a..f06a6dd3 100644 --- a/templates/admin/newsletters/newsletter_list.html +++ b/templates/admin/newsletters/newsletter_list.html @@ -31,7 +31,7 @@ {{ item.sending_date|date:"Y-m-d H:i" }} тест Изменить - История + История {% if item.status == item.SENT or item.status == item.CANCELED %}Статистика{% endif %} {% endfor %}