choices.py 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282
  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_DEFAULT = 'default'
  117. LOG_INFO = 'info'
  118. LOG_SUCCESS = 'success'
  119. LOG_WARNING = 'warning'
  120. LOG_FAILURE = 'failure'
  121. CHOICES = (
  122. (LOG_DEBUG, _('Debug'), 'teal'),
  123. (LOG_DEFAULT, _('Default'), 'gray'),
  124. (LOG_INFO, _('Info'), 'cyan'),
  125. (LOG_SUCCESS, _('Success'), 'green'),
  126. (LOG_WARNING, _('Warning'), 'yellow'),
  127. (LOG_FAILURE, _('Failure'), 'red'),
  128. )
  129. SYSTEM_LEVELS = {
  130. LOG_DEBUG: logging.DEBUG,
  131. LOG_DEFAULT: logging.INFO,
  132. LOG_INFO: logging.INFO,
  133. LOG_SUCCESS: logging.INFO,
  134. LOG_WARNING: logging.WARNING,
  135. LOG_FAILURE: logging.ERROR,
  136. }
  137. class DurationChoices(ChoiceSet):
  138. CHOICES = (
  139. (60, _('Hourly')),
  140. (720, _('12 hours')),
  141. (1440, _('Daily')),
  142. (10080, _('Weekly')),
  143. (43200, _('30 days')),
  144. )
  145. #
  146. # Webhooks
  147. #
  148. class WebhookHttpMethodChoices(ChoiceSet):
  149. METHOD_GET = 'GET'
  150. METHOD_POST = 'POST'
  151. METHOD_PUT = 'PUT'
  152. METHOD_PATCH = 'PATCH'
  153. METHOD_DELETE = 'DELETE'
  154. CHOICES = (
  155. (METHOD_GET, 'GET'),
  156. (METHOD_POST, 'POST'),
  157. (METHOD_PUT, 'PUT'),
  158. (METHOD_PATCH, 'PATCH'),
  159. (METHOD_DELETE, 'DELETE'),
  160. )
  161. #
  162. # Staging
  163. #
  164. class ChangeActionChoices(ChoiceSet):
  165. ACTION_CREATE = 'create'
  166. ACTION_UPDATE = 'update'
  167. ACTION_DELETE = 'delete'
  168. CHOICES = (
  169. (ACTION_CREATE, _('Create'), 'green'),
  170. (ACTION_UPDATE, _('Update'), 'blue'),
  171. (ACTION_DELETE, _('Delete'), 'red'),
  172. )
  173. #
  174. # Dashboard widgets
  175. #
  176. class DashboardWidgetColorChoices(ChoiceSet):
  177. BLUE = 'blue'
  178. INDIGO = 'indigo'
  179. PURPLE = 'purple'
  180. PINK = 'pink'
  181. RED = 'red'
  182. ORANGE = 'orange'
  183. YELLOW = 'yellow'
  184. GREEN = 'green'
  185. TEAL = 'teal'
  186. CYAN = 'cyan'
  187. GRAY = 'gray'
  188. BLACK = 'black'
  189. WHITE = 'white'
  190. CHOICES = (
  191. (BLUE, _('Blue')),
  192. (INDIGO, _('Indigo')),
  193. (PURPLE, _('Purple')),
  194. (PINK, _('Pink')),
  195. (RED, _('Red')),
  196. (ORANGE, _('Orange')),
  197. (YELLOW, _('Yellow')),
  198. (GREEN, _('Green')),
  199. (TEAL, _('Teal')),
  200. (CYAN, _('Cyan')),
  201. (GRAY, _('Gray')),
  202. (BLACK, _('Black')),
  203. (WHITE, _('White')),
  204. )
  205. #
  206. # Event Rules
  207. #
  208. class EventRuleActionChoices(ChoiceSet):
  209. WEBHOOK = 'webhook'
  210. SCRIPT = 'script'
  211. NOTIFICATION = 'notification'
  212. CHOICES = (
  213. (WEBHOOK, _('Webhook')),
  214. (SCRIPT, _('Script')),
  215. (NOTIFICATION, _('Notification')),
  216. )