From 357ae44cde6085e47790ffd248b92c9211171c69 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Mon, 2 Jun 2025 15:14:11 -0400 Subject: [PATCH 1/2] Fixes #19599: Prevent exception when sorting user's recent activity --- netbox/account/views.py | 1 + netbox/templates/account/profile.html | 9 ++++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/netbox/account/views.py b/netbox/account/views.py index a2f21b44e..a309232b9 100644 --- a/netbox/account/views.py +++ b/netbox/account/views.py @@ -197,6 +197,7 @@ class ProfileView(LoginRequiredMixin, View): 'changed_object_type' )[:20] changelog_table = ObjectChangeTable(changelog) + changelog_table.orderable = False changelog_table.configure(request) return render(request, self.template_name, { diff --git a/netbox/templates/account/profile.html b/netbox/templates/account/profile.html index 20f8ad537..e513a6e85 100644 --- a/netbox/templates/account/profile.html +++ b/netbox/templates/account/profile.html @@ -65,7 +65,14 @@
-

{% trans "Recent Activity" %}

+

+ {% trans "Recent Activity" %} + +

{% render_table changelog_table 'inc/table.html' %}
From e5e7a66cb9f2a9bf29e442d57eabf62b487f5b86 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Tue, 3 Jun 2025 08:58:16 -0400 Subject: [PATCH 2/2] Apply fix to user view as well --- netbox/account/views.py | 6 +----- netbox/templates/account/profile.html | 18 ++---------------- netbox/templates/users/inc/user_activity.html | 16 ++++++++++++++++ netbox/templates/users/user.html | 11 ++--------- netbox/users/views.py | 3 ++- 5 files changed, 23 insertions(+), 31 deletions(-) create mode 100644 netbox/templates/users/inc/user_activity.html diff --git a/netbox/account/views.py b/netbox/account/views.py index a309232b9..f5ef534ce 100644 --- a/netbox/account/views.py +++ b/netbox/account/views.py @@ -191,11 +191,7 @@ class ProfileView(LoginRequiredMixin, View): def get(self, request): # Compile changelog table - changelog = ObjectChange.objects.valid_models().restrict(request.user, 'view').filter( - user=request.user - ).prefetch_related( - 'changed_object_type' - )[:20] + changelog = ObjectChange.objects.valid_models().restrict(request.user, 'view').filter(user=request.user)[:20] changelog_table = ObjectChangeTable(changelog) changelog_table.orderable = False changelog_table.configure(request) diff --git a/netbox/templates/account/profile.html b/netbox/templates/account/profile.html index e513a6e85..442cce9ba 100644 --- a/netbox/templates/account/profile.html +++ b/netbox/templates/account/profile.html @@ -1,12 +1,10 @@ {% extends 'account/base.html' %} -{% load helpers %} -{% load render_table from django_tables2 %} {% load i18n %} {% block title %}{% trans "User Profile" %}{% endblock %} {% block content %} -
+

{% trans "Account Details" %}

@@ -64,19 +62,7 @@ {% if perms.core.view_objectchange %}
-
-

- {% trans "Recent Activity" %} - -

-
- {% render_table changelog_table 'inc/table.html' %} -
-
+ {% include 'users/inc/user_activity.html' with user=user table=changelog_table %}
{% endif %} diff --git a/netbox/templates/users/inc/user_activity.html b/netbox/templates/users/inc/user_activity.html new file mode 100644 index 000000000..74d6500ab --- /dev/null +++ b/netbox/templates/users/inc/user_activity.html @@ -0,0 +1,16 @@ +{% load i18n %} +{% load render_table from django_tables2 %} + +
+

+ {% trans "Recent Activity" %} + +

+
+ {% render_table table 'inc/table.html' %} +
+
diff --git a/netbox/templates/users/user.html b/netbox/templates/users/user.html index 967cc0537..84e4cac68 100644 --- a/netbox/templates/users/user.html +++ b/netbox/templates/users/user.html @@ -1,14 +1,12 @@ {% extends 'generic/object.html' %} {% load i18n %} -{% load helpers %} -{% load render_table from django_tables2 %} {% block title %}{% trans "User" %} {{ object.username }}{% endblock %} {% block subtitle %}{% endblock %} {% block content %} -
+

{% trans "User" %}

@@ -74,12 +72,7 @@ {% if perms.core.view_objectchange %}
-
-

{% trans "Recent Activity" %}

-
- {% render_table changelog_table 'inc/table.html' %} -
-
+ {% include 'users/inc/user_activity.html' with user=object table=changelog_table %}
{% endif %} diff --git a/netbox/users/views.py b/netbox/users/views.py index 16dacaa46..099bbcf87 100644 --- a/netbox/users/views.py +++ b/netbox/users/views.py @@ -75,8 +75,9 @@ class UserView(generic.ObjectView): template_name = 'users/user.html' def get_extra_context(self, request, instance): - changelog = ObjectChange.objects.restrict(request.user, 'view').filter(user=instance)[:20] + changelog = ObjectChange.objects.valid_models().restrict(request.user, 'view').filter(user=instance)[:20] changelog_table = ObjectChangeTable(changelog) + changelog_table.orderable = False changelog_table.configure(request) return {