-
Notifications
You must be signed in to change notification settings - Fork 2.9k
Description
Environment
- Python version: 3.7.9
- NetBox version: 2.9.7
Steps to Reproduce
- Create a (objectpermission?) permission with no object types selected but do specify constraints
- save
- 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.")