mirror of
https://github.com/netbox-community/netbox.git
synced 2025-08-25 16:56:10 -06:00
12589 fix users object_permissions m2m
This commit is contained in:
parent
3ed852f88a
commit
cc7f7687c4
@ -7,7 +7,7 @@ from dcim.models import Region, Site, SiteGroup
|
|||||||
from ipam.models import ASN
|
from ipam.models import ASN
|
||||||
from netbox.forms import NetBoxModelFilterSetForm
|
from netbox.forms import NetBoxModelFilterSetForm
|
||||||
from tenancy.forms import TenancyFilterForm, ContactModelFilterForm
|
from tenancy.forms import TenancyFilterForm, ContactModelFilterForm
|
||||||
from users.models import NetBoxUser
|
from users.models import ObjectPermission, NetBoxGroup, NetBoxUser
|
||||||
from utilities.forms import BOOLEAN_WITH_BLANK_CHOICES, FilterForm, add_blank_choice
|
from utilities.forms import BOOLEAN_WITH_BLANK_CHOICES, FilterForm, add_blank_choice
|
||||||
from utilities.forms.fields import DynamicModelMultipleChoiceField, TagFilterField
|
from utilities.forms.fields import DynamicModelMultipleChoiceField, TagFilterField
|
||||||
from utilities.forms.widgets import DatePicker, NumberWithOptions
|
from utilities.forms.widgets import DatePicker, NumberWithOptions
|
||||||
@ -49,14 +49,14 @@ class UserFilterForm(ContactModelFilterForm, NetBoxModelFilterSetForm):
|
|||||||
|
|
||||||
|
|
||||||
class GroupFilterForm(ContactModelFilterForm, NetBoxModelFilterSetForm):
|
class GroupFilterForm(ContactModelFilterForm, NetBoxModelFilterSetForm):
|
||||||
model = NetBoxUser
|
model = NetBoxGroup
|
||||||
fieldsets = (
|
fieldsets = (
|
||||||
(None, ('q', 'filter_id',)),
|
(None, ('q', 'filter_id',)),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class ObjectPermissionFilterForm(ContactModelFilterForm, NetBoxModelFilterSetForm):
|
class ObjectPermissionFilterForm(ContactModelFilterForm, NetBoxModelFilterSetForm):
|
||||||
model = NetBoxUser
|
model = ObjectPermission
|
||||||
fieldsets = (
|
fieldsets = (
|
||||||
(None, ('q', 'filter_id',)),
|
(None, ('q', 'filter_id',)),
|
||||||
(None, ('enabled',)),
|
(None, ('enabled',)),
|
||||||
|
@ -154,7 +154,8 @@ class UserForm(BootstrapMixin, forms.ModelForm):
|
|||||||
object_permissions = DynamicModelMultipleChoiceField(
|
object_permissions = DynamicModelMultipleChoiceField(
|
||||||
required=False,
|
required=False,
|
||||||
label=_('Permissions'),
|
label=_('Permissions'),
|
||||||
queryset=ObjectPermission.objects.all()
|
queryset=ObjectPermission.objects.all(),
|
||||||
|
to_field_name='pk',
|
||||||
)
|
)
|
||||||
|
|
||||||
fieldsets = (
|
fieldsets = (
|
||||||
@ -172,6 +173,15 @@ class UserForm(BootstrapMixin, forms.ModelForm):
|
|||||||
'is_active', 'is_staff', 'is_superuser', 'last_login', 'date_joined',
|
'is_active', 'is_staff', 'is_superuser', 'last_login', 'date_joined',
|
||||||
]
|
]
|
||||||
|
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
super().__init__(*args, **kwargs)
|
||||||
|
self.fields['object_permissions'].initial = self.instance.object_permissions.all().values_list('id', flat=True)
|
||||||
|
|
||||||
|
def save(self, *args, **kwargs):
|
||||||
|
instance = super().save(*args, **kwargs)
|
||||||
|
instance.object_permissions.set(self.cleaned_data['object_permissions'])
|
||||||
|
return instance
|
||||||
|
|
||||||
|
|
||||||
class GroupForm(BootstrapMixin, forms.ModelForm):
|
class GroupForm(BootstrapMixin, forms.ModelForm):
|
||||||
users = DynamicModelMultipleChoiceField(
|
users = DynamicModelMultipleChoiceField(
|
||||||
@ -181,7 +191,8 @@ class GroupForm(BootstrapMixin, forms.ModelForm):
|
|||||||
object_permissions = DynamicModelMultipleChoiceField(
|
object_permissions = DynamicModelMultipleChoiceField(
|
||||||
required=False,
|
required=False,
|
||||||
label=_('Permissions'),
|
label=_('Permissions'),
|
||||||
queryset=ObjectPermission.objects.all()
|
queryset=ObjectPermission.objects.all(),
|
||||||
|
to_field_name='pk',
|
||||||
)
|
)
|
||||||
|
|
||||||
fieldsets = (
|
fieldsets = (
|
||||||
@ -196,6 +207,17 @@ class GroupForm(BootstrapMixin, forms.ModelForm):
|
|||||||
'name', 'users', 'object_permissions',
|
'name', 'users', 'object_permissions',
|
||||||
]
|
]
|
||||||
|
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
super().__init__(*args, **kwargs)
|
||||||
|
self.fields['users'].initial = self.instance.user_set.all().values_list('id', flat=True)
|
||||||
|
self.fields['object_permissions'].initial = self.instance.object_permissions.all().values_list('id', flat=True)
|
||||||
|
|
||||||
|
def save(self, *args, **kwargs):
|
||||||
|
instance = super().save(*args, **kwargs)
|
||||||
|
instance.user_set.set(self.cleaned_data['users'])
|
||||||
|
instance.object_permissions.set(self.cleaned_data['object_permissions'])
|
||||||
|
return instance
|
||||||
|
|
||||||
|
|
||||||
class ObjectPermissionForm(BootstrapMixin, forms.ModelForm):
|
class ObjectPermissionForm(BootstrapMixin, forms.ModelForm):
|
||||||
actions = SimpleArrayField(
|
actions = SimpleArrayField(
|
||||||
@ -212,7 +234,7 @@ class ObjectPermissionForm(BootstrapMixin, forms.ModelForm):
|
|||||||
)
|
)
|
||||||
object_types = ContentTypeMultipleChoiceField(
|
object_types = ContentTypeMultipleChoiceField(
|
||||||
queryset=ContentType.objects.all(),
|
queryset=ContentType.objects.all(),
|
||||||
limit_choices_to=OBJECTPERMISSION_OBJECT_TYPES
|
limit_choices_to=OBJECTPERMISSION_OBJECT_TYPES,
|
||||||
)
|
)
|
||||||
|
|
||||||
can_view = forms.BooleanField(required=False)
|
can_view = forms.BooleanField(required=False)
|
||||||
|
Loading…
Reference in New Issue
Block a user