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

Closes #3545: Add MultiObjectVar for custom scripts

This commit is contained in:
Jeremy Stretch
2019-10-09 15:06:00 -04:00
parent 738368a6a1
commit d402b6c3e5
3 changed files with 43 additions and 1 deletions

View File

@ -11,7 +11,7 @@ from django import forms
from django.conf import settings
from django.core.validators import RegexValidator
from django.db import transaction
from mptt.forms import TreeNodeChoiceField
from mptt.forms import TreeNodeChoiceField, TreeNodeMultipleChoiceField
from mptt.models import MPTTModel
from ipam.formfields import IPFormField
@ -27,6 +27,7 @@ __all__ = [
'FileVar',
'IntegerVar',
'IPNetworkVar',
'MultiObjectVar',
'ObjectVar',
'Script',
'StringVar',
@ -149,6 +150,23 @@ class ObjectVar(ScriptVariable):
self.form_field = TreeNodeChoiceField
class MultiObjectVar(ScriptVariable):
"""
Like ObjectVar, but can represent one or more objects.
"""
form_field = forms.ModelMultipleChoiceField
def __init__(self, queryset, *args, **kwargs):
super().__init__(*args, **kwargs)
# Queryset for field choices
self.field_attrs['queryset'] = queryset
# Update form field for MPTT (nested) objects
if issubclass(queryset.model, MPTTModel):
self.form_field = TreeNodeMultipleChoiceField
class FileVar(ScriptVariable):
"""
An uploaded file.