diff --git a/netbox/templates/users/user.html b/netbox/templates/users/user.html
index 295f0f962..64aab2d4e 100644
--- a/netbox/templates/users/user.html
+++ b/netbox/templates/users/user.html
@@ -57,7 +57,19 @@
{% endfor %}
+
+
+
+
+ {% for perm in object.object_permissions.all %}
+ - {{ perm }}
+ {% empty %}
+ - {% trans "None" %}
+ {% endfor %}
+
+
+
{% if perms.extras.view_objectchange %}
diff --git a/netbox/users/forms/bulk_edit.py b/netbox/users/forms/bulk_edit.py
index 21e4d75e8..786d27c7d 100644
--- a/netbox/users/forms/bulk_edit.py
+++ b/netbox/users/forms/bulk_edit.py
@@ -1,12 +1,8 @@
from django import forms
from django.utils.translation import gettext_lazy as _
-from netbox.forms import NetBoxModelBulkEditForm
from users.models import *
-from utilities.forms import add_blank_choice
-from utilities.forms.fields import CommentField, DynamicModelChoiceField, DynamicModelMultipleChoiceField
from utilities.forms import BootstrapMixin
-from utilities.forms.widgets import DatePicker, NumberWithOptions
__all__ = (
'ObjectPermissionBulkEditForm',
diff --git a/netbox/users/forms/bulk_import.py b/netbox/users/forms/bulk_import.py
index 618cb46fd..ed08f03fa 100644
--- a/netbox/users/forms/bulk_import.py
+++ b/netbox/users/forms/bulk_import.py
@@ -1,10 +1,7 @@
from django import forms
-from users.models import *
-from django.utils.translation import gettext_lazy as _
+from users.models import NetBoxGroup
from netbox.forms import NetBoxModelImportForm
-from utilities.forms import BootstrapMixin
-from utilities.forms.fields import CSVChoiceField, CSVModelChoiceField, SlugField
__all__ = (
'GroupImportForm',
diff --git a/netbox/users/migrations/0004_netboxgroup_netboxuser.py b/netbox/users/migrations/0004_netboxgroup_netboxuser.py
index 7bb746bd5..afbc0eefb 100644
--- a/netbox/users/migrations/0004_netboxgroup_netboxuser.py
+++ b/netbox/users/migrations/0004_netboxgroup_netboxuser.py
@@ -39,4 +39,12 @@ class Migration(migrations.Migration):
('objects', django.contrib.auth.models.UserManager()),
],
),
+ migrations.AlterModelOptions(
+ name='netboxgroup',
+ options={'ordering': ['name'], 'verbose_name': 'Group'},
+ ),
+ migrations.AlterModelOptions(
+ name='netboxuser',
+ options={'ordering': ['username'], 'verbose_name': 'User'},
+ ),
]
diff --git a/netbox/users/models.py b/netbox/users/models.py
index ffafb8c9c..003eefb0a 100644
--- a/netbox/users/models.py
+++ b/netbox/users/models.py
@@ -56,6 +56,10 @@ class NetBoxUserManager(UserManager.from_queryset(RestrictedQuerySet)):
pass
+class NetBoxGroupManager(GroupManager.from_queryset(RestrictedQuerySet)):
+ pass
+
+
class NetBoxUser(User):
"""
Proxy contrib.auth.models.User for the UI
@@ -65,6 +69,7 @@ class NetBoxUser(User):
class Meta:
verbose_name = 'User'
proxy = True
+ ordering = ['username',]
def get_absolute_url(self):
return reverse('users:netboxuser', args=[self.pk])
@@ -74,11 +79,12 @@ class NetBoxGroup(Group):
"""
Proxy contrib.auth.models.User for the UI
"""
- objects = RestrictedQuerySet.as_manager()
+ objects = NetBoxGroupManager()
class Meta:
verbose_name = 'Group'
proxy = True
+ ordering = ['name',]
def get_absolute_url(self):
return reverse('users:netboxgroup', args=[self.pk])