|
@@ -5,6 +5,7 @@ from django.contrib.auth.mixins import LoginRequiredMixin
|
|
|
from django.http import HttpResponseRedirect
|
|
|
from django.shortcuts import get_object_or_404, redirect, render
|
|
|
from django.urls import reverse
|
|
|
+from django.utils.decorators import method_decorator
|
|
|
from django.utils.http import is_safe_url
|
|
|
from django.views.generic import View
|
|
|
|
|
@@ -19,9 +20,17 @@ from .models import Token
|
|
|
# Login/logout
|
|
|
#
|
|
|
|
|
|
-def login(request):
|
|
|
+class LoginView(View):
|
|
|
+ template_name = 'login.html'
|
|
|
|
|
|
- if request.method == 'POST':
|
|
|
+ def get(self, request):
|
|
|
+ form = LoginForm(request)
|
|
|
+
|
|
|
+ return render(request, self.template_name, {
|
|
|
+ 'form': form,
|
|
|
+ })
|
|
|
+
|
|
|
+ def post(self, request):
|
|
|
form = LoginForm(request, data=request.POST)
|
|
|
if form.is_valid():
|
|
|
|
|
@@ -36,37 +45,48 @@ def login(request):
|
|
|
|
|
|
return HttpResponseRedirect(redirect_to)
|
|
|
|
|
|
- else:
|
|
|
- form = LoginForm()
|
|
|
+ return render(request, self.template_name, {
|
|
|
+ 'form': form,
|
|
|
+ })
|
|
|
|
|
|
- return render(request, 'login.html', {
|
|
|
- 'form': form,
|
|
|
- })
|
|
|
|
|
|
+class LogoutView(View):
|
|
|
|
|
|
-def logout(request):
|
|
|
+ def get(self, request):
|
|
|
+ auth_logout(request)
|
|
|
+ messages.info(request, u"You have logged out.")
|
|
|
|
|
|
- auth_logout(request)
|
|
|
- messages.info(request, u"You have logged out.")
|
|
|
- return HttpResponseRedirect(reverse('home'))
|
|
|
+ return HttpResponseRedirect(reverse('home'))
|
|
|
|
|
|
|
|
|
#
|
|
|
# User profiles
|
|
|
#
|
|
|
|
|
|
-@login_required()
|
|
|
-def profile(request):
|
|
|
+@method_decorator(login_required, name='dispatch')
|
|
|
+class ProfileView(View):
|
|
|
+ template_name = 'users/profile.html'
|
|
|
|
|
|
- return render(request, 'users/profile.html', {
|
|
|
- 'active_tab': 'profile',
|
|
|
- })
|
|
|
+ def get(self, request):
|
|
|
+
|
|
|
+ return render(request, self.template_name, {
|
|
|
+ 'active_tab': 'profile',
|
|
|
+ })
|
|
|
|
|
|
|
|
|
-@login_required()
|
|
|
-def change_password(request):
|
|
|
+@method_decorator(login_required, name='dispatch')
|
|
|
+class ChangePasswordView(View):
|
|
|
+ template_name = 'users/change_password.html'
|
|
|
+
|
|
|
+ def get(self, request):
|
|
|
+ form = PasswordChangeForm(user=request.user)
|
|
|
+
|
|
|
+ return render(request, self.template_name, {
|
|
|
+ 'form': form,
|
|
|
+ 'active_tab': 'change_password',
|
|
|
+ })
|
|
|
|
|
|
- if request.method == 'POST':
|
|
|
+ def post(self, request):
|
|
|
form = PasswordChangeForm(user=request.user, data=request.POST)
|
|
|
if form.is_valid():
|
|
|
form.save()
|
|
@@ -74,39 +94,51 @@ def change_password(request):
|
|
|
messages.success(request, u"Your password has been changed successfully.")
|
|
|
return redirect('user:profile')
|
|
|
|
|
|
- else:
|
|
|
- form = PasswordChangeForm(user=request.user)
|
|
|
+ return render(request, self.template_name, {
|
|
|
+ 'form': form,
|
|
|
+ 'active_tab': 'change_password',
|
|
|
+ })
|
|
|
|
|
|
- return render(request, 'users/change_password.html', {
|
|
|
- 'form': form,
|
|
|
- 'active_tab': 'change_password',
|
|
|
- })
|
|
|
|
|
|
+@method_decorator(login_required, name='dispatch')
|
|
|
+class UserKeyView(View):
|
|
|
+ template_name = 'users/userkey.html'
|
|
|
|
|
|
-@login_required()
|
|
|
-def userkey(request):
|
|
|
+ def get(self, request):
|
|
|
+ try:
|
|
|
+ userkey = UserKey.objects.get(user=request.user)
|
|
|
+ except UserKey.DoesNotExist:
|
|
|
+ userkey = None
|
|
|
+
|
|
|
+ return render(request, self.template_name, {
|
|
|
+ 'userkey': userkey,
|
|
|
+ 'active_tab': 'userkey',
|
|
|
+ })
|
|
|
|
|
|
- try:
|
|
|
- userkey = UserKey.objects.get(user=request.user)
|
|
|
- except UserKey.DoesNotExist:
|
|
|
- userkey = None
|
|
|
|
|
|
- return render(request, 'users/userkey.html', {
|
|
|
- 'userkey': userkey,
|
|
|
- 'active_tab': 'userkey',
|
|
|
- })
|
|
|
+class UserKeyEditView(View):
|
|
|
+ template_name = 'users/userkey_edit.html'
|
|
|
|
|
|
+ @method_decorator(login_required)
|
|
|
+ def dispatch(self, request, *args, **kwargs):
|
|
|
+ try:
|
|
|
+ self.userkey = UserKey.objects.get(user=request.user)
|
|
|
+ except UserKey.DoesNotExist:
|
|
|
+ self.userkey = UserKey(user=request.user)
|
|
|
|
|
|
-@login_required()
|
|
|
-def userkey_edit(request):
|
|
|
+ return super(UserKeyEditView, self).dispatch(request, *args, **kwargs)
|
|
|
|
|
|
- try:
|
|
|
- userkey = UserKey.objects.get(user=request.user)
|
|
|
- except UserKey.DoesNotExist:
|
|
|
- userkey = UserKey(user=request.user)
|
|
|
+ def get(self, request):
|
|
|
+ form = UserKeyForm(instance=self.userkey)
|
|
|
|
|
|
- if request.method == 'POST':
|
|
|
- form = UserKeyForm(data=request.POST, instance=userkey)
|
|
|
+ return render(request, self.template_name, {
|
|
|
+ 'userkey': self.userkey,
|
|
|
+ 'form': form,
|
|
|
+ 'active_tab': 'userkey',
|
|
|
+ })
|
|
|
+
|
|
|
+ def post(self, request):
|
|
|
+ form = UserKeyForm(data=request.POST, instance=self.userkey)
|
|
|
if form.is_valid():
|
|
|
uk = form.save(commit=False)
|
|
|
uk.user = request.user
|
|
@@ -114,16 +146,14 @@ def userkey_edit(request):
|
|
|
messages.success(request, u"Your user key has been saved.")
|
|
|
return redirect('user:userkey')
|
|
|
|
|
|
- else:
|
|
|
- form = UserKeyForm(instance=userkey)
|
|
|
-
|
|
|
- return render(request, 'users/userkey_edit.html', {
|
|
|
- 'userkey': userkey,
|
|
|
- 'form': form,
|
|
|
- 'active_tab': 'userkey',
|
|
|
- })
|
|
|
+ return render(request, self.template_name, {
|
|
|
+ 'userkey': self.userkey,
|
|
|
+ 'form': form,
|
|
|
+ 'active_tab': 'userkey',
|
|
|
+ })
|
|
|
|
|
|
|
|
|
+@method_decorator(login_required, name='dispatch')
|
|
|
class SessionKeyDeleteView(LoginRequiredMixin, View):
|
|
|
|
|
|
def get(self, request):
|
|
@@ -160,13 +190,16 @@ class SessionKeyDeleteView(LoginRequiredMixin, View):
|
|
|
})
|
|
|
|
|
|
|
|
|
-@login_required()
|
|
|
-def recent_activity(request):
|
|
|
+@method_decorator(login_required, name='dispatch')
|
|
|
+class RecentActivityView(View):
|
|
|
+ template_name = 'users/recent_activity.html'
|
|
|
+
|
|
|
+ def get(self, request):
|
|
|
|
|
|
- return render(request, 'users/recent_activity.html', {
|
|
|
- 'recent_activity': request.user.actions.all()[:50],
|
|
|
- 'active_tab': 'recent_activity',
|
|
|
- })
|
|
|
+ return render(request, self.template_name, {
|
|
|
+ 'recent_activity': request.user.actions.all()[:50],
|
|
|
+ 'active_tab': 'recent_activity',
|
|
|
+ })
|
|
|
|
|
|
|
|
|
#
|