From ca44a654a573744eac95dc3253a72e78b589ba97 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Mon, 21 Mar 2022 16:35:24 -0400 Subject: [PATCH] Closes #8794: Support dynamic configuration for JournalEntry kinds --- docs/configuration/optional-settings.md | 1 + docs/plugins/development/models.md | 7 +++++-- netbox/extras/choices.py | 5 +++-- 3 files changed, 9 insertions(+), 4 deletions(-) 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'), - ) + ] #