newsletter delete view

remotes/origin/1203
Ivan 10 years ago
parent fafb2da2c9
commit 75d1164d18
  1. 4
      emencia/django/newsletter/admin_urls.py
  2. 95
      emencia/django/newsletter/views/admin_views.py
  3. 2
      templates/admin/newsletters/confirm_delete.html
  4. 3
      templates/admin/newsletters/newsletter_list.html

@ -2,12 +2,14 @@ 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, NewsletterHistory, NewsletterStatistics, NewsletterCloneView,ContactQueryDelete
DeleteMailingList, ImportContacts, NewsletterHistory, NewsletterStatistics, NewsletterCloneView,ContactQueryDelete,\
NewsletterDelete
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+)/delete/$', NewsletterDelete.as_view(), name='newsletters_newsletters_delete'),
url(r'^newsletters/(?P<pk>\d+)/clone/$', NewsletterCloneView.as_view(), name='newsletters_newsletters_clone'),
url(r'^newsletters/(?P<pk>\d+)/history/', NewsletterHistory.as_view(), name='newsletters_newsletters_history'),
url(r'^newsletters/(?P<pk>\d+)/statistics/', NewsletterStatistics.as_view(), name='newsletters_newsletters_stat'),

@ -101,10 +101,34 @@ class UpdateContact(UpdateView):
data.update({'first_name': obj.first_name, 'subscriber': obj.subscriber,
'valid': obj.valid, 'tester': obj.tester, 'city':city})
return data
class ExportContacts(FormView):
form_class = ContactFilterForm
def get(self, request=None, *args, **kwargs):
form = self.form_class(request.GET)
if form.is_valid():
qs, title = form.filter()
if qs.count():
columns = ('email', 'first_name')
return ExcelResponse(qs, title, columns,'contacts')
return HttpResponseRedirect(self.request.META['HTTP_REFERER'])
class ImportContacts(FormView):
form_class = ContactImportForm
success_url = reverse_lazy("newsletters_contact_list")
template_name = 'admin/import templates/import_contacts.html'
def form_valid(self, form):
form.save()
return HttpResponseRedirect(self.get_success_url())
class MailingListView(ListView):
paginate_by = settings.ADMIN_PAGINATION
model = MailingList
@ -239,24 +263,6 @@ 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 NewsletterStatistics(DetailView):
model = Newsletter
template_name = 'admin/newsletters/newsletter_stat.html'
@ -283,30 +289,6 @@ class NewsletterStatistics(DetailView):
return context
class ExportContacts(FormView):
form_class = ContactFilterForm
def get(self, request=None, *args, **kwargs):
form = self.form_class(request.GET)
if form.is_valid():
qs, title = form.filter()
if qs.count():
columns = ('email', 'first_name')
return ExcelResponse(qs, title, columns,'contacts')
return HttpResponseRedirect(self.request.META['HTTP_REFERER'])
class ImportContacts(FormView):
form_class = ContactImportForm
success_url = reverse_lazy("newsletters_contact_list")
template_name = 'admin/import templates/import_contacts.html'
def form_valid(self, form):
form.save()
return HttpResponseRedirect(self.get_success_url())
class NewsletterCloneView(RedirectView):
url = reverse_lazy("newsletters_newsletters_list")
@ -316,4 +298,29 @@ class NewsletterCloneView(RedirectView):
return HttpResponseRedirect(self.url)
def post(self, request, *args, **kwargs):
return self.get(request, *args, **kwargs)
return self.get(request, *args, **kwargs)
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 NewsletterDelete(DeleteView):
model = Newsletter
template_name = 'admin/newsletters/confirm_delete.html'
success_url = reverse_lazy('newsletters_newsletters_list')

@ -3,7 +3,7 @@
{% block body %}
<form action="" method="post">{% csrf_token %}
<div class="controls">
<p>Вы точно хотите удалить "{{ object.contact.name }}{{ object.name }}" ?</p>
<p>Вы точно хотите удалить "{{ object.contact.name }}{{ object.name }}{{ object.title }}" ?</p>
<input class="btn btn-large btn-danger delete" type="submit" value="Да" />
<a class="btn btn-large btn-primary" href = {% url 'newsletters_contact_list' %}>Нет</a>
</div>

@ -21,6 +21,7 @@
<th>&nbsp;</th>
<th>&nbsp;</th>
<th>&nbsp;</th>
<th>&nbsp;</th>
</tr>
</thead>
<tbody>
@ -33,8 +34,10 @@
<td><a href="{% url 'newsletters_newsletters_send_test' item.id %}">Тест</a> </td>
<td><a href="{% url 'newsletters_newsletters_clone' item.id %}">Clone</a> </td>
<td><a href="{% url 'newsletters_newsletters_update' item.id %}">Изменить</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="{% url 'newsletters_newsletters_stat' item.id %}">Статистика</a>{% endif %}</td>
<td><a class="btn btn-danger btn-mini" href="{% url 'newsletters_newsletters_delete' item.id %}">x</a> </td>
</tr>
{% endfor %}
</tbody>

Loading…
Cancel
Save