*Code wurde PEP-8 gerecht formatiert * Kleine Fehler die der PyCharm Inspector beanstandet wurden korrigiert
111 lines
3.9 KiB
Python
111 lines
3.9 KiB
Python
from django import http
|
|
from django.conf import settings
|
|
from django.contrib import auth, messages
|
|
from django.core.urlresolvers import reverse
|
|
from django.utils.translation import ugettext as _
|
|
from django.views import generic
|
|
|
|
from mahjong_ranking.models import KyuDanRanking, LadderRanking, LadderSeason
|
|
from utils import mixins
|
|
|
|
from . import forms, models
|
|
|
|
|
|
class ActivateRegistration(generic.DetailView):
|
|
"""
|
|
Activates the Registration of an User and logs him in
|
|
"""
|
|
template_name = 'membership/activation_error.html'
|
|
|
|
def get(self, request, **kwargs):
|
|
activation_key = self.kwargs.get('activation_key')
|
|
user = self.get_user(activation_key)
|
|
print 'User: ', user
|
|
if user:
|
|
return self.login(user)
|
|
else:
|
|
self.object = user
|
|
context = self.get_context_data()
|
|
return self.render_to_response(context)
|
|
|
|
def get_context_data(self, **kwargs):
|
|
context = generic.DetailView.get_context_data(self, **kwargs)
|
|
context.update({
|
|
'expiration_days': settings.ACCOUNT_ACTIVATION_DAYS,
|
|
'activation_key': self.kwargs.get('activation_key'),
|
|
|
|
})
|
|
return context
|
|
|
|
def get_user(self, activation_key):
|
|
user = models.ActivationRequest.objects.activate(activation_key)
|
|
if user:
|
|
return user
|
|
elif self.request.user.is_authenticated():
|
|
return self.request.user
|
|
else:
|
|
return None
|
|
|
|
def login(self, user):
|
|
backend = auth.get_backends()[0]
|
|
user.backend = "%s.%s" % (backend.__module__, backend.__class__.__name__) # @IgnorePep8
|
|
auth.login(self.request, user)
|
|
messages.success(self.request, _('Activation successful. \
|
|
You can now login anytime with you username and password.'))
|
|
redirect_url = reverse('membership-edit', args=(user.username,))
|
|
return http.HttpResponseRedirect(redirect_url) # @IgnorePep8
|
|
|
|
|
|
class ActivationSent(generic.TemplateView):
|
|
template_name = 'membership/activation_sent.html'
|
|
|
|
|
|
class EditMembership(mixins.LoginRequiredMixin, generic.UpdateView):
|
|
form_class = forms.MembershipForm
|
|
|
|
def get_object(self, queryset=None):
|
|
if self.request.user.has_perm('membership.change_membership'):
|
|
return models.Membership.objects.get(
|
|
username=self.kwargs['username'])
|
|
else:
|
|
return models.Membership.objects.get(user=self.request.user)
|
|
|
|
def form_valid(self, form):
|
|
messages.success(self.request, _('User Profile changed successfully'))
|
|
return generic.UpdateView.form_valid(self, form)
|
|
|
|
|
|
class MembershipDetail(mixins.LoginRequiredMixin, generic.DetailView):
|
|
model = models.Membership
|
|
|
|
def get_object(self, queryset=None):
|
|
if self.kwargs.get('username'):
|
|
return models.Membership.objects.get_or_create(username=self.kwargs['username'])[0]
|
|
elif self.request.user.is_authenticated():
|
|
return models.Membership.objects.get(user=self.request.user)
|
|
|
|
def get_context_data(self, **kwargs):
|
|
context = generic.DetailView.get_context_data(self, **kwargs)
|
|
try:
|
|
context['kyu_dan_ranking'] = KyuDanRanking.objects.get(
|
|
user_id=self.object.user_id)
|
|
except KyuDanRanking.DoesNotExist:
|
|
context['kyu_dan_ranking'] = None
|
|
try:
|
|
context['ladder_ranking'] = LadderRanking.objects.get(
|
|
user_id=self.object.user_id,
|
|
season=LadderSeason.objects.current())
|
|
except LadderRanking.DoesNotExist:
|
|
context['ladder_ranking'] = LadderRanking(user=self.object.user)
|
|
return context
|
|
|
|
|
|
class RegisterForm(generic.FormView):
|
|
form_class = forms.RegistrationForm
|
|
success_url = '/membership/activation_sent/'
|
|
template_name = 'membership/register_form.html'
|
|
|
|
def form_valid(self, form):
|
|
form.save()
|
|
return generic.FormView.form_valid(self, form)
|