diff --git a/netbox/templates/users/api_token.html b/netbox/templates/users/account/api_token.html
similarity index 100%
rename from netbox/templates/users/api_token.html
rename to netbox/templates/users/account/api_token.html
diff --git a/netbox/templates/users/api_tokens.html b/netbox/templates/users/account/api_tokens.html
similarity index 94%
rename from netbox/templates/users/api_tokens.html
rename to netbox/templates/users/account/api_tokens.html
index aaff36a44..25f5f02e6 100644
--- a/netbox/templates/users/api_tokens.html
+++ b/netbox/templates/users/account/api_tokens.html
@@ -1,4 +1,4 @@
-{% extends 'users/base_profile.html' %}
+{% extends 'users/account/base.html' %}
{% load helpers %}
{% load render_table from django_tables2 %}
diff --git a/netbox/templates/users/base_profile.html b/netbox/templates/users/account/base.html
similarity index 100%
rename from netbox/templates/users/base_profile.html
rename to netbox/templates/users/account/base.html
diff --git a/netbox/templates/users/bookmarks.html b/netbox/templates/users/account/bookmarks.html
similarity index 95%
rename from netbox/templates/users/bookmarks.html
rename to netbox/templates/users/account/bookmarks.html
index 4695f509e..fa3c28c7c 100644
--- a/netbox/templates/users/bookmarks.html
+++ b/netbox/templates/users/account/bookmarks.html
@@ -1,4 +1,4 @@
-{% extends 'users/base_profile.html' %}
+{% extends 'users/account/base.html' %}
{% load buttons %}
{% load helpers %}
{% load render_table from django_tables2 %}
diff --git a/netbox/templates/users/password.html b/netbox/templates/users/account/password.html
similarity index 94%
rename from netbox/templates/users/password.html
rename to netbox/templates/users/account/password.html
index 77c152de8..dcdd19e29 100644
--- a/netbox/templates/users/password.html
+++ b/netbox/templates/users/account/password.html
@@ -1,4 +1,4 @@
-{% extends 'users/base_profile.html' %}
+{% extends 'users/account/base.html' %}
{% load form_helpers %}
{% block title %}Change Password{% endblock %}
diff --git a/netbox/templates/users/preferences.html b/netbox/templates/users/account/preferences.html
similarity index 98%
rename from netbox/templates/users/preferences.html
rename to netbox/templates/users/account/preferences.html
index 3d67e7b24..59cca302c 100644
--- a/netbox/templates/users/preferences.html
+++ b/netbox/templates/users/account/preferences.html
@@ -1,4 +1,4 @@
-{% extends 'users/base_profile.html' %}
+{% extends 'users/account/base.html' %}
{% load helpers %}
{% load form_helpers %}
diff --git a/netbox/templates/users/profile.html b/netbox/templates/users/account/profile.html
similarity index 98%
rename from netbox/templates/users/profile.html
rename to netbox/templates/users/account/profile.html
index 0922f9ddf..0e8ab1162 100644
--- a/netbox/templates/users/profile.html
+++ b/netbox/templates/users/account/profile.html
@@ -1,4 +1,4 @@
-{% extends 'users/base_profile.html' %}
+{% extends 'users/account/base.html' %}
{% load helpers %}
{% load render_table from django_tables2 %}
diff --git a/netbox/templates/users/base.html b/netbox/templates/users/base.html
deleted file mode 100644
index 9711dc79e..000000000
--- a/netbox/templates/users/base.html
+++ /dev/null
@@ -1,11 +0,0 @@
-{% extends 'generic/object.html' %}
-{% load buttons %}
-{% load static %}
-{% load helpers %}
-{% load plugins %}
-
-{% block content-wrapper %}
-
- {% block content %}{% endblock %}
-
-{% endblock %}
diff --git a/netbox/templates/users/group.html b/netbox/templates/users/group.html
index bb699468b..dd4b1aa8a 100644
--- a/netbox/templates/users/group.html
+++ b/netbox/templates/users/group.html
@@ -1,4 +1,4 @@
-{% extends 'users/base.html' %}
+{% extends 'generic/object.html' %}
{% load i18n %}
{% load helpers %}
{% load render_table from django_tables2 %}
diff --git a/netbox/templates/users/objectpermission.html b/netbox/templates/users/objectpermission.html
index 2ef6acbae..26a5d06d3 100644
--- a/netbox/templates/users/objectpermission.html
+++ b/netbox/templates/users/objectpermission.html
@@ -1,4 +1,4 @@
-{% extends 'users/base.html' %}
+{% extends 'generic/object.html' %}
{% load i18n %}
{% load helpers %}
{% load render_table from django_tables2 %}
diff --git a/netbox/templates/users/passworduser.html b/netbox/templates/users/passworduser.html
deleted file mode 100644
index 3b50c3bc0..000000000
--- a/netbox/templates/users/passworduser.html
+++ /dev/null
@@ -1,28 +0,0 @@
-{% extends 'users/base_profile.html' %}
-{% load i18n %}
-{% load form_helpers %}
-
-{% block title %}{% trans "Change Password" %}{% endblock %}
-
-{% block tabs %}
-
-{% endblock tabs %}
-
-{% block content %}
-
-{% endblock %}
diff --git a/netbox/templates/users/user.html b/netbox/templates/users/user.html
index 64aab2d4e..549144336 100644
--- a/netbox/templates/users/user.html
+++ b/netbox/templates/users/user.html
@@ -1,4 +1,4 @@
-{% extends 'users/base.html' %}
+{% extends 'generic/object.html' %}
{% load i18n %}
{% load helpers %}
{% load render_table from django_tables2 %}
diff --git a/netbox/users/urls.py b/netbox/users/urls.py
index 50965a16f..573a44224 100644
--- a/netbox/users/urls.py
+++ b/netbox/users/urls.py
@@ -6,11 +6,14 @@ from . import views
app_name = 'users'
urlpatterns = [
- # User
+ # Account views
path('profile/', views.ProfileView.as_view(), name='profile'),
path('bookmarks/', views.BookmarkListView.as_view(), name='bookmarks'),
path('preferences/', views.UserConfigView.as_view(), name='preferences'),
path('password/', views.ChangePasswordView.as_view(), name='change_password'),
+ path('api-tokens/', views.TokenListView.as_view(), name='token_list'),
+ path('api-tokens/add/', views.TokenEditView.as_view(), name='token_add'),
+ path('api-tokens//', include(get_model_urls('users', 'token'))),
# Users
path('users/', views.NetBoxUserListView.as_view(), name='netboxuser_list'),
@@ -34,9 +37,4 @@ urlpatterns = [
path('permissions/delete/', views.ObjectPermissionBulkDeleteView.as_view(), name='objectpermission_bulk_delete'),
path('permissions//', include(get_model_urls('users', 'objectpermission'))),
- # API tokens
- path('api-tokens/', views.TokenListView.as_view(), name='token_list'),
- path('api-tokens/add/', views.TokenEditView.as_view(), name='token_add'),
- path('api-tokens//', include(get_model_urls('users', 'token'))),
-
]
diff --git a/netbox/users/views.py b/netbox/users/views.py
index c272cf923..c93b8cc82 100644
--- a/netbox/users/views.py
+++ b/netbox/users/views.py
@@ -158,7 +158,7 @@ class LogoutView(View):
#
class ProfileView(LoginRequiredMixin, View):
- template_name = 'users/profile.html'
+ template_name = 'users/account/profile.html'
def get(self, request):
@@ -177,7 +177,7 @@ class ProfileView(LoginRequiredMixin, View):
class UserConfigView(LoginRequiredMixin, View):
- template_name = 'users/preferences.html'
+ template_name = 'users/account/preferences.html'
def get(self, request):
userconfig = request.user.config
@@ -205,7 +205,7 @@ class UserConfigView(LoginRequiredMixin, View):
class ChangePasswordView(LoginRequiredMixin, View):
- template_name = 'users/password.html'
+ template_name = 'users/account/password.html'
def get(self, request):
# LDAP users cannot change their password here
@@ -240,7 +240,7 @@ class ChangePasswordView(LoginRequiredMixin, View):
class BookmarkListView(LoginRequiredMixin, generic.ObjectListView):
table = BookmarkTable
- template_name = 'users/bookmarks.html'
+ template_name = 'users/account/bookmarks.html'
def get_queryset(self, request):
return Bookmark.objects.filter(user=request.user)
@@ -263,7 +263,7 @@ class TokenListView(LoginRequiredMixin, View):
table = tables.TokenTable(tokens)
table.configure(request)
- return render(request, 'users/api_tokens.html', {
+ return render(request, 'users/account/api_tokens.html', {
'tokens': tokens,
'active_tab': 'api-tokens',
'table': table,
@@ -307,7 +307,7 @@ class TokenEditView(LoginRequiredMixin, View):
messages.success(request, msg)
if not pk and not settings.ALLOW_TOKEN_RETRIEVAL:
- return render(request, 'users/api_token.html', {
+ return render(request, 'users/account/api_token.html', {
'object': token,
'key': token.key,
'return_url': reverse('users:token_list'),