Clean up permissions bulk edit

This commit is contained in:
Jeremy Stretch 2023-07-20 10:27:06 -04:00
parent f49b43d5b5
commit 4702cc049f
3 changed files with 40 additions and 15 deletions

View File

@ -13,7 +13,6 @@ __all__ = (
class UserBulkEditForm(BootstrapMixin, forms.Form): class UserBulkEditForm(BootstrapMixin, forms.Form):
pk = forms.ModelMultipleChoiceField( pk = forms.ModelMultipleChoiceField(
label=_('Pk'),
queryset=NetBoxUser.objects.all(), queryset=NetBoxUser.objects.all(),
widget=forms.MultipleHiddenInput widget=forms.MultipleHiddenInput
) )
@ -52,8 +51,7 @@ class UserBulkEditForm(BootstrapMixin, forms.Form):
class ObjectPermissionBulkEditForm(BootstrapMixin, forms.Form): class ObjectPermissionBulkEditForm(BootstrapMixin, forms.Form):
pk = forms.ModelMultipleChoiceField( pk = forms.ModelMultipleChoiceField(
label=_('Pk'), queryset=ObjectPermission.objects.all(),
queryset=None, # Set from self.model on init
widget=forms.MultipleHiddenInput widget=forms.MultipleHiddenInput
) )
description = forms.CharField( description = forms.CharField(
@ -61,17 +59,14 @@ class ObjectPermissionBulkEditForm(BootstrapMixin, forms.Form):
max_length=200, max_length=200,
required=False required=False
) )
enabled = forms.BooleanField( enabled = forms.NullBooleanField(
label=_('Enabled'),
required=False, required=False,
widget=BulkEditNullBooleanSelect,
label=_('Enabled')
) )
model = ObjectPermission model = ObjectPermission
fieldsets = ( fieldsets = (
(None, ('description', 'enabled')), (None, ('enabled', 'description')),
) )
nullable_fields = () nullable_fields = ('description',)
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields['pk'].queryset = self.model.objects.all()

View File

@ -368,6 +368,22 @@ class ObjectPermission(models.Model):
def __str__(self): def __str__(self):
return self.name return self.name
@property
def can_view(self):
return 'view' in self.actions
@property
def can_add(self):
return 'add' in self.actions
@property
def can_change(self):
return 'change' in self.actions
@property
def can_delete(self):
return 'delete' in self.actions
def list_constraints(self): def list_constraints(self):
""" """
Return all constraint sets as a list (even if only a single set is defined). Return all constraint sets as a list (even if only a single set is defined).

View File

@ -1,8 +1,8 @@
import django_tables2 as tables import django_tables2 as tables
from django_tables2.utils import A
from .models import Token
from netbox.tables import NetBoxTable, columns from netbox.tables import NetBoxTable, columns
from users.models import NetBoxGroup, NetBoxUser, ObjectPermission from users.models import NetBoxGroup, NetBoxUser, ObjectPermission
from .models import Token
__all__ = ( __all__ = (
'GroupTable', 'GroupTable',
@ -89,6 +89,17 @@ class GroupTable(NetBoxTable):
class ObjectPermissionTable(NetBoxTable): class ObjectPermissionTable(NetBoxTable):
name = tables.Column(linkify=True) name = tables.Column(linkify=True)
object_types = columns.ContentTypesColumn()
enabled = columns.BooleanColumn()
can_view = columns.BooleanColumn()
can_add = columns.BooleanColumn()
can_change = columns.BooleanColumn()
can_delete = columns.BooleanColumn()
custom_actions = columns.ArrayColumn(
accessor=tables.A('actions')
)
users = tables.ManyToManyColumn()
groups = tables.ManyToManyColumn()
actions = columns.ActionsColumn( actions = columns.ActionsColumn(
actions=('edit', 'delete'), actions=('edit', 'delete'),
) )
@ -96,6 +107,9 @@ class ObjectPermissionTable(NetBoxTable):
class Meta(NetBoxTable.Meta): class Meta(NetBoxTable.Meta):
model = ObjectPermission model = ObjectPermission
fields = ( fields = (
'pk', 'id', 'name', 'enabled', 'actions', 'constraints', 'pk', 'id', 'name', 'enabled', 'object_types', 'can_view', 'can_add', 'can_change', 'can_delete',
'custom_actions', 'users', 'groups', 'constraints', 'description',
)
default_columns = (
'pk', 'name', 'enabled', 'object_types', 'can_view', 'can_add', 'can_change', 'can_delete', 'description',
) )
default_columns = ('pk', 'name', 'enabled', 'actions', 'constraints',)