72 lines
2.6 KiB
Python
72 lines
2.6 KiB
Python
# -*- coding: utf-8 -*-
|
|
from __future__ import absolute_import, unicode_literals
|
|
|
|
from django.core.urlresolvers import reverse
|
|
from django.views.generic import DetailView, ListView, RedirectView, UpdateView
|
|
|
|
from django.contrib.auth.mixins import LoginRequiredMixin
|
|
|
|
from .models import User
|
|
from .models import Blurb
|
|
from .models import Membership
|
|
|
|
from .forms import BlurbForm, MembershipJoinForm
|
|
|
|
class UserDetailView(LoginRequiredMixin, DetailView):
|
|
model = User
|
|
# These next two lines tell the view to index lookups by username
|
|
slug_field = 'username'
|
|
slug_url_kwarg = 'username'
|
|
|
|
def get_context_data(self, **kwargs):
|
|
# xxx will be available in the template as the related objects
|
|
context = super(UserDetailView, self).get_context_data(**kwargs)
|
|
context['blurb'] = Blurb.objects.filter(user=self.get_object()).first()
|
|
context['membership'] = Membership.objects.filter(user=self.get_object()).first()
|
|
context['membership_form'] = MembershipJoinForm(initial={'amount': 20.00})
|
|
return context
|
|
|
|
class UserRedirectView(LoginRequiredMixin, RedirectView):
|
|
permanent = False
|
|
|
|
def get_redirect_url(self):
|
|
return reverse('users:detail',
|
|
kwargs={'username': self.request.user.username})
|
|
|
|
|
|
class UserUpdateView(LoginRequiredMixin, UpdateView):
|
|
fields = ['name', 'image', ]
|
|
model = User
|
|
|
|
# send the user back to their own page after a successful update
|
|
def get_success_url(self):
|
|
return reverse(
|
|
'users:detail',
|
|
kwargs={'username': self.request.user.username})
|
|
|
|
def get_context_data(self, **kwargs):
|
|
context = super(UserUpdateView, self).get_context_data(**kwargs)
|
|
profile = Blurb.objects.filter(user=self.get_object()).first()
|
|
context['form_blurb'] = BlurbForm(instance=profile)
|
|
return context
|
|
|
|
def get_object(self):
|
|
# Only get the User record for the user making the request
|
|
return User.objects.get(username=self.request.user.username)
|
|
|
|
def form_valid(self, form):
|
|
profile = Blurb.objects.filter(user=self.get_object()).first()
|
|
form_blurb = BlurbForm(self.request.POST, instance=profile)
|
|
if form_blurb.is_valid():
|
|
blurb_model = form_blurb.save(commit=False)
|
|
blurb_model.user = self.request.user
|
|
blurb_model.save()
|
|
|
|
return super(UserUpdateView, self).form_valid(form)
|
|
|
|
class UserListView(LoginRequiredMixin, ListView):
|
|
model = User
|
|
# These next two lines tell the view to index lookups by username
|
|
slug_field = 'username'
|
|
slug_url_kwarg = 'username'
|