Browse Source

Revert "fix: Change user foreign keys to use `models.SET_NONE` where appropriate. (#21697)"

This reverts commit 2a2c4907cdc897651c153662822d7292fbf43bbb.
Anton Ovchinnikov 4 years ago
parent
commit
2d0b40d569

+ 1 - 1
migrations_lockfile.txt

@@ -10,7 +10,7 @@ auth: 0008_alter_user_username_max_length
 contenttypes: 0002_remove_content_type_name
 jira_ac: 0001_initial
 nodestore: 0001_initial
-sentry: 0119_fix_set_none
+sentry: 0118_backfill_snuba_query_event_types
 sessions: 0001_initial
 sites: 0002_alter_domain_unique
 social_auth: 0001_initial

+ 1 - 1
src/sentry/incidents/models.py

@@ -656,7 +656,7 @@ class AlertRuleActivity(Model):
     previous_alert_rule = FlexibleForeignKey(
         "sentry.AlertRule", null=True, related_name="previous_alert_rule"
     )
-    user = FlexibleForeignKey("sentry.User", null=True, on_delete=models.SET_NULL)
+    user = FlexibleForeignKey("sentry.User", null=True)
     type = models.IntegerField()
     date_added = models.DateTimeField(default=timezone.now)
 

+ 0 - 70
src/sentry/migrations/0119_fix_set_none.py

@@ -1,70 +0,0 @@
-# -*- coding: utf-8 -*-
-# Generated by Django 1.11.29 on 2020-10-30 20:17
-from __future__ import unicode_literals
-
-from django.conf import settings
-from django.db import migrations
-import django.db.models.deletion
-import sentry.db.models.fields.foreignkey
-
-
-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.
-    atomic = True
-
-
-    dependencies = [
-        ('sentry', '0118_backfill_snuba_query_event_types'),
-    ]
-
-    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),
-        ),
-    ]

+ 1 - 1
src/sentry/models/activity.py

@@ -75,7 +75,7 @@ class Activity(Model):
     type = BoundedPositiveIntegerField(choices=TYPE)
     ident = models.CharField(max_length=64, null=True)
     # if the user is not set, it's assumed to be the system
-    user = FlexibleForeignKey(settings.AUTH_USER_MODEL, null=True, on_delete=models.SET_NULL)
+    user = FlexibleForeignKey(settings.AUTH_USER_MODEL, null=True)
     datetime = models.DateTimeField(default=timezone.now)
     data = GzippedDictField(null=True)
 

+ 2 - 8
src/sentry/models/auditlogentry.py

@@ -108,18 +108,12 @@ class AuditLogEntry(Model):
     organization = FlexibleForeignKey("sentry.Organization")
     actor_label = models.CharField(max_length=MAX_ACTOR_LABEL_LENGTH, null=True, blank=True)
     # if the entry was created via a user
-    actor = FlexibleForeignKey(
-        "sentry.User", related_name="audit_actors", null=True, blank=True, on_delete=models.SET_NULL
-    )
+    actor = FlexibleForeignKey("sentry.User", related_name="audit_actors", null=True, blank=True)
     # if the entry was created via an api key
     actor_key = FlexibleForeignKey("sentry.ApiKey", null=True, blank=True)
     target_object = BoundedPositiveIntegerField(null=True)
     target_user = FlexibleForeignKey(
-        "sentry.User",
-        null=True,
-        blank=True,
-        related_name="audit_targets",
-        on_delete=models.SET_NULL,
+        "sentry.User", null=True, blank=True, related_name="audit_targets"
     )
     # TODO(dcramer): we want to compile this mapping into JSX for the UI
     event = BoundedPositiveIntegerField(

+ 1 - 5
src/sentry/models/organizationmember.py

@@ -104,11 +104,7 @@ class OrganizationMember(Model):
         "sentry.Team", blank=True, through="sentry.OrganizationMemberTeam"
     )
     inviter = FlexibleForeignKey(
-        settings.AUTH_USER_MODEL,
-        null=True,
-        blank=True,
-        related_name="sentry_inviter_set",
-        on_delete=models.SET_NULL,
+        settings.AUTH_USER_MODEL, null=True, blank=True, related_name="sentry_inviter_set"
     )
     invite_status = models.PositiveSmallIntegerField(
         choices=(

+ 1 - 3
src/sentry/models/organizationonboardingtask.py

@@ -138,9 +138,7 @@ class OrganizationOnboardingTask(Model):
     )
 
     organization = FlexibleForeignKey("sentry.Organization")
-    user = FlexibleForeignKey(
-        settings.AUTH_USER_MODEL, null=True, on_delete=models.SET_NULL
-    )  # user that completed
+    user = FlexibleForeignKey(settings.AUTH_USER_MODEL, null=True)  # user that completed
     task = BoundedPositiveIntegerField(choices=[(k, six.text_type(v)) for k, v in TASK_CHOICES])
     status = BoundedPositiveIntegerField(choices=[(k, six.text_type(v)) for k, v in STATUS_CHOICES])
     completion_seen = models.DateTimeField(null=True)

+ 1 - 1
src/sentry/models/rule.py

@@ -99,7 +99,7 @@ class RuleActivity(Model):
     __core__ = True
 
     rule = FlexibleForeignKey("sentry.Rule")
-    user = FlexibleForeignKey("sentry.User", null=True, on_delete=models.SET_NULL)
+    user = FlexibleForeignKey("sentry.User", null=True)
     type = models.IntegerField()
     date_added = models.DateTimeField(default=timezone.now)