choices.py 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252
  1. import logging
  2. from django.utils.translation import gettext_lazy as _
  3. from netbox.choices import ButtonColorChoices
  4. from utilities.choices import ChoiceSet
  5. #
  6. # CustomFields
  7. #
  8. class CustomFieldTypeChoices(ChoiceSet):
  9. TYPE_TEXT = 'text'
  10. TYPE_LONGTEXT = 'longtext'
  11. TYPE_INTEGER = 'integer'
  12. TYPE_DECIMAL = 'decimal'
  13. TYPE_BOOLEAN = 'boolean'
  14. TYPE_DATE = 'date'
  15. TYPE_DATETIME = 'datetime'
  16. TYPE_URL = 'url'
  17. TYPE_JSON = 'json'
  18. TYPE_SELECT = 'select'
  19. TYPE_MULTISELECT = 'multiselect'
  20. TYPE_OBJECT = 'object'
  21. TYPE_MULTIOBJECT = 'multiobject'
  22. CHOICES = (
  23. (TYPE_TEXT, _('Text')),
  24. (TYPE_LONGTEXT, _('Text (long)')),
  25. (TYPE_INTEGER, _('Integer')),
  26. (TYPE_DECIMAL, _('Decimal')),
  27. (TYPE_BOOLEAN, _('Boolean (true/false)')),
  28. (TYPE_DATE, _('Date')),
  29. (TYPE_DATETIME, _('Date & time')),
  30. (TYPE_URL, _('URL')),
  31. (TYPE_JSON, _('JSON')),
  32. (TYPE_SELECT, _('Selection')),
  33. (TYPE_MULTISELECT, _('Multiple selection')),
  34. (TYPE_OBJECT, _('Object')),
  35. (TYPE_MULTIOBJECT, _('Multiple objects')),
  36. )
  37. class CustomFieldFilterLogicChoices(ChoiceSet):
  38. FILTER_DISABLED = 'disabled'
  39. FILTER_LOOSE = 'loose'
  40. FILTER_EXACT = 'exact'
  41. CHOICES = (
  42. (FILTER_DISABLED, _('Disabled')),
  43. (FILTER_LOOSE, _('Loose')),
  44. (FILTER_EXACT, _('Exact')),
  45. )
  46. class CustomFieldUIVisibleChoices(ChoiceSet):
  47. ALWAYS = 'always'
  48. IF_SET = 'if-set'
  49. HIDDEN = 'hidden'
  50. CHOICES = (
  51. (ALWAYS, _('Always'), 'green'),
  52. (IF_SET, _('If set'), 'yellow'),
  53. (HIDDEN, _('Hidden'), 'gray'),
  54. )
  55. class CustomFieldUIEditableChoices(ChoiceSet):
  56. YES = 'yes'
  57. NO = 'no'
  58. HIDDEN = 'hidden'
  59. CHOICES = (
  60. (YES, _('Yes'), 'green'),
  61. (NO, _('No'), 'red'),
  62. (HIDDEN, _('Hidden'), 'gray'),
  63. )
  64. class CustomFieldChoiceSetBaseChoices(ChoiceSet):
  65. IATA = 'IATA'
  66. ISO_3166 = 'ISO_3166'
  67. UN_LOCODE = 'UN_LOCODE'
  68. CHOICES = (
  69. (IATA, 'IATA (Airport codes)'),
  70. (ISO_3166, 'ISO 3166 (Country codes)'),
  71. (UN_LOCODE, 'UN/LOCODE (Location codes)'),
  72. )
  73. #
  74. # CustomLinks
  75. #
  76. class CustomLinkButtonClassChoices(ButtonColorChoices):
  77. LINK = 'ghost-dark'
  78. CHOICES = (
  79. *ButtonColorChoices.CHOICES,
  80. (LINK, _('Link')),
  81. )
  82. #
  83. # Bookmarks
  84. #
  85. class BookmarkOrderingChoices(ChoiceSet):
  86. ORDERING_NEWEST = '-created'
  87. ORDERING_OLDEST = 'created'
  88. ORDERING_ALPHABETICAL_AZ = 'name'
  89. ORDERING_ALPHABETICAL_ZA = '-name'
  90. CHOICES = (
  91. (ORDERING_NEWEST, _('Newest')),
  92. (ORDERING_OLDEST, _('Oldest')),
  93. (ORDERING_ALPHABETICAL_AZ, _('Alphabetical (A-Z)')),
  94. (ORDERING_ALPHABETICAL_ZA, _('Alphabetical (Z-A)')),
  95. )
  96. #
  97. # Journal entries
  98. #
  99. class JournalEntryKindChoices(ChoiceSet):
  100. key = 'JournalEntry.kind'
  101. KIND_INFO = 'info'
  102. KIND_SUCCESS = 'success'
  103. KIND_WARNING = 'warning'
  104. KIND_DANGER = 'danger'
  105. CHOICES = [
  106. (KIND_INFO, _('Info'), 'cyan'),
  107. (KIND_SUCCESS, _('Success'), 'green'),
  108. (KIND_WARNING, _('Warning'), 'yellow'),
  109. (KIND_DANGER, _('Danger'), 'red'),
  110. ]
  111. #
  112. # Reports and Scripts
  113. #
  114. class LogLevelChoices(ChoiceSet):
  115. LOG_DEBUG = 'debug'
  116. LOG_INFO = 'info'
  117. LOG_SUCCESS = 'success'
  118. LOG_WARNING = 'warning'
  119. LOG_FAILURE = 'failure'
  120. CHOICES = (
  121. (LOG_DEBUG, _('Debug'), 'teal'),
  122. (LOG_INFO, _('Info'), 'cyan'),
  123. (LOG_SUCCESS, _('Success'), 'green'),
  124. (LOG_WARNING, _('Warning'), 'yellow'),
  125. (LOG_FAILURE, _('Failure'), 'red'),
  126. )
  127. SYSTEM_LEVELS = {
  128. LOG_DEBUG: logging.DEBUG,
  129. LOG_INFO: logging.INFO,
  130. LOG_SUCCESS: logging.INFO,
  131. LOG_WARNING: logging.WARNING,
  132. LOG_FAILURE: logging.ERROR,
  133. }
  134. #
  135. # Webhooks
  136. #
  137. class WebhookHttpMethodChoices(ChoiceSet):
  138. METHOD_GET = 'GET'
  139. METHOD_POST = 'POST'
  140. METHOD_PUT = 'PUT'
  141. METHOD_PATCH = 'PATCH'
  142. METHOD_DELETE = 'DELETE'
  143. CHOICES = (
  144. (METHOD_GET, 'GET'),
  145. (METHOD_POST, 'POST'),
  146. (METHOD_PUT, 'PUT'),
  147. (METHOD_PATCH, 'PATCH'),
  148. (METHOD_DELETE, 'DELETE'),
  149. )
  150. #
  151. # Dashboard widgets
  152. #
  153. class DashboardWidgetColorChoices(ChoiceSet):
  154. BLUE = 'blue'
  155. INDIGO = 'indigo'
  156. PURPLE = 'purple'
  157. PINK = 'pink'
  158. RED = 'red'
  159. ORANGE = 'orange'
  160. YELLOW = 'yellow'
  161. GREEN = 'green'
  162. TEAL = 'teal'
  163. CYAN = 'cyan'
  164. GRAY = 'gray'
  165. BLACK = 'black'
  166. WHITE = 'white'
  167. CHOICES = (
  168. (BLUE, _('Blue')),
  169. (INDIGO, _('Indigo')),
  170. (PURPLE, _('Purple')),
  171. (PINK, _('Pink')),
  172. (RED, _('Red')),
  173. (ORANGE, _('Orange')),
  174. (YELLOW, _('Yellow')),
  175. (GREEN, _('Green')),
  176. (TEAL, _('Teal')),
  177. (CYAN, _('Cyan')),
  178. (GRAY, _('Gray')),
  179. (BLACK, _('Black')),
  180. (WHITE, _('White')),
  181. )
  182. #
  183. # Event Rules
  184. #
  185. class EventRuleActionChoices(ChoiceSet):
  186. WEBHOOK = 'webhook'
  187. SCRIPT = 'script'
  188. NOTIFICATION = 'notification'
  189. CHOICES = (
  190. (WEBHOOK, _('Webhook')),
  191. (SCRIPT, _('Script')),
  192. (NOTIFICATION, _('Notification')),
  193. )