remotes/origin/1203
Ivan Kovalkovskyi 10 years ago
parent 35ced9f26e
commit 96f3abab07
  1. 3
      emencia/django/newsletter/admin_urls.py
  2. 11
      emencia/django/newsletter/forms.py
  3. 15
      emencia/django/newsletter/views/admin_views.py
  4. 11
      templates/admin/newsletters/confirm_delete.html

@ -3,7 +3,7 @@ from django.conf.urls import include
from django.conf.urls import patterns from django.conf.urls import patterns
from django.http import HttpResponse from django.http import HttpResponse
from emencia.django.newsletter.views.admin_views import ContactList, UpdateContact, MailingListView, UpdateMailingList,\ from emencia.django.newsletter.views.admin_views import ContactList, UpdateContact, MailingListView, UpdateMailingList,\
CreateMailingList, NewsletterCreate, ExportContacts CreateMailingList, NewsletterCreate, ExportContacts, DeleteContact
urlpatterns = patterns('', urlpatterns = patterns('',
@ -16,6 +16,7 @@ urlpatterns = patterns('',
url(r'^mailinglist/', CreateMailingList.as_view(), name='newsletters_mailinglist_create'), url(r'^mailinglist/', CreateMailingList.as_view(), name='newsletters_mailinglist_create'),
url(r'^contact/(?P<pk>\d+)/edit/', UpdateContact.as_view(), name='newsletters_contact_update'), url(r'^contact/(?P<pk>\d+)/edit/', UpdateContact.as_view(), name='newsletters_contact_update'),
url(r'^contact/(?P<pk>\d+)/delete/', DeleteContact.as_view(), name='newsletters_contact_delete'),
url(r'^contact/all/$', ContactList.as_view(), name='newsletters_contact_list'), url(r'^contact/all/$', ContactList.as_view(), name='newsletters_contact_list'),
url(r'^contact/export/$', ExportContacts.as_view(), name='export_contacts'), url(r'^contact/export/$', ExportContacts.as_view(), name='export_contacts'),
) )

@ -5,6 +5,7 @@ from django.utils.translation import ugettext_lazy as _
from emencia.django.newsletter.models import Contact, ContactSettings from emencia.django.newsletter.models import Contact, ContactSettings
from emencia.django.newsletter.models import MailingList from emencia.django.newsletter.models import MailingList
from functions.form_check import translit_with_separator as tr
from theme.models import Theme from theme.models import Theme
from country.models import Country, Area from country.models import Country, Area
@ -95,18 +96,24 @@ class ContactFilterForm(forms.Form):
valid = forms.BooleanField(label="Валидный Email", required=False) valid = forms.BooleanField(label="Валидный Email", required=False)
def filter(self): def filter(self):
qs = Contact.objects.all() title = 'contact list '
qs = Contact.objects.all()
if self.cleaned_data.get('email'): if self.cleaned_data.get('email'):
qs = qs.filter(email__icontains=self.cleaned_data['email']) qs = qs.filter(email__icontains=self.cleaned_data['email'])
if self.cleaned_data.get('theme'): if self.cleaned_data.get('theme'):
qs = qs.filter(contactsettings__theme__id__in=self.cleaned_data['theme']) qs = qs.filter(contactsettings__theme__id__in=self.cleaned_data['theme'])
title += " themes: %s" % ','.join([obj.url for obj in Theme.objects.language().filter(id__in=self.cleaned_data['theme'])])
if self.cleaned_data.get('country'): if self.cleaned_data.get('country'):
qs = qs.filter(contactsettings__country__id__in=self.cleaned_data['country']) qs = qs.filter(contactsettings__country__id__in=self.cleaned_data['country'])
title += " countries: %s" % ','.join([obj.url for obj in Country.objects.language().filter(id__in=self.cleaned_data['country'])])
if self.cleaned_data.get('area'): if self.cleaned_data.get('area'):
qs = qs.filter(contactsettings__area__id__in=self.cleaned_data['area']) qs = qs.filter(contactsettings__area__id__in=self.cleaned_data['area'])
title += " geo area: %s" % ','.join([obj.url for obj in Area.objects.language('en').filter(id__in=self.cleaned_data['area'])])
if self.cleaned_data.get('active'): if self.cleaned_data.get('active'):
title = ' active ' + title
qs = qs.filter(activated=True) qs = qs.filter(activated=True)
if self.cleaned_data.get('valid'): if self.cleaned_data.get('valid'):
title = 'valid e-mail ' + title
qs = qs.filter(valid=True) qs = qs.filter(valid=True)
return qs return qs, title

@ -1,9 +1,9 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from django.views.generic import TemplateView, CreateView, ListView, UpdateView, DetailView, FormView from django.views.generic import TemplateView, CreateView, ListView, UpdateView, DeleteView, FormView
from django.conf import settings from django.conf import settings
from django.http import HttpResponseRedirect, HttpResponse from django.http import HttpResponseRedirect, HttpResponse
from django.shortcuts import get_object_or_404 from django.shortcuts import get_object_or_404
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse_lazy
from emencia.django.newsletter.models import Contact, ContactSettings, MailingList, Newsletter from emencia.django.newsletter.models import Contact, ContactSettings, MailingList, Newsletter
from emencia.django.newsletter.admin_forms import ContactSettingsForm, MailingListForm, NewsletterForm from emencia.django.newsletter.admin_forms import ContactSettingsForm, MailingListForm, NewsletterForm
from ..forms import ContactFilterForm from ..forms import ContactFilterForm
@ -37,7 +37,7 @@ class ContactList(FormView):
return super(ContactList, self).get(request, *args, **kwargs) return super(ContactList, self).get(request, *args, **kwargs)
def form_valid(self, form): def form_valid(self, form):
qs = form.filter() qs, _ = form.filter()
result = paginate_results(qs, page=self.request.GET.get('page')) result = paginate_results(qs, page=self.request.GET.get('page'))
context = self.get_context_data(form=form) context = self.get_context_data(form=form)
context.update({'object_list': result}) context.update({'object_list': result})
@ -51,6 +51,11 @@ class ContactList(FormView):
return context return context
class DeleteContact(DeleteView):
model = ContactSettings
success_url = reverse_lazy('newsletters_contact_list')
template_name = 'admin/newsletters/confirm_delete.html'
class UpdateContact(UpdateView): class UpdateContact(UpdateView):
model = ContactSettings model = ContactSettings
form_class = ContactSettingsForm form_class = ContactSettingsForm
@ -109,8 +114,8 @@ class ExportContacts(FormView):
def get(self, request=None, *args, **kwargs): def get(self, request=None, *args, **kwargs):
form = self.form_class(request.GET) form = self.form_class(request.GET)
if form.is_valid(): if form.is_valid():
qs = form.filter() qs, title = form.filter()
if qs.count(): if qs.count():
columns = ('first_name', 'email') columns = ('first_name', 'email')
return ExcelResponse(qs, 'contact_import', columns,'contacts') return ExcelResponse(qs, title, columns,'contacts')
return HttpResponseRedirect(self.request.META['HTTP_REFERER']) return HttpResponseRedirect(self.request.META['HTTP_REFERER'])

@ -0,0 +1,11 @@
{% extends 'base.html' %}
{% block sidebar %}{% endblock %}
{% block body %}
<form action="" method="post">{% csrf_token %}
<div class="controls">
<p>Вы точно хотите удалить "{{ object.contact.name }}" ?</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>
</form>
{% endblock %}
Loading…
Cancel
Save