|
|
|
@ -1,8 +1,13 @@ |
|
|
|
# -*- coding: utf-8 -*- |
|
|
|
# -*- coding: utf-8 -*- |
|
|
|
from django.views.generic import TemplateView, CreateView, ListView, UpdateView, DeleteView, 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 |
|
|
|
|
|
|
|
from django.forms.formsets import BaseFormSet, formset_factory |
|
|
|
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 emencia.django.newsletter.models import Contact, ContactSettings, MailingList, Newsletter, Attachment |
|
|
|
|
|
|
|
from emencia.django.newsletter.admin_forms import ContactSettingsForm, MailingListForm, NewsletterForm, AttachmentForm |
|
|
|
from django.core.urlresolvers import reverse_lazy |
|
|
|
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 |
|
|
|
@ -97,6 +102,8 @@ class CreateMailingList(CreateView): |
|
|
|
template_name = 'admin/newsletters/mailing_list_object.html' |
|
|
|
template_name = 'admin/newsletters/mailing_list_object.html' |
|
|
|
success_url = '/admin/newsletters/mailinglist/all/' |
|
|
|
success_url = '/admin/newsletters/mailinglist/all/' |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
from django.forms.models import modelformset_factory |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class NewsletterCreate(CreateView): |
|
|
|
class NewsletterCreate(CreateView): |
|
|
|
model = Newsletter |
|
|
|
model = Newsletter |
|
|
|
@ -104,6 +111,76 @@ class NewsletterCreate(CreateView): |
|
|
|
template_name = 'admin/newsletters/newsletter_object.html' |
|
|
|
template_name = 'admin/newsletters/newsletter_object.html' |
|
|
|
success_url = '/admin/newsletters/newsletters/all/' |
|
|
|
success_url = '/admin/newsletters/newsletters/all/' |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def get_formset(self): |
|
|
|
|
|
|
|
#if self.request.POST: |
|
|
|
|
|
|
|
# AttachmentFormSet = formset_factory(Attachment) |
|
|
|
|
|
|
|
#else: |
|
|
|
|
|
|
|
AttachmentFormSet = formset_factory(AttachmentForm) |
|
|
|
|
|
|
|
if self.request.POST: |
|
|
|
|
|
|
|
return AttachmentFormSet(self.request.POST, self.request.FILES) |
|
|
|
|
|
|
|
else: |
|
|
|
|
|
|
|
return AttachmentFormSet() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def get_context_data(self, **kwargs): |
|
|
|
|
|
|
|
context = super(NewsletterCreate, self).get_context_data(**kwargs) |
|
|
|
|
|
|
|
context['attachment_formset'] = self.get_formset() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return context |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def form_valid(self, form): |
|
|
|
|
|
|
|
self.object = form.save() |
|
|
|
|
|
|
|
formset = self.get_formset() |
|
|
|
|
|
|
|
if formset.is_valid(): |
|
|
|
|
|
|
|
for item in formset.forms: |
|
|
|
|
|
|
|
if item.is_valid() and item.has_changed(): |
|
|
|
|
|
|
|
instance = item.save(commit=False) |
|
|
|
|
|
|
|
instance.newsletter = self.object |
|
|
|
|
|
|
|
instance.save() |
|
|
|
|
|
|
|
return HttpResponseRedirect(self.success_url) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class NewsletterUpdate(UpdateView): |
|
|
|
|
|
|
|
model = Newsletter |
|
|
|
|
|
|
|
form_class = NewsletterForm |
|
|
|
|
|
|
|
template_name = 'admin/newsletters/newsletter_object.html' |
|
|
|
|
|
|
|
success_url = '/admin/newsletters/newsletters/all/' |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def get_formset(self): |
|
|
|
|
|
|
|
if self.request.POST: |
|
|
|
|
|
|
|
AttachmentFormSet = modelformset_factory(Attachment, form=AttachmentForm, exclude=('newsletter',)) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
else: |
|
|
|
|
|
|
|
AttachmentFormSet = modelformset_factory(Attachment, form=AttachmentForm, exclude=('newsletter',)) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if self.request.POST: |
|
|
|
|
|
|
|
return AttachmentFormSet(self.request.POST, self.request.FILES, queryset=self.object.attachment_set.all()) |
|
|
|
|
|
|
|
else: |
|
|
|
|
|
|
|
return AttachmentFormSet(queryset=self.object.attachment_set.all()) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def get_context_data(self, **kwargs): |
|
|
|
|
|
|
|
context = super(NewsletterUpdate, self).get_context_data(**kwargs) |
|
|
|
|
|
|
|
context['attachment_formset'] = self.get_formset() |
|
|
|
|
|
|
|
return context |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def form_valid(self, form): |
|
|
|
|
|
|
|
self.object = form.save() |
|
|
|
|
|
|
|
formset = self.get_formset() |
|
|
|
|
|
|
|
if formset.is_valid(): |
|
|
|
|
|
|
|
for item in formset.forms: |
|
|
|
|
|
|
|
if item.is_valid() and item.has_changed(): |
|
|
|
|
|
|
|
instance = item.save(commit=False) |
|
|
|
|
|
|
|
instance.newsletter = self.object |
|
|
|
|
|
|
|
instance.save() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return HttpResponseRedirect(self.success_url) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class NewsletterListView(ListView): |
|
|
|
|
|
|
|
paginate_by = settings.ADMIN_PAGINATION |
|
|
|
|
|
|
|
model = Newsletter |
|
|
|
|
|
|
|
template_name = 'admin/newsletters/newsletter_list.html' success_url = '/admin/newsletters/newsletters/all/' |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
from ..utils.excel import ExcelResponse |
|
|
|
from ..utils.excel import ExcelResponse |
|
|
|
|
|
|
|
|
|
|
|
@ -118,4 +195,4 @@ class ExportContacts(FormView): |
|
|
|
if qs.count(): |
|
|
|
if qs.count(): |
|
|
|
columns = ('first_name', 'email') |
|
|
|
columns = ('first_name', 'email') |
|
|
|
return ExcelResponse(qs, title, columns,'contacts') |
|
|
|
return ExcelResponse(qs, title, columns,'contacts') |
|
|
|
return HttpResponseRedirect(self.request.META['HTTP_REFERER']) |
|
|
|
return HttpResponseRedirect(self.request.META['HTTP_REFERER']) |