From 65d00143697d10990129cf717f6ca734768c5bcd Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Wed, 19 Feb 2025 09:15:40 -0500 Subject: [PATCH] Update extras enums --- netbox/dcim/graphql/enums.py | 1 - netbox/extras/graphql/enums.py | 200 +++---------------------------- netbox/extras/graphql/filters.py | 4 +- 3 files changed, 22 insertions(+), 183 deletions(-) diff --git a/netbox/dcim/graphql/enums.py b/netbox/dcim/graphql/enums.py index f9c40bc11..a60c0df14 100644 --- a/netbox/dcim/graphql/enums.py +++ b/netbox/dcim/graphql/enums.py @@ -38,7 +38,6 @@ __all__ = ( 'SiteStatusEnum', 'SubdeviceRoleEnum', 'VirtualDeviceContextStatusEnum', - ) CableEndEnum = strawberry.enum(CableEndChoices.as_enum()) diff --git a/netbox/extras/graphql/enums.py b/netbox/extras/graphql/enums.py index 1e44e9191..0d352b835 100644 --- a/netbox/extras/graphql/enums.py +++ b/netbox/extras/graphql/enums.py @@ -1,188 +1,26 @@ -from enum import Enum import strawberry -__all__ = [ - 'CustomFieldTypeEnum', - 'CustomFieldFilterLogicEnum', - 'CustomFieldUIVisibleEnum', - 'CustomFieldUIEditableEnum', +from extras.choices import * + +__all__ = ( 'CustomFieldChoiceSetBaseEnum', + 'CustomFieldFilterLogicEnum', + 'CustomFieldTypeEnum', + 'CustomFieldUIEditableEnum', + 'CustomFieldUIVisibleEnum', 'CustomLinkButtonClassEnum', - 'BookmarkOrderingEnum', - 'JournalEntryKindEnum', - 'LogLevelEnum', - 'DurationEnum', - 'WebhookHttpMethodEnum', - 'ChangeActionEnum', - 'DashboardWidgetColorEnum', 'EventRuleActionEnum', -] - -# -# CustomFields -# + 'JournalEntryKindEnum', + 'WebhookHttpMethodEnum', +) -@strawberry.enum -class CustomFieldTypeEnum(Enum): - TYPE_TEXT = 'text' - TYPE_LONGTEXT = 'longtext' - TYPE_INTEGER = 'integer' - TYPE_DECIMAL = 'decimal' - TYPE_BOOLEAN = 'boolean' - TYPE_DATE = 'date' - TYPE_DATETIME = 'datetime' - TYPE_URL = 'url' - TYPE_JSON = 'json' - TYPE_SELECT = 'select' - TYPE_MULTISELECT = 'multiselect' - TYPE_OBJECT = 'object' - TYPE_MULTIOBJECT = 'multiobject' - - -@strawberry.enum -class CustomFieldFilterLogicEnum(Enum): - FILTER_DISABLED = 'disabled' - FILTER_LOOSE = 'loose' - FILTER_EXACT = 'exact' - - -@strawberry.enum -class CustomFieldUIVisibleEnum(Enum): - ALWAYS = 'always' - IF_SET = 'if-set' - HIDDEN = 'hidden' - - -@strawberry.enum -class CustomFieldUIEditableEnum(Enum): - YES = 'yes' - NO = 'no' - HIDDEN = 'hidden' - - -@strawberry.enum -class CustomFieldChoiceSetBaseEnum(Enum): - IATA = 'IATA' - ISO_3166 = 'ISO_3166' - UN_LOCODE = 'UN_LOCODE' - - -# -# CustomLinks -# - - -@strawberry.enum -class CustomLinkButtonClassEnum(Enum): - LINK = 'ghost-dark' - - -# -# Bookmarks -# - - -@strawberry.enum -class BookmarkOrderingEnum(Enum): - ORDERING_NEWEST = '-created' - ORDERING_OLDEST = 'created' - ORDERING_ALPHABETICAL_AZ = 'name' - ORDERING_ALPHABETICAL_ZA = '-name' - - -# -# Journal entries -# - - -@strawberry.enum -class JournalEntryKindEnum(Enum): - KIND_INFO = 'info' - KIND_SUCCESS = 'success' - KIND_WARNING = 'warning' - KIND_DANGER = 'danger' - - -# -# Reports and Scripts -# - - -@strawberry.enum -class LogLevelEnum(Enum): - LOG_DEBUG = 'debug' - LOG_DEFAULT = 'default' - LOG_INFO = 'info' - LOG_SUCCESS = 'success' - LOG_WARNING = 'warning' - LOG_FAILURE = 'failure' - - -@strawberry.enum -class DurationEnum(Enum): - HOURLY = 60 - TWELVE_HOURS = 720 - DAILY = 1440 - WEEKLY = 10080 - THIRTY_DAYS = 43200 - - -# -# Webhooks -# - - -@strawberry.enum -class WebhookHttpMethodEnum(Enum): - METHOD_GET = 'GET' - METHOD_POST = 'POST' - METHOD_PUT = 'PUT' - METHOD_PATCH = 'PATCH' - METHOD_DELETE = 'DELETE' - - -# -# Staging -# - - -@strawberry.enum -class ChangeActionEnum(Enum): - ACTION_CREATE = 'create' - ACTION_UPDATE = 'update' - ACTION_DELETE = 'delete' - - -# -# Dashboard widgets -# - - -@strawberry.enum -class DashboardWidgetColorEnum(Enum): - BLUE = 'blue' - INDIGO = 'indigo' - PURPLE = 'purple' - PINK = 'pink' - RED = 'red' - ORANGE = 'orange' - YELLOW = 'yellow' - GREEN = 'green' - TEAL = 'teal' - CYAN = 'cyan' - GRAY = 'gray' - BLACK = 'black' - WHITE = 'white' - - -# -# Event Rules -# - - -@strawberry.enum -class EventRuleActionEnum(Enum): - WEBHOOK = 'webhook' - SCRIPT = 'script' - NOTIFICATION = 'notification' +CustomFieldChoiceSetBaseEnum = strawberry.enum(CustomFieldChoiceSetBaseChoices.as_enum()) +CustomFieldFilterLogicEnum = strawberry.enum(CustomFieldFilterLogicChoices.as_enum()) +CustomFieldTypeEnum = strawberry.enum(CustomFieldTypeChoices.as_enum()) +CustomFieldUIEditableEnum = strawberry.enum(CustomFieldUIEditableChoices.as_enum()) +CustomFieldUIVisibleEnum = strawberry.enum(CustomFieldUIVisibleChoices.as_enum()) +CustomLinkButtonClassEnum = strawberry.enum(CustomLinkButtonClassChoices.as_enum()) +EventRuleActionEnum = strawberry.enum(EventRuleActionChoices.as_enum()) +JournalEntryKindEnum = strawberry.enum(JournalEntryKindChoices.as_enum()) +WebhookHttpMethodEnum = strawberry.enum(WebhookHttpMethodChoices.as_enum()) diff --git a/netbox/extras/graphql/filters.py b/netbox/extras/graphql/filters.py index 7fc390b54..733fb6423 100644 --- a/netbox/extras/graphql/filters.py +++ b/netbox/extras/graphql/filters.py @@ -184,7 +184,9 @@ class CustomLinkFilter(BaseObjectTypeFilterMixin, ChangeLogFilterMixin): strawberry_django.filter_field() ) group_name: FilterLookup[str] | None = strawberry_django.filter_field() - button_class: FilterLookup[str] | None = strawberry_django.filter_field() + button_class: Annotated['CustomLinkButtonClassEnum', strawberry.lazy('extras.graphql.enums')] | None = ( + strawberry_django.filter_field() + ) new_window: FilterLookup[bool] | None = strawberry_django.filter_field()