Closes #8248: User bookmarks (#13035)

* Initial work on #8248

* Add tests

* Fix tests

* Add feature query for bookmarks

* Add BookmarksWidget

* Correct generic relation name

* Add docs for bookmarks

* Remove inheritance from ChangeLoggedModel
This commit is contained in:
Jeremy Stretch
2023-06-29 14:36:11 -04:00
committed by GitHub
parent 1056e513b1
commit 6e222f8dce
30 changed files with 590 additions and 7 deletions
+1
View File
@@ -8,6 +8,7 @@ urlpatterns = [
# User
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'),
+20 -2
View File
@@ -15,10 +15,11 @@ from django.views.decorators.debug import sensitive_post_parameters
from django.views.generic import View
from social_core.backends.utils import load_backends
from extras.models import ObjectChange
from extras.tables import ObjectChangeTable
from extras.models import Bookmark, ObjectChange
from extras.tables import BookmarkTable, ObjectChangeTable
from netbox.authentication import get_auth_backend_display, get_saml_idps
from netbox.config import get_config
from netbox.views.generic import ObjectListView
from utilities.forms import ConfirmationForm
from utilities.views import register_model_view
from .forms import LoginForm, PasswordChangeForm, TokenForm, UserConfigForm
@@ -228,6 +229,23 @@ class ChangePasswordView(LoginRequiredMixin, View):
})
#
# Bookmarks
#
class BookmarkListView(LoginRequiredMixin, ObjectListView):
table = BookmarkTable
template_name = 'users/bookmarks.html'
def get_queryset(self, request):
return Bookmark.objects.filter(user=request.user)
def get_extra_context(self, request):
return {
'active_tab': 'bookmarks',
}
#
# API tokens
#