mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-24 17:38:37 -06:00
Converted all user views to CBVs
This commit is contained in:
parent
27c94d9874
commit
e6b4d87939
@ -6,7 +6,7 @@ from django.contrib import admin
|
|||||||
from django.views.static import serve
|
from django.views.static import serve
|
||||||
|
|
||||||
from netbox.views import APIRootView, home, handle_500, SearchView, trigger_500
|
from netbox.views import APIRootView, home, handle_500, SearchView, trigger_500
|
||||||
from users.views import login, logout
|
from users.views import LoginView, LogoutView
|
||||||
|
|
||||||
|
|
||||||
handler500 = handle_500
|
handler500 = handle_500
|
||||||
@ -19,8 +19,8 @@ _patterns = [
|
|||||||
url(r'^search/$', SearchView.as_view(), name='search'),
|
url(r'^search/$', SearchView.as_view(), name='search'),
|
||||||
|
|
||||||
# Login/logout
|
# Login/logout
|
||||||
url(r'^login/$', login, name='login'),
|
url(r'^login/$', LoginView.as_view(), name='login'),
|
||||||
url(r'^logout/$', logout, name='logout'),
|
url(r'^logout/$', LogoutView.as_view(), name='logout'),
|
||||||
|
|
||||||
# Apps
|
# Apps
|
||||||
url(r'^circuits/', include('circuits.urls')),
|
url(r'^circuits/', include('circuits.urls')),
|
||||||
|
@ -6,15 +6,15 @@ from . import views
|
|||||||
app_name = 'user'
|
app_name = 'user'
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
|
|
||||||
url(r'^profile/$', views.profile, name='profile'),
|
url(r'^profile/$', views.ProfileView.as_view(), name='profile'),
|
||||||
url(r'^password/$', views.change_password, name='change_password'),
|
url(r'^password/$', views.ChangePasswordView.as_view(), name='change_password'),
|
||||||
url(r'^api-tokens/$', views.TokenListView.as_view(), name='token_list'),
|
url(r'^api-tokens/$', views.TokenListView.as_view(), name='token_list'),
|
||||||
url(r'^api-tokens/add/$', views.TokenEditView.as_view(), name='token_add'),
|
url(r'^api-tokens/add/$', views.TokenEditView.as_view(), name='token_add'),
|
||||||
url(r'^api-tokens/(?P<pk>\d+)/edit/$', views.TokenEditView.as_view(), name='token_edit'),
|
url(r'^api-tokens/(?P<pk>\d+)/edit/$', views.TokenEditView.as_view(), name='token_edit'),
|
||||||
url(r'^api-tokens/(?P<pk>\d+)/delete/$', views.TokenDeleteView.as_view(), name='token_delete'),
|
url(r'^api-tokens/(?P<pk>\d+)/delete/$', views.TokenDeleteView.as_view(), name='token_delete'),
|
||||||
url(r'^user-key/$', views.userkey, name='userkey'),
|
url(r'^user-key/$', views.UserKeyView.as_view(), name='userkey'),
|
||||||
url(r'^user-key/edit/$', views.userkey_edit, name='userkey_edit'),
|
url(r'^user-key/edit/$', views.UserKeyEditView.as_view(), name='userkey_edit'),
|
||||||
url(r'^session-key/delete/$', views.SessionKeyDeleteView.as_view(), name='sessionkey_delete'),
|
url(r'^session-key/delete/$', views.SessionKeyDeleteView.as_view(), name='sessionkey_delete'),
|
||||||
url(r'^recent-activity/$', views.recent_activity, name='recent_activity'),
|
url(r'^recent-activity/$', views.RecentActivityView.as_view(), name='recent_activity'),
|
||||||
|
|
||||||
]
|
]
|
||||||
|
@ -5,6 +5,7 @@ from django.contrib.auth.mixins import LoginRequiredMixin
|
|||||||
from django.http import HttpResponseRedirect
|
from django.http import HttpResponseRedirect
|
||||||
from django.shortcuts import get_object_or_404, redirect, render
|
from django.shortcuts import get_object_or_404, redirect, render
|
||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
|
from django.utils.decorators import method_decorator
|
||||||
from django.utils.http import is_safe_url
|
from django.utils.http import is_safe_url
|
||||||
from django.views.generic import View
|
from django.views.generic import View
|
||||||
|
|
||||||
@ -19,9 +20,17 @@ from .models import Token
|
|||||||
# Login/logout
|
# 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)
|
form = LoginForm(request, data=request.POST)
|
||||||
if form.is_valid():
|
if form.is_valid():
|
||||||
|
|
||||||
@ -36,37 +45,48 @@ def login(request):
|
|||||||
|
|
||||||
return HttpResponseRedirect(redirect_to)
|
return HttpResponseRedirect(redirect_to)
|
||||||
|
|
||||||
else:
|
return render(request, self.template_name, {
|
||||||
form = LoginForm()
|
'form': form,
|
||||||
|
})
|
||||||
return render(request, 'login.html', {
|
|
||||||
'form': form,
|
|
||||||
})
|
|
||||||
|
|
||||||
|
|
||||||
def logout(request):
|
class LogoutView(View):
|
||||||
|
|
||||||
auth_logout(request)
|
def get(self, request):
|
||||||
messages.info(request, u"You have logged out.")
|
auth_logout(request)
|
||||||
return HttpResponseRedirect(reverse('home'))
|
messages.info(request, u"You have logged out.")
|
||||||
|
|
||||||
|
return HttpResponseRedirect(reverse('home'))
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# User profiles
|
# User profiles
|
||||||
#
|
#
|
||||||
|
|
||||||
@login_required()
|
@method_decorator(login_required, name='dispatch')
|
||||||
def profile(request):
|
class ProfileView(View):
|
||||||
|
template_name = 'users/profile.html'
|
||||||
|
|
||||||
return render(request, 'users/profile.html', {
|
def get(self, request):
|
||||||
'active_tab': 'profile',
|
|
||||||
})
|
return render(request, self.template_name, {
|
||||||
|
'active_tab': 'profile',
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
@login_required()
|
@method_decorator(login_required, name='dispatch')
|
||||||
def change_password(request):
|
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)
|
form = PasswordChangeForm(user=request.user, data=request.POST)
|
||||||
if form.is_valid():
|
if form.is_valid():
|
||||||
form.save()
|
form.save()
|
||||||
@ -74,39 +94,51 @@ def change_password(request):
|
|||||||
messages.success(request, u"Your password has been changed successfully.")
|
messages.success(request, u"Your password has been changed successfully.")
|
||||||
return redirect('user:profile')
|
return redirect('user:profile')
|
||||||
|
|
||||||
else:
|
return render(request, self.template_name, {
|
||||||
form = PasswordChangeForm(user=request.user)
|
'form': form,
|
||||||
|
'active_tab': 'change_password',
|
||||||
return render(request, 'users/change_password.html', {
|
})
|
||||||
'form': form,
|
|
||||||
'active_tab': 'change_password',
|
|
||||||
})
|
|
||||||
|
|
||||||
|
|
||||||
@login_required()
|
@method_decorator(login_required, name='dispatch')
|
||||||
def userkey(request):
|
class UserKeyView(View):
|
||||||
|
template_name = 'users/userkey.html'
|
||||||
|
|
||||||
try:
|
def get(self, request):
|
||||||
userkey = UserKey.objects.get(user=request.user)
|
try:
|
||||||
except UserKey.DoesNotExist:
|
userkey = UserKey.objects.get(user=request.user)
|
||||||
userkey = None
|
except UserKey.DoesNotExist:
|
||||||
|
userkey = None
|
||||||
|
|
||||||
return render(request, 'users/userkey.html', {
|
return render(request, self.template_name, {
|
||||||
'userkey': userkey,
|
'userkey': userkey,
|
||||||
'active_tab': 'userkey',
|
'active_tab': 'userkey',
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
@login_required()
|
class UserKeyEditView(View):
|
||||||
def userkey_edit(request):
|
template_name = 'users/userkey_edit.html'
|
||||||
|
|
||||||
try:
|
@method_decorator(login_required)
|
||||||
userkey = UserKey.objects.get(user=request.user)
|
def dispatch(self, request, *args, **kwargs):
|
||||||
except UserKey.DoesNotExist:
|
try:
|
||||||
userkey = UserKey(user=request.user)
|
self.userkey = UserKey.objects.get(user=request.user)
|
||||||
|
except UserKey.DoesNotExist:
|
||||||
|
self.userkey = UserKey(user=request.user)
|
||||||
|
|
||||||
if request.method == 'POST':
|
return super(UserKeyEditView, self).dispatch(request, *args, **kwargs)
|
||||||
form = UserKeyForm(data=request.POST, instance=userkey)
|
|
||||||
|
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():
|
if form.is_valid():
|
||||||
uk = form.save(commit=False)
|
uk = form.save(commit=False)
|
||||||
uk.user = request.user
|
uk.user = request.user
|
||||||
@ -114,16 +146,14 @@ def userkey_edit(request):
|
|||||||
messages.success(request, u"Your user key has been saved.")
|
messages.success(request, u"Your user key has been saved.")
|
||||||
return redirect('user:userkey')
|
return redirect('user:userkey')
|
||||||
|
|
||||||
else:
|
return render(request, self.template_name, {
|
||||||
form = UserKeyForm(instance=userkey)
|
'userkey': self.userkey,
|
||||||
|
'form': form,
|
||||||
return render(request, 'users/userkey_edit.html', {
|
'active_tab': 'userkey',
|
||||||
'userkey': userkey,
|
})
|
||||||
'form': form,
|
|
||||||
'active_tab': 'userkey',
|
|
||||||
})
|
|
||||||
|
|
||||||
|
|
||||||
|
@method_decorator(login_required, name='dispatch')
|
||||||
class SessionKeyDeleteView(LoginRequiredMixin, View):
|
class SessionKeyDeleteView(LoginRequiredMixin, View):
|
||||||
|
|
||||||
def get(self, request):
|
def get(self, request):
|
||||||
@ -160,13 +190,16 @@ class SessionKeyDeleteView(LoginRequiredMixin, View):
|
|||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
@login_required()
|
@method_decorator(login_required, name='dispatch')
|
||||||
def recent_activity(request):
|
class RecentActivityView(View):
|
||||||
|
template_name = 'users/recent_activity.html'
|
||||||
|
|
||||||
return render(request, 'users/recent_activity.html', {
|
def get(self, request):
|
||||||
'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',
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
|
Loading…
Reference in New Issue
Block a user