""" This module defines views related to hosting packages. """ from __future__ import absolute_import, unicode_literals from django.core.urlresolvers import reverse from django.shortcuts import redirect from django.utils.translation import ugettext as _ from django.views.generic.edit import CreateView from django.contrib.auth import get_user_model from django.contrib import messages from braces.views import ( LoginRequiredMixin, StaffuserRequiredMixin, ) from .forms import CreateHostingPackageForm from .models import CustomerHostingPackage class CreateHostingPackage( LoginRequiredMixin, StaffuserRequiredMixin, CreateView ): """ Create a hosting package. """ model = CustomerHostingPackage raise_exception = True template_name_suffix = '_create' form_class = CreateHostingPackageForm def get_form_kwargs(self): kwargs = super(CreateHostingPackage, self).get_form_kwargs() kwargs.update(self.kwargs) return kwargs def _get_customer(self): return get_user_model().objects.get(username=self.kwargs['user']) def get_context_data(self, **kwargs): context = super(CreateHostingPackage, self).get_context_data(**kwargs) context['customer'] = self._get_customer() return context def get_success_url(self): return reverse( 'customer_dashboard', kwargs={'slug': self.kwargs['user']}) def form_valid(self, form): hostingpackage = form.save(commit=False) hostingpackage.customer = self._get_customer() hostingpackage.save() messages.success( self.request, _('Started setup of new hosting package {name}.').format( name=hostingpackage.name) ) return redirect(self.get_success_url())