diff --git a/netbox/templates/users/_user.html b/netbox/templates/users/_user.html index 441caf289..d03d44fa6 100644 --- a/netbox/templates/users/_user.html +++ b/netbox/templates/users/_user.html @@ -12,6 +12,9 @@ Profile + + Preferences + {% if not request.user.ldap_username %} Change Password diff --git a/netbox/templates/users/preferences.html b/netbox/templates/users/preferences.html index 65254645c..0884c7f17 100644 --- a/netbox/templates/users/preferences.html +++ b/netbox/templates/users/preferences.html @@ -4,15 +4,32 @@ {% block title %}User Preferences{% endblock %} {% block usercontent %} - - - - - - - - - {% for %} - -
PreferenceValue
+ {% if preferences %} +
+ {% csrf_token %} + + + + + + + + + + {% for key, value in preferences.items %} + + + + + + {% endfor %} + +
PreferenceValue
{{ key }}{{ value }}
+ +
+ {% else %} +

No preferences found

+ {% endif %} {% endblock %} diff --git a/netbox/users/urls.py b/netbox/users/urls.py index dae540726..b8b16cdf8 100644 --- a/netbox/users/urls.py +++ b/netbox/users/urls.py @@ -6,6 +6,7 @@ app_name = 'user' urlpatterns = [ path('profile/', views.ProfileView.as_view(), name='profile'), + 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'), diff --git a/netbox/users/views.py b/netbox/users/views.py index ae1345b6b..c3e366542 100644 --- a/netbox/users/views.py +++ b/netbox/users/views.py @@ -111,6 +111,30 @@ class ProfileView(LoginRequiredMixin, View): }) +class UserConfigView(LoginRequiredMixin, View): + template_name = 'users/preferences.html' + + def get(self, request): + + return render(request, self.template_name, { + 'preferences': request.user.config.all(), + 'active_tab': 'preferences', + }) + + def post(self, request): + userconfig = request.user.config + data = userconfig.all() + + # Delete selected preferences + for key in request.POST.getlist('pk'): + if key in data: + userconfig.clear(key) + userconfig.save() + messages.success(request, "Your preferences have been updated.") + + return redirect('user:preferences') + + class ChangePasswordView(LoginRequiredMixin, View): template_name = 'users/change_password.html'