1
0
mirror of https://github.com/netbox-community/netbox.git synced 2024-05-10 07:54:54 +00:00

Update ObjectPermission.object_types to reference ObjectType

This commit is contained in:
Jeremy Stretch
2024-03-04 09:52:45 -05:00
parent 570f64784f
commit 01ee9c87b8
11 changed files with 78 additions and 56 deletions

View File

@@ -1,12 +1,12 @@
from django.conf import settings
from django.contrib.auth import authenticate
from django.contrib.auth import get_user_model
from django.contrib.contenttypes.models import ContentType
from drf_spectacular.utils import extend_schema_field
from drf_spectacular.types import OpenApiTypes
from rest_framework import serializers
from rest_framework.exceptions import AuthenticationFailed, PermissionDenied
from core.models import ObjectType
from netbox.api.fields import ContentTypeField, IPNetworkSerializer, SerializedPKRelatedField
from netbox.api.serializers import ValidatedModelSerializer
from users.models import Group, ObjectPermission, Token
@@ -161,7 +161,7 @@ class TokenProvisionSerializer(TokenSerializer):
class ObjectPermissionSerializer(ValidatedModelSerializer):
url = serializers.HyperlinkedIdentityField(view_name='users-api:objectpermission-detail')
object_types = ContentTypeField(
queryset=ContentType.objects.all(),
queryset=ObjectType.objects.all(),
many=True
)
groups = SerializedPKRelatedField(

View File

@@ -1,12 +1,12 @@
from django import forms
from django.conf import settings
from django.contrib.auth import get_user_model
from django.contrib.contenttypes.models import ContentType
from django.contrib.postgres.forms import SimpleArrayField
from django.core.exceptions import FieldError
from django.utils.html import mark_safe
from django.utils.translation import gettext_lazy as _
from core.models import ObjectType
from ipam.formfields import IPNetworkFormField
from ipam.validators import prefix_validator
from netbox.preferences import PREFERENCES
@@ -278,7 +278,7 @@ class GroupForm(forms.ModelForm):
class ObjectPermissionForm(forms.ModelForm):
object_types = ContentTypeMultipleChoiceField(
label=_('Object types'),
queryset=ContentType.objects.all(),
queryset=ObjectType.objects.all(),
limit_choices_to=OBJECTPERMISSION_OBJECT_TYPES,
widget=forms.SelectMultiple(attrs={'size': 6})
)

View File

@@ -0,0 +1,19 @@
# Generated by Django 5.0.1 on 2024-03-04 14:33
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('core', '0010_gfk_indexes'),
('users', '0006_custom_group_model'),
]
operations = [
migrations.AlterField(
model_name='objectpermission',
name='object_types',
field=models.ManyToManyField(limit_choices_to=models.Q(models.Q(models.Q(('app_label__in', ['account', 'admin', 'auth', 'contenttypes', 'sessions', 'taggit', 'users']), _negated=True), models.Q(('app_label', 'auth'), ('model__in', ['group', 'user'])), models.Q(('app_label', 'users'), ('model__in', ['objectpermission', 'token'])), _connector='OR')), related_name='object_permissions', to='core.objecttype'),
),
]

View File

@@ -383,7 +383,7 @@ class ObjectPermission(models.Model):
default=True
)
object_types = models.ManyToManyField(
to='contenttypes.ContentType',
to='core.ObjectType',
limit_choices_to=OBJECTPERMISSION_OBJECT_TYPES,
related_name='object_permissions'
)

View File

@@ -1,7 +1,7 @@
from django.contrib.auth import get_user_model
from django.contrib.contenttypes.models import ContentType
from django.urls import reverse
from core.models import ObjectType
from users.models import Group, ObjectPermission, Token
from utilities.testing import APIViewTestCases, APITestCase, create_test_user
from utilities.utils import deepmerge
@@ -64,7 +64,7 @@ class UserTest(APIViewTestCases.APIViewTestCase):
)
obj_perm.save()
obj_perm.users.add(self.user)
obj_perm.object_types.add(ContentType.objects.get_for_model(self.model))
obj_perm.object_types.add(ObjectType.objects.get_for_model(self.model))
user_credentials = {
'username': 'user1',
@@ -261,7 +261,7 @@ class ObjectPermissionTest(
)
User.objects.bulk_create(users)
object_type = ContentType.objects.get(app_label='dcim', model='device')
object_type = ObjectType.objects.get(app_label='dcim', model='device')
for i in range(3):
objectpermission = ObjectPermission(

View File

@@ -5,6 +5,7 @@ from django.contrib.contenttypes.models import ContentType
from django.test import TestCase
from django.utils.timezone import make_aware
from core.models import ObjectType
from users import filtersets
from users.models import Group, ObjectPermission, Token
from utilities.testing import BaseFilterSetTests
@@ -151,9 +152,9 @@ class ObjectPermissionTestCase(TestCase, BaseFilterSetTests):
User.objects.bulk_create(users)
object_types = (
ContentType.objects.get(app_label='dcim', model='site'),
ContentType.objects.get(app_label='dcim', model='rack'),
ContentType.objects.get(app_label='dcim', model='device'),
ObjectType.objects.get(app_label='dcim', model='site'),
ObjectType.objects.get(app_label='dcim', model='rack'),
ObjectType.objects.get(app_label='dcim', model='device'),
)
permissions = (