import logging from django.contrib import messages from django.core.urlresolvers import reverse from django.http import HttpResponseRedirect from django.template.response import TemplateResponse from django.views.generic import TemplateView, View from django.utils.decorators import method_decorator from django.contrib.auth.decorators import login_required from registration.models import Member from .forms import MembershipForm, PaymentForm logger = logging.getLogger(__name__) @method_decorator(login_required, name='dispatch') class DashboardView(View): def get(self, request): return TemplateResponse(request, 'dashboard.html') @method_decorator(login_required, name='dispatch') class NewMembershipView(TemplateView): template_name = 'membership_form.html' def get(self, request, member_id): membership_form = MembershipForm(initial=dict(member=member_id)) payment_form = PaymentForm() return self.render_to_response(dict(membership_form=membership_form, payment_form=payment_form)) def post(self, request, member_id): membership_form = MembershipForm(request.POST, initial=dict(member=member_id)) payment_form = PaymentForm(request.POST) member = Member.objects.get(id=member_id) if membership_form.is_valid() and payment_form.is_valid(): new_payment = payment_form.save() new_membership = membership_form.save() new_membership.payment = new_payment new_membership.save() messages.add_message(request, messages.SUCCESS, 'Successfully created our newest member, {first} {last}' .format(first=member.first_name, last=member.last_name)) return HttpResponseRedirect(reverse('member_edit', kwargs=dict(member_id=member_id))) return self.render_to_response(dict(membership_form=membership_form, payment_form=payment_form))