Skip to content

TypeError at /admin/users/objectpermission/2/change/ #5273

@contemno

Description

@contemno

Environment

  • Python version: 3.7.9
  • NetBox version: 2.9.7

Steps to Reproduce

  1. Create a (objectpermission?) permission with no object types selected but do specify constraints
  2. save
  3. see exception

Expected Behavior

Save the permission, or display some sort of feedback that an object type must be specified if constraints are present

Observed Behavior

Django error, stack trace

Further details

Seems that the problem is in users/admin.py in the method 'clean' in the class 'ObjectPermissionForm', line 192. The assumption is that object_types is a list, but if not specified by the user it is a NoneType, which is not iterable.

            for ct in object_types:

Proposed solution 1

Allow the form to be saved without validating the constraints field by changing line 172 to default object_types to an empty list if the user doesn't specify any object types for the permission to apply to.

      object_types = self.cleaned_data.get('object_types', [])

This is will allow the 'for' loop on line 192 to pass through without taking any action.

Proposed solution 2

Provide validation error feedback to the user by inserting a conditional at line 192:

            if not object_types:
                raise ValidationError("At least one Object Type must be selected.")

Metadata

Metadata

Assignees

Labels

status: acceptedThis issue has been accepted for implementationtype: bugA confirmed report of unexpected behavior in the application

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions