newsletter history

remotes/origin/1203
Ivan Kovalkovskyi 10 years ago
parent 1b6020132e
commit 8d17d83d57
  1. 3
      emencia/django/newsletter/admin_urls.py
  2. 10
      emencia/django/newsletter/models.py
  3. 21
      emencia/django/newsletter/views/admin_views.py
  4. 57
      templates/admin/newsletters/newsletter_history.html
  5. 2
      templates/admin/newsletters/newsletter_list.html

@ -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<pk>\d+)/edit/', NewsletterUpdate.as_view(), name='newsletters_newsletters_update'),
url(r'^newsletters/(?P<pk>\d+)/history/', NewsletterHistory.as_view(), name='newsletters_newsletters_history'),
url(r'^newsletters/(?P<pk>\d+)/test/',
'emencia.django.newsletter.views.admin_views.send_test_newsletter',
name='newsletters_newsletters_send_test'),

@ -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 +=": <a href='%s'>%s</a>"% (self.link.url, self.link.url)
return verbose
def __unicode__(self):
return '%s : %s : %s' % (self.newsletter.__unicode__(),
self.contact.__unicode__(),

@ -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

@ -0,0 +1,57 @@
{% extends 'admin/base.html' %}
{% load staticfiles %}
{% block body %}
<div class="box span10">
<div class="box-header well">
<h2><i class="icon-arrow-down"></i>История для {{ newsletter.title }}</h2>
</div>
<div class="box-content">
<form id="id_form" class="form-inline">
<div class="form-group">
<select class="form-control" name="filter" id="filter">
<option>Фильтровать</option>
{% for id, name in choices%}
<option class="opt" value="{{ id }}">{{ name }}</option>
{% endfor %}
</select>
</div>
</form>
<table class="table table-hover table table-bordered table-striped">
<colgroup>
<col width="33%">
<col width="33%">
<col width="33%">
</colgroup>
<thead>
<tr>
<th>Дата</th>
<th>Контакт</th>
<th>Статус</th>
</tr>
</thead>
<tbody>
{% for item in object_list %}
<tr>
<td>{{ item.creation_date|date:"Y-m-d H:i:s" }}</td>
<td>{{ item.contact.email }}</td>
<td>{{ item.get_verbose_status|safe }}</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
{# pagination #}
{% include 'admin/includes/admin_pagination.html' with page_obj=object_list %}
</div>
<script>
$(document).ready(function(){
$("#filter").on('change', function(event){
console.log("click");
$("#id_form").submit();
})
})
</script>
{% endblock %}

@ -31,7 +31,7 @@
<td>{{ item.sending_date|date:"Y-m-d H:i" }}</td>
<td><a href="{% url 'newsletters_newsletters_send_test' item.id %}">тест</a> </td>
<td><a href="{% url 'newsletters_newsletters_update' item.id %}">Изменить</a> </td>
<td><a href="#">История</a> </td>
<td><a href="{% url 'newsletters_newsletters_history' item.id %}">История</a> </td>
<td>{% if item.status == item.SENT or item.status == item.CANCELED %}<a href="#">Статистика</a>{% endif %}</td>
</tr>
{% endfor %}

Loading…
Cancel
Save