diff --git a/docs/configuration/optional-settings.md b/docs/configuration/optional-settings.md index ef416533a..76fd0a12c 100644 --- a/docs/configuration/optional-settings.md +++ b/docs/configuration/optional-settings.md @@ -207,6 +207,7 @@ The following model fields support configurable choices: * `dcim.PowerFeed.status` * `dcim.Rack.status` * `dcim.Site.status` +* `extras.JournalEntry.kind` * `ipam.IPAddress.status` * `ipam.IPRange.status` * `ipam.Prefix.status` diff --git a/docs/plugins/development/models.md b/docs/plugins/development/models.md index a0f663ee6..0e1fec6e5 100644 --- a/docs/plugins/development/models.md +++ b/docs/plugins/development/models.md @@ -161,13 +161,16 @@ class StatusChoices(ChoiceSet): STATUS_BAR = 'bar' STATUS_BAZ = 'baz' - CHOICES = ( + CHOICES = [ (STATUS_FOO, 'Foo', 'red'), (STATUS_BAR, 'Bar', 'green'), (STATUS_BAZ, 'Baz', 'blue'), - ) + ] ``` +!!! warning + For dynamic configuration to work properly, `CHOICES` must be a mutable list, rather than a tuple. + ```python # models.py from django.db import models diff --git a/netbox/extras/choices.py b/netbox/extras/choices.py index 0632c2b1f..f14368d3d 100644 --- a/netbox/extras/choices.py +++ b/netbox/extras/choices.py @@ -83,18 +83,19 @@ class ObjectChangeActionChoices(ChoiceSet): # class JournalEntryKindChoices(ChoiceSet): + key = 'JournalEntry.kind' KIND_INFO = 'info' KIND_SUCCESS = 'success' KIND_WARNING = 'warning' KIND_DANGER = 'danger' - CHOICES = ( + CHOICES = [ (KIND_INFO, 'Info', 'cyan'), (KIND_SUCCESS, 'Success', 'green'), (KIND_WARNING, 'Warning', 'yellow'), (KIND_DANGER, 'Danger', 'red'), - ) + ] #