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

Closed
opened 2025-12-29 18:33:55 +01:00 by adam · 0 comments
Owner

Originally created by @contemno on GitHub (Oct 27, 2020).

Originally assigned to: @jeremystretch on GitHub.

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.")
Originally created by @contemno on GitHub (Oct 27, 2020). Originally assigned to: @jeremystretch on GitHub. <!-- NOTE: IF YOUR ISSUE DOES NOT FOLLOW THIS TEMPLATE, IT WILL BE CLOSED. This form is only for reproducible bugs. If you need assistance with NetBox installation, or if you have a general question, DO NOT open an issue. Instead, post to our mailing list: https://groups.google.com/g/netbox-discuss Please describe the environment in which you are running NetBox. Be sure that you are running an unmodified instance of the latest stable release before submitting a bug report, and that any plugins have been disabled. --> ### Environment * Python version: 3.7.9 * NetBox version: 2.9.7 <!-- Describe in detail the exact steps that someone else can take to reproduce this bug using the current stable release of NetBox. Begin with the creation of any necessary database objects and call out every operation being performed explicitly. If reporting a bug in the REST API, be sure to reconstruct the raw HTTP request(s) being made: Don't rely on a client library such as pynetbox. --> ### Steps to Reproduce 1. Create a (objectpermission?) permission with no object types selected but do specify constraints 2. save 3. see exception <!-- What did you expect to happen? --> ### Expected Behavior Save the permission, or display some sort of feedback that an object type must be specified if constraints are present <!-- What happened instead? --> ### 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. ```python 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. ```python 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: ```python if not object_types: raise ValidationError("At least one Object Type must be selected.") ```
adam added the type: bugstatus: accepted labels 2025-12-29 18:33:55 +01:00
adam closed this issue 2025-12-29 18:33:55 +01:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/netbox#4218