class UserOption(Model): """ User options apply only to a user, and optionally a project OR an organization. Options which are specific to a plugin should namespace their key. e.g. key='myplugin:optname' Keeping user feature state key: "feature:assignment" value: { updated: datetime, state: bool } """ __core__ = True user = FlexibleForeignKey(settings.AUTH_USER_MODEL) project = FlexibleForeignKey("sentry.Project", null=True) organization = FlexibleForeignKey("sentry.Organization", null=True) key = models.CharField(max_length=64) value = EncryptedPickledObjectField() objects = UserOptionManager() class Meta: app_label = "sentry" db_table = "sentry_useroption" unique_together = (("user", "project", "key"), ("user", "organization", "key")) __repr__ = sane_repr("user_id", "project_id", "organization_id", "key", "value")
class OrganizationOption(Model): """ Organization options apply only to an instance of a organization. Options which are specific to a plugin should namespace their key. e.g. key='myplugin:optname' key: onboarding:complete value: { updated: datetime } """ __core__ = True organization = FlexibleForeignKey("sentry.Organization") key = models.CharField(max_length=64) value = EncryptedPickledObjectField() objects = OrganizationOptionManager() class Meta: app_label = "sentry" db_table = "sentry_organizationoptions" unique_together = (("organization", "key"), ) __repr__ = sane_repr("organization_id", "key", "value")
class UserOption(Model): """ User options apply only to a user, and optionally a project. Options which are specific to a plugin should namespace their key. e.g. key='myplugin:optname' Keeping user feature state key: "feature:assignment" value: { updated: datetime, state: bool } """ __core__ = True user = FlexibleForeignKey(settings.AUTH_USER_MODEL) project = FlexibleForeignKey('sentry.Project', null=True) key = models.CharField(max_length=64) value = EncryptedPickledObjectField() objects = UserOptionManager() class Meta: app_label = 'sentry' db_table = 'sentry_useroption' unique_together = (('user', 'project', 'key',),) __repr__ = sane_repr('user_id', 'project_id', 'key', 'value')
class Option(Model): """ Global options which apply in most situations as defaults, and generally can be overwritten by per-project options. Options which are specific to a plugin should namespace their key. e.g. key='myplugin:optname' """ __core__ = True key = models.CharField(max_length=64, unique=True) value = EncryptedPickledObjectField() last_updated = models.DateTimeField(default=timezone.now) class Meta: app_label = 'sentry' db_table = 'sentry_option' __repr__ = sane_repr('key', 'value')
class ProjectOption(Model): """ Project options apply only to an instance of a project. Options which are specific to a plugin should namespace their key. e.g. key='myplugin:optname' """ __include_in_export__ = True project = FlexibleForeignKey("sentry.Project") key = models.CharField(max_length=64) value = EncryptedPickledObjectField() objects = ProjectOptionManager() class Meta: app_label = "sentry" db_table = "sentry_projectoptions" unique_together = (("project", "key"), ) __repr__ = sane_repr("project_id", "key", "value")
class ProjectOption(Model): """ Project options apply only to an instance of a project. Options which are specific to a plugin should namespace their key. e.g. key='myplugin:optname' """ __core__ = True project = FlexibleForeignKey('sentry.Project') key = models.CharField(max_length=64) value = EncryptedPickledObjectField() objects = ProjectOptionManager() class Meta: app_label = 'sentry' db_table = 'sentry_projectoptions' unique_together = (( 'project', 'key', ), ) __repr__ = sane_repr('project_id', 'key', 'value')
class UserOption(Model): """ User options apply only to a user, and optionally a project OR an organization. Options which are specific to a plugin should namespace their key. e.g. key='myplugin:optname' Keeping user feature state key: "feature:assignment" value: { updated: datetime, state: bool } where key is one of: (please add to this list if adding new keys) - clock_24_hours - 12hr vs. 24hr - issue:defaults - only used in Jira, set default reporter field - issues:defaults:jira - unused - issues:defaults:jira_server - unused - language - which language to display the app in - mail:email - which email address to send an email to - reports:disabled-organizations - which orgs to not send weekly reports to - seen_release_broadcast - unused - self_assign_issue - "Claim Unassigned Issues I've Resolved" - self_notifications - "Notify Me About My Own Activity" - stacktrace_order - default, most recent first, most recent last - subscribe_by_default - "Only On Issues I Subscribe To", "Only On Deploys With My Commits" - subscribe_notes - unused - timezone - user's timezone to display timestamps - theme - dark, light, or default - twilio:alert - unused - workflow_notifications - unused """ __core__ = True user = FlexibleForeignKey(settings.AUTH_USER_MODEL) project = FlexibleForeignKey("sentry.Project", null=True) organization = FlexibleForeignKey("sentry.Organization", null=True) key = models.CharField(max_length=64) value = EncryptedPickledObjectField() objects = UserOptionManager() class Meta: app_label = "sentry" db_table = "sentry_useroption" unique_together = (("user", "project", "key"), ("user", "organization", "key")) __repr__ = sane_repr("user_id", "project_id", "organization_id", "key", "value")