You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

103 lines
3.3 KiB

# -*- coding: utf-8 -*-
from django.views.generic import TemplateView, CreateView, ListView, UpdateView, DetailView, FormView
from django.views.generic.list import MultipleObjectMixin
from django.conf import settings
from django.http import HttpResponseRedirect
from django.shortcuts import get_object_or_404
from django.core.urlresolvers import reverse
from emencia.django.newsletter.models import Contact, ContactSettings, MailingList, Newsletter
from emencia.django.newsletter.admin_forms import ContactSettingsForm, MailingListForm, NewsletterForm
from ..forms import ContactFilterForm
from functions.admin_views import paginate_results
class ContactList(FormView):
paginate_by = settings.ADMIN_PAGINATION
model = Contact
template_name = 'admin/newsletters/contact_list.html'
form_class = ContactFilterForm
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)
if form.is_valid():
return self.form_valid(form)
else:
return self.form_invalid(form)
else:
return super(ContactList, self).get(request, *args, **kwargs)
def form_valid(self, form):
"""
filtering queryset and return paginated results
"""
qs = form.filter()
result = paginate_results(qs, page=self.request.GET.get('page'))
context = self.get_context_data(form=form)
context.update({'object_list': result})
return self.render_to_response(context)
def get_context_data(self, **kwargs):
context = super(ContactList, self).get_context_data(**kwargs)
qs = self.model.objects.all()
result = paginate_results(qs, page=self.request.GET.get('page'))
context['object_list'] = result
return context
class UpdateContact(UpdateView):
model = ContactSettings
form_class = ContactSettingsForm
template_name = 'admin/newsletters/contact.html'
success_url = '/admin/newsletters/contact/all/'
def get_initial(self):
obj = self.object.contact
data = self.initial.copy()
data.update({'first_name': obj.first_name, 'subscriber': obj.subscriber,
'valid': obj.valid, 'tester': obj.tester})
return data
class MailingListView(ListView):
paginate_by = settings.ADMIN_PAGINATION
model = MailingList
template_name = 'admin/newsletters/mailing_list.html'
class UpdateMailingList(UpdateView):
model = MailingList
form_class = MailingListForm
template_name = 'admin/newsletters/mailing_list_object.html'
success_url = '/admin/newsletters/mailinglist/all/'
class CreateMailingList(CreateView):
model = MailingList
form_class = MailingListForm
template_name = 'admin/newsletters/mailing_list_object.html'
success_url = '/admin/newsletters/mailinglist/all/'
class NewsletterCreate(CreateView):
model = Newsletter
form_class = NewsletterForm
template_name = 'admin/newsletters/newsletter_object.html'
success_url = '/admin/newsletters/newsletters/all/'