1
0
mirror of https://github.com/netbox-community/netbox.git synced 2024-05-10 07:54:54 +00:00

Converted all user views to CBVs

This commit is contained in:
Jeremy Stretch
2017-05-19 15:47:19 -04:00
parent 27c94d9874
commit e6b4d87939
3 changed files with 100 additions and 67 deletions

View File

@@ -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, 'login.html', {
'form': form,
})
return render(request, self.template_name, {
'form': form,
})
def logout(request):
class LogoutView(View):
auth_logout(request)
messages.info(request, u"You have logged out.")
return HttpResponseRedirect(reverse('home'))
def get(self, request):
auth_logout(request)
messages.info(request, u"You have logged out.")
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'
if request.method == 'POST':
def get(self, request):
form = PasswordChangeForm(user=request.user)
return render(request, self.template_name, {
'form': form,
'active_tab': 'change_password',
})
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, 'users/change_password.html', {
'form': form,
'active_tab': 'change_password',
})
return render(request, self.template_name, {
'form': form,
'active_tab': 'change_password',
})
@login_required()
def userkey(request):
@method_decorator(login_required, name='dispatch')
class UserKeyView(View):
template_name = 'users/userkey.html'
try:
userkey = UserKey.objects.get(user=request.user)
except UserKey.DoesNotExist:
userkey = None
def get(self, request):
try:
userkey = UserKey.objects.get(user=request.user)
except UserKey.DoesNotExist:
userkey = None
return render(request, 'users/userkey.html', {
'userkey': userkey,
'active_tab': 'userkey',
})
return render(request, self.template_name, {
'userkey': userkey,
'active_tab': 'userkey',
})
@login_required()
def userkey_edit(request):
class UserKeyEditView(View):
template_name = 'users/userkey_edit.html'
try:
userkey = UserKey.objects.get(user=request.user)
except UserKey.DoesNotExist:
userkey = UserKey(user=request.user)
@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)
if request.method == 'POST':
form = UserKeyForm(data=request.POST, instance=userkey)
return super(UserKeyEditView, self).dispatch(request, *args, **kwargs)
def get(self, request):
form = UserKeyForm(instance=self.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'
return render(request, 'users/recent_activity.html', {
'recent_activity': request.user.actions.all()[:50],
'active_tab': 'recent_activity',
})
def get(self, request):
return render(request, self.template_name, {
'recent_activity': request.user.actions.all()[:50],
'active_tab': 'recent_activity',
})
#