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.
57 lines
2.0 KiB
57 lines
2.0 KiB
# -*- coding: utf-8 -*-
|
|
from django.http import HttpResponseRedirect
|
|
from django.views.generic import TemplateView, CreateView, ListView, UpdateView, DetailView
|
|
from django.views.generic.edit import FormMixin
|
|
from django.forms.util import ErrorList
|
|
from django.conf import settings
|
|
from django.core.urlresolvers import reverse
|
|
from expobanner.models import Banner, Paid
|
|
from expobanner.forms import ClientStatForm
|
|
|
|
|
|
|
|
class BannerStat(FormMixin, DetailView):
|
|
model = Banner
|
|
form_class = ClientStatForm
|
|
template_name = 'client/expobanners/banner_stat.html'
|
|
|
|
def get_success_url(self):
|
|
return reverse('banner_stat_client', kwargs={'pk': self.object.pk})
|
|
|
|
def get_context_data(self, **kwargs):
|
|
context = super(BannerStat, self).get_context_data(**kwargs)
|
|
obj = self.object
|
|
cookie_name = obj.get_cookie_name()
|
|
cookie = self.request.session.get(cookie_name)
|
|
if not cookie:
|
|
form = context.get('form')
|
|
# form in context if form invalid called
|
|
if not form:
|
|
context['form'] = self.get_form(self.form_class)
|
|
|
|
return context
|
|
|
|
def post(self, request, *args, **kwargs):
|
|
self.object = self.get_object()
|
|
form = self.get_form(self.form_class)
|
|
if form.is_valid():
|
|
return self.form_valid(form)
|
|
else:
|
|
return self.form_invalid(form)
|
|
|
|
def form_valid(self, form):
|
|
obj = self.object
|
|
success = form.check_pass(obj)
|
|
if success:
|
|
self.request.session[obj.get_cookie_name()] = 1
|
|
return HttpResponseRedirect(self.get_success_url())
|
|
else:
|
|
form.errors['stat_pswd'] = ErrorList([u'Неправильный пароль'])
|
|
return self.form_invalid(form)
|
|
|
|
class PaidStat(BannerStat):
|
|
model = Paid
|
|
template_name = 'client/expobanners/paid_stat.html'
|
|
|
|
def get_success_url(self):
|
|
return reverse('paid_stat_client', kwargs={'pk': self.object.pk}) |