|
@@ -0,0 +1,7745 @@
|
|
|
+# Generated by Django 1.11.29 on 2021-06-11 17:10
|
|
|
+
|
|
|
+import django.db.migrations.operations.special
|
|
|
+import django.db.models.deletion
|
|
|
+import django.db.models.manager
|
|
|
+import django.utils.timezone
|
|
|
+from django.conf import settings
|
|
|
+from django.db import migrations, models
|
|
|
+
|
|
|
+import bitfield.models
|
|
|
+import sentry.db.mixin
|
|
|
+import sentry.db.models.fields.array
|
|
|
+import sentry.db.models.fields.bounded
|
|
|
+import sentry.db.models.fields.citext
|
|
|
+import sentry.db.models.fields.encrypted
|
|
|
+import sentry.db.models.fields.foreignkey
|
|
|
+import sentry.db.models.fields.gzippeddict
|
|
|
+import sentry.db.models.fields.jsonfield
|
|
|
+import sentry.db.models.fields.node
|
|
|
+import sentry.db.models.fields.onetoone
|
|
|
+import sentry.db.models.fields.text
|
|
|
+import sentry.db.models.fields.uuid
|
|
|
+import sentry.models.apiapplication
|
|
|
+import sentry.models.apigrant
|
|
|
+import sentry.models.apitoken
|
|
|
+import sentry.models.broadcast
|
|
|
+import sentry.models.groupshare
|
|
|
+import sentry.models.scheduledeletion
|
|
|
+import sentry.models.sentryapp
|
|
|
+import sentry.models.sentryappinstallation
|
|
|
+import sentry.models.servicehook
|
|
|
+import sentry.models.user
|
|
|
+import sentry.models.useremail
|
|
|
+
|
|
|
+
|
|
|
+def add_my_issues_search(apps, schema_editor):
|
|
|
+ SavedSearch = apps.get_model("sentry", "SavedSearch")
|
|
|
+ SavedSearch.objects.create(
|
|
|
+ name="My Issues",
|
|
|
+ query="is:unresolved assigned_or_suggested:me",
|
|
|
+ organization_id=None,
|
|
|
+ is_default=False,
|
|
|
+ is_global=True,
|
|
|
+ # models.search_common.SearchType.ISSUE
|
|
|
+ type=0,
|
|
|
+ sort="date",
|
|
|
+ )
|
|
|
+
|
|
|
+
|
|
|
+# Functions from the following migrations need manual copying.
|
|
|
+# Move them and any dependencies into this file, then update the
|
|
|
+# RunPython operations to refer to the local versions:
|
|
|
+
|
|
|
+
|
|
|
+class Migration(migrations.Migration):
|
|
|
+ # This flag is used to mark that a migration shouldn't be automatically run in
|
|
|
+ # production. We set this to True for operations that we think are risky and want
|
|
|
+ # someone from ops to run manually and monitor.
|
|
|
+ # General advice is that if in doubt, mark your migration as `is_dangerous`.
|
|
|
+ # Some things you should always mark as dangerous:
|
|
|
+ # - Large data migrations. Typically we want these to be run manually by ops so that
|
|
|
+ # they can be monitored. Since data migrations will now hold a transaction open
|
|
|
+ # this is even more important.
|
|
|
+ # - Adding columns to highly active tables, even ones that are NULL.
|
|
|
+ is_dangerous = False
|
|
|
+
|
|
|
+ # This flag is used to decide whether to run this migration in a transaction or not.
|
|
|
+ # By default we prefer to run in a transaction, but for migrations where you want
|
|
|
+ # to `CREATE INDEX CONCURRENTLY` this needs to be set to False. Typically you'll
|
|
|
+ # want to create an index concurrently when adding one to an existing table.
|
|
|
+ # You'll also usually want to set this to `False` if you're writing a data
|
|
|
+ # migration, since we don't want the entire migration to run in one long-running
|
|
|
+ # transaction.
|
|
|
+ atomic = False
|
|
|
+
|
|
|
+ replaces = [
|
|
|
+ ("sentry", "0001_initial"),
|
|
|
+ ("sentry", "0002_912_to_recent"),
|
|
|
+ ("sentry", "0003_auto_20191022_0122"),
|
|
|
+ (
|
|
|
+ "sentry",
|
|
|
+ "0004_bitfieldtestmodel_blankjsonfieldtestmodel_callabledefaultmodel_jsonfieldtestmodel_jsonfieldwithdefau",
|
|
|
+ ),
|
|
|
+ ("sentry", "0005_fix_content_types"),
|
|
|
+ ("sentry", "0006_sentryapp_date_published"),
|
|
|
+ ("sentry", "0007_auto_20191029_0131"),
|
|
|
+ ("sentry", "0008_auto_20191030_0016"),
|
|
|
+ ("sentry", "0009_auto_20191101_1608"),
|
|
|
+ ("sentry", "0010_auto_20191104_1641"),
|
|
|
+ ("sentry", "0011_remove_pagerdutyservice_service_id_from_state"),
|
|
|
+ ("sentry", "0012_remove_pagerdutyservice_service_id"),
|
|
|
+ ("sentry", "0013_auto_20191111_1829"),
|
|
|
+ ("sentry", "0014_delete_sentryappwebhookerror"),
|
|
|
+ ("sentry", "0015_delete_sentryappwebhookerror_db"),
|
|
|
+ ("sentry", "0016_delete_alert_rule_deprecated_fields"),
|
|
|
+ ("sentry", "0017_incident_aggregation"),
|
|
|
+ ("sentry", "0018_discoversavedquery_version"),
|
|
|
+ ("sentry", "0019_auto_20191114_2040"),
|
|
|
+ ("sentry", "0020_auto_20191125_1420"),
|
|
|
+ ("sentry", "0021_auto_20191203_1803"),
|
|
|
+ ("sentry", "0021_auto_20191202_1716"),
|
|
|
+ ("sentry", "0022_merge"),
|
|
|
+ ("sentry", "0023_hide_environment_none_20191126"),
|
|
|
+ ("sentry", "0024_auto_20191230_2052"),
|
|
|
+ ("sentry", "0025_organizationaccessrequest_requester"),
|
|
|
+ ("sentry", "0026_delete_event"),
|
|
|
+ ("sentry", "0027_exporteddata"),
|
|
|
+ ("sentry", "0028_user_reports"),
|
|
|
+ ("sentry", "0029_discover_query_upgrade"),
|
|
|
+ ("sentry", "0030_auto_20200201_0039"),
|
|
|
+ ("sentry", "0031_delete_alert_rules_and_incidents"),
|
|
|
+ ("sentry", "0032_delete_alert_email"),
|
|
|
+ ("sentry", "0033_auto_20200210_2137"),
|
|
|
+ ("sentry", "0034_auto_20200210_2311"),
|
|
|
+ ("sentry", "0035_auto_20200127_1711"),
|
|
|
+ ("sentry", "0036_auto_20200213_0106"),
|
|
|
+ ("sentry", "0037_auto_20200213_0140"),
|
|
|
+ ("sentry", "0038_auto_20200213_1904"),
|
|
|
+ ("sentry", "0039_delete_incidentsuspectcommit"),
|
|
|
+ ("sentry", "0040_remove_incidentsuspectcommittable"),
|
|
|
+ ("sentry", "0041_incidenttrigger_date_modified"),
|
|
|
+ ("sentry", "0042_auto_20200214_1607"),
|
|
|
+ ("sentry", "0043_auto_20200218_1903"),
|
|
|
+ ("sentry", "0044_auto_20200219_0018"),
|
|
|
+ ("sentry", "0045_remove_incidentactivity_event_stats_snapshot"),
|
|
|
+ ("sentry", "0046_auto_20200221_1735"),
|
|
|
+ ("sentry", "0047_auto_20200224_2319"),
|
|
|
+ ("sentry", "0048_auto_20200302_1825"),
|
|
|
+ ("sentry", "0049_auto_20200304_0254"),
|
|
|
+ ("sentry", "0050_auto_20200306_2346"),
|
|
|
+ ("sentry", "0051_fix_auditlog_pickled_data"),
|
|
|
+ ("sentry", "0052_organizationonboardingtask_completion_seen"),
|
|
|
+ ("sentry", "0053_migrate_alert_task_onboarding"),
|
|
|
+ ("sentry", "0054_create_key_transaction"),
|
|
|
+ ("sentry", "0055_query_subscription_status"),
|
|
|
+ ("sentry", "0056_remove_old_functions"),
|
|
|
+ ("sentry", "0057_remove_unused_project_flag"),
|
|
|
+ ("sentry", "0058_project_issue_alerts_targeting"),
|
|
|
+ ("sentry", "0059_add_new_sentry_app_features"),
|
|
|
+ ("sentry", "0060_add_file_eventattachment_index"),
|
|
|
+ ("sentry", "0061_alertrule_partial_index"),
|
|
|
+ ("sentry", "0062_key_transactions_unique_with_owner"),
|
|
|
+ ("sentry", "0063_drop_alertrule_constraint"),
|
|
|
+ ("sentry", "0064_project_has_transactions"),
|
|
|
+ ("sentry", "0065_add_incident_status_method"),
|
|
|
+ ("sentry", "0066_alertrule_manager"),
|
|
|
+ ("sentry", "0067_migrate_rules_alert_targeting"),
|
|
|
+ ("sentry", "0068_project_default_flags"),
|
|
|
+ ("sentry", "0069_remove_tracked_superusers"),
|
|
|
+ ("sentry", "0070_incident_snapshot_support"),
|
|
|
+ ("sentry", "0071_add_default_fields_model_subclass"),
|
|
|
+ ("sentry", "0072_alert_rules_query_changes"),
|
|
|
+ ("sentry", "0073_migrate_alert_query_model"),
|
|
|
+ ("sentry", "0074_add_metric_alert_feature"),
|
|
|
+ ("sentry", "0075_metric_alerts_fix_releases"),
|
|
|
+ ("sentry", "0076_alert_rules_disable_constraints"),
|
|
|
+ ("sentry", "0077_alert_query_col_drop_state"),
|
|
|
+ ("sentry", "0078_incident_field_updates"),
|
|
|
+ ("sentry", "0079_incidents_remove_query_field_state"),
|
|
|
+ ("sentry", "0080_alert_rules_drop_unused_tables_cols"),
|
|
|
+ ("sentry", "0081_add_integraiton_upgrade_audit_log"),
|
|
|
+ ("sentry", "0082_alert_rules_threshold_float"),
|
|
|
+ ("sentry", "0083_add_max_length_webhook_url"),
|
|
|
+ ("sentry", "0084_exported_data_blobs"),
|
|
|
+ ("sentry", "0085_fix_error_rate_snuba_query"),
|
|
|
+ ("sentry", "0086_sentry_app_installation_for_provider"),
|
|
|
+ ("sentry", "0087_fix_time_series_data_type"),
|
|
|
+ ("sentry", "0088_rule_level_resolve_threshold_type"),
|
|
|
+ ("sentry", "0089_rule_level_fields_backfill"),
|
|
|
+ ("sentry", "0090_fix_auditlog_pickled_data_take_2"),
|
|
|
+ ("sentry", "0091_alertruleactivity"),
|
|
|
+ ("sentry", "0092_remove_trigger_threshold_type_nullable"),
|
|
|
+ ("sentry", "0093_make_identity_user_id_textfield"),
|
|
|
+ ("sentry", "0094_cleanup_unreferenced_event_files"),
|
|
|
+ ("sentry", "0095_ruleactivity"),
|
|
|
+ ("sentry", "0096_sentry_app_component_skip_load_on_open"),
|
|
|
+ ("sentry", "0097_add_sentry_app_id_to_sentry_alertruletriggeraction"),
|
|
|
+ ("sentry", "0098_add-performance-onboarding"),
|
|
|
+ ("sentry", "0099_fix_project_platforms"),
|
|
|
+ ("sentry", "0100_file_type_on_event_attachment"),
|
|
|
+ ("sentry", "0101_backfill_file_type_on_event_attachment"),
|
|
|
+ ("sentry", "0102_collect_relay_analytics"),
|
|
|
+ ("sentry", "0103_project_has_alert_filters"),
|
|
|
+ ("sentry", "0104_collect_relay_public_key_usage"),
|
|
|
+ ("sentry", "0105_remove_nullability_of_event_attachment_type"),
|
|
|
+ ("sentry", "0106_service_hook_project_id_nullable"),
|
|
|
+ ("sentry", "0107_remove_spaces_from_slugs"),
|
|
|
+ ("sentry", "0108_update_fileblob_action"),
|
|
|
+ ("sentry", "0109_sentry_app_creator"),
|
|
|
+ ("sentry", "0110_sentry_app_creator_backill"),
|
|
|
+ ("sentry", "0111_snuba_query_event_type"),
|
|
|
+ ("sentry", "0112_groupinboxmodel"),
|
|
|
+ ("sentry", "0113_add_repositoryprojectpathconfig"),
|
|
|
+ ("sentry", "0114_add_unhandled_savedsearch"),
|
|
|
+ ("sentry", "0115_add_checksum_to_debug_file"),
|
|
|
+ ("sentry", "0116_backfill_debug_file_checksum"),
|
|
|
+ ("sentry", "0117_dummy-activityupdate"),
|
|
|
+ ("sentry", "0118_backfill_snuba_query_event_types"),
|
|
|
+ ("sentry", "0119_fix_set_none"),
|
|
|
+ ("sentry", "0120_commit_author_charfield"),
|
|
|
+ ("sentry", "0121_obliterate_group_inbox"),
|
|
|
+ ("sentry", "0122_add_release_status"),
|
|
|
+ ("sentry", "0123_groupinbox_addprojandorg"),
|
|
|
+ ("sentry", "0124_add_release_status_model"),
|
|
|
+ ("sentry", "0125_add_platformexternalissue_project_id"),
|
|
|
+ ("sentry", "0126_make_platformexternalissue_group_id_flexfk"),
|
|
|
+ ("sentry", "0127_backfill_platformexternalissue_project_id"),
|
|
|
+ ("sentry", "0128_change_dashboards"),
|
|
|
+ ("sentry", "0129_remove_dashboard_keys"),
|
|
|
+ ("sentry", "0130_remove_old_widget_models"),
|
|
|
+ ("sentry", "0131_drop_widget_tables"),
|
|
|
+ ("sentry", "0132_groupownermodel"),
|
|
|
+ ("sentry", "0133_dashboard_delete_object_status"),
|
|
|
+ ("sentry", "0134_dashboard_drop_object_status_column"),
|
|
|
+ ("sentry", "0135_removinguniquegroupownerconstraint"),
|
|
|
+ ("sentry", "0136_issue_alert_filter_all_orgs"),
|
|
|
+ ("sentry", "0137_dashboard_widget_interval"),
|
|
|
+ ("sentry", "0138_widget_query_remove_interval"),
|
|
|
+ ("sentry", "0139_remove_widgetquery_interval"),
|
|
|
+ ("sentry", "0140_subscription_checker"),
|
|
|
+ ("sentry", "0141_remove_widget_constraints"),
|
|
|
+ ("sentry", "0142_add_dashboard_tombstone"),
|
|
|
+ ("sentry", "0143_add_alerts_integrationfeature"),
|
|
|
+ ("sentry", "0144_add_publish_request_inprogress_status"),
|
|
|
+ ("sentry", "0145_rename_alert_rule_feature"),
|
|
|
+ ("sentry", "0146_backfill_members_alert_write"),
|
|
|
+ ("sentry", "0147_add_groupinbox_date_added_index"),
|
|
|
+ ("sentry", "0148_group_id_bigint"),
|
|
|
+ ("sentry", "0149_bigint"),
|
|
|
+ ("sentry", "0150_remove_userreport_eventattachment_constraints"),
|
|
|
+ ("sentry", "0151_add_world_map_dashboard_widget_type"),
|
|
|
+ ("sentry", "0152_remove_slack_workspace_orgintegrations"),
|
|
|
+ ("sentry", "0153_add_big_number_dashboard_widget_type"),
|
|
|
+ ("sentry", "0154_groupedmessage_inbox_sort"),
|
|
|
+ ("sentry", "0155_add_dashboard_query_orderby"),
|
|
|
+ ("sentry", "0156_add_mark_reviewed_activity"),
|
|
|
+ ("sentry", "0157_make_repositoryprojectpathconfig_organization_integration_nullable"),
|
|
|
+ ("sentry", "0158_create_externalteam_table"),
|
|
|
+ ("sentry", "0159_create_externaluser_table"),
|
|
|
+ ("sentry", "0160_create_projectcodeowners_table"),
|
|
|
+ ("sentry", "0161_add_saved_search_sort"),
|
|
|
+ ("sentry", "0162_backfill_saved_search_sort"),
|
|
|
+ ("sentry", "0163_add_organizationmember_and_external_name"),
|
|
|
+ ("sentry", "0164_add_protect_on_delete_codeowners"),
|
|
|
+ ("sentry", "0165_metric_alerts_fix_group_ids"),
|
|
|
+ ("sentry", "0166_create_notificationsetting_table"),
|
|
|
+ ("sentry", "0167_rm_organization_integration_from_projectcodeowners"),
|
|
|
+ ("sentry", "0168_demo_orgs_users"),
|
|
|
+ ("sentry", "0169_delete_organization_integration_from_projectcodeowners"),
|
|
|
+ ("sentry", "0170_actor_introduction"),
|
|
|
+ ("sentry", "0171_backfill_actors"),
|
|
|
+ ("sentry", "0172_rule_owner_fields"),
|
|
|
+ ("sentry", "0173_remove_demo_flag"),
|
|
|
+ ("sentry", "0174_my_issues_saved_search"),
|
|
|
+ ("sentry", "0175_make_targets_nullable"),
|
|
|
+ ("sentry", "0176_remove_targets"),
|
|
|
+ ("sentry", "0177_drop_targets"),
|
|
|
+ ("sentry", "0178_add_new_target_column"),
|
|
|
+ ("sentry", "0179_update_legacy_discover_saved_query_timestamps"),
|
|
|
+ ("sentry", "0180_add_saved_search_sorts"),
|
|
|
+ ("sentry", "0181_copy_useroptions_to_notificationsettings"),
|
|
|
+ ("sentry", "0182_update_user_misery_on_saved_queries"),
|
|
|
+ ("sentry", "0183_make_codemapping_unique_on_projectcodeowners"),
|
|
|
+ ("sentry", "0184_copy_useroptions_to_notificationsettings_2"),
|
|
|
+ ("sentry", "0185_rm_copied_useroptions"),
|
|
|
+ ("sentry", "0186_add_externalactor"),
|
|
|
+ ("sentry", "0187_backfill_me_or_none"),
|
|
|
+ ("sentry", "0188_remove_externalteam_externaluser_fk_constraints"),
|
|
|
+ ("sentry", "0189_remove_externaluser_externalteam_models"),
|
|
|
+ ("sentry", "0190_drop_external_user_table"),
|
|
|
+ ("sentry", "0191_make_externalactor_integration_id_not_null"),
|
|
|
+ ("sentry", "0192_remove_fileblobowner_org_fk"),
|
|
|
+ ("sentry", "0193_grouprelease_indexes"),
|
|
|
+ ("sentry", "0194_add_custom_scm_provider"),
|
|
|
+ ("sentry", "0195_add_team_key_transactions"),
|
|
|
+ ("sentry", "0196_add_restricted_member_limit"),
|
|
|
+ ("sentry", "0197_add_scim_enabled_boolean"),
|
|
|
+ ("sentry", "0198_add_project_transaction_threshold"),
|
|
|
+ ("sentry", "0199_release_semver"),
|
|
|
+ ("sentry", "0200_release_indices"),
|
|
|
+ ]
|
|
|
+
|
|
|
+ initial = True
|
|
|
+
|
|
|
+ dependencies = []
|
|
|
+
|
|
|
+ operations = [
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="User",
|
|
|
+ fields=[
|
|
|
+ ("password", models.CharField(max_length=128)),
|
|
|
+ ("last_login", models.DateTimeField(blank=True, null=True)),
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("username", models.CharField(max_length=128, unique=True)),
|
|
|
+ ("name", models.CharField(blank=True, db_column="first_name", max_length=200)),
|
|
|
+ ("email", models.EmailField(blank=True, max_length=75)),
|
|
|
+ ("is_staff", models.BooleanField(default=False)),
|
|
|
+ ("is_active", models.BooleanField(default=True)),
|
|
|
+ ("is_superuser", models.BooleanField(default=False)),
|
|
|
+ ("is_managed", models.BooleanField(default=False)),
|
|
|
+ ("is_sentry_app", models.NullBooleanField(default=None)),
|
|
|
+ ("is_password_expired", models.BooleanField(default=False)),
|
|
|
+ ("last_password_change", models.DateTimeField(null=True)),
|
|
|
+ (
|
|
|
+ "flags",
|
|
|
+ bitfield.models.BitField(
|
|
|
+ (
|
|
|
+ (
|
|
|
+ "newsletter_consent_prompt",
|
|
|
+ "Do we need to ask this user for newsletter consent?",
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ default=0,
|
|
|
+ null=True,
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("session_nonce", models.CharField(max_length=12, null=True)),
|
|
|
+ ("date_joined", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ ("last_active", models.DateTimeField(default=django.utils.timezone.now, null=True)),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "auth_user",
|
|
|
+ "verbose_name": "user",
|
|
|
+ "verbose_name_plural": "users",
|
|
|
+ },
|
|
|
+ managers=[
|
|
|
+ ("objects", sentry.models.user.UserManager(cache_fields=["pk"])),
|
|
|
+ ],
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="Activity",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("type", sentry.db.models.fields.bounded.BoundedPositiveIntegerField()),
|
|
|
+ ("ident", models.CharField(max_length=64, null=True)),
|
|
|
+ ("datetime", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ ("data", sentry.db.models.fields.gzippeddict.GzippedDictField(null=True)),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_activity",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="ApiApplication",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "client_id",
|
|
|
+ models.CharField(
|
|
|
+ default=sentry.models.apiapplication.generate_token,
|
|
|
+ max_length=64,
|
|
|
+ unique=True,
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "client_secret",
|
|
|
+ sentry.db.models.fields.encrypted.EncryptedTextField(
|
|
|
+ default=sentry.models.apiapplication.generate_token
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "name",
|
|
|
+ models.CharField(
|
|
|
+ blank=True,
|
|
|
+ default=sentry.models.apiapplication.generate_name,
|
|
|
+ max_length=64,
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "status",
|
|
|
+ sentry.db.models.fields.bounded.BoundedPositiveIntegerField(
|
|
|
+ db_index=True, default=0
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("allowed_origins", models.TextField(blank=True, null=True)),
|
|
|
+ ("redirect_uris", models.TextField()),
|
|
|
+ ("homepage_url", models.URLField(null=True)),
|
|
|
+ ("privacy_url", models.URLField(null=True)),
|
|
|
+ ("terms_url", models.URLField(null=True)),
|
|
|
+ ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ (
|
|
|
+ "owner",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_apiapplication",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="ApiAuthorization",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "scopes",
|
|
|
+ bitfield.models.BitField(
|
|
|
+ (
|
|
|
+ ("project:read", "project:read"),
|
|
|
+ ("project:write", "project:write"),
|
|
|
+ ("project:admin", "project:admin"),
|
|
|
+ ("project:releases", "project:releases"),
|
|
|
+ ("team:read", "team:read"),
|
|
|
+ ("team:write", "team:write"),
|
|
|
+ ("team:admin", "team:admin"),
|
|
|
+ ("event:read", "event:read"),
|
|
|
+ ("event:write", "event:write"),
|
|
|
+ ("event:admin", "event:admin"),
|
|
|
+ ("org:read", "org:read"),
|
|
|
+ ("org:write", "org:write"),
|
|
|
+ ("org:admin", "org:admin"),
|
|
|
+ ("member:read", "member:read"),
|
|
|
+ ("member:write", "member:write"),
|
|
|
+ ("member:admin", "member:admin"),
|
|
|
+ ),
|
|
|
+ default=None,
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("scope_list", sentry.db.models.fields.array.ArrayField(null=True)),
|
|
|
+ ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ (
|
|
|
+ "application",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ null=True,
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ to="sentry.ApiApplication",
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "user",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_apiauthorization",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="ApiGrant",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "code",
|
|
|
+ models.CharField(
|
|
|
+ db_index=True, default=sentry.models.apigrant.generate_code, max_length=64
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "expires_at",
|
|
|
+ models.DateTimeField(
|
|
|
+ db_index=True, default=sentry.models.apigrant.default_expiration
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("redirect_uri", models.CharField(max_length=255)),
|
|
|
+ (
|
|
|
+ "scopes",
|
|
|
+ bitfield.models.BitField(
|
|
|
+ (
|
|
|
+ ("project:read", "project:read"),
|
|
|
+ ("project:write", "project:write"),
|
|
|
+ ("project:admin", "project:admin"),
|
|
|
+ ("project:releases", "project:releases"),
|
|
|
+ ("team:read", "team:read"),
|
|
|
+ ("team:write", "team:write"),
|
|
|
+ ("team:admin", "team:admin"),
|
|
|
+ ("event:read", "event:read"),
|
|
|
+ ("event:write", "event:write"),
|
|
|
+ ("event:admin", "event:admin"),
|
|
|
+ ("org:read", "org:read"),
|
|
|
+ ("org:write", "org:write"),
|
|
|
+ ("org:admin", "org:admin"),
|
|
|
+ ("member:read", "member:read"),
|
|
|
+ ("member:write", "member:write"),
|
|
|
+ ("member:admin", "member:admin"),
|
|
|
+ ),
|
|
|
+ default=None,
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("scope_list", sentry.db.models.fields.array.ArrayField(null=True)),
|
|
|
+ (
|
|
|
+ "application",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.ApiApplication"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "user",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_apigrant",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="ApiKey",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("label", models.CharField(blank=True, default="Default", max_length=64)),
|
|
|
+ ("key", models.CharField(max_length=32, unique=True)),
|
|
|
+ (
|
|
|
+ "scopes",
|
|
|
+ bitfield.models.BitField(
|
|
|
+ (
|
|
|
+ ("project:read", "project:read"),
|
|
|
+ ("project:write", "project:write"),
|
|
|
+ ("project:admin", "project:admin"),
|
|
|
+ ("project:releases", "project:releases"),
|
|
|
+ ("team:read", "team:read"),
|
|
|
+ ("team:write", "team:write"),
|
|
|
+ ("team:admin", "team:admin"),
|
|
|
+ ("event:read", "event:read"),
|
|
|
+ ("event:write", "event:write"),
|
|
|
+ ("event:admin", "event:admin"),
|
|
|
+ ("org:read", "org:read"),
|
|
|
+ ("org:write", "org:write"),
|
|
|
+ ("org:admin", "org:admin"),
|
|
|
+ ("member:read", "member:read"),
|
|
|
+ ("member:write", "member:write"),
|
|
|
+ ("member:admin", "member:admin"),
|
|
|
+ ),
|
|
|
+ default=None,
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("scope_list", sentry.db.models.fields.array.ArrayField(null=True)),
|
|
|
+ (
|
|
|
+ "status",
|
|
|
+ sentry.db.models.fields.bounded.BoundedPositiveIntegerField(
|
|
|
+ db_index=True, default=0
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ ("allowed_origins", models.TextField(blank=True, null=True)),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_apikey",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="ApiToken",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "scopes",
|
|
|
+ bitfield.models.BitField(
|
|
|
+ (
|
|
|
+ ("project:read", "project:read"),
|
|
|
+ ("project:write", "project:write"),
|
|
|
+ ("project:admin", "project:admin"),
|
|
|
+ ("project:releases", "project:releases"),
|
|
|
+ ("team:read", "team:read"),
|
|
|
+ ("team:write", "team:write"),
|
|
|
+ ("team:admin", "team:admin"),
|
|
|
+ ("event:read", "event:read"),
|
|
|
+ ("event:write", "event:write"),
|
|
|
+ ("event:admin", "event:admin"),
|
|
|
+ ("org:read", "org:read"),
|
|
|
+ ("org:write", "org:write"),
|
|
|
+ ("org:admin", "org:admin"),
|
|
|
+ ("member:read", "member:read"),
|
|
|
+ ("member:write", "member:write"),
|
|
|
+ ("member:admin", "member:admin"),
|
|
|
+ ),
|
|
|
+ default=None,
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("scope_list", sentry.db.models.fields.array.ArrayField(null=True)),
|
|
|
+ (
|
|
|
+ "token",
|
|
|
+ models.CharField(
|
|
|
+ default=sentry.models.apitoken.generate_token, max_length=64, unique=True
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "refresh_token",
|
|
|
+ models.CharField(
|
|
|
+ default=sentry.models.apitoken.generate_token,
|
|
|
+ max_length=64,
|
|
|
+ null=True,
|
|
|
+ unique=True,
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "expires_at",
|
|
|
+ models.DateTimeField(
|
|
|
+ default=sentry.models.apitoken.default_expiration, null=True
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ (
|
|
|
+ "application",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ null=True,
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ to="sentry.ApiApplication",
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "user",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_apitoken",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="AssistantActivity",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("guide_id", sentry.db.models.fields.bounded.BoundedPositiveIntegerField()),
|
|
|
+ ("viewed_ts", models.DateTimeField(null=True)),
|
|
|
+ ("dismissed_ts", models.DateTimeField(null=True)),
|
|
|
+ ("useful", models.NullBooleanField()),
|
|
|
+ (
|
|
|
+ "user",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_assistant_activity",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="AuditLogEntry",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("actor_label", models.CharField(blank=True, max_length=64, null=True)),
|
|
|
+ (
|
|
|
+ "target_object",
|
|
|
+ sentry.db.models.fields.bounded.BoundedPositiveIntegerField(null=True),
|
|
|
+ ),
|
|
|
+ ("event", sentry.db.models.fields.bounded.BoundedPositiveIntegerField()),
|
|
|
+ ("ip_address", models.GenericIPAddressField(null=True, unpack_ipv4=True)),
|
|
|
+ ("data", sentry.db.models.fields.gzippeddict.GzippedDictField()),
|
|
|
+ ("datetime", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ (
|
|
|
+ "actor",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ blank=True,
|
|
|
+ null=True,
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ related_name="audit_actors",
|
|
|
+ to=settings.AUTH_USER_MODEL,
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "actor_key",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ blank=True,
|
|
|
+ null=True,
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ to="sentry.ApiKey",
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_auditlogentry",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="Authenticator",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("created_at", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ ("last_used_at", models.DateTimeField(null=True)),
|
|
|
+ ("type", sentry.db.models.fields.bounded.BoundedPositiveIntegerField()),
|
|
|
+ (
|
|
|
+ "config",
|
|
|
+ sentry.db.models.fields.encrypted.EncryptedPickledObjectField(editable=False),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "user",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "auth_authenticator",
|
|
|
+ "verbose_name": "authenticator",
|
|
|
+ "verbose_name_plural": "authenticators",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="AuthIdentity",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("ident", models.CharField(max_length=128)),
|
|
|
+ ("data", sentry.db.models.fields.encrypted.EncryptedJsonField(default=dict)),
|
|
|
+ ("last_verified", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ ("last_synced", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_authidentity",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="AuthProvider",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("provider", models.CharField(max_length=128)),
|
|
|
+ ("config", sentry.db.models.fields.encrypted.EncryptedJsonField(default=dict)),
|
|
|
+ ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ (
|
|
|
+ "sync_time",
|
|
|
+ sentry.db.models.fields.bounded.BoundedPositiveIntegerField(null=True),
|
|
|
+ ),
|
|
|
+ ("last_sync", models.DateTimeField(null=True)),
|
|
|
+ (
|
|
|
+ "default_role",
|
|
|
+ sentry.db.models.fields.bounded.BoundedPositiveIntegerField(default=50),
|
|
|
+ ),
|
|
|
+ ("default_global_access", models.BooleanField(default=True)),
|
|
|
+ (
|
|
|
+ "flags",
|
|
|
+ bitfield.models.BitField(
|
|
|
+ (
|
|
|
+ (
|
|
|
+ "allow_unlinked",
|
|
|
+ "Grant access to members who have not linked SSO accounts.",
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ default=0,
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_authprovider",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="Broadcast",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("upstream_id", models.CharField(blank=True, max_length=32, null=True)),
|
|
|
+ ("title", models.CharField(max_length=32)),
|
|
|
+ ("message", models.CharField(max_length=256)),
|
|
|
+ ("link", models.URLField(blank=True, null=True)),
|
|
|
+ ("is_active", models.BooleanField(db_index=True, default=True)),
|
|
|
+ (
|
|
|
+ "date_expires",
|
|
|
+ models.DateTimeField(
|
|
|
+ blank=True, default=sentry.models.broadcast.default_expiration, null=True
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_broadcast",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="BroadcastSeen",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("date_seen", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ (
|
|
|
+ "broadcast",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Broadcast"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "user",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_broadcastseen",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="Commit",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "organization_id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedPositiveIntegerField(db_index=True),
|
|
|
+ ),
|
|
|
+ ("repository_id", sentry.db.models.fields.bounded.BoundedPositiveIntegerField()),
|
|
|
+ ("key", models.CharField(max_length=64)),
|
|
|
+ ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ ("message", models.TextField(null=True)),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_commit",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="CommitAuthor",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "organization_id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedPositiveIntegerField(db_index=True),
|
|
|
+ ),
|
|
|
+ ("name", models.CharField(max_length=128, null=True)),
|
|
|
+ ("email", models.EmailField(max_length=75)),
|
|
|
+ ("external_id", models.CharField(max_length=164, null=True)),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_commitauthor",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="CommitFileChange",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "organization_id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedPositiveIntegerField(db_index=True),
|
|
|
+ ),
|
|
|
+ ("filename", models.TextField()),
|
|
|
+ ("type", models.CharField(max_length=1)),
|
|
|
+ (
|
|
|
+ "commit",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Commit"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_commitfilechange",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="Counter",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("value", sentry.db.models.fields.bounded.BoundedBigIntegerField()),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_projectcounter",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="Dashboard",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("title", models.CharField(max_length=255)),
|
|
|
+ ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ ("status", sentry.db.models.fields.bounded.BoundedPositiveIntegerField(default=0)),
|
|
|
+ (
|
|
|
+ "created_by",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_dashboard",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="DeletedOrganization",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("actor_label", models.CharField(max_length=64, null=True)),
|
|
|
+ ("actor_id", sentry.db.models.fields.bounded.BoundedBigIntegerField(null=True)),
|
|
|
+ ("actor_key", models.CharField(max_length=32, null=True)),
|
|
|
+ ("ip_address", models.GenericIPAddressField(null=True, unpack_ipv4=True)),
|
|
|
+ ("date_deleted", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ ("date_created", models.DateTimeField(null=True)),
|
|
|
+ ("reason", models.TextField(blank=True, null=True)),
|
|
|
+ ("name", models.CharField(max_length=64, null=True)),
|
|
|
+ ("slug", models.CharField(max_length=50, null=True)),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_deletedorganization",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="DeletedProject",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("actor_label", models.CharField(max_length=64, null=True)),
|
|
|
+ ("actor_id", sentry.db.models.fields.bounded.BoundedBigIntegerField(null=True)),
|
|
|
+ ("actor_key", models.CharField(max_length=32, null=True)),
|
|
|
+ ("ip_address", models.GenericIPAddressField(null=True, unpack_ipv4=True)),
|
|
|
+ ("date_deleted", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ ("date_created", models.DateTimeField(null=True)),
|
|
|
+ ("reason", models.TextField(blank=True, null=True)),
|
|
|
+ ("slug", models.CharField(max_length=50, null=True)),
|
|
|
+ ("name", models.CharField(max_length=200, null=True)),
|
|
|
+ (
|
|
|
+ "organization_id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigIntegerField(null=True),
|
|
|
+ ),
|
|
|
+ ("organization_name", models.CharField(max_length=64, null=True)),
|
|
|
+ ("organization_slug", models.CharField(max_length=50, null=True)),
|
|
|
+ ("platform", models.CharField(max_length=64, null=True)),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_deletedproject",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="DeletedTeam",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("actor_label", models.CharField(max_length=64, null=True)),
|
|
|
+ ("actor_id", sentry.db.models.fields.bounded.BoundedBigIntegerField(null=True)),
|
|
|
+ ("actor_key", models.CharField(max_length=32, null=True)),
|
|
|
+ ("ip_address", models.GenericIPAddressField(null=True, unpack_ipv4=True)),
|
|
|
+ ("date_deleted", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ ("date_created", models.DateTimeField(null=True)),
|
|
|
+ ("reason", models.TextField(blank=True, null=True)),
|
|
|
+ ("name", models.CharField(max_length=64, null=True)),
|
|
|
+ ("slug", models.CharField(max_length=50, null=True)),
|
|
|
+ (
|
|
|
+ "organization_id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigIntegerField(null=True),
|
|
|
+ ),
|
|
|
+ ("organization_name", models.CharField(max_length=64, null=True)),
|
|
|
+ ("organization_slug", models.CharField(max_length=50, null=True)),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_deletedteam",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="Deploy",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "organization_id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedPositiveIntegerField(db_index=True),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "environment_id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedPositiveIntegerField(db_index=True),
|
|
|
+ ),
|
|
|
+ ("date_finished", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ ("date_started", models.DateTimeField(blank=True, null=True)),
|
|
|
+ ("name", models.CharField(blank=True, max_length=64, null=True)),
|
|
|
+ ("url", models.URLField(blank=True, null=True)),
|
|
|
+ ("notified", models.NullBooleanField(db_index=True, default=False)),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_deploy",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="DiscoverSavedQuery",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("name", models.CharField(max_length=255)),
|
|
|
+ ("query", sentry.db.models.fields.jsonfield.JSONField(default=dict)),
|
|
|
+ ("date_created", models.DateTimeField(auto_now_add=True)),
|
|
|
+ ("date_updated", models.DateTimeField(auto_now=True)),
|
|
|
+ (
|
|
|
+ "created_by",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ null=True,
|
|
|
+ on_delete=django.db.models.deletion.SET_NULL,
|
|
|
+ to=settings.AUTH_USER_MODEL,
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_discoversavedquery",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="DiscoverSavedQueryProject",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "discover_saved_query",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.DiscoverSavedQuery"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_discoversavedqueryproject",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="Distribution",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "organization_id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedPositiveIntegerField(db_index=True),
|
|
|
+ ),
|
|
|
+ ("name", models.CharField(max_length=64)),
|
|
|
+ ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_distribution",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="Email",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("email", sentry.db.models.fields.citext.CIEmailField(max_length=75, unique=True)),
|
|
|
+ ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_email",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="Environment",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("organization_id", sentry.db.models.fields.bounded.BoundedPositiveIntegerField()),
|
|
|
+ (
|
|
|
+ "project_id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedPositiveIntegerField(null=True),
|
|
|
+ ),
|
|
|
+ ("name", models.CharField(max_length=64)),
|
|
|
+ ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_environment",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="EnvironmentProject",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("is_hidden", models.NullBooleanField()),
|
|
|
+ (
|
|
|
+ "environment",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Environment"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_environmentproject",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="EventAttachment",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("project_id", sentry.db.models.fields.bounded.BoundedBigIntegerField()),
|
|
|
+ (
|
|
|
+ "group_id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigIntegerField(
|
|
|
+ db_index=True, null=True
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("event_id", models.CharField(db_index=True, max_length=32)),
|
|
|
+ ("name", models.TextField()),
|
|
|
+ (
|
|
|
+ "date_added",
|
|
|
+ models.DateTimeField(db_index=True, default=django.utils.timezone.now),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_eventattachment",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="EventProcessingIssue",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_eventprocessingissue",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="EventUser",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "project_id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedPositiveIntegerField(db_index=True),
|
|
|
+ ),
|
|
|
+ ("hash", models.CharField(max_length=32)),
|
|
|
+ ("ident", models.CharField(max_length=128, null=True)),
|
|
|
+ ("email", models.EmailField(max_length=75, null=True)),
|
|
|
+ ("username", models.CharField(max_length=128, null=True)),
|
|
|
+ ("name", models.CharField(max_length=128, null=True)),
|
|
|
+ ("ip_address", models.GenericIPAddressField(null=True)),
|
|
|
+ (
|
|
|
+ "date_added",
|
|
|
+ models.DateTimeField(db_index=True, default=django.utils.timezone.now),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_eventuser",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="ExternalIssue",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("organization_id", sentry.db.models.fields.bounded.BoundedPositiveIntegerField()),
|
|
|
+ ("integration_id", sentry.db.models.fields.bounded.BoundedPositiveIntegerField()),
|
|
|
+ ("key", models.CharField(max_length=128)),
|
|
|
+ ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ ("title", models.TextField(null=True)),
|
|
|
+ ("description", models.TextField(null=True)),
|
|
|
+ ("metadata", sentry.db.models.fields.jsonfield.JSONField(null=True)),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_externalissue",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="FeatureAdoption",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("feature_id", models.PositiveIntegerField()),
|
|
|
+ ("date_completed", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ ("complete", models.BooleanField(default=False)),
|
|
|
+ ("applicable", models.BooleanField(default=True)),
|
|
|
+ ("data", sentry.db.models.fields.jsonfield.JSONField(default=dict)),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_featureadoption",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="File",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("name", models.TextField()),
|
|
|
+ ("type", models.CharField(max_length=64)),
|
|
|
+ (
|
|
|
+ "timestamp",
|
|
|
+ models.DateTimeField(db_index=True, default=django.utils.timezone.now),
|
|
|
+ ),
|
|
|
+ ("headers", sentry.db.models.fields.jsonfield.JSONField(default=dict)),
|
|
|
+ ("size", sentry.db.models.fields.bounded.BoundedPositiveIntegerField(null=True)),
|
|
|
+ ("checksum", models.CharField(db_index=True, max_length=40, null=True)),
|
|
|
+ ("path", models.TextField(null=True)),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_file",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="FileBlob",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("path", models.TextField(null=True)),
|
|
|
+ ("size", sentry.db.models.fields.bounded.BoundedPositiveIntegerField(null=True)),
|
|
|
+ ("checksum", models.CharField(max_length=40, unique=True)),
|
|
|
+ (
|
|
|
+ "timestamp",
|
|
|
+ models.DateTimeField(db_index=True, default=django.utils.timezone.now),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_fileblob",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="FileBlobIndex",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("offset", sentry.db.models.fields.bounded.BoundedPositiveIntegerField()),
|
|
|
+ (
|
|
|
+ "blob",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.FileBlob"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "file",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.File"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_fileblobindex",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="FileBlobOwner",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "blob",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.FileBlob"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_fileblobowner",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="Group",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("logger", models.CharField(blank=True, db_index=True, default="", max_length=64)),
|
|
|
+ (
|
|
|
+ "level",
|
|
|
+ sentry.db.models.fields.bounded.BoundedPositiveIntegerField(
|
|
|
+ blank=True, db_index=True, default=40
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("message", models.TextField()),
|
|
|
+ (
|
|
|
+ "culprit",
|
|
|
+ models.CharField(blank=True, db_column="view", max_length=200, null=True),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "num_comments",
|
|
|
+ sentry.db.models.fields.bounded.BoundedPositiveIntegerField(
|
|
|
+ default=0, null=True
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("platform", models.CharField(max_length=64, null=True)),
|
|
|
+ (
|
|
|
+ "status",
|
|
|
+ sentry.db.models.fields.bounded.BoundedPositiveIntegerField(
|
|
|
+ db_index=True, default=0
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "times_seen",
|
|
|
+ sentry.db.models.fields.bounded.BoundedPositiveIntegerField(
|
|
|
+ db_index=True, default=1
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "last_seen",
|
|
|
+ models.DateTimeField(db_index=True, default=django.utils.timezone.now),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "first_seen",
|
|
|
+ models.DateTimeField(db_index=True, default=django.utils.timezone.now),
|
|
|
+ ),
|
|
|
+ ("resolved_at", models.DateTimeField(db_index=True, null=True)),
|
|
|
+ ("active_at", models.DateTimeField(db_index=True, null=True)),
|
|
|
+ (
|
|
|
+ "time_spent_total",
|
|
|
+ sentry.db.models.fields.bounded.BoundedIntegerField(default=0),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "time_spent_count",
|
|
|
+ sentry.db.models.fields.bounded.BoundedIntegerField(default=0),
|
|
|
+ ),
|
|
|
+ ("score", sentry.db.models.fields.bounded.BoundedIntegerField(default=0)),
|
|
|
+ ("is_public", models.NullBooleanField(default=False)),
|
|
|
+ (
|
|
|
+ "data",
|
|
|
+ sentry.db.models.fields.gzippeddict.GzippedDictField(blank=True, null=True),
|
|
|
+ ),
|
|
|
+ ("short_id", sentry.db.models.fields.bounded.BoundedBigIntegerField(null=True)),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "verbose_name_plural": "grouped messages",
|
|
|
+ "db_table": "sentry_groupedmessage",
|
|
|
+ "verbose_name": "grouped message",
|
|
|
+ "permissions": (("can_view", "Can view"),),
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="GroupAssignee",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ (
|
|
|
+ "group",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ related_name="assignee_set",
|
|
|
+ to="sentry.Group",
|
|
|
+ unique=True,
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_groupasignee",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="GroupBookmark",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("date_added", models.DateTimeField(default=django.utils.timezone.now, null=True)),
|
|
|
+ (
|
|
|
+ "group",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ related_name="bookmark_set",
|
|
|
+ to="sentry.Group",
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_groupbookmark",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="GroupCommitResolution",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("group_id", sentry.db.models.fields.bounded.BoundedPositiveIntegerField()),
|
|
|
+ (
|
|
|
+ "commit_id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedPositiveIntegerField(db_index=True),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "datetime",
|
|
|
+ models.DateTimeField(db_index=True, default=django.utils.timezone.now),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_groupcommitresolution",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="GroupEmailThread",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("email", models.EmailField(max_length=75)),
|
|
|
+ ("msgid", models.CharField(max_length=100)),
|
|
|
+ ("date", models.DateTimeField(db_index=True, default=django.utils.timezone.now)),
|
|
|
+ (
|
|
|
+ "group",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ related_name="groupemail_set",
|
|
|
+ to="sentry.Group",
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_groupemailthread",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="GroupEnvironment",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "first_seen",
|
|
|
+ models.DateTimeField(
|
|
|
+ db_index=True, default=django.utils.timezone.now, null=True
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "environment",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ db_constraint=False,
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ to="sentry.Environment",
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_groupenvironment",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="GroupHash",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("hash", models.CharField(max_length=32)),
|
|
|
+ (
|
|
|
+ "group_tombstone_id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedPositiveIntegerField(
|
|
|
+ db_index=True, null=True
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("state", sentry.db.models.fields.bounded.BoundedPositiveIntegerField(null=True)),
|
|
|
+ (
|
|
|
+ "group",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ null=True, on_delete=django.db.models.deletion.CASCADE, to="sentry.Group"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_grouphash",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="GroupLink",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("group_id", sentry.db.models.fields.bounded.BoundedBigIntegerField()),
|
|
|
+ (
|
|
|
+ "project_id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigIntegerField(db_index=True),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "linked_type",
|
|
|
+ sentry.db.models.fields.bounded.BoundedPositiveIntegerField(default=1),
|
|
|
+ ),
|
|
|
+ ("linked_id", sentry.db.models.fields.bounded.BoundedBigIntegerField()),
|
|
|
+ (
|
|
|
+ "relationship",
|
|
|
+ sentry.db.models.fields.bounded.BoundedPositiveIntegerField(default=2),
|
|
|
+ ),
|
|
|
+ ("data", sentry.db.models.fields.jsonfield.JSONField(default=dict)),
|
|
|
+ (
|
|
|
+ "datetime",
|
|
|
+ models.DateTimeField(db_index=True, default=django.utils.timezone.now),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_grouplink",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="GroupMeta",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("key", models.CharField(max_length=64)),
|
|
|
+ ("value", models.TextField()),
|
|
|
+ (
|
|
|
+ "group",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Group"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_groupmeta",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="GroupRedirect",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("group_id", sentry.db.models.fields.bounded.BoundedBigIntegerField(db_index=True)),
|
|
|
+ (
|
|
|
+ "previous_group_id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigIntegerField(unique=True),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_groupredirect",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="GroupRelease",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "project_id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedPositiveIntegerField(db_index=True),
|
|
|
+ ),
|
|
|
+ ("group_id", sentry.db.models.fields.bounded.BoundedPositiveIntegerField()),
|
|
|
+ (
|
|
|
+ "release_id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedPositiveIntegerField(db_index=True),
|
|
|
+ ),
|
|
|
+ ("environment", models.CharField(default="", max_length=64)),
|
|
|
+ ("first_seen", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ (
|
|
|
+ "last_seen",
|
|
|
+ models.DateTimeField(db_index=True, default=django.utils.timezone.now),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_grouprelease",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="GroupResolution",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("type", sentry.db.models.fields.bounded.BoundedPositiveIntegerField(null=True)),
|
|
|
+ (
|
|
|
+ "actor_id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedPositiveIntegerField(null=True),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "datetime",
|
|
|
+ models.DateTimeField(db_index=True, default=django.utils.timezone.now),
|
|
|
+ ),
|
|
|
+ ("status", sentry.db.models.fields.bounded.BoundedPositiveIntegerField(default=0)),
|
|
|
+ (
|
|
|
+ "group",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Group", unique=True
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_groupresolution",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="GroupRuleStatus",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("status", models.PositiveSmallIntegerField(default=0)),
|
|
|
+ ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ ("last_active", models.DateTimeField(null=True)),
|
|
|
+ (
|
|
|
+ "group",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Group"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_grouprulestatus",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="GroupSeen",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("last_seen", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ (
|
|
|
+ "group",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Group"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_groupseen",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="GroupShare",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "uuid",
|
|
|
+ models.CharField(
|
|
|
+ default=sentry.models.groupshare.default_uuid, max_length=32, unique=True
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ (
|
|
|
+ "group",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Group", unique=True
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_groupshare",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="GroupSnooze",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("until", models.DateTimeField(null=True)),
|
|
|
+ ("count", sentry.db.models.fields.bounded.BoundedPositiveIntegerField(null=True)),
|
|
|
+ ("window", sentry.db.models.fields.bounded.BoundedPositiveIntegerField(null=True)),
|
|
|
+ (
|
|
|
+ "user_count",
|
|
|
+ sentry.db.models.fields.bounded.BoundedPositiveIntegerField(null=True),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "user_window",
|
|
|
+ sentry.db.models.fields.bounded.BoundedPositiveIntegerField(null=True),
|
|
|
+ ),
|
|
|
+ ("state", sentry.db.models.fields.jsonfield.JSONField(null=True)),
|
|
|
+ (
|
|
|
+ "actor_id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedPositiveIntegerField(null=True),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "group",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Group", unique=True
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_groupsnooze",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="GroupSubscription",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("is_active", models.BooleanField(default=True)),
|
|
|
+ ("reason", sentry.db.models.fields.bounded.BoundedPositiveIntegerField(default=0)),
|
|
|
+ ("date_added", models.DateTimeField(default=django.utils.timezone.now, null=True)),
|
|
|
+ (
|
|
|
+ "group",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ related_name="subscription_set",
|
|
|
+ to="sentry.Group",
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_groupsubscription",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="GroupTombstone",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "previous_group_id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedPositiveIntegerField(unique=True),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "level",
|
|
|
+ sentry.db.models.fields.bounded.BoundedPositiveIntegerField(
|
|
|
+ blank=True, default=40
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("message", models.TextField()),
|
|
|
+ ("culprit", models.CharField(blank=True, max_length=200, null=True)),
|
|
|
+ (
|
|
|
+ "data",
|
|
|
+ sentry.db.models.fields.gzippeddict.GzippedDictField(blank=True, null=True),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "actor_id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedPositiveIntegerField(null=True),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_grouptombstone",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="Identity",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("external_id", models.CharField(max_length=64)),
|
|
|
+ ("data", sentry.db.models.fields.encrypted.EncryptedJsonField(default=dict)),
|
|
|
+ ("status", sentry.db.models.fields.bounded.BoundedPositiveIntegerField(default=0)),
|
|
|
+ ("scopes", sentry.db.models.fields.array.ArrayField(null=True)),
|
|
|
+ ("date_verified", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_identity",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="IdentityProvider",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("type", models.CharField(max_length=64)),
|
|
|
+ ("config", sentry.db.models.fields.encrypted.EncryptedJsonField(default=dict)),
|
|
|
+ ("date_added", models.DateTimeField(default=django.utils.timezone.now, null=True)),
|
|
|
+ ("external_id", models.CharField(max_length=64, null=True)),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_identityprovider",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="Integration",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("provider", models.CharField(max_length=64)),
|
|
|
+ ("external_id", models.CharField(max_length=64)),
|
|
|
+ ("name", models.CharField(max_length=200)),
|
|
|
+ ("metadata", sentry.db.models.fields.encrypted.EncryptedJsonField(default=dict)),
|
|
|
+ (
|
|
|
+ "status",
|
|
|
+ sentry.db.models.fields.bounded.BoundedPositiveIntegerField(
|
|
|
+ default=0, null=True
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("date_added", models.DateTimeField(default=django.utils.timezone.now, null=True)),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_integration",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="IntegrationExternalProject",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "organization_integration_id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedPositiveIntegerField(db_index=True),
|
|
|
+ ),
|
|
|
+ ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ ("name", models.CharField(max_length=128)),
|
|
|
+ ("external_id", models.CharField(max_length=64)),
|
|
|
+ ("resolved_status", models.CharField(max_length=64)),
|
|
|
+ ("unresolved_status", models.CharField(max_length=64)),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_integrationexternalproject",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="LatestRelease",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("repository_id", sentry.db.models.fields.bounded.BoundedBigIntegerField()),
|
|
|
+ ("environment_id", sentry.db.models.fields.bounded.BoundedBigIntegerField()),
|
|
|
+ ("release_id", sentry.db.models.fields.bounded.BoundedBigIntegerField()),
|
|
|
+ ("deploy_id", sentry.db.models.fields.bounded.BoundedBigIntegerField(null=True)),
|
|
|
+ ("commit_id", sentry.db.models.fields.bounded.BoundedBigIntegerField(null=True)),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_latestrelease",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="LostPasswordHash",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("hash", models.CharField(max_length=32)),
|
|
|
+ ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ (
|
|
|
+ "user",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ to=settings.AUTH_USER_MODEL,
|
|
|
+ unique=True,
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_lostpasswordhash",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="Monitor",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "guid",
|
|
|
+ sentry.db.models.fields.uuid.UUIDField(
|
|
|
+ editable=False, max_length=32, unique=True
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "organization_id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedPositiveIntegerField(db_index=True),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "project_id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedPositiveIntegerField(db_index=True),
|
|
|
+ ),
|
|
|
+ ("name", models.CharField(max_length=128)),
|
|
|
+ ("status", sentry.db.models.fields.bounded.BoundedPositiveIntegerField(default=0)),
|
|
|
+ ("type", sentry.db.models.fields.bounded.BoundedPositiveIntegerField(default=0)),
|
|
|
+ ("config", sentry.db.models.fields.encrypted.EncryptedJsonField(default=dict)),
|
|
|
+ ("next_checkin", models.DateTimeField(null=True)),
|
|
|
+ ("last_checkin", models.DateTimeField(null=True)),
|
|
|
+ ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_monitor",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="MonitorCheckIn",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "guid",
|
|
|
+ sentry.db.models.fields.uuid.UUIDField(
|
|
|
+ editable=False, max_length=32, unique=True
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "project_id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedPositiveIntegerField(db_index=True),
|
|
|
+ ),
|
|
|
+ ("status", sentry.db.models.fields.bounded.BoundedPositiveIntegerField(default=0)),
|
|
|
+ ("config", sentry.db.models.fields.encrypted.EncryptedJsonField(default=dict)),
|
|
|
+ (
|
|
|
+ "duration",
|
|
|
+ sentry.db.models.fields.bounded.BoundedPositiveIntegerField(null=True),
|
|
|
+ ),
|
|
|
+ ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ ("date_updated", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_monitorcheckin",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="MonitorLocation",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "guid",
|
|
|
+ sentry.db.models.fields.uuid.UUIDField(
|
|
|
+ editable=False, max_length=32, unique=True
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("name", models.CharField(max_length=128)),
|
|
|
+ ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_monitorlocation",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="Option",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("key", models.CharField(max_length=64, unique=True)),
|
|
|
+ (
|
|
|
+ "value",
|
|
|
+ sentry.db.models.fields.encrypted.EncryptedPickledObjectField(editable=False),
|
|
|
+ ),
|
|
|
+ ("last_updated", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_option",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="Organization",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("name", models.CharField(max_length=64)),
|
|
|
+ ("slug", models.SlugField(unique=True)),
|
|
|
+ ("status", sentry.db.models.fields.bounded.BoundedPositiveIntegerField(default=0)),
|
|
|
+ ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ ("default_role", models.CharField(default="member", max_length=32)),
|
|
|
+ (
|
|
|
+ "flags",
|
|
|
+ bitfield.models.BitField(
|
|
|
+ (
|
|
|
+ (
|
|
|
+ "allow_joinleave",
|
|
|
+ "Allow members to join and leave teams without requiring approval.",
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "enhanced_privacy",
|
|
|
+ "Enable enhanced privacy controls to limit personally identifiable information (PII) as well as source code in things like notifications.",
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "disable_shared_issues",
|
|
|
+ "Disable sharing of limited details on issues to anonymous users.",
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "early_adopter",
|
|
|
+ "Enable early adopter status, gaining access to features prior to public release.",
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "require_2fa",
|
|
|
+ "Require and enforce two-factor authentication for all members.",
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "disable_new_visibility_features",
|
|
|
+ "Temporarily opt out of new visibility features and ui",
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ default=1,
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_organization",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="OrganizationAccessRequest",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_organizationaccessrequest",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="OrganizationAvatar",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("ident", models.CharField(db_index=True, max_length=32, unique=True)),
|
|
|
+ ("avatar_type", models.PositiveSmallIntegerField(default=0)),
|
|
|
+ (
|
|
|
+ "file",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ null=True,
|
|
|
+ on_delete=django.db.models.deletion.SET_NULL,
|
|
|
+ to="sentry.File",
|
|
|
+ unique=True,
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "organization",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ related_name="avatar",
|
|
|
+ to="sentry.Organization",
|
|
|
+ unique=True,
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_organizationavatar",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="OrganizationIntegration",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("config", sentry.db.models.fields.encrypted.EncryptedJsonField(default=dict)),
|
|
|
+ (
|
|
|
+ "default_auth_id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedPositiveIntegerField(
|
|
|
+ db_index=True, null=True
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("date_added", models.DateTimeField(default=django.utils.timezone.now, null=True)),
|
|
|
+ ("status", sentry.db.models.fields.bounded.BoundedPositiveIntegerField(default=0)),
|
|
|
+ (
|
|
|
+ "integration",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Integration"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "organization",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Organization"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_organizationintegration",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="OrganizationMember",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("email", models.EmailField(blank=True, max_length=75, null=True)),
|
|
|
+ ("role", models.CharField(default="member", max_length=32)),
|
|
|
+ (
|
|
|
+ "flags",
|
|
|
+ bitfield.models.BitField(
|
|
|
+ (("sso:linked", "sso:linked"), ("sso:invalid", "sso:invalid")), default=0
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("token", models.CharField(blank=True, max_length=64, null=True, unique=True)),
|
|
|
+ ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ ("token_expires_at", models.DateTimeField(default=None, null=True)),
|
|
|
+ ("has_global_access", models.BooleanField(default=True)),
|
|
|
+ (
|
|
|
+ "type",
|
|
|
+ sentry.db.models.fields.bounded.BoundedPositiveIntegerField(
|
|
|
+ blank=True, default=50
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "organization",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ related_name="member_set",
|
|
|
+ to="sentry.Organization",
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_organizationmember",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="OrganizationMemberTeam",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("is_active", models.BooleanField(default=True)),
|
|
|
+ (
|
|
|
+ "organizationmember",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.OrganizationMember"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_organizationmember_teams",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="OrganizationOnboardingTask",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("task", sentry.db.models.fields.bounded.BoundedPositiveIntegerField()),
|
|
|
+ ("status", sentry.db.models.fields.bounded.BoundedPositiveIntegerField()),
|
|
|
+ ("date_completed", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ (
|
|
|
+ "project_id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigIntegerField(blank=True, null=True),
|
|
|
+ ),
|
|
|
+ ("data", sentry.db.models.fields.jsonfield.JSONField(default=dict)),
|
|
|
+ (
|
|
|
+ "organization",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Organization"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "user",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ null=True,
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ to=settings.AUTH_USER_MODEL,
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_organizationonboardingtask",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="OrganizationOption",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("key", models.CharField(max_length=64)),
|
|
|
+ (
|
|
|
+ "value",
|
|
|
+ sentry.db.models.fields.encrypted.EncryptedPickledObjectField(editable=False),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "organization",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Organization"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_organizationoptions",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="PlatformExternalIssue",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("group_id", sentry.db.models.fields.bounded.BoundedBigIntegerField()),
|
|
|
+ ("service_type", models.CharField(max_length=64)),
|
|
|
+ ("display_name", models.TextField()),
|
|
|
+ ("web_url", models.URLField()),
|
|
|
+ ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_platformexternalissue",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="ProcessingIssue",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("checksum", models.CharField(db_index=True, max_length=40)),
|
|
|
+ ("type", models.CharField(max_length=30)),
|
|
|
+ ("data", sentry.db.models.fields.gzippeddict.GzippedDictField()),
|
|
|
+ ("datetime", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_processingissue",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="Project",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("slug", models.SlugField(null=True)),
|
|
|
+ ("name", models.CharField(max_length=200)),
|
|
|
+ ("forced_color", models.CharField(blank=True, max_length=6, null=True)),
|
|
|
+ ("public", models.BooleanField(default=False)),
|
|
|
+ ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ (
|
|
|
+ "status",
|
|
|
+ sentry.db.models.fields.bounded.BoundedPositiveIntegerField(
|
|
|
+ db_index=True, default=0
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("first_event", models.DateTimeField(null=True)),
|
|
|
+ (
|
|
|
+ "flags",
|
|
|
+ bitfield.models.BitField(
|
|
|
+ (("has_releases", "This Project has sent release data"),),
|
|
|
+ default=0,
|
|
|
+ null=True,
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("platform", models.CharField(max_length=64, null=True)),
|
|
|
+ (
|
|
|
+ "organization",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Organization"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_project",
|
|
|
+ },
|
|
|
+ bases=(models.Model, sentry.db.mixin.PendingDeletionMixin),
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="ProjectAvatar",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("ident", models.CharField(db_index=True, max_length=32, unique=True)),
|
|
|
+ ("avatar_type", models.PositiveSmallIntegerField(default=0)),
|
|
|
+ (
|
|
|
+ "file",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ null=True,
|
|
|
+ on_delete=django.db.models.deletion.SET_NULL,
|
|
|
+ to="sentry.File",
|
|
|
+ unique=True,
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "project",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ related_name="avatar",
|
|
|
+ to="sentry.Project",
|
|
|
+ unique=True,
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_projectavatar",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="ProjectBookmark",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("date_added", models.DateTimeField(default=django.utils.timezone.now, null=True)),
|
|
|
+ (
|
|
|
+ "project",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ blank=True,
|
|
|
+ db_constraint=False,
|
|
|
+ null=True,
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ to="sentry.Project",
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "user",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_projectbookmark",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="ProjectDebugFile",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("object_name", models.TextField()),
|
|
|
+ ("cpu_name", models.CharField(max_length=40)),
|
|
|
+ ("debug_id", models.CharField(db_column="uuid", max_length=64)),
|
|
|
+ ("code_id", models.CharField(max_length=64, null=True)),
|
|
|
+ ("data", sentry.db.models.fields.jsonfield.JSONField(null=True)),
|
|
|
+ (
|
|
|
+ "file",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.File"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "project",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ null=True, on_delete=django.db.models.deletion.CASCADE, to="sentry.Project"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_projectdsymfile",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="ProjectIntegration",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("config", sentry.db.models.fields.encrypted.EncryptedJsonField(default=dict)),
|
|
|
+ (
|
|
|
+ "integration",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Integration"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "project",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Project"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_projectintegration",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="ProjectKey",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("label", models.CharField(blank=True, max_length=64, null=True)),
|
|
|
+ ("public_key", models.CharField(max_length=32, null=True, unique=True)),
|
|
|
+ ("secret_key", models.CharField(max_length=32, null=True, unique=True)),
|
|
|
+ (
|
|
|
+ "roles",
|
|
|
+ bitfield.models.BitField(
|
|
|
+ (("store", "Event API access"), ("api", "Web API access")), default=1
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "status",
|
|
|
+ sentry.db.models.fields.bounded.BoundedPositiveIntegerField(
|
|
|
+ db_index=True, default=0
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("date_added", models.DateTimeField(default=django.utils.timezone.now, null=True)),
|
|
|
+ (
|
|
|
+ "rate_limit_count",
|
|
|
+ sentry.db.models.fields.bounded.BoundedPositiveIntegerField(null=True),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "rate_limit_window",
|
|
|
+ sentry.db.models.fields.bounded.BoundedPositiveIntegerField(null=True),
|
|
|
+ ),
|
|
|
+ ("data", sentry.db.models.fields.jsonfield.JSONField(default=dict)),
|
|
|
+ (
|
|
|
+ "project",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ related_name="key_set",
|
|
|
+ to="sentry.Project",
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_projectkey",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="ProjectOption",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("key", models.CharField(max_length=64)),
|
|
|
+ (
|
|
|
+ "value",
|
|
|
+ sentry.db.models.fields.encrypted.EncryptedPickledObjectField(editable=False),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "project",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Project"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_projectoptions",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="ProjectOwnership",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("raw", models.TextField(null=True)),
|
|
|
+ ("schema", sentry.db.models.fields.jsonfield.JSONField(null=True)),
|
|
|
+ ("fallthrough", models.BooleanField(default=True)),
|
|
|
+ ("date_created", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ ("last_updated", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ ("is_active", models.BooleanField(default=True)),
|
|
|
+ (
|
|
|
+ "project",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ to="sentry.Project",
|
|
|
+ unique=True,
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_projectownership",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="ProjectPlatform",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("project_id", sentry.db.models.fields.bounded.BoundedBigIntegerField()),
|
|
|
+ ("platform", models.CharField(max_length=64)),
|
|
|
+ ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ ("last_seen", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_projectplatform",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="ProjectRedirect",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("redirect_slug", models.SlugField()),
|
|
|
+ ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ (
|
|
|
+ "organization",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Organization"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "project",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Project"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_projectredirect",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="ProjectTeam",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "project",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Project"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_projectteam",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="PromptsActivity",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "organization_id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedPositiveIntegerField(db_index=True),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "project_id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedPositiveIntegerField(db_index=True),
|
|
|
+ ),
|
|
|
+ ("feature", models.CharField(max_length=64)),
|
|
|
+ ("data", sentry.db.models.fields.jsonfield.JSONField(default={})),
|
|
|
+ ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ (
|
|
|
+ "user",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_promptsactivity",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="PullRequest",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "organization_id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedPositiveIntegerField(db_index=True),
|
|
|
+ ),
|
|
|
+ ("repository_id", sentry.db.models.fields.bounded.BoundedPositiveIntegerField()),
|
|
|
+ ("key", models.CharField(max_length=64)),
|
|
|
+ ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ ("title", models.TextField(null=True)),
|
|
|
+ ("message", models.TextField(null=True)),
|
|
|
+ ("merge_commit_sha", models.CharField(max_length=64, null=True)),
|
|
|
+ (
|
|
|
+ "author",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ null=True,
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ to="sentry.CommitAuthor",
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_pull_request",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="PullRequestCommit",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "commit",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Commit"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "pull_request",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.PullRequest"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_pullrequest_commit",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="RawEvent",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("event_id", models.CharField(max_length=32, null=True)),
|
|
|
+ ("datetime", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ ("data", sentry.db.models.fields.node.NodeField(blank=True, null=True)),
|
|
|
+ (
|
|
|
+ "project",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Project"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_rawevent",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="RecentSearch",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("type", models.PositiveSmallIntegerField()),
|
|
|
+ ("query", models.TextField()),
|
|
|
+ ("query_hash", models.CharField(max_length=32)),
|
|
|
+ ("last_seen", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ (
|
|
|
+ "organization",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Organization"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "user",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ db_index=False,
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ to=settings.AUTH_USER_MODEL,
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_recentsearch",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="Relay",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("relay_id", models.CharField(max_length=64, unique=True)),
|
|
|
+ ("public_key", models.CharField(max_length=200)),
|
|
|
+ ("first_seen", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ ("last_seen", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ ("is_internal", models.BooleanField(default=False)),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_relay",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="Release",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("project_id", sentry.db.models.fields.bounded.BoundedBigIntegerField(null=True)),
|
|
|
+ ("version", models.CharField(max_length=250)),
|
|
|
+ ("ref", models.CharField(blank=True, max_length=250, null=True)),
|
|
|
+ ("url", models.URLField(blank=True, null=True)),
|
|
|
+ ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ ("date_started", models.DateTimeField(blank=True, null=True)),
|
|
|
+ ("date_released", models.DateTimeField(blank=True, null=True)),
|
|
|
+ ("data", sentry.db.models.fields.jsonfield.JSONField(default={})),
|
|
|
+ (
|
|
|
+ "new_groups",
|
|
|
+ sentry.db.models.fields.bounded.BoundedPositiveIntegerField(default=0),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "commit_count",
|
|
|
+ sentry.db.models.fields.bounded.BoundedPositiveIntegerField(
|
|
|
+ default=0, null=True
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "last_commit_id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedPositiveIntegerField(null=True),
|
|
|
+ ),
|
|
|
+ ("authors", sentry.db.models.fields.array.ArrayField(null=True)),
|
|
|
+ (
|
|
|
+ "total_deploys",
|
|
|
+ sentry.db.models.fields.bounded.BoundedPositiveIntegerField(
|
|
|
+ default=0, null=True
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "last_deploy_id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedPositiveIntegerField(null=True),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "organization",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Organization"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "owner",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ blank=True,
|
|
|
+ null=True,
|
|
|
+ on_delete=django.db.models.deletion.SET_NULL,
|
|
|
+ to=settings.AUTH_USER_MODEL,
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_release",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="ReleaseCommit",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "organization_id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedPositiveIntegerField(db_index=True),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "project_id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedPositiveIntegerField(null=True),
|
|
|
+ ),
|
|
|
+ ("order", sentry.db.models.fields.bounded.BoundedPositiveIntegerField()),
|
|
|
+ (
|
|
|
+ "commit",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Commit"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "release",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Release"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_releasecommit",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="ReleaseEnvironment",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "project_id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedPositiveIntegerField(null=True),
|
|
|
+ ),
|
|
|
+ ("first_seen", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ (
|
|
|
+ "last_seen",
|
|
|
+ models.DateTimeField(db_index=True, default=django.utils.timezone.now),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "environment",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ db_constraint=False,
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ to="sentry.Environment",
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "organization",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ db_constraint=False,
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ to="sentry.Organization",
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "release",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ db_constraint=False,
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ to="sentry.Release",
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_environmentrelease",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="ReleaseFile",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("project_id", sentry.db.models.fields.bounded.BoundedBigIntegerField(null=True)),
|
|
|
+ ("ident", models.CharField(max_length=40)),
|
|
|
+ ("name", models.TextField()),
|
|
|
+ (
|
|
|
+ "dist",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ null=True,
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ to="sentry.Distribution",
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "file",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.File"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "organization",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Organization"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "release",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Release"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_releasefile",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="ReleaseHeadCommit",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "organization_id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedPositiveIntegerField(db_index=True),
|
|
|
+ ),
|
|
|
+ ("repository_id", sentry.db.models.fields.bounded.BoundedPositiveIntegerField()),
|
|
|
+ (
|
|
|
+ "commit",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Commit"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "release",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Release"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_releaseheadcommit",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="ReleaseProject",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "new_groups",
|
|
|
+ sentry.db.models.fields.bounded.BoundedPositiveIntegerField(
|
|
|
+ default=0, null=True
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "project",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Project"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "release",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Release"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_release_project",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="ReleaseProjectEnvironment",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "new_issues_count",
|
|
|
+ sentry.db.models.fields.bounded.BoundedPositiveIntegerField(default=0),
|
|
|
+ ),
|
|
|
+ ("first_seen", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ (
|
|
|
+ "last_seen",
|
|
|
+ models.DateTimeField(db_index=True, default=django.utils.timezone.now),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "last_deploy_id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedPositiveIntegerField(
|
|
|
+ db_index=True, null=True
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "environment",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Environment"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "project",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Project"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "release",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Release"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_releaseprojectenvironment",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="Repository",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "organization_id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedPositiveIntegerField(db_index=True),
|
|
|
+ ),
|
|
|
+ ("name", models.CharField(max_length=200)),
|
|
|
+ ("url", models.URLField(null=True)),
|
|
|
+ ("provider", models.CharField(max_length=64, null=True)),
|
|
|
+ ("external_id", models.CharField(max_length=64, null=True)),
|
|
|
+ ("config", sentry.db.models.fields.jsonfield.JSONField(default=dict)),
|
|
|
+ (
|
|
|
+ "status",
|
|
|
+ sentry.db.models.fields.bounded.BoundedPositiveIntegerField(
|
|
|
+ db_index=True, default=0
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ (
|
|
|
+ "integration_id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedPositiveIntegerField(
|
|
|
+ db_index=True, null=True
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_repository",
|
|
|
+ },
|
|
|
+ bases=(models.Model, sentry.db.mixin.PendingDeletionMixin),
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="ReprocessingReport",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("event_id", models.CharField(max_length=32, null=True)),
|
|
|
+ ("datetime", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ (
|
|
|
+ "project",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Project"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_reprocessingreport",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="Rule",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "environment_id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedPositiveIntegerField(null=True),
|
|
|
+ ),
|
|
|
+ ("label", models.CharField(max_length=64)),
|
|
|
+ ("data", sentry.db.models.fields.gzippeddict.GzippedDictField()),
|
|
|
+ (
|
|
|
+ "status",
|
|
|
+ sentry.db.models.fields.bounded.BoundedPositiveIntegerField(
|
|
|
+ db_index=True, default=0
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ (
|
|
|
+ "project",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Project"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_rule",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="SavedSearch",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("type", models.PositiveSmallIntegerField(default=0, null=True)),
|
|
|
+ ("name", models.CharField(max_length=128)),
|
|
|
+ ("query", models.TextField()),
|
|
|
+ ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ ("is_default", models.BooleanField(default=False)),
|
|
|
+ ("is_global", models.NullBooleanField(db_index=True, default=False)),
|
|
|
+ (
|
|
|
+ "organization",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ null=True,
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ to="sentry.Organization",
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "owner",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ null=True,
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ to=settings.AUTH_USER_MODEL,
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "project",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ null=True, on_delete=django.db.models.deletion.CASCADE, to="sentry.Project"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_savedsearch",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="SavedSearchUserDefault",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "project",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Project"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "savedsearch",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.SavedSearch"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "user",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_savedsearch_userdefault",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="ScheduledDeletion",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "guid",
|
|
|
+ models.CharField(
|
|
|
+ default=sentry.models.scheduledeletion.default_guid,
|
|
|
+ max_length=32,
|
|
|
+ unique=True,
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("app_label", models.CharField(max_length=64)),
|
|
|
+ ("model_name", models.CharField(max_length=64)),
|
|
|
+ ("object_id", sentry.db.models.fields.bounded.BoundedBigIntegerField()),
|
|
|
+ ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ (
|
|
|
+ "date_scheduled",
|
|
|
+ models.DateTimeField(
|
|
|
+ default=sentry.models.scheduledeletion.default_date_schedule
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("actor_id", sentry.db.models.fields.bounded.BoundedBigIntegerField(null=True)),
|
|
|
+ ("data", sentry.db.models.fields.jsonfield.JSONField(default={})),
|
|
|
+ ("in_progress", models.BooleanField(default=False)),
|
|
|
+ ("aborted", models.BooleanField(default=False)),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_scheduleddeletion",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="ScheduledJob",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("name", models.CharField(max_length=128)),
|
|
|
+ ("payload", sentry.db.models.fields.jsonfield.JSONField(default=dict)),
|
|
|
+ ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ ("date_scheduled", models.DateTimeField()),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_scheduledjob",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="SentryApp",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("date_deleted", models.DateTimeField(blank=True, null=True)),
|
|
|
+ (
|
|
|
+ "scopes",
|
|
|
+ bitfield.models.BitField(
|
|
|
+ (
|
|
|
+ ("project:read", "project:read"),
|
|
|
+ ("project:write", "project:write"),
|
|
|
+ ("project:admin", "project:admin"),
|
|
|
+ ("project:releases", "project:releases"),
|
|
|
+ ("team:read", "team:read"),
|
|
|
+ ("team:write", "team:write"),
|
|
|
+ ("team:admin", "team:admin"),
|
|
|
+ ("event:read", "event:read"),
|
|
|
+ ("event:write", "event:write"),
|
|
|
+ ("event:admin", "event:admin"),
|
|
|
+ ("org:read", "org:read"),
|
|
|
+ ("org:write", "org:write"),
|
|
|
+ ("org:admin", "org:admin"),
|
|
|
+ ("member:read", "member:read"),
|
|
|
+ ("member:write", "member:write"),
|
|
|
+ ("member:admin", "member:admin"),
|
|
|
+ ),
|
|
|
+ default=None,
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("scope_list", sentry.db.models.fields.array.ArrayField(null=True)),
|
|
|
+ ("name", models.TextField()),
|
|
|
+ ("slug", models.CharField(max_length=64, unique=True)),
|
|
|
+ ("author", models.TextField(null=True)),
|
|
|
+ (
|
|
|
+ "status",
|
|
|
+ sentry.db.models.fields.bounded.BoundedPositiveIntegerField(
|
|
|
+ db_index=True, default=0
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "uuid",
|
|
|
+ models.CharField(default=sentry.models.sentryapp.default_uuid, max_length=64),
|
|
|
+ ),
|
|
|
+ ("redirect_url", models.URLField(null=True)),
|
|
|
+ ("webhook_url", models.URLField()),
|
|
|
+ ("is_alertable", models.BooleanField(default=False)),
|
|
|
+ ("events", sentry.db.models.fields.array.ArrayField(null=True)),
|
|
|
+ ("overview", models.TextField(null=True)),
|
|
|
+ ("schema", sentry.db.models.fields.encrypted.EncryptedJsonField(default=dict)),
|
|
|
+ ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ ("date_updated", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ (
|
|
|
+ "application",
|
|
|
+ models.OneToOneField(
|
|
|
+ null=True,
|
|
|
+ on_delete=django.db.models.deletion.SET_NULL,
|
|
|
+ related_name="sentry_app",
|
|
|
+ to="sentry.ApiApplication",
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "owner",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ related_name="owned_sentry_apps",
|
|
|
+ to="sentry.Organization",
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "proxy_user",
|
|
|
+ models.OneToOneField(
|
|
|
+ null=True,
|
|
|
+ on_delete=django.db.models.deletion.SET_NULL,
|
|
|
+ related_name="sentry_app",
|
|
|
+ to=settings.AUTH_USER_MODEL,
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_sentryapp",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="SentryAppAvatar",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("ident", models.CharField(db_index=True, max_length=32, unique=True)),
|
|
|
+ ("avatar_type", models.PositiveSmallIntegerField(default=0)),
|
|
|
+ (
|
|
|
+ "file",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ null=True,
|
|
|
+ on_delete=django.db.models.deletion.SET_NULL,
|
|
|
+ to="sentry.File",
|
|
|
+ unique=True,
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "sentry_app",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ related_name="avatar",
|
|
|
+ to="sentry.SentryApp",
|
|
|
+ unique=True,
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_sentryappavatar",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="SentryAppComponent",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "uuid",
|
|
|
+ sentry.db.models.fields.uuid.UUIDField(
|
|
|
+ editable=False, max_length=32, unique=True
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("type", models.CharField(max_length=64)),
|
|
|
+ ("schema", sentry.db.models.fields.encrypted.EncryptedJsonField(default=dict)),
|
|
|
+ (
|
|
|
+ "sentry_app",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ related_name="components",
|
|
|
+ to="sentry.SentryApp",
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_sentryappcomponent",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="SentryAppInstallation",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("date_deleted", models.DateTimeField(blank=True, null=True)),
|
|
|
+ (
|
|
|
+ "uuid",
|
|
|
+ models.CharField(
|
|
|
+ default=sentry.models.sentryappinstallation.default_uuid, max_length=64
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ ("date_updated", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ (
|
|
|
+ "api_grant",
|
|
|
+ models.OneToOneField(
|
|
|
+ null=True,
|
|
|
+ on_delete=django.db.models.deletion.SET_NULL,
|
|
|
+ related_name="sentry_app_installation",
|
|
|
+ to="sentry.ApiGrant",
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "organization",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ related_name="sentry_app_installations",
|
|
|
+ to="sentry.Organization",
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "sentry_app",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ related_name="installations",
|
|
|
+ to="sentry.SentryApp",
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_sentryappinstallation",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="ServiceHook",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("guid", models.CharField(max_length=32, null=True, unique=True)),
|
|
|
+ (
|
|
|
+ "actor_id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedPositiveIntegerField(db_index=True),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "project_id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedPositiveIntegerField(db_index=True),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "organization_id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedPositiveIntegerField(
|
|
|
+ db_index=True, null=True
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("url", models.URLField(max_length=512)),
|
|
|
+ (
|
|
|
+ "secret",
|
|
|
+ sentry.db.models.fields.encrypted.EncryptedTextField(
|
|
|
+ default=sentry.models.servicehook.generate_secret
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("events", sentry.db.models.fields.array.ArrayField(null=True)),
|
|
|
+ (
|
|
|
+ "status",
|
|
|
+ sentry.db.models.fields.bounded.BoundedPositiveIntegerField(
|
|
|
+ db_index=True, default=0
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("version", sentry.db.models.fields.bounded.BoundedPositiveIntegerField(default=0)),
|
|
|
+ ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ (
|
|
|
+ "application",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ null=True,
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ to="sentry.ApiApplication",
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_servicehook",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="ServiceHookProject",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "project_id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedPositiveIntegerField(db_index=True),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "service_hook",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.ServiceHook"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_servicehookproject",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="Team",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("slug", models.SlugField()),
|
|
|
+ ("name", models.CharField(max_length=64)),
|
|
|
+ ("status", sentry.db.models.fields.bounded.BoundedPositiveIntegerField(default=0)),
|
|
|
+ ("date_added", models.DateTimeField(default=django.utils.timezone.now, null=True)),
|
|
|
+ (
|
|
|
+ "organization",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Organization"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_team",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="TeamAvatar",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("ident", models.CharField(db_index=True, max_length=32, unique=True)),
|
|
|
+ ("avatar_type", models.PositiveSmallIntegerField(default=0)),
|
|
|
+ (
|
|
|
+ "file",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ null=True,
|
|
|
+ on_delete=django.db.models.deletion.SET_NULL,
|
|
|
+ to="sentry.File",
|
|
|
+ unique=True,
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "team",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ related_name="avatar",
|
|
|
+ to="sentry.Team",
|
|
|
+ unique=True,
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_teamavatar",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="UserAvatar",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("ident", models.CharField(db_index=True, max_length=32, unique=True)),
|
|
|
+ ("avatar_type", models.PositiveSmallIntegerField(default=0)),
|
|
|
+ (
|
|
|
+ "file",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ null=True,
|
|
|
+ on_delete=django.db.models.deletion.SET_NULL,
|
|
|
+ to="sentry.File",
|
|
|
+ unique=True,
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "user",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ related_name="avatar",
|
|
|
+ to=settings.AUTH_USER_MODEL,
|
|
|
+ unique=True,
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_useravatar",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="UserEmail",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("email", models.EmailField(max_length=75)),
|
|
|
+ (
|
|
|
+ "validation_hash",
|
|
|
+ models.CharField(
|
|
|
+ default=sentry.models.useremail.default_validation_hash, max_length=32
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("date_hash_added", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ ("is_verified", models.BooleanField(default=False)),
|
|
|
+ (
|
|
|
+ "user",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ related_name="emails",
|
|
|
+ to=settings.AUTH_USER_MODEL,
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_useremail",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="UserIP",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("ip_address", models.GenericIPAddressField()),
|
|
|
+ ("country_code", models.CharField(max_length=16, null=True)),
|
|
|
+ ("region_code", models.CharField(max_length=16, null=True)),
|
|
|
+ ("first_seen", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ ("last_seen", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ (
|
|
|
+ "user",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_userip",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="UserOption",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("key", models.CharField(max_length=64)),
|
|
|
+ (
|
|
|
+ "value",
|
|
|
+ sentry.db.models.fields.encrypted.EncryptedPickledObjectField(editable=False),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "organization",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ null=True,
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ to="sentry.Organization",
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "project",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ null=True, on_delete=django.db.models.deletion.CASCADE, to="sentry.Project"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "user",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_useroption",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="UserPermission",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("permission", models.CharField(max_length=32)),
|
|
|
+ (
|
|
|
+ "user",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_userpermission",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="UserReport",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "event_user_id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigIntegerField(null=True),
|
|
|
+ ),
|
|
|
+ ("event_id", models.CharField(max_length=32)),
|
|
|
+ ("name", models.CharField(max_length=128)),
|
|
|
+ ("email", models.EmailField(max_length=75)),
|
|
|
+ ("comments", models.TextField()),
|
|
|
+ (
|
|
|
+ "date_added",
|
|
|
+ models.DateTimeField(db_index=True, default=django.utils.timezone.now),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "environment",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ null=True,
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ to="sentry.Environment",
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "group",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ null=True, on_delete=django.db.models.deletion.CASCADE, to="sentry.Group"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "project",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Project"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_userreport",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="scheduleddeletion",
|
|
|
+ unique_together={("app_label", "model_name", "object_id")},
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="repository",
|
|
|
+ unique_together={
|
|
|
+ ("organization_id", "provider", "external_id"),
|
|
|
+ ("organization_id", "name"),
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="release",
|
|
|
+ name="projects",
|
|
|
+ field=models.ManyToManyField(
|
|
|
+ related_name="releases", through="sentry.ReleaseProject", to="sentry.Project"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="projectteam",
|
|
|
+ name="team",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Team"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="projectplatform",
|
|
|
+ unique_together={("project_id", "platform")},
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="project",
|
|
|
+ name="teams",
|
|
|
+ field=models.ManyToManyField(
|
|
|
+ related_name="teams", through="sentry.ProjectTeam", to="sentry.Team"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="processingissue",
|
|
|
+ name="project",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Project"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="platformexternalissue",
|
|
|
+ unique_together={("group_id", "service_type")},
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="organizationmemberteam",
|
|
|
+ name="team",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Team"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="organizationmember",
|
|
|
+ name="teams",
|
|
|
+ field=models.ManyToManyField(
|
|
|
+ blank=True, through="sentry.OrganizationMemberTeam", to="sentry.Team"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="organizationmember",
|
|
|
+ name="user",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ blank=True,
|
|
|
+ null=True,
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ related_name="sentry_orgmember_set",
|
|
|
+ to=settings.AUTH_USER_MODEL,
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="organizationaccessrequest",
|
|
|
+ name="member",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.OrganizationMember"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="organizationaccessrequest",
|
|
|
+ name="team",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Team"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="organization",
|
|
|
+ name="members",
|
|
|
+ field=models.ManyToManyField(
|
|
|
+ related_name="org_memberships",
|
|
|
+ through="sentry.OrganizationMember",
|
|
|
+ to=settings.AUTH_USER_MODEL,
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="monitorcheckin",
|
|
|
+ name="location",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ null=True, on_delete=django.db.models.deletion.CASCADE, to="sentry.MonitorLocation"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="monitorcheckin",
|
|
|
+ name="monitor",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Monitor"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AlterIndexTogether(
|
|
|
+ name="monitor",
|
|
|
+ index_together={("type", "next_checkin")},
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="latestrelease",
|
|
|
+ unique_together={("repository_id", "environment_id")},
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="integrationexternalproject",
|
|
|
+ unique_together={("organization_integration_id", "external_id")},
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="integration",
|
|
|
+ name="organizations",
|
|
|
+ field=models.ManyToManyField(
|
|
|
+ related_name="integrations",
|
|
|
+ through="sentry.OrganizationIntegration",
|
|
|
+ to="sentry.Organization",
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="integration",
|
|
|
+ name="projects",
|
|
|
+ field=models.ManyToManyField(
|
|
|
+ related_name="integrations",
|
|
|
+ through="sentry.ProjectIntegration",
|
|
|
+ to="sentry.Project",
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="identityprovider",
|
|
|
+ unique_together={("type", "external_id")},
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="identity",
|
|
|
+ name="idp",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.IdentityProvider"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="identity",
|
|
|
+ name="user",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="grouptombstone",
|
|
|
+ name="project",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Project"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="groupsubscription",
|
|
|
+ name="project",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ related_name="subscription_set",
|
|
|
+ to="sentry.Project",
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="groupsubscription",
|
|
|
+ name="user",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="groupshare",
|
|
|
+ name="project",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Project"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="groupshare",
|
|
|
+ name="user",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="groupseen",
|
|
|
+ name="project",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Project"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="groupseen",
|
|
|
+ name="user",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ db_index=False,
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ to=settings.AUTH_USER_MODEL,
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="grouprulestatus",
|
|
|
+ name="project",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Project"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="grouprulestatus",
|
|
|
+ name="rule",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Rule"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="groupresolution",
|
|
|
+ name="release",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Release"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="grouprelease",
|
|
|
+ unique_together={("group_id", "release_id", "environment")},
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="grouplink",
|
|
|
+ unique_together={("group_id", "linked_type", "linked_id")},
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="grouphash",
|
|
|
+ name="project",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ null=True, on_delete=django.db.models.deletion.CASCADE, to="sentry.Project"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="groupenvironment",
|
|
|
+ name="first_release",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ db_constraint=False,
|
|
|
+ null=True,
|
|
|
+ on_delete=django.db.models.deletion.DO_NOTHING,
|
|
|
+ to="sentry.Release",
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="groupenvironment",
|
|
|
+ name="group",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ db_constraint=False, on_delete=django.db.models.deletion.CASCADE, to="sentry.Group"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="groupemailthread",
|
|
|
+ name="project",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ related_name="groupemail_set",
|
|
|
+ to="sentry.Project",
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="groupcommitresolution",
|
|
|
+ unique_together={("group_id", "commit_id")},
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="groupbookmark",
|
|
|
+ name="project",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ related_name="bookmark_set",
|
|
|
+ to="sentry.Project",
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="groupbookmark",
|
|
|
+ name="user",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ related_name="sentry_bookmark_set",
|
|
|
+ to=settings.AUTH_USER_MODEL,
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="groupassignee",
|
|
|
+ name="project",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ related_name="assignee_set",
|
|
|
+ to="sentry.Project",
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="groupassignee",
|
|
|
+ name="team",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ null=True,
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ related_name="sentry_assignee_set",
|
|
|
+ to="sentry.Team",
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="groupassignee",
|
|
|
+ name="user",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ null=True,
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ related_name="sentry_assignee_set",
|
|
|
+ to=settings.AUTH_USER_MODEL,
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="group",
|
|
|
+ name="first_release",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ null=True, on_delete=django.db.models.deletion.PROTECT, to="sentry.Release"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="group",
|
|
|
+ name="project",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ null=True, on_delete=django.db.models.deletion.CASCADE, to="sentry.Project"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="fileblobowner",
|
|
|
+ name="organization",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Organization"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="file",
|
|
|
+ name="blob",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ null=True,
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ related_name="legacy_blob",
|
|
|
+ to="sentry.FileBlob",
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="file",
|
|
|
+ name="blobs",
|
|
|
+ field=models.ManyToManyField(through="sentry.FileBlobIndex", to="sentry.FileBlob"),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="featureadoption",
|
|
|
+ name="organization",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Organization"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="externalissue",
|
|
|
+ unique_together={("organization_id", "integration_id", "key")},
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="eventuser",
|
|
|
+ unique_together={("project_id", "ident"), ("project_id", "hash")},
|
|
|
+ ),
|
|
|
+ migrations.AlterIndexTogether(
|
|
|
+ name="eventuser",
|
|
|
+ index_together={
|
|
|
+ ("project_id", "username"),
|
|
|
+ ("project_id", "email"),
|
|
|
+ ("project_id", "ip_address"),
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="eventprocessingissue",
|
|
|
+ name="processing_issue",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.ProcessingIssue"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="eventprocessingissue",
|
|
|
+ name="raw_event",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.RawEvent"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="eventattachment",
|
|
|
+ name="file",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.File"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="environmentproject",
|
|
|
+ name="project",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Project"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="environment",
|
|
|
+ name="projects",
|
|
|
+ field=models.ManyToManyField(through="sentry.EnvironmentProject", to="sentry.Project"),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="distribution",
|
|
|
+ name="release",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Release"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="discoversavedqueryproject",
|
|
|
+ name="project",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Project"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="discoversavedquery",
|
|
|
+ name="organization",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Organization"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="discoversavedquery",
|
|
|
+ name="projects",
|
|
|
+ field=models.ManyToManyField(
|
|
|
+ through="sentry.DiscoverSavedQueryProject", to="sentry.Project"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="deploy",
|
|
|
+ name="release",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Release"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="dashboard",
|
|
|
+ name="organization",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Organization"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="counter",
|
|
|
+ name="project",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Project", unique=True
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="commitauthor",
|
|
|
+ unique_together={("organization_id", "email"), ("organization_id", "external_id")},
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="commit",
|
|
|
+ name="author",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ null=True, on_delete=django.db.models.deletion.CASCADE, to="sentry.CommitAuthor"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="authprovider",
|
|
|
+ name="default_teams",
|
|
|
+ field=models.ManyToManyField(blank=True, to="sentry.Team"),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="authprovider",
|
|
|
+ name="organization",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Organization", unique=True
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="authidentity",
|
|
|
+ name="auth_provider",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.AuthProvider"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="authidentity",
|
|
|
+ name="user",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="auditlogentry",
|
|
|
+ name="organization",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Organization"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="auditlogentry",
|
|
|
+ name="target_user",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ blank=True,
|
|
|
+ null=True,
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ related_name="audit_targets",
|
|
|
+ to=settings.AUTH_USER_MODEL,
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="apikey",
|
|
|
+ name="organization",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ related_name="key_set",
|
|
|
+ to="sentry.Organization",
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="activity",
|
|
|
+ name="group",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ null=True, on_delete=django.db.models.deletion.CASCADE, to="sentry.Group"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="activity",
|
|
|
+ name="project",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Project"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="activity",
|
|
|
+ name="user",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="userreport",
|
|
|
+ unique_together={("project", "event_id")},
|
|
|
+ ),
|
|
|
+ migrations.AlterIndexTogether(
|
|
|
+ name="userreport",
|
|
|
+ index_together={("project", "event_id"), ("project", "date_added")},
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="userpermission",
|
|
|
+ unique_together={("user", "permission")},
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="useroption",
|
|
|
+ unique_together={("user", "organization", "key"), ("user", "project", "key")},
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="userip",
|
|
|
+ unique_together={("user", "ip_address")},
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="useremail",
|
|
|
+ unique_together={("user", "email")},
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="team",
|
|
|
+ unique_together={("organization", "slug")},
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="servicehookproject",
|
|
|
+ unique_together={("service_hook", "project_id")},
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="savedsearchuserdefault",
|
|
|
+ unique_together={("project", "user")},
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="savedsearch",
|
|
|
+ unique_together={("project", "name"), ("organization", "owner", "type")},
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="reprocessingreport",
|
|
|
+ unique_together={("project", "event_id")},
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="releaseprojectenvironment",
|
|
|
+ unique_together={("project", "release", "environment")},
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="releaseproject",
|
|
|
+ unique_together={("project", "release")},
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="releaseheadcommit",
|
|
|
+ unique_together={("repository_id", "release")},
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="releasefile",
|
|
|
+ unique_together={("release", "ident")},
|
|
|
+ ),
|
|
|
+ migrations.AlterIndexTogether(
|
|
|
+ name="releasefile",
|
|
|
+ index_together={("release", "name")},
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="releaseenvironment",
|
|
|
+ unique_together={("organization", "release", "environment")},
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="releasecommit",
|
|
|
+ unique_together={("release", "commit"), ("release", "order")},
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="release",
|
|
|
+ unique_together={("organization", "version")},
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="recentsearch",
|
|
|
+ unique_together={("user", "organization", "type", "query_hash")},
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="rawevent",
|
|
|
+ unique_together={("project", "event_id")},
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="pullrequestcommit",
|
|
|
+ unique_together={("pull_request", "commit")},
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="pullrequest",
|
|
|
+ unique_together={("repository_id", "key")},
|
|
|
+ ),
|
|
|
+ migrations.AlterIndexTogether(
|
|
|
+ name="pullrequest",
|
|
|
+ index_together={
|
|
|
+ ("repository_id", "date_added"),
|
|
|
+ ("organization_id", "merge_commit_sha"),
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="promptsactivity",
|
|
|
+ unique_together={("user", "feature", "organization_id", "project_id")},
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="projectteam",
|
|
|
+ unique_together={("project", "team")},
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="projectredirect",
|
|
|
+ unique_together={("organization", "redirect_slug")},
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="projectoption",
|
|
|
+ unique_together={("project", "key")},
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="projectintegration",
|
|
|
+ unique_together={("project", "integration")},
|
|
|
+ ),
|
|
|
+ migrations.AlterIndexTogether(
|
|
|
+ name="projectdebugfile",
|
|
|
+ index_together={("project", "debug_id"), ("project", "code_id")},
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="projectbookmark",
|
|
|
+ unique_together={("project", "user")},
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="project",
|
|
|
+ unique_together={("organization", "slug")},
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="processingissue",
|
|
|
+ unique_together={("project", "checksum", "type")},
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="organizationoption",
|
|
|
+ unique_together={("organization", "key")},
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="organizationonboardingtask",
|
|
|
+ unique_together={("organization", "task")},
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="organizationmemberteam",
|
|
|
+ unique_together={("team", "organizationmember")},
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="organizationmember",
|
|
|
+ unique_together={("organization", "user"), ("organization", "email")},
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="organizationintegration",
|
|
|
+ unique_together={("organization", "integration")},
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="organizationaccessrequest",
|
|
|
+ unique_together={("team", "member")},
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="integration",
|
|
|
+ unique_together={("provider", "external_id")},
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="identity",
|
|
|
+ unique_together={("idp", "user"), ("idp", "external_id")},
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="groupsubscription",
|
|
|
+ unique_together={("group", "user")},
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="groupseen",
|
|
|
+ unique_together={("user", "group")},
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="grouprulestatus",
|
|
|
+ unique_together={("rule", "group")},
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="groupmeta",
|
|
|
+ unique_together={("group", "key")},
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="grouphash",
|
|
|
+ unique_together={("project", "hash")},
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="groupenvironment",
|
|
|
+ unique_together={("group", "environment")},
|
|
|
+ ),
|
|
|
+ migrations.AlterIndexTogether(
|
|
|
+ name="groupenvironment",
|
|
|
+ index_together={("environment", "first_release")},
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="groupemailthread",
|
|
|
+ unique_together={("email", "msgid"), ("email", "group")},
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="groupbookmark",
|
|
|
+ unique_together={("project", "user", "group")},
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="group",
|
|
|
+ unique_together={("project", "short_id")},
|
|
|
+ ),
|
|
|
+ migrations.AlterIndexTogether(
|
|
|
+ name="group",
|
|
|
+ index_together={("project", "first_release")},
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="fileblobowner",
|
|
|
+ unique_together={("blob", "organization")},
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="fileblobindex",
|
|
|
+ unique_together={("file", "blob", "offset")},
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="featureadoption",
|
|
|
+ unique_together={("organization", "feature_id")},
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="eventprocessingissue",
|
|
|
+ unique_together={("raw_event", "processing_issue")},
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="eventattachment",
|
|
|
+ unique_together={("project_id", "event_id", "file")},
|
|
|
+ ),
|
|
|
+ migrations.AlterIndexTogether(
|
|
|
+ name="eventattachment",
|
|
|
+ index_together={("project_id", "date_added")},
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="environmentproject",
|
|
|
+ unique_together={("project", "environment")},
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="environment",
|
|
|
+ unique_together={("organization_id", "name")},
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="distribution",
|
|
|
+ unique_together={("release", "name")},
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="discoversavedqueryproject",
|
|
|
+ unique_together={("project", "discover_saved_query")},
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="dashboard",
|
|
|
+ unique_together={("organization", "title")},
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="commitfilechange",
|
|
|
+ unique_together={("commit", "filename")},
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="commit",
|
|
|
+ unique_together={("repository_id", "key")},
|
|
|
+ ),
|
|
|
+ migrations.AlterIndexTogether(
|
|
|
+ name="commit",
|
|
|
+ index_together={("repository_id", "date_added")},
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="broadcastseen",
|
|
|
+ unique_together={("broadcast", "user")},
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="authidentity",
|
|
|
+ unique_together={("auth_provider", "ident"), ("auth_provider", "user")},
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="authenticator",
|
|
|
+ unique_together={("user", "type")},
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="assistantactivity",
|
|
|
+ unique_together={("user", "guide_id")},
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="apiauthorization",
|
|
|
+ unique_together={("user", "application")},
|
|
|
+ ),
|
|
|
+ migrations.RunSQL(
|
|
|
+ sql="\n create or replace function sentry_increment_project_counter(\n project bigint, delta int) returns int as $$\n declare\n new_val int;\n begin\n loop\n update sentry_projectcounter set value = value + delta\n where project_id = project\n returning value into new_val;\n if found then\n return new_val;\n end if;\n begin\n insert into sentry_projectcounter(project_id, value)\n values (project, delta)\n returning value into new_val;\n return new_val;\n exception when unique_violation then\n end;\n end loop;\n end\n $$ language plpgsql;\n ",
|
|
|
+ ),
|
|
|
+ migrations.RunSQL(
|
|
|
+ sql="\n CREATE UNIQUE INDEX sentry_savedsearch_is_global_6793a2f9e1b59b95\n ON sentry_savedsearch USING btree (is_global, name)\n WHERE is_global\n ",
|
|
|
+ ),
|
|
|
+ migrations.RunSQL(
|
|
|
+ sql="\n CREATE UNIQUE INDEX sentry_savedsearch_organization_id_313a24e907cdef99\n ON sentry_savedsearch USING btree (organization_id, name, type)\n WHERE (owner_id IS NULL);\n ",
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="AlertRule",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("name", models.TextField()),
|
|
|
+ ("status", models.SmallIntegerField(default=0)),
|
|
|
+ ("include_all_projects", models.BooleanField(default=False)),
|
|
|
+ ("threshold_period", models.IntegerField()),
|
|
|
+ ("date_modified", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_alertrule",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="AlertRuleExcludedProjects",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ (
|
|
|
+ "alert_rule",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ db_index=False,
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ to="sentry.AlertRule",
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "project",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ db_constraint=False,
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ to="sentry.Project",
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_alertruleexcludedprojects",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="AlertRuleTrigger",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("label", models.TextField()),
|
|
|
+ ("threshold_type", models.SmallIntegerField()),
|
|
|
+ ("alert_threshold", models.IntegerField()),
|
|
|
+ ("resolve_threshold", models.IntegerField(null=True)),
|
|
|
+ ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ (
|
|
|
+ "alert_rule",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.AlertRule"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_alertruletrigger",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="AlertRuleTriggerExclusion",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ (
|
|
|
+ "alert_rule_trigger",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ related_name="exclusions",
|
|
|
+ to="sentry.AlertRuleTrigger",
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_alertruletriggerexclusion",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="Incident",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("identifier", models.IntegerField()),
|
|
|
+ (
|
|
|
+ "detection_uuid",
|
|
|
+ sentry.db.models.fields.uuid.UUIDField(db_index=True, max_length=32, null=True),
|
|
|
+ ),
|
|
|
+ ("status", models.PositiveSmallIntegerField(default=1)),
|
|
|
+ ("type", models.PositiveSmallIntegerField(default=1)),
|
|
|
+ ("title", models.TextField()),
|
|
|
+ ("query", models.TextField()),
|
|
|
+ ("date_started", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ ("date_detected", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ ("date_closed", models.DateTimeField(null=True)),
|
|
|
+ (
|
|
|
+ "alert_rule",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ null=True,
|
|
|
+ on_delete=django.db.models.deletion.SET_NULL,
|
|
|
+ to="sentry.AlertRule",
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_incident",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="IncidentActivity",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("type", models.IntegerField()),
|
|
|
+ ("value", models.TextField(null=True)),
|
|
|
+ ("previous_value", models.TextField(null=True)),
|
|
|
+ ("comment", models.TextField(null=True)),
|
|
|
+ ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_incidentactivity",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="IncidentProject",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "incident",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Incident"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "project",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ db_constraint=False,
|
|
|
+ db_index=False,
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ to="sentry.Project",
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_incidentproject",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="IncidentSeen",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("last_seen", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ (
|
|
|
+ "incident",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Incident"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "user",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ db_index=False,
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ to=settings.AUTH_USER_MODEL,
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_incidentseen",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="IncidentSnapshot",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("unique_users", models.IntegerField()),
|
|
|
+ ("total_events", models.IntegerField()),
|
|
|
+ ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_incidentsnapshot",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="IncidentSubscription",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ (
|
|
|
+ "incident",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ db_index=False,
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ to="sentry.Incident",
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "user",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_incidentsubscription",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="IncidentTrigger",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("status", models.SmallIntegerField()),
|
|
|
+ ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ (
|
|
|
+ "alert_rule_trigger",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.AlertRuleTrigger"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "incident",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ db_index=False,
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ to="sentry.Incident",
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_incidenttrigger",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="IntegrationFeature",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("user_description", models.TextField(null=True)),
|
|
|
+ ("feature", sentry.db.models.fields.bounded.BoundedPositiveIntegerField(default=0)),
|
|
|
+ ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_integrationfeature",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="PagerDutyService",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("integration_key", models.CharField(max_length=255)),
|
|
|
+ ("service_name", models.CharField(max_length=255)),
|
|
|
+ ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ (
|
|
|
+ "organization_integration",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ to="sentry.OrganizationIntegration",
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_pagerdutyservice",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="QuerySubscription",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("type", models.TextField()),
|
|
|
+ ("subscription_id", models.TextField(unique=True)),
|
|
|
+ ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ (
|
|
|
+ "project",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ db_constraint=False,
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ to="sentry.Project",
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_querysubscription",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="SentryAppInstallationToken",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "api_token",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.ApiToken"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_sentryappinstallationtoken",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="TimeSeriesSnapshot",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("start", models.DateTimeField()),
|
|
|
+ ("end", models.DateTimeField()),
|
|
|
+ ("values", sentry.db.models.fields.array.ArrayField(null=True)),
|
|
|
+ ("period", models.IntegerField()),
|
|
|
+ ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_timeseriessnapshot",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="broadcast",
|
|
|
+ name="cta",
|
|
|
+ field=models.CharField(blank=True, max_length=256, null=True),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="groupredirect",
|
|
|
+ name="organization_id",
|
|
|
+ field=sentry.db.models.fields.bounded.BoundedBigIntegerField(null=True),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="groupredirect",
|
|
|
+ name="previous_project_slug",
|
|
|
+ field=models.SlugField(null=True),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="groupredirect",
|
|
|
+ name="previous_short_id",
|
|
|
+ field=sentry.db.models.fields.bounded.BoundedBigIntegerField(null=True),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="organizationmember",
|
|
|
+ name="invite_status",
|
|
|
+ field=models.PositiveSmallIntegerField(default=0, null=True),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="organizationmember",
|
|
|
+ name="inviter",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ blank=True,
|
|
|
+ null=True,
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ related_name="sentry_inviter_set",
|
|
|
+ to=settings.AUTH_USER_MODEL,
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="projectownership",
|
|
|
+ name="auto_assignment",
|
|
|
+ field=models.BooleanField(default=False),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="sentryapp",
|
|
|
+ name="verify_install",
|
|
|
+ field=models.BooleanField(default=True),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="sentryappinstallation",
|
|
|
+ name="api_token",
|
|
|
+ field=models.OneToOneField(
|
|
|
+ null=True,
|
|
|
+ on_delete=django.db.models.deletion.SET_NULL,
|
|
|
+ related_name="sentry_app_installation",
|
|
|
+ to="sentry.ApiToken",
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="sentryappinstallation",
|
|
|
+ name="status",
|
|
|
+ field=sentry.db.models.fields.bounded.BoundedPositiveIntegerField(
|
|
|
+ db_index=True, default=0
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="auditlogentry",
|
|
|
+ name="event",
|
|
|
+ field=sentry.db.models.fields.bounded.BoundedPositiveIntegerField(),
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="commitfilechange",
|
|
|
+ name="filename",
|
|
|
+ field=models.CharField(max_length=255),
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="discoversavedquery",
|
|
|
+ name="query",
|
|
|
+ field=sentry.db.models.fields.jsonfield.JSONField(default=dict),
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="externalissue",
|
|
|
+ name="metadata",
|
|
|
+ field=sentry.db.models.fields.jsonfield.JSONField(null=True),
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="featureadoption",
|
|
|
+ name="data",
|
|
|
+ field=sentry.db.models.fields.jsonfield.JSONField(default=dict),
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="file",
|
|
|
+ name="headers",
|
|
|
+ field=sentry.db.models.fields.jsonfield.JSONField(default=dict),
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="group",
|
|
|
+ name="project",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Project"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="grouplink",
|
|
|
+ name="data",
|
|
|
+ field=sentry.db.models.fields.jsonfield.JSONField(default=dict),
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="groupsnooze",
|
|
|
+ name="state",
|
|
|
+ field=sentry.db.models.fields.jsonfield.JSONField(null=True),
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="organization",
|
|
|
+ name="default_role",
|
|
|
+ field=models.CharField(default="member", max_length=32),
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="organizationmember",
|
|
|
+ name="role",
|
|
|
+ field=models.CharField(default="member", max_length=32),
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="organizationonboardingtask",
|
|
|
+ name="data",
|
|
|
+ field=sentry.db.models.fields.jsonfield.JSONField(default=dict),
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="projectdebugfile",
|
|
|
+ name="data",
|
|
|
+ field=sentry.db.models.fields.jsonfield.JSONField(null=True),
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="projectkey",
|
|
|
+ name="data",
|
|
|
+ field=sentry.db.models.fields.jsonfield.JSONField(default=dict),
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="projectownership",
|
|
|
+ name="schema",
|
|
|
+ field=sentry.db.models.fields.jsonfield.JSONField(null=True),
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="promptsactivity",
|
|
|
+ name="data",
|
|
|
+ field=sentry.db.models.fields.jsonfield.JSONField(default={}),
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="release",
|
|
|
+ name="data",
|
|
|
+ field=sentry.db.models.fields.jsonfield.JSONField(default={}),
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="release",
|
|
|
+ name="project_id",
|
|
|
+ field=sentry.db.models.fields.bounded.BoundedPositiveIntegerField(null=True),
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="releasefile",
|
|
|
+ name="project_id",
|
|
|
+ field=sentry.db.models.fields.bounded.BoundedPositiveIntegerField(null=True),
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="repository",
|
|
|
+ name="config",
|
|
|
+ field=sentry.db.models.fields.jsonfield.JSONField(default=dict),
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="scheduleddeletion",
|
|
|
+ name="data",
|
|
|
+ field=sentry.db.models.fields.jsonfield.JSONField(default={}),
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="scheduledjob",
|
|
|
+ name="payload",
|
|
|
+ field=sentry.db.models.fields.jsonfield.JSONField(default=dict),
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="sentryapp",
|
|
|
+ name="status",
|
|
|
+ field=sentry.db.models.fields.bounded.BoundedPositiveIntegerField(
|
|
|
+ db_index=True, default=0
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="sentryapp",
|
|
|
+ name="webhook_url",
|
|
|
+ field=models.URLField(null=True),
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="groupassignee",
|
|
|
+ unique_together={("project", "group")},
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="groupredirect",
|
|
|
+ unique_together={("organization_id", "previous_short_id", "previous_project_slug")},
|
|
|
+ ),
|
|
|
+ migrations.AlterIndexTogether(
|
|
|
+ name="group",
|
|
|
+ index_together={("project", "first_release"), ("project", "id")},
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="sentryappinstallationtoken",
|
|
|
+ name="sentry_app_installation",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.SentryAppInstallation"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="integrationfeature",
|
|
|
+ name="sentry_app",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.SentryApp"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="incidentsnapshot",
|
|
|
+ name="event_stats_snapshot",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.TimeSeriesSnapshot"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="incidentsnapshot",
|
|
|
+ name="incident",
|
|
|
+ field=models.OneToOneField(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Incident"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="incidentactivity",
|
|
|
+ name="incident",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Incident"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="incidentactivity",
|
|
|
+ name="user",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="incident",
|
|
|
+ name="organization",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Organization"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="incident",
|
|
|
+ name="projects",
|
|
|
+ field=models.ManyToManyField(
|
|
|
+ related_name="incidents", through="sentry.IncidentProject", to="sentry.Project"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="alertruletriggerexclusion",
|
|
|
+ name="query_subscription",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.QuerySubscription"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="alertruletrigger",
|
|
|
+ name="triggered_incidents",
|
|
|
+ field=models.ManyToManyField(
|
|
|
+ related_name="triggers", through="sentry.IncidentTrigger", to="sentry.Incident"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="alertrule",
|
|
|
+ name="excluded_projects",
|
|
|
+ field=models.ManyToManyField(
|
|
|
+ related_name="alert_rule_exclusions",
|
|
|
+ through="sentry.AlertRuleExcludedProjects",
|
|
|
+ to="sentry.Project",
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="alertrule",
|
|
|
+ name="organization",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ db_index=False,
|
|
|
+ null=True,
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ to="sentry.Organization",
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="sentryappinstallationtoken",
|
|
|
+ unique_together={("sentry_app_installation", "api_token")},
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="integrationfeature",
|
|
|
+ unique_together={("sentry_app", "feature")},
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="incidenttrigger",
|
|
|
+ unique_together={("incident", "alert_rule_trigger")},
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="incidentsubscription",
|
|
|
+ unique_together={("incident", "user")},
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="incidentseen",
|
|
|
+ unique_together={("user", "incident")},
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="incidentproject",
|
|
|
+ unique_together={("project", "incident")},
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="incident",
|
|
|
+ unique_together={("organization", "identifier")},
|
|
|
+ ),
|
|
|
+ migrations.AlterIndexTogether(
|
|
|
+ name="incident",
|
|
|
+ index_together={("alert_rule", "type", "status")},
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="alertruletriggerexclusion",
|
|
|
+ unique_together={("alert_rule_trigger", "query_subscription")},
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="alertruletrigger",
|
|
|
+ unique_together={("alert_rule", "label")},
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="alertruleexcludedprojects",
|
|
|
+ unique_together={("alert_rule", "project")},
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="alertrule",
|
|
|
+ unique_together={("organization", "name")},
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="AlertRuleTriggerAction",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("type", models.SmallIntegerField()),
|
|
|
+ ("target_type", models.SmallIntegerField()),
|
|
|
+ ("target_identifier", models.TextField(null=True)),
|
|
|
+ ("target_display", models.TextField(null=True)),
|
|
|
+ ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ (
|
|
|
+ "alert_rule_trigger",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.AlertRuleTrigger"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "integration",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ null=True,
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ to="sentry.Integration",
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_alertruletriggeraction",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="auditlogentry",
|
|
|
+ name="event",
|
|
|
+ field=sentry.db.models.fields.bounded.BoundedPositiveIntegerField(),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="sentryapp",
|
|
|
+ name="date_published",
|
|
|
+ field=models.DateTimeField(blank=True, null=True),
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="organization",
|
|
|
+ name="default_role",
|
|
|
+ field=models.CharField(default="member", max_length=32),
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="organizationmember",
|
|
|
+ name="role",
|
|
|
+ field=models.CharField(default="member", max_length=32),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="discoversavedquery",
|
|
|
+ name="version",
|
|
|
+ field=models.IntegerField(null=True),
|
|
|
+ ),
|
|
|
+ migrations.SeparateDatabaseAndState(
|
|
|
+ state_operations=[
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="incidentsnapshot",
|
|
|
+ name="incident",
|
|
|
+ field=sentry.db.models.fields.onetoone.OneToOneCascadeDeletes(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Incident"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ ),
|
|
|
+ migrations.RenameModel(
|
|
|
+ old_name="LatestRelease",
|
|
|
+ new_name="LatestRepoReleaseEnvironment",
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="organizationaccessrequest",
|
|
|
+ name="requester",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="ExportedData",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ ("date_finished", models.DateTimeField(null=True)),
|
|
|
+ ("date_expired", models.DateTimeField(null=True)),
|
|
|
+ ("storage_url", models.URLField(null=True)),
|
|
|
+ ("query_type", sentry.db.models.fields.bounded.BoundedPositiveIntegerField()),
|
|
|
+ ("query_info", sentry.db.models.fields.jsonfield.JSONField(default=dict)),
|
|
|
+ (
|
|
|
+ "organization",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Organization"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "user",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_exporteddata",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.RemoveField(
|
|
|
+ model_name="exporteddata",
|
|
|
+ name="storage_url",
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="exporteddata",
|
|
|
+ name="file",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ db_constraint=False,
|
|
|
+ null=True,
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ to="sentry.File",
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="project",
|
|
|
+ name="flags",
|
|
|
+ field=bitfield.models.BitField(
|
|
|
+ (
|
|
|
+ ("has_releases", "This Project has sent release data"),
|
|
|
+ ("has_sourcemaps", "This Project has processed source maps"),
|
|
|
+ ),
|
|
|
+ default=0,
|
|
|
+ null=True,
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="exporteddata",
|
|
|
+ name="query_type",
|
|
|
+ field=sentry.db.models.fields.bounded.BoundedPositiveIntegerField(),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="incidenttrigger",
|
|
|
+ name="date_modified",
|
|
|
+ field=models.DateTimeField(default=django.utils.timezone.now),
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="incident",
|
|
|
+ name="type",
|
|
|
+ field=models.PositiveSmallIntegerField(),
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="exporteddata",
|
|
|
+ name="date_expired",
|
|
|
+ field=models.DateTimeField(db_index=True, null=True),
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="exporteddata",
|
|
|
+ name="file",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ db_constraint=False,
|
|
|
+ null=True,
|
|
|
+ on_delete=django.db.models.deletion.SET_NULL,
|
|
|
+ to="sentry.File",
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="exporteddata",
|
|
|
+ name="user",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.SeparateDatabaseAndState(
|
|
|
+ state_operations=[
|
|
|
+ migrations.RemoveField(
|
|
|
+ model_name="organizationonboardingtask",
|
|
|
+ name="project_id",
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="organizationonboardingtask",
|
|
|
+ name="project",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ db_constraint=False,
|
|
|
+ null=True,
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ to="sentry.Project",
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="organizationonboardingtask",
|
|
|
+ name="status",
|
|
|
+ field=sentry.db.models.fields.bounded.BoundedPositiveIntegerField(),
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="organizationonboardingtask",
|
|
|
+ name="task",
|
|
|
+ field=sentry.db.models.fields.bounded.BoundedPositiveIntegerField(),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="exporteddata",
|
|
|
+ name="query_type",
|
|
|
+ field=sentry.db.models.fields.bounded.BoundedPositiveIntegerField(),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="organizationonboardingtask",
|
|
|
+ name="completion_seen",
|
|
|
+ field=models.DateTimeField(null=True),
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="KeyTransaction",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("transaction", models.CharField(max_length=200)),
|
|
|
+ (
|
|
|
+ "organization",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Organization"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "owner",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ null=True,
|
|
|
+ on_delete=django.db.models.deletion.SET_NULL,
|
|
|
+ to=settings.AUTH_USER_MODEL,
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "project",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ db_constraint=False,
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ to="sentry.Project",
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_discoverkeytransaction",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="keytransaction",
|
|
|
+ unique_together={("project", "transaction")},
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="querysubscription",
|
|
|
+ name="status",
|
|
|
+ field=models.SmallIntegerField(default=0),
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="querysubscription",
|
|
|
+ name="subscription_id",
|
|
|
+ field=models.TextField(null=True, unique=True),
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="project",
|
|
|
+ name="flags",
|
|
|
+ field=bitfield.models.BitField(
|
|
|
+ (("has_releases", "This Project has sent release data"),), default=0, null=True
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="project",
|
|
|
+ name="flags",
|
|
|
+ field=bitfield.models.BitField(
|
|
|
+ (
|
|
|
+ ("has_releases", "This Project has sent release data"),
|
|
|
+ ("has_issue_alerts_targeting", "This Project has issue alerts targeting"),
|
|
|
+ ),
|
|
|
+ default=0,
|
|
|
+ null=True,
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="integrationfeature",
|
|
|
+ name="feature",
|
|
|
+ field=sentry.db.models.fields.bounded.BoundedPositiveIntegerField(default=0),
|
|
|
+ ),
|
|
|
+ migrations.SeparateDatabaseAndState(
|
|
|
+ database_operations=[
|
|
|
+ migrations.RunSQL(
|
|
|
+ sql='\n CREATE INDEX CONCURRENTLY "sentry_eventattachment_project_id_date_added_fi_f3b0597f_idx" ON "sentry_eventattachment" ("project_id", "date_added", "file_id");\n ',
|
|
|
+ reverse_sql='\n DROP INDEX CONCURRENTLY "sentry_eventattachment_project_id_date_added_fi_f3b0597f_idx";\n ',
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ state_operations=[
|
|
|
+ migrations.AlterIndexTogether(
|
|
|
+ name="eventattachment",
|
|
|
+ index_together={
|
|
|
+ ("project_id", "date_added", "file"),
|
|
|
+ ("project_id", "date_added"),
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ ),
|
|
|
+ migrations.SeparateDatabaseAndState(
|
|
|
+ database_operations=[
|
|
|
+ migrations.RunSQL(
|
|
|
+ sql="\n ALTER TABLE sentry_alertrule DROP CONSTRAINT IF EXISTS sentry_alertrule_organization_id_name_12c48b37_uniq;\n ",
|
|
|
+ reverse_sql="DO $$\n BEGIN\n BEGIN\n ALTER TABLE sentry_alertrule ADD CONSTRAINT sentry_alertrule_organization_id_name_12c48b37_uniq UNIQUE (organization_id, name);\n EXCEPTION\n WHEN duplicate_table THEN\n END;\n END $$;\n ",
|
|
|
+ ),
|
|
|
+ migrations.RunSQL(
|
|
|
+ sql="\n DROP INDEX CONCURRENTLY IF EXISTS sentry_alertrule_organization_id_name_12c48b37_uniq;\n ",
|
|
|
+ reverse_sql="\n CREATE UNIQUE INDEX CONCURRENTLY IF NOT EXISTS sentry_alertrule_organization_id_name_12c48b37_uniq\n ON sentry_alertrule USING btree (organization_id, name);\n ",
|
|
|
+ ),
|
|
|
+ migrations.RunSQL(
|
|
|
+ sql="\n CREATE UNIQUE INDEX CONCURRENTLY IF NOT EXISTS sentry_alertrule_status_active\n ON sentry_alertrule USING btree (organization_id, name, status)\n WHERE status = 0;\n ",
|
|
|
+ reverse_sql="\n DROP INDEX CONCURRENTLY IF EXISTS sentry_alertrule_status_active;\n ",
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ state_operations=[
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="alertrule",
|
|
|
+ unique_together={("organization", "name", "status")},
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="alertrule",
|
|
|
+ name="organization",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ null=True, on_delete=django.db.models.deletion.CASCADE, to="sentry.Organization"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="keytransaction",
|
|
|
+ unique_together={("project", "owner", "transaction")},
|
|
|
+ ),
|
|
|
+ migrations.SeparateDatabaseAndState(
|
|
|
+ database_operations=[
|
|
|
+ migrations.RunSQL(
|
|
|
+ sql="\n ALTER TABLE sentry_alertrule DROP CONSTRAINT IF EXISTS sentry_alertrule_organization_id_382634eccd5f9371_uniq;\n ",
|
|
|
+ reverse_sql="DO $$\n BEGIN\n BEGIN\n ALTER TABLE sentry_alertrule ADD CONSTRAINT sentry_alertrule_organization_id_382634eccd5f9371_uniq UNIQUE (organization_id, name);\n EXCEPTION\n WHEN duplicate_table THEN\n END;\n END $$;\n ",
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="project",
|
|
|
+ name="flags",
|
|
|
+ field=bitfield.models.BitField(
|
|
|
+ (
|
|
|
+ ("has_releases", "This Project has sent release data"),
|
|
|
+ ("has_issue_alerts_targeting", "This Project has issue alerts targeting"),
|
|
|
+ ("has_transactions", "This Project has sent transactions"),
|
|
|
+ ),
|
|
|
+ default=0,
|
|
|
+ null=True,
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="incident",
|
|
|
+ name="status_method",
|
|
|
+ field=models.PositiveSmallIntegerField(default=3),
|
|
|
+ ),
|
|
|
+ migrations.AlterModelOptions(
|
|
|
+ name="alertrule",
|
|
|
+ options={
|
|
|
+ "base_manager_name": "objects_with_snapshots",
|
|
|
+ "default_manager_name": "objects_with_snapshots",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.AlterModelManagers(
|
|
|
+ name="alertrule",
|
|
|
+ managers=[
|
|
|
+ ("objects_with_snapshots", django.db.models.manager.Manager()),
|
|
|
+ ],
|
|
|
+ ),
|
|
|
+ migrations.SeparateDatabaseAndState(
|
|
|
+ state_operations=[
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="project",
|
|
|
+ name="flags",
|
|
|
+ field=bitfield.models.BitField(
|
|
|
+ (
|
|
|
+ ("has_releases", "This Project has sent release data"),
|
|
|
+ (
|
|
|
+ "has_issue_alerts_targeting",
|
|
|
+ "This Project has issue alerts targeting",
|
|
|
+ ),
|
|
|
+ ("has_transactions", "This Project has sent transactions"),
|
|
|
+ ),
|
|
|
+ default=2,
|
|
|
+ null=True,
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="PendingIncidentSnapshot",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "target_run_date",
|
|
|
+ models.DateTimeField(db_index=True, default=django.utils.timezone.now),
|
|
|
+ ),
|
|
|
+ ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ (
|
|
|
+ "incident",
|
|
|
+ sentry.db.models.fields.onetoone.OneToOneCascadeDeletes(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Incident"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_pendingincidentsnapshot",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="integration",
|
|
|
+ name="date_updated",
|
|
|
+ field=models.DateTimeField(default=django.utils.timezone.now),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="integrationexternalproject",
|
|
|
+ name="date_updated",
|
|
|
+ field=models.DateTimeField(default=django.utils.timezone.now),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="organizationintegration",
|
|
|
+ name="date_updated",
|
|
|
+ field=models.DateTimeField(default=django.utils.timezone.now),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="pagerdutyservice",
|
|
|
+ name="date_updated",
|
|
|
+ field=models.DateTimeField(default=django.utils.timezone.now),
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="SnubaQuery",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("dataset", models.TextField()),
|
|
|
+ ("query", models.TextField()),
|
|
|
+ ("aggregate", models.TextField()),
|
|
|
+ ("time_window", models.IntegerField()),
|
|
|
+ ("resolution", models.IntegerField()),
|
|
|
+ ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ (
|
|
|
+ "environment",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ db_constraint=False,
|
|
|
+ null=True,
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ to="sentry.Environment",
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_snubaquery",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="alertrule",
|
|
|
+ name="snuba_query",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ null=True,
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ to="sentry.SnubaQuery",
|
|
|
+ unique=True,
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="querysubscription",
|
|
|
+ name="snuba_query",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ null=True,
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ related_name="subscriptions",
|
|
|
+ to="sentry.SnubaQuery",
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="featureadoption",
|
|
|
+ name="feature_id",
|
|
|
+ field=models.PositiveIntegerField(),
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="incident",
|
|
|
+ name="alert_rule",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.PROTECT, to="sentry.AlertRule"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="auditlogentry",
|
|
|
+ name="event",
|
|
|
+ field=sentry.db.models.fields.bounded.BoundedPositiveIntegerField(),
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="alertruletrigger",
|
|
|
+ name="alert_threshold",
|
|
|
+ field=models.FloatField(),
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="alertruletrigger",
|
|
|
+ name="resolve_threshold",
|
|
|
+ field=models.FloatField(null=True),
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="sentryapp",
|
|
|
+ name="webhook_url",
|
|
|
+ field=models.URLField(max_length=512, null=True),
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="ExportedDataBlob",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("offset", sentry.db.models.fields.bounded.BoundedBigIntegerField()),
|
|
|
+ (
|
|
|
+ "blob",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ db_constraint=False,
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ to="sentry.FileBlob",
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "data_export",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.ExportedData"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_exporteddatablob",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="exporteddatablob",
|
|
|
+ unique_together={("data_export", "blob", "offset")},
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="SentryAppInstallationForProvider",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("date_updated", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ ("date_added", models.DateTimeField(default=django.utils.timezone.now, null=True)),
|
|
|
+ ("provider", models.CharField(max_length=64)),
|
|
|
+ (
|
|
|
+ "organization",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Organization"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "sentry_app_installation",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ to="sentry.SentryAppInstallation",
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_sentryappinstallationforprovider",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="sentryappinstallationforprovider",
|
|
|
+ unique_together={("provider", "organization")},
|
|
|
+ ),
|
|
|
+ migrations.RunSQL(
|
|
|
+ sql="ALTER TABLE sentry_timeseriessnapshot ALTER COLUMN values SET DATA TYPE float[] USING values::float[]",
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="alertrule",
|
|
|
+ name="resolve_threshold",
|
|
|
+ field=models.FloatField(null=True),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="alertrule",
|
|
|
+ name="threshold_type",
|
|
|
+ field=models.SmallIntegerField(null=True),
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="AlertRuleActivity",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("type", models.IntegerField()),
|
|
|
+ ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ (
|
|
|
+ "alert_rule",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.AlertRule"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "previous_alert_rule",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ null=True,
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ related_name="previous_alert_rule",
|
|
|
+ to="sentry.AlertRule",
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "user",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ null=True,
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ to=settings.AUTH_USER_MODEL,
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_alertruleactivity",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="alertruletrigger",
|
|
|
+ name="threshold_type",
|
|
|
+ field=models.SmallIntegerField(null=True),
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="identity",
|
|
|
+ name="external_id",
|
|
|
+ field=models.TextField(),
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="RuleActivity",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("type", models.IntegerField()),
|
|
|
+ ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ (
|
|
|
+ "rule",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Rule"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "user",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ null=True,
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ to=settings.AUTH_USER_MODEL,
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_ruleactivity",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="alertruletriggeraction",
|
|
|
+ name="sentry_app",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ null=True, on_delete=django.db.models.deletion.CASCADE, to="sentry.SentryApp"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="organizationonboardingtask",
|
|
|
+ name="task",
|
|
|
+ field=sentry.db.models.fields.bounded.BoundedPositiveIntegerField(),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="eventattachment",
|
|
|
+ name="type",
|
|
|
+ field=models.CharField(db_index=True, max_length=64, null=True),
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="RelayUsage",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("relay_id", models.CharField(max_length=64)),
|
|
|
+ ("version", models.CharField(default="0.0.1", max_length=32)),
|
|
|
+ ("first_seen", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ ("last_seen", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_relayusage",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="relay",
|
|
|
+ name="first_seen",
|
|
|
+ field=models.DateTimeField(default=None, null=True),
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="relay",
|
|
|
+ name="is_internal",
|
|
|
+ field=models.NullBooleanField(default=None),
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="relay",
|
|
|
+ name="last_seen",
|
|
|
+ field=models.DateTimeField(default=None, null=True),
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="relayusage",
|
|
|
+ unique_together={("relay_id", "version")},
|
|
|
+ ),
|
|
|
+ migrations.SeparateDatabaseAndState(
|
|
|
+ state_operations=[
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="project",
|
|
|
+ name="flags",
|
|
|
+ field=bitfield.models.BitField(
|
|
|
+ (
|
|
|
+ ("has_releases", "This Project has sent release data"),
|
|
|
+ (
|
|
|
+ "has_issue_alerts_targeting",
|
|
|
+ "This Project has issue alerts targeting",
|
|
|
+ ),
|
|
|
+ ("has_transactions", "This Project has sent transactions"),
|
|
|
+ ("has_alert_filters", "This Project has filters"),
|
|
|
+ ),
|
|
|
+ default=10,
|
|
|
+ null=True,
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="relayusage",
|
|
|
+ name="public_key",
|
|
|
+ field=models.CharField(db_index=True, max_length=200, null=True),
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="eventattachment",
|
|
|
+ name="type",
|
|
|
+ field=models.CharField(db_index=True, max_length=64),
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="servicehook",
|
|
|
+ name="project_id",
|
|
|
+ field=sentry.db.models.fields.bounded.BoundedPositiveIntegerField(
|
|
|
+ db_index=True, null=True
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.SeparateDatabaseAndState(
|
|
|
+ state_operations=[
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="fileblobindex",
|
|
|
+ name="blob",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.PROTECT, to="sentry.FileBlob"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="sentryapp",
|
|
|
+ name="creator_label",
|
|
|
+ field=models.TextField(null=True),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="sentryapp",
|
|
|
+ name="creator_user",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ db_constraint=False,
|
|
|
+ null=True,
|
|
|
+ on_delete=django.db.models.deletion.SET_NULL,
|
|
|
+ to=settings.AUTH_USER_MODEL,
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="SnubaQueryEventType",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("type", models.SmallIntegerField()),
|
|
|
+ (
|
|
|
+ "snuba_query",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.SnubaQuery"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_snubaqueryeventtype",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="snubaqueryeventtype",
|
|
|
+ unique_together={("snuba_query", "type")},
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="GroupInbox",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("reason", models.PositiveSmallIntegerField(default=0)),
|
|
|
+ ("reason_details", sentry.db.models.fields.jsonfield.JSONField(null=True)),
|
|
|
+ ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ (
|
|
|
+ "group",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ db_constraint=False,
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ to="sentry.Group",
|
|
|
+ unique=True,
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_groupinbox",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="RepositoryProjectPathConfig",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("date_updated", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ ("date_added", models.DateTimeField(default=django.utils.timezone.now, null=True)),
|
|
|
+ ("stack_root", models.TextField()),
|
|
|
+ ("source_root", models.TextField()),
|
|
|
+ ("default_branch", models.TextField(null=True)),
|
|
|
+ (
|
|
|
+ "organization_integration",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ to="sentry.OrganizationIntegration",
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "project",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ db_constraint=False,
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ to="sentry.Project",
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "repository",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Repository"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_repositoryprojectpathconfig",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="repositoryprojectpathconfig",
|
|
|
+ unique_together={("project", "stack_root")},
|
|
|
+ ),
|
|
|
+ migrations.SeparateDatabaseAndState(
|
|
|
+ database_operations=[
|
|
|
+ migrations.RunSQL(
|
|
|
+ sql='\n ALTER TABLE "sentry_projectdsymfile" ADD COLUMN "checksum" varchar(40) NULL;\n ',
|
|
|
+ reverse_sql='\n ALTER TABLE "sentry_projectdsymfile" DROP COLUMN "checksum";\n ',
|
|
|
+ ),
|
|
|
+ migrations.RunSQL(
|
|
|
+ sql='\n CREATE INDEX CONCURRENTLY "sentry_projectdsymfile_checksum_8fb028a8_idx" ON "sentry_projectdsymfile" ("checksum");\n ',
|
|
|
+ reverse_sql='\n DROP INDEX CONCURRENTLY "sentry_projectdsymfile_checksum_8fb028a8_idx";\n ',
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ state_operations=[
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="projectdebugfile",
|
|
|
+ name="checksum",
|
|
|
+ field=models.CharField(db_index=True, max_length=40, null=True),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="activity",
|
|
|
+ name="type",
|
|
|
+ field=sentry.db.models.fields.bounded.BoundedPositiveIntegerField(),
|
|
|
+ ),
|
|
|
+ migrations.SeparateDatabaseAndState(
|
|
|
+ state_operations=[
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="activity",
|
|
|
+ name="user",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ null=True,
|
|
|
+ on_delete=django.db.models.deletion.SET_NULL,
|
|
|
+ to=settings.AUTH_USER_MODEL,
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="alertruleactivity",
|
|
|
+ name="user",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ null=True,
|
|
|
+ on_delete=django.db.models.deletion.SET_NULL,
|
|
|
+ to=settings.AUTH_USER_MODEL,
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="auditlogentry",
|
|
|
+ name="actor",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ blank=True,
|
|
|
+ null=True,
|
|
|
+ on_delete=django.db.models.deletion.SET_NULL,
|
|
|
+ related_name="audit_actors",
|
|
|
+ to=settings.AUTH_USER_MODEL,
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="auditlogentry",
|
|
|
+ name="target_user",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ blank=True,
|
|
|
+ null=True,
|
|
|
+ on_delete=django.db.models.deletion.SET_NULL,
|
|
|
+ related_name="audit_targets",
|
|
|
+ to=settings.AUTH_USER_MODEL,
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="organizationmember",
|
|
|
+ name="inviter",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ blank=True,
|
|
|
+ null=True,
|
|
|
+ on_delete=django.db.models.deletion.SET_NULL,
|
|
|
+ related_name="sentry_inviter_set",
|
|
|
+ to=settings.AUTH_USER_MODEL,
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="organizationonboardingtask",
|
|
|
+ name="user",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ null=True,
|
|
|
+ on_delete=django.db.models.deletion.SET_NULL,
|
|
|
+ to=settings.AUTH_USER_MODEL,
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="ruleactivity",
|
|
|
+ name="user",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ null=True,
|
|
|
+ on_delete=django.db.models.deletion.SET_NULL,
|
|
|
+ to=settings.AUTH_USER_MODEL,
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="commitauthor",
|
|
|
+ name="email",
|
|
|
+ field=models.CharField(max_length=75),
|
|
|
+ ),
|
|
|
+ migrations.SeparateDatabaseAndState(
|
|
|
+ database_operations=[
|
|
|
+ migrations.RunSQL(
|
|
|
+ sql='\n ALTER TABLE "sentry_release" ADD COLUMN "status" integer NULL;\n ',
|
|
|
+ reverse_sql='\n ALTER TABLE "sentry_release" DROP COLUMN "status";\n ',
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ ),
|
|
|
+ migrations.SeparateDatabaseAndState(
|
|
|
+ database_operations=[
|
|
|
+ migrations.RunSQL(
|
|
|
+ sql='\n ALTER TABLE "sentry_groupinbox" ADD COLUMN "organization_id" bigint NULL;\n ALTER TABLE "sentry_groupinbox" ADD COLUMN "project_id" bigint NULL;\n ',
|
|
|
+ reverse_sql='\n ALTER TABLE "sentry_groupinbox" DROP COLUMN "organization_id";\n ALTER TABLE "sentry_groupinbox" DROP COLUMN "project_id";\n ',
|
|
|
+ ),
|
|
|
+ migrations.RunSQL(
|
|
|
+ sql='\n CREATE INDEX CONCURRENTLY "sentry_groupinbox_organization_id_7b67769a" ON "sentry_groupinbox" ("organization_id");\n ',
|
|
|
+ reverse_sql='\n DROP INDEX CONCURRENTLY "sentry_groupinbox_organization_id_7b67769a";\n ',
|
|
|
+ ),
|
|
|
+ migrations.RunSQL(
|
|
|
+ sql='\n CREATE INDEX CONCURRENTLY "sentry_groupinbox_project_id_ef8f034d" ON "sentry_groupinbox" ("project_id");\n ',
|
|
|
+ reverse_sql='\n DROP INDEX CONCURRENTLY "sentry_groupinbox_project_id_ef8f034d";\n ',
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ state_operations=[
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="groupinbox",
|
|
|
+ name="organization",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ db_constraint=False,
|
|
|
+ null=True,
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ to="sentry.Organization",
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="groupinbox",
|
|
|
+ name="project",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ db_constraint=False,
|
|
|
+ null=True,
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ to="sentry.Project",
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ ),
|
|
|
+ migrations.SeparateDatabaseAndState(
|
|
|
+ state_operations=[
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="release",
|
|
|
+ name="status",
|
|
|
+ field=sentry.db.models.fields.bounded.BoundedPositiveIntegerField(
|
|
|
+ default=0, null=True
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="platformexternalissue",
|
|
|
+ name="project",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ db_constraint=False,
|
|
|
+ null=True,
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ to="sentry.Project",
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.SeparateDatabaseAndState(
|
|
|
+ state_operations=[
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="platformexternalissue",
|
|
|
+ name="group",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ db_constraint=False,
|
|
|
+ db_index=False,
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ to="sentry.Group",
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.RemoveField(
|
|
|
+ model_name="platformexternalissue",
|
|
|
+ name="group_id",
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="platformexternalissue",
|
|
|
+ unique_together={("group", "service_type")},
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="DashboardWidget",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("order", sentry.db.models.fields.bounded.BoundedPositiveIntegerField()),
|
|
|
+ ("title", models.CharField(max_length=255)),
|
|
|
+ ("display_type", sentry.db.models.fields.bounded.BoundedPositiveIntegerField()),
|
|
|
+ ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ (
|
|
|
+ "dashboard",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Dashboard"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_dashboardwidget",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="DashboardWidgetQuery",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("name", models.CharField(max_length=255)),
|
|
|
+ ("fields", sentry.db.models.fields.array.ArrayField(null=True)),
|
|
|
+ ("conditions", models.TextField()),
|
|
|
+ ("interval", models.CharField(max_length=10)),
|
|
|
+ ("order", sentry.db.models.fields.bounded.BoundedPositiveIntegerField()),
|
|
|
+ ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ (
|
|
|
+ "widget",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.DashboardWidget"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_dashboardwidgetquery",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="dashboardwidgetquery",
|
|
|
+ unique_together={("widget", "order"), ("widget", "name")},
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="dashboardwidget",
|
|
|
+ unique_together={("dashboard", "title"), ("dashboard", "order")},
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="GroupOwner",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("type", models.PositiveSmallIntegerField()),
|
|
|
+ ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ (
|
|
|
+ "group",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ db_constraint=False,
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ to="sentry.Group",
|
|
|
+ unique=True,
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "organization",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ db_constraint=False,
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ to="sentry.Organization",
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "project",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ db_constraint=False,
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ to="sentry.Project",
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "team",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ null=True, on_delete=django.db.models.deletion.CASCADE, to="sentry.Team"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "user",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ null=True,
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ to=settings.AUTH_USER_MODEL,
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_groupowner",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.SeparateDatabaseAndState(
|
|
|
+ state_operations=[
|
|
|
+ migrations.RemoveField(
|
|
|
+ model_name="dashboard",
|
|
|
+ name="status",
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ ),
|
|
|
+ migrations.SeparateDatabaseAndState(
|
|
|
+ database_operations=[
|
|
|
+ migrations.RunSQL(
|
|
|
+ sql='\n ALTER TABLE "sentry_dashboard" DROP COLUMN "status";\n ',
|
|
|
+ reverse_sql='\n ALTER TABLE "sentry_dashboard" ADD COLUMN "status" int NOT NULL;\n ',
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="groupowner",
|
|
|
+ name="group",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ db_constraint=False, on_delete=django.db.models.deletion.CASCADE, to="sentry.Group"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="dashboardwidget",
|
|
|
+ name="interval",
|
|
|
+ field=models.CharField(max_length=10, null=True),
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="dashboardwidgetquery",
|
|
|
+ name="interval",
|
|
|
+ field=models.CharField(max_length=10, null=True),
|
|
|
+ ),
|
|
|
+ migrations.SeparateDatabaseAndState(
|
|
|
+ state_operations=[
|
|
|
+ migrations.RemoveField(
|
|
|
+ model_name="dashboardwidgetquery",
|
|
|
+ name="interval",
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ ),
|
|
|
+ migrations.RunSQL(
|
|
|
+ sql="ALTER TABLE sentry_dashboardwidgetquery DROP COLUMN interval",
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="querysubscription",
|
|
|
+ name="date_updated",
|
|
|
+ field=models.DateTimeField(default=django.utils.timezone.now, null=True),
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="querysubscription",
|
|
|
+ name="status",
|
|
|
+ field=models.SmallIntegerField(db_index=True, default=0),
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="dashboardwidget",
|
|
|
+ unique_together={("dashboard", "order")},
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="dashboardwidgetquery",
|
|
|
+ unique_together={("widget", "order")},
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="DashboardTombstone",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("slug", models.CharField(max_length=255)),
|
|
|
+ ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ (
|
|
|
+ "organization",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Organization"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_dashboardtombstone",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="dashboardtombstone",
|
|
|
+ unique_together={("organization", "slug")},
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="integrationfeature",
|
|
|
+ name="feature",
|
|
|
+ field=sentry.db.models.fields.bounded.BoundedPositiveIntegerField(default=0),
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="sentryapp",
|
|
|
+ name="status",
|
|
|
+ field=sentry.db.models.fields.bounded.BoundedPositiveIntegerField(
|
|
|
+ db_index=True, default=0
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="integrationfeature",
|
|
|
+ name="feature",
|
|
|
+ field=sentry.db.models.fields.bounded.BoundedPositiveIntegerField(default=0),
|
|
|
+ ),
|
|
|
+ migrations.SeparateDatabaseAndState(
|
|
|
+ database_operations=[
|
|
|
+ migrations.RunSQL(
|
|
|
+ sql="\n CREATE INDEX CONCURRENTLY IF NOT EXISTS sentry_groupinbox_date_added_f113c11b\n ON sentry_groupinbox (date_added);\n ",
|
|
|
+ reverse_sql="\n DROP INDEX CONCURRENTLY IF EXISTS sentry_groupinbox_date_added_f113c11b;\n ",
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ state_operations=[
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="groupinbox",
|
|
|
+ name="date_added",
|
|
|
+ field=models.DateTimeField(db_index=True, default=django.utils.timezone.now),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="groupcommitresolution",
|
|
|
+ name="group_id",
|
|
|
+ field=sentry.db.models.fields.bounded.BoundedBigIntegerField(),
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="grouprelease",
|
|
|
+ name="group_id",
|
|
|
+ field=sentry.db.models.fields.bounded.BoundedBigIntegerField(),
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="groupcommitresolution",
|
|
|
+ name="commit_id",
|
|
|
+ field=sentry.db.models.fields.bounded.BoundedBigIntegerField(db_index=True),
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="grouptombstone",
|
|
|
+ name="previous_group_id",
|
|
|
+ field=sentry.db.models.fields.bounded.BoundedBigIntegerField(unique=True),
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="release",
|
|
|
+ name="last_commit_id",
|
|
|
+ field=sentry.db.models.fields.bounded.BoundedBigIntegerField(null=True),
|
|
|
+ ),
|
|
|
+ migrations.SeparateDatabaseAndState(
|
|
|
+ database_operations=[
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="eventattachment",
|
|
|
+ name="file",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ db_constraint=False,
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ to="sentry.File",
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="userreport",
|
|
|
+ name="environment",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ db_constraint=False,
|
|
|
+ null=True,
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ to="sentry.Environment",
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="userreport",
|
|
|
+ name="group",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ db_constraint=False,
|
|
|
+ null=True,
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ to="sentry.Group",
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="userreport",
|
|
|
+ name="project",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ db_constraint=False,
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ to="sentry.Project",
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ state_operations=[
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="eventattachment",
|
|
|
+ name="file_id",
|
|
|
+ field=sentry.db.models.fields.bounded.BoundedBigIntegerField(
|
|
|
+ db_index=True, default=1
|
|
|
+ ),
|
|
|
+ preserve_default=False,
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="userreport",
|
|
|
+ name="environment_id",
|
|
|
+ field=sentry.db.models.fields.bounded.BoundedBigIntegerField(
|
|
|
+ db_index=True, null=True
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="userreport",
|
|
|
+ name="group_id",
|
|
|
+ field=sentry.db.models.fields.bounded.BoundedBigIntegerField(
|
|
|
+ db_index=True, null=True
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="userreport",
|
|
|
+ name="project_id",
|
|
|
+ field=sentry.db.models.fields.bounded.BoundedBigIntegerField(
|
|
|
+ db_index=True, default=1
|
|
|
+ ),
|
|
|
+ preserve_default=False,
|
|
|
+ ),
|
|
|
+ migrations.RemoveField(
|
|
|
+ model_name="eventattachment",
|
|
|
+ name="file",
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="eventattachment",
|
|
|
+ unique_together={("project_id", "event_id", "file_id")},
|
|
|
+ ),
|
|
|
+ migrations.RemoveField(
|
|
|
+ model_name="userreport",
|
|
|
+ name="environment",
|
|
|
+ ),
|
|
|
+ migrations.RemoveField(
|
|
|
+ model_name="userreport",
|
|
|
+ name="group",
|
|
|
+ ),
|
|
|
+ migrations.RemoveField(
|
|
|
+ model_name="userreport",
|
|
|
+ name="project",
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="userreport",
|
|
|
+ unique_together={("project_id", "event_id")},
|
|
|
+ ),
|
|
|
+ migrations.AlterIndexTogether(
|
|
|
+ name="eventattachment",
|
|
|
+ index_together={
|
|
|
+ ("project_id", "date_added", "file_id"),
|
|
|
+ ("project_id", "date_added"),
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.AlterIndexTogether(
|
|
|
+ name="userreport",
|
|
|
+ index_together={("project_id", "event_id"), ("project_id", "date_added")},
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="dashboardwidget",
|
|
|
+ name="display_type",
|
|
|
+ field=sentry.db.models.fields.bounded.BoundedPositiveIntegerField(),
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="dashboardwidget",
|
|
|
+ name="display_type",
|
|
|
+ field=sentry.db.models.fields.bounded.BoundedPositiveIntegerField(),
|
|
|
+ ),
|
|
|
+ migrations.AlterIndexTogether(
|
|
|
+ name="groupinbox",
|
|
|
+ index_together={("project", "date_added")},
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="dashboardwidgetquery",
|
|
|
+ name="orderby",
|
|
|
+ field=models.TextField(default=""),
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="activity",
|
|
|
+ name="type",
|
|
|
+ field=sentry.db.models.fields.bounded.BoundedPositiveIntegerField(),
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="repositoryprojectpathconfig",
|
|
|
+ name="organization_integration",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ null=True,
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ to="sentry.OrganizationIntegration",
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="ProjectCodeOwners",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("date_updated", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ ("raw", models.TextField(null=True)),
|
|
|
+ ("schema", sentry.db.models.fields.jsonfield.JSONField(null=True)),
|
|
|
+ ("date_added", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ (
|
|
|
+ "project",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ db_constraint=False,
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ to="sentry.Project",
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "repository_project_path_config",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ to="sentry.RepositoryProjectPathConfig",
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_projectcodeowners",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.SeparateDatabaseAndState(
|
|
|
+ database_operations=[
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="savedsearch",
|
|
|
+ name="sort",
|
|
|
+ field=sentry.db.models.fields.text.CharField(max_length=16, null=True),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ state_operations=[
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="savedsearch",
|
|
|
+ name="sort",
|
|
|
+ field=sentry.db.models.fields.text.CharField(
|
|
|
+ default="date", max_length=16, null=True
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ ),
|
|
|
+ migrations.SeparateDatabaseAndState(
|
|
|
+ state_operations=[
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="projectcodeowners",
|
|
|
+ name="repository_project_path_config",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.PROTECT,
|
|
|
+ to="sentry.RepositoryProjectPathConfig",
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="NotificationSetting",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("scope_type", sentry.db.models.fields.bounded.BoundedPositiveIntegerField()),
|
|
|
+ ("scope_identifier", sentry.db.models.fields.bounded.BoundedBigIntegerField()),
|
|
|
+ ("target_type", sentry.db.models.fields.bounded.BoundedPositiveIntegerField()),
|
|
|
+ ("target_identifier", sentry.db.models.fields.bounded.BoundedBigIntegerField()),
|
|
|
+ ("provider", sentry.db.models.fields.bounded.BoundedPositiveIntegerField()),
|
|
|
+ ("type", sentry.db.models.fields.bounded.BoundedPositiveIntegerField()),
|
|
|
+ ("value", sentry.db.models.fields.bounded.BoundedPositiveIntegerField()),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_notificationsetting",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="notificationsetting",
|
|
|
+ unique_together={
|
|
|
+ (
|
|
|
+ "scope_type",
|
|
|
+ "scope_identifier",
|
|
|
+ "target_type",
|
|
|
+ "target_identifier",
|
|
|
+ "provider",
|
|
|
+ "type",
|
|
|
+ )
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.AlterIndexTogether(
|
|
|
+ name="notificationsetting",
|
|
|
+ index_together={("target_type", "target_identifier")},
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="organization",
|
|
|
+ name="flags",
|
|
|
+ field=bitfield.models.BitField(
|
|
|
+ (
|
|
|
+ (
|
|
|
+ "allow_joinleave",
|
|
|
+ "Allow members to join and leave teams without requiring approval.",
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "enhanced_privacy",
|
|
|
+ "Enable enhanced privacy controls to limit personally identifiable information (PII) as well as source code in things like notifications.",
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "disable_shared_issues",
|
|
|
+ "Disable sharing of limited details on issues to anonymous users.",
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "early_adopter",
|
|
|
+ "Enable early adopter status, gaining access to features prior to public release.",
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "require_2fa",
|
|
|
+ "Require and enforce two-factor authentication for all members.",
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "disable_new_visibility_features",
|
|
|
+ "Temporarily opt out of new visibility features and ui",
|
|
|
+ ),
|
|
|
+ ("demo_mode", "Mark an organization as a demo org."),
|
|
|
+ ),
|
|
|
+ default=1,
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="user",
|
|
|
+ name="flags",
|
|
|
+ field=bitfield.models.BitField(
|
|
|
+ (
|
|
|
+ (
|
|
|
+ "newsletter_consent_prompt",
|
|
|
+ "Do we need to ask this user for newsletter consent?",
|
|
|
+ ),
|
|
|
+ ("demo_mode", "Mark an user as a demo user."),
|
|
|
+ ),
|
|
|
+ default=0,
|
|
|
+ null=True,
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="Actor",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("type", models.PositiveSmallIntegerField()),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_actor",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.SeparateDatabaseAndState(
|
|
|
+ database_operations=[
|
|
|
+ migrations.RunSQL(
|
|
|
+ sql='\n ALTER TABLE sentry_team ADD COLUMN "actor_id" bigint NULL;\n ALTER TABLE auth_user ADD COLUMN "actor_id" bigint NULL;\n ',
|
|
|
+ reverse_sql='\n ALTER TABLE sentry_team DROP COLUMN "actor_id";\n ALTER TABLE auth_user DROP COLUMN "actor_id";\n ',
|
|
|
+ ),
|
|
|
+ migrations.RunSQL(
|
|
|
+ sql="\n CREATE UNIQUE INDEX CONCURRENTLY IF NOT EXISTS sentry_team_actor_idx ON sentry_team (actor_id);\n ",
|
|
|
+ reverse_sql="\n DROP INDEX CONCURRENTLY IF EXISTS sentry_team_actor_idx;\n ",
|
|
|
+ ),
|
|
|
+ migrations.RunSQL(
|
|
|
+ sql='\n ALTER TABLE sentry_team ADD CONSTRAINT "sentry_team_actor_idx_fk_sentry_actor_id" FOREIGN KEY ("actor_id") REFERENCES "sentry_actor" ("id") DEFERRABLE INITIALLY DEFERRED;\n ',
|
|
|
+ reverse_sql="\n ALTER TABLE sentry_team DROP CONSTRAINT IF EXISTS sentry_team_actor_idx_fk_sentry_actor_id;\n ",
|
|
|
+ ),
|
|
|
+ migrations.RunSQL(
|
|
|
+ sql="\n CREATE UNIQUE INDEX CONCURRENTLY IF NOT EXISTS auth_user_actor_idx ON auth_user (actor_id);\n ",
|
|
|
+ reverse_sql="\n DROP INDEX CONCURRENTLY IF EXISTS auth_user_actor_idx;\n ",
|
|
|
+ ),
|
|
|
+ migrations.RunSQL(
|
|
|
+ sql='\n ALTER TABLE auth_user ADD CONSTRAINT "auth_user_actor_idx_fk_sentry_actor_id" FOREIGN KEY ("actor_id") REFERENCES "sentry_actor" ("id") DEFERRABLE INITIALLY DEFERRED;\n ',
|
|
|
+ reverse_sql="\n ALTER TABLE sentry_team DROP CONSTRAINT IF EXISTS auth_user_actor_idx_fk_sentry_actor_id;\n ",
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ state_operations=[
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="team",
|
|
|
+ name="actor",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ null=True,
|
|
|
+ on_delete=django.db.models.deletion.PROTECT,
|
|
|
+ to="sentry.Actor",
|
|
|
+ unique=True,
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="user",
|
|
|
+ name="actor",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ null=True,
|
|
|
+ on_delete=django.db.models.deletion.PROTECT,
|
|
|
+ to="sentry.Actor",
|
|
|
+ unique=True,
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="alertrule",
|
|
|
+ name="owner",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ null=True, on_delete=django.db.models.deletion.CASCADE, to="sentry.Actor"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="rule",
|
|
|
+ name="owner",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ null=True, on_delete=django.db.models.deletion.CASCADE, to="sentry.Actor"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="organization",
|
|
|
+ name="flags",
|
|
|
+ field=bitfield.models.BitField(
|
|
|
+ (
|
|
|
+ (
|
|
|
+ "allow_joinleave",
|
|
|
+ "Allow members to join and leave teams without requiring approval.",
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "enhanced_privacy",
|
|
|
+ "Enable enhanced privacy controls to limit personally identifiable information (PII) as well as source code in things like notifications.",
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "disable_shared_issues",
|
|
|
+ "Disable sharing of limited details on issues to anonymous users.",
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "early_adopter",
|
|
|
+ "Enable early adopter status, gaining access to features prior to public release.",
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "require_2fa",
|
|
|
+ "Require and enforce two-factor authentication for all members.",
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "disable_new_visibility_features",
|
|
|
+ "Temporarily opt out of new visibility features and ui",
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ default=1,
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="user",
|
|
|
+ name="flags",
|
|
|
+ field=bitfield.models.BitField(
|
|
|
+ (
|
|
|
+ (
|
|
|
+ "newsletter_consent_prompt",
|
|
|
+ "Do we need to ask this user for newsletter consent?",
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ default=0,
|
|
|
+ null=True,
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.RunPython(
|
|
|
+ code=add_my_issues_search,
|
|
|
+ reverse_code=django.db.migrations.operations.special.RunPython.noop,
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="notificationsetting",
|
|
|
+ name="target_identifier",
|
|
|
+ field=sentry.db.models.fields.bounded.BoundedBigIntegerField(null=True),
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="notificationsetting",
|
|
|
+ name="target_type",
|
|
|
+ field=sentry.db.models.fields.bounded.BoundedPositiveIntegerField(null=True),
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="notificationsetting",
|
|
|
+ unique_together={("scope_type", "scope_identifier", "provider", "type")},
|
|
|
+ ),
|
|
|
+ migrations.AlterIndexTogether(
|
|
|
+ name="notificationsetting",
|
|
|
+ index_together=set(),
|
|
|
+ ),
|
|
|
+ migrations.SeparateDatabaseAndState(
|
|
|
+ state_operations=[
|
|
|
+ migrations.RemoveField(
|
|
|
+ model_name="notificationsetting",
|
|
|
+ name="target_identifier",
|
|
|
+ ),
|
|
|
+ migrations.RemoveField(
|
|
|
+ model_name="notificationsetting",
|
|
|
+ name="target_type",
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ ),
|
|
|
+ migrations.SeparateDatabaseAndState(
|
|
|
+ database_operations=[
|
|
|
+ migrations.RunSQL(
|
|
|
+ sql='\n ALTER TABLE "sentry_notificationsetting" DROP COLUMN "target_identifier";\n ALTER TABLE "sentry_notificationsetting" DROP COLUMN "target_type";\n ',
|
|
|
+ reverse_sql='\n ALTER TABLE "sentry_notificationsetting" ADD COLUMN "target_identifier" bigint NULL;\n ALTER TABLE "sentry_notificationsetting" ADD COLUMN "target_type" int NULL;\n\n ',
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="notificationsetting",
|
|
|
+ name="target",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ default=1, on_delete=django.db.models.deletion.CASCADE, to="sentry.Actor"
|
|
|
+ ),
|
|
|
+ preserve_default=False,
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="notificationsetting",
|
|
|
+ unique_together={("scope_type", "scope_identifier", "target", "provider", "type")},
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="savedsearch",
|
|
|
+ name="sort",
|
|
|
+ field=sentry.db.models.fields.text.CharField(default="date", max_length=16, null=True),
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="projectcodeowners",
|
|
|
+ name="repository_project_path_config",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.PROTECT,
|
|
|
+ to="sentry.RepositoryProjectPathConfig",
|
|
|
+ unique=True,
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="ExternalActor",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("date_updated", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ ("date_added", models.DateTimeField(default=django.utils.timezone.now, null=True)),
|
|
|
+ ("provider", sentry.db.models.fields.bounded.BoundedPositiveIntegerField()),
|
|
|
+ ("external_name", models.TextField()),
|
|
|
+ ("external_id", models.TextField(null=True)),
|
|
|
+ (
|
|
|
+ "actor",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Actor"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "integration",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ null=True,
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ to="sentry.Integration",
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "organization",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Organization"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_externalactor",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="externalactor",
|
|
|
+ unique_together={("organization", "provider", "external_name", "actor")},
|
|
|
+ ),
|
|
|
+ migrations.SeparateDatabaseAndState(
|
|
|
+ database_operations=[
|
|
|
+ migrations.RunSQL(
|
|
|
+ sql='\n ALTER TABLE "sentry_externalactor" ALTER COLUMN "integration_id" SET DEFAULT 1;\n UPDATE "sentry_externalactor" SET "integration_id" = 1 where "integration_id" is NULL;\n ',
|
|
|
+ reverse_sql='\n ALTER TABLE "sentry_externalactor" ALTER COLUMN "integration_id" DROP DEFAULT;\n ',
|
|
|
+ ),
|
|
|
+ migrations.RunSQL(
|
|
|
+ sql='\n ALTER TABLE "sentry_externalactor" ALTER COLUMN "integration_id" SET NOT NULL;\n ALTER TABLE "sentry_externalactor" ALTER COLUMN "integration_id" DROP DEFAULT;\n ',
|
|
|
+ reverse_sql='\n ALTER TABLE "sentry_externalactor" ALTER COLUMN "integration_id" DROP NOT NULL;\n ',
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ state_operations=[
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="externalactor",
|
|
|
+ name="integration",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ default=1,
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ to="sentry.Integration",
|
|
|
+ ),
|
|
|
+ preserve_default=False,
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ ),
|
|
|
+ migrations.SeparateDatabaseAndState(
|
|
|
+ database_operations=[
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="fileblobowner",
|
|
|
+ name="organization",
|
|
|
+ field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ db_constraint=False,
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ to="sentry.Organization",
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ state_operations=[
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="fileblobowner",
|
|
|
+ name="organization_id",
|
|
|
+ field=sentry.db.models.fields.bounded.BoundedBigIntegerField(db_index=True),
|
|
|
+ preserve_default=False,
|
|
|
+ ),
|
|
|
+ migrations.RemoveField(
|
|
|
+ model_name="fileblobowner",
|
|
|
+ name="organization",
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="fileblobowner",
|
|
|
+ unique_together={("blob", "organization_id")},
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ ),
|
|
|
+ migrations.SeparateDatabaseAndState(
|
|
|
+ database_operations=[
|
|
|
+ migrations.RunSQL(
|
|
|
+ sql="\n CREATE INDEX CONCURRENTLY IF NOT EXISTS sentry_grouprelease_group_id_first_seen_53fc35ds\n ON sentry_grouprelease USING btree (group_id, first_seen);\n ",
|
|
|
+ reverse_sql="\n DROP INDEX CONCURRENTLY IF EXISTS sentry_grouprelease_group_id_first_seen_53fc35ds;\n ",
|
|
|
+ ),
|
|
|
+ migrations.RunSQL(
|
|
|
+ sql="\n CREATE INDEX CONCURRENTLY IF NOT EXISTS sentry_grouprelease_group_id_last_seen_g8v2sk7c\n ON sentry_grouprelease USING btree (group_id, last_seen DESC);\n ",
|
|
|
+ reverse_sql="\n DROP INDEX CONCURRENTLY IF EXISTS sentry_grouprelease_group_id_last_seen_g8v2sk7c;\n ",
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ state_operations=[
|
|
|
+ migrations.AlterIndexTogether(
|
|
|
+ name="grouprelease",
|
|
|
+ index_together={("group_id", "last_seen"), ("group_id", "first_seen")},
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="externalactor",
|
|
|
+ name="provider",
|
|
|
+ field=sentry.db.models.fields.bounded.BoundedPositiveIntegerField(),
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="TeamKeyTransaction",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("transaction", models.CharField(max_length=200)),
|
|
|
+ (
|
|
|
+ "organization",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Organization"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "project",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ db_constraint=False,
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ to="sentry.Project",
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "team",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Team"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_performanceteamkeytransaction",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="teamkeytransaction",
|
|
|
+ unique_together={("project", "team", "transaction")},
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="organizationmember",
|
|
|
+ name="flags",
|
|
|
+ field=bitfield.models.BitField(
|
|
|
+ (
|
|
|
+ ("sso:linked", "sso:linked"),
|
|
|
+ ("sso:invalid", "sso:invalid"),
|
|
|
+ ("member-limit:restricted", "member-limit:restricted"),
|
|
|
+ ),
|
|
|
+ default=0,
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.AlterField(
|
|
|
+ model_name="authprovider",
|
|
|
+ name="flags",
|
|
|
+ field=bitfield.models.BitField(
|
|
|
+ (
|
|
|
+ ("allow_unlinked", "Grant access to members who have not linked SSO accounts."),
|
|
|
+ ("scim_enabled", "Enable SCIM for member and team provisioning and syncing"),
|
|
|
+ ),
|
|
|
+ default=0,
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="ProjectTransactionThreshold",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("date_updated", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ ("date_added", models.DateTimeField(default=django.utils.timezone.now, null=True)),
|
|
|
+ ("threshold", models.IntegerField()),
|
|
|
+ ("metric", models.PositiveSmallIntegerField(default=1)),
|
|
|
+ (
|
|
|
+ "edited_by",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ db_constraint=False,
|
|
|
+ null=True,
|
|
|
+ on_delete=django.db.models.deletion.SET_NULL,
|
|
|
+ to=settings.AUTH_USER_MODEL,
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "organization",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Organization"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "project",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ db_constraint=False,
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ to="sentry.Project",
|
|
|
+ unique=True,
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_projecttransactionthreshold",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.CreateModel(
|
|
|
+ name="ProjectTransactionThresholdOverride",
|
|
|
+ fields=[
|
|
|
+ (
|
|
|
+ "id",
|
|
|
+ sentry.db.models.fields.bounded.BoundedBigAutoField(
|
|
|
+ primary_key=True, serialize=False
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ("date_updated", models.DateTimeField(default=django.utils.timezone.now)),
|
|
|
+ ("date_added", models.DateTimeField(default=django.utils.timezone.now, null=True)),
|
|
|
+ ("transaction", models.CharField(max_length=200)),
|
|
|
+ ("threshold", models.IntegerField()),
|
|
|
+ ("metric", models.PositiveSmallIntegerField(default=1)),
|
|
|
+ (
|
|
|
+ "edited_by",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ db_constraint=False,
|
|
|
+ null=True,
|
|
|
+ on_delete=django.db.models.deletion.SET_NULL,
|
|
|
+ to=settings.AUTH_USER_MODEL,
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "organization",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ on_delete=django.db.models.deletion.CASCADE, to="sentry.Organization"
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ "project",
|
|
|
+ sentry.db.models.fields.foreignkey.FlexibleForeignKey(
|
|
|
+ db_constraint=False,
|
|
|
+ on_delete=django.db.models.deletion.CASCADE,
|
|
|
+ to="sentry.Project",
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ options={
|
|
|
+ "db_table": "sentry_projecttransactionthresholdoverride",
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ migrations.AlterUniqueTogether(
|
|
|
+ name="projecttransactionthresholdoverride",
|
|
|
+ unique_together={("project", "transaction")},
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="release",
|
|
|
+ name="build_code",
|
|
|
+ field=models.TextField(null=True),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="release",
|
|
|
+ name="build_number",
|
|
|
+ field=models.BigIntegerField(null=True),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="release",
|
|
|
+ name="major",
|
|
|
+ field=models.BigIntegerField(null=True),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="release",
|
|
|
+ name="minor",
|
|
|
+ field=models.BigIntegerField(null=True),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="release",
|
|
|
+ name="patch",
|
|
|
+ field=models.BigIntegerField(null=True),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="release",
|
|
|
+ name="prerelease",
|
|
|
+ field=models.TextField(null=True),
|
|
|
+ ),
|
|
|
+ migrations.AddField(
|
|
|
+ model_name="release",
|
|
|
+ name="revision",
|
|
|
+ field=models.BigIntegerField(null=True),
|
|
|
+ ),
|
|
|
+ migrations.SeparateDatabaseAndState(
|
|
|
+ database_operations=[
|
|
|
+ migrations.RunSQL(
|
|
|
+ sql='\n CREATE INDEX CONCURRENTLY IF NOT EXISTS "sentry_release_organization_id_major_mi_38715957_idx"\n ON "sentry_release" ("organization_id", "major" DESC, "minor" DESC, "patch" DESC, "revision" DESC);\n ',
|
|
|
+ reverse_sql="DROP INDEX CONCURRENTLY IF EXISTS sentry_release_organization_id_major_mi_38715957_idx",
|
|
|
+ ),
|
|
|
+ migrations.RunSQL(
|
|
|
+ sql='\n CREATE INDEX CONCURRENTLY IF NOT EXISTS "sentry_release_organization_id_build_code_f93815e5_idx" ON "sentry_release" ("organization_id", "build_code");\n ',
|
|
|
+ reverse_sql="DROP INDEX CONCURRENTLY IF EXISTS sentry_release_organization_id_build_code_f93815e5_idx",
|
|
|
+ ),
|
|
|
+ migrations.RunSQL(
|
|
|
+ sql='\n CREATE INDEX CONCURRENTLY IF NOT EXISTS "sentry_release_organization_id_build_number_e1646551_idx" ON "sentry_release" ("organization_id", "build_number");\n ',
|
|
|
+ reverse_sql="DROP INDEX CONCURRENTLY IF EXISTS sentry_release_organization_id_build_number_e1646551_idx",
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ state_operations=[
|
|
|
+ migrations.AlterIndexTogether(
|
|
|
+ name="release",
|
|
|
+ index_together={
|
|
|
+ ("organization", "major", "minor", "patch", "revision"),
|
|
|
+ ("organization", "build_number"),
|
|
|
+ ("organization", "build_code"),
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ ),
|
|
|
+ migrations.SeparateDatabaseAndState(
|
|
|
+ database_operations=[
|
|
|
+ migrations.RunSQL(
|
|
|
+ sql='\n CREATE INDEX CONCURRENTLY IF NOT EXISTS "sentry_release_organization_id_status_3c637259_idx" ON "sentry_release" ("organization_id", "status");\n ',
|
|
|
+ reverse_sql="DROP INDEX CONCURRENTLY IF EXISTS sentry_release_organization_id_status_3c637259_idx",
|
|
|
+ ),
|
|
|
+ migrations.RunSQL(
|
|
|
+ sql='\n CREATE INDEX CONCURRENTLY IF NOT EXISTS "sentry_release_organization_id_date_added_8ebd273a_idx" ON "sentry_release" ("organization_id", "date_added");\n ',
|
|
|
+ reverse_sql="DROP INDEX CONCURRENTLY IF EXISTS sentry_release_organization_id_date_added_8ebd273a_idx",
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ state_operations=[
|
|
|
+ migrations.AlterIndexTogether(
|
|
|
+ name="release",
|
|
|
+ index_together={
|
|
|
+ ("organization", "status"),
|
|
|
+ ("organization", "build_code"),
|
|
|
+ ("organization", "major", "minor", "patch", "revision"),
|
|
|
+ ("organization", "date_added"),
|
|
|
+ ("organization", "build_number"),
|
|
|
+ },
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ ),
|
|
|
+ ]
|