choices.py 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322
  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. CHOICES = (
  89. (ORDERING_NEWEST, _('Newest')),
  90. (ORDERING_OLDEST, _('Oldest')),
  91. )
  92. #
  93. # ObjectChanges
  94. #
  95. class ObjectChangeActionChoices(ChoiceSet):
  96. ACTION_CREATE = 'create'
  97. ACTION_UPDATE = 'update'
  98. ACTION_DELETE = 'delete'
  99. CHOICES = (
  100. (ACTION_CREATE, _('Created'), 'green'),
  101. (ACTION_UPDATE, _('Updated'), 'blue'),
  102. (ACTION_DELETE, _('Deleted'), 'red'),
  103. )
  104. #
  105. # Journal entries
  106. #
  107. class JournalEntryKindChoices(ChoiceSet):
  108. key = 'JournalEntry.kind'
  109. KIND_INFO = 'info'
  110. KIND_SUCCESS = 'success'
  111. KIND_WARNING = 'warning'
  112. KIND_DANGER = 'danger'
  113. CHOICES = [
  114. (KIND_INFO, _('Info'), 'cyan'),
  115. (KIND_SUCCESS, _('Success'), 'green'),
  116. (KIND_WARNING, _('Warning'), 'yellow'),
  117. (KIND_DANGER, _('Danger'), 'red'),
  118. ]
  119. #
  120. # Reports and Scripts
  121. #
  122. class LogLevelChoices(ChoiceSet):
  123. LOG_DEBUG = 'debug'
  124. LOG_DEFAULT = 'default'
  125. LOG_SUCCESS = 'success'
  126. LOG_INFO = 'info'
  127. LOG_WARNING = 'warning'
  128. LOG_FAILURE = 'failure'
  129. CHOICES = (
  130. (LOG_DEBUG, _('Debug'), 'teal'),
  131. (LOG_DEFAULT, _('Default'), 'gray'),
  132. (LOG_SUCCESS, _('Success'), 'green'),
  133. (LOG_INFO, _('Info'), 'cyan'),
  134. (LOG_WARNING, _('Warning'), 'yellow'),
  135. (LOG_FAILURE, _('Failure'), 'red'),
  136. )
  137. SYSTEM_LEVELS = {
  138. LOG_DEBUG: logging.DEBUG,
  139. LOG_DEFAULT: logging.INFO,
  140. LOG_SUCCESS: logging.INFO,
  141. LOG_INFO: logging.INFO,
  142. LOG_WARNING: logging.WARNING,
  143. LOG_FAILURE: logging.ERROR,
  144. }
  145. class DurationChoices(ChoiceSet):
  146. CHOICES = (
  147. (60, _('Hourly')),
  148. (720, _('12 hours')),
  149. (1440, _('Daily')),
  150. (10080, _('Weekly')),
  151. (43200, _('30 days')),
  152. )
  153. #
  154. # Job results
  155. #
  156. class JobResultStatusChoices(ChoiceSet):
  157. STATUS_PENDING = 'pending'
  158. STATUS_SCHEDULED = 'scheduled'
  159. STATUS_RUNNING = 'running'
  160. STATUS_COMPLETED = 'completed'
  161. STATUS_ERRORED = 'errored'
  162. STATUS_FAILED = 'failed'
  163. CHOICES = (
  164. (STATUS_PENDING, _('Pending'), 'cyan'),
  165. (STATUS_SCHEDULED, _('Scheduled'), 'gray'),
  166. (STATUS_RUNNING, _('Running'), 'blue'),
  167. (STATUS_COMPLETED, _('Completed'), 'green'),
  168. (STATUS_ERRORED, _('Errored'), 'red'),
  169. (STATUS_FAILED, _('Failed'), 'red'),
  170. )
  171. TERMINAL_STATE_CHOICES = (
  172. STATUS_COMPLETED,
  173. STATUS_ERRORED,
  174. STATUS_FAILED,
  175. )
  176. #
  177. # Webhooks
  178. #
  179. class WebhookHttpMethodChoices(ChoiceSet):
  180. METHOD_GET = 'GET'
  181. METHOD_POST = 'POST'
  182. METHOD_PUT = 'PUT'
  183. METHOD_PATCH = 'PATCH'
  184. METHOD_DELETE = 'DELETE'
  185. CHOICES = (
  186. (METHOD_GET, 'GET'),
  187. (METHOD_POST, 'POST'),
  188. (METHOD_PUT, 'PUT'),
  189. (METHOD_PATCH, 'PATCH'),
  190. (METHOD_DELETE, 'DELETE'),
  191. )
  192. #
  193. # Staging
  194. #
  195. class ChangeActionChoices(ChoiceSet):
  196. ACTION_CREATE = 'create'
  197. ACTION_UPDATE = 'update'
  198. ACTION_DELETE = 'delete'
  199. CHOICES = (
  200. (ACTION_CREATE, _('Create'), 'green'),
  201. (ACTION_UPDATE, _('Update'), 'blue'),
  202. (ACTION_DELETE, _('Delete'), 'red'),
  203. )
  204. #
  205. # Dashboard widgets
  206. #
  207. class DashboardWidgetColorChoices(ChoiceSet):
  208. BLUE = 'blue'
  209. INDIGO = 'indigo'
  210. PURPLE = 'purple'
  211. PINK = 'pink'
  212. RED = 'red'
  213. ORANGE = 'orange'
  214. YELLOW = 'yellow'
  215. GREEN = 'green'
  216. TEAL = 'teal'
  217. CYAN = 'cyan'
  218. GRAY = 'gray'
  219. BLACK = 'black'
  220. WHITE = 'white'
  221. CHOICES = (
  222. (BLUE, _('Blue')),
  223. (INDIGO, _('Indigo')),
  224. (PURPLE, _('Purple')),
  225. (PINK, _('Pink')),
  226. (RED, _('Red')),
  227. (ORANGE, _('Orange')),
  228. (YELLOW, _('Yellow')),
  229. (GREEN, _('Green')),
  230. (TEAL, _('Teal')),
  231. (CYAN, _('Cyan')),
  232. (GRAY, _('Gray')),
  233. (BLACK, _('Black')),
  234. (WHITE, _('White')),
  235. )
  236. #
  237. # Event Rules
  238. #
  239. class EventRuleActionChoices(ChoiceSet):
  240. WEBHOOK = 'webhook'
  241. SCRIPT = 'script'
  242. CHOICES = (
  243. (WEBHOOK, _('Webhook')),
  244. (SCRIPT, _('Script')),
  245. )