content: from django.utils.translation import gettext_lazy as _
  
  from utilities.choices import ChoiceSet
  
  
  #
  # Data sources
  #
  
  class DataSourceStatusChoices(ChoiceSet):
      NEW = 'new'
      QUEUED = 'queued'
      SYNCING = 'syncing'
      COMPLETED = 'completed'
      FAILED = 'failed'
  
      CHOICES = (
          (NEW, _('New'), 'blue'),
          (QUEUED, _('Queued'), 'orange'),
          (SYNCING, _('Syncing'), 'cyan'),
          (COMPLETED, _('Completed'), 'green'),
          (FAILED, _('Failed'), 'red'),
      )
  
  
  #
  # Managed files
  #
  
  class ManagedFileRootPathChoices(ChoiceSet):
      SCRIPTS = 'scripts'  # settings.SCRIPTS_ROOT
      REPORTS = 'reports'  # settings.REPORTS_ROOT
  
      CHOICES = (
          (SCRIPTS, _('Scripts')),
          (REPORTS, _('Reports')),
      )
  
  
  #
  # Jobs
  #
  
  class JobStatusChoices(ChoiceSet):
  
      STATUS_PENDING = 'pending'
      STATUS_SCHEDULED = 'scheduled'
      STATUS_RUNNING = 'running'
      STATUS_COMPLETED = 'completed'
      STATUS_ERRORED = 'errored'
      STATUS_FAILED = 'failed'
  
      CHOICES = (
          (STATUS_PENDING, _('Pending'), 'cyan'),
          (STATUS_SCHEDULED, _('Scheduled'), 'gray'),
          (STATUS_RUNNING, _('Running'), 'blue'),
          (STATUS_COMPLETED, _('Completed'), 'green'),
          (STATUS_ERRORED, _('Errored'), 'red'),
          (STATUS_FAILED, _('Failed'), 'red'),
      )
  
      ENQUEUED_STATE_CHOICES = (
          STATUS_PENDING,
          STATUS_SCHEDULED,
          STATUS_RUNNING,
      )
  
      TERMINAL_STATE_CHOICES = (
          STATUS_COMPLETED,
          STATUS_ERRORED,
          STATUS_FAILED,
      )
  
  
  class JobIntervalChoices(ChoiceSet):
      INTERVAL_MINUTELY = 1
      INTERVAL_HOURLY = 60
      INTERVAL_DAILY = 60 * 24
      INTERVAL_WEEKLY = 60 * 24 * 7
  
      CHOICES = (
          (INTERVAL_MINUTELY, _('Minutely')),
          (INTERVAL_HOURLY, _('Hourly')),
          (INTERVAL_HOURLY * 12, _('12 hours')),
          (INTERVAL_DAILY, _('Daily')),
          (INTERVAL_WEEKLY, _('Weekly')),
          (INTERVAL_DAILY * 30, _('30 days')),
      )
  
  
  #
  # ObjectChanges
  #
  
  class ObjectChangeActionChoices(ChoiceSet):
  
      ACTION_CREATE = 'create'
      ACTION_UPDATE = 'update'
      ACTION_DELETE = 'delete'
  
      CHOICES = (
          (ACTION_CREATE, _('Created'), 'green'),
          (ACTION_UPDATE, _('Updated'), 'blue'),
          (ACTION_DELETE, _('Deleted'), 'red'),
      )
  