Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# Generated by Django 3.1 on 2019-09-22 21:47

from django.db import migrations, models

from sentry.new_migrations.migrations import CheckedMigration


class Migration(CheckedMigration):

initial = True

dependencies = []

operations = [
migrations.CreateModel(
name="TestTable",
fields=[
(
"id",
models.AutoField(
auto_created=True, primary_key=True, serialize=False, verbose_name="ID"
),
),
],
),
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
from sentry.new_migrations.migrations import CheckedMigration
from sentry.new_migrations.monkey.models import SafeDeleteModel
from sentry.new_migrations.monkey.state import DeletionAction


class Migration(CheckedMigration):

dependencies = [
("bad_flow_delete_model_double_pending_app", "0001_initial"),
]

operations = [
SafeDeleteModel(
name="TestTable",
deletion_action=DeletionAction.MOVE_TO_PENDING,
),
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
from sentry.new_migrations.migrations import CheckedMigration
from sentry.new_migrations.monkey.models import SafeDeleteModel
from sentry.new_migrations.monkey.state import DeletionAction


class Migration(CheckedMigration):

dependencies = [
("bad_flow_delete_model_double_pending_app", "0002_delete_pending"),
]

operations = [
SafeDeleteModel(
name="TestTable",
deletion_action=DeletionAction.MOVE_TO_PENDING,
),
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
from django.db import models


class TestTable(models.Model):
field = models.IntegerField(default=0, null=False)
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# Generated by Django 3.1 on 2019-09-22 21:47

from django.db import migrations, models

from sentry.new_migrations.migrations import CheckedMigration


class Migration(CheckedMigration):

initial = True

dependencies = []

operations = [
migrations.CreateModel(
name="TestTable",
fields=[
(
"id",
models.AutoField(
auto_created=True, primary_key=True, serialize=False, verbose_name="ID"
),
),
],
),
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
from sentry.new_migrations.migrations import CheckedMigration
from sentry.new_migrations.monkey.models import SafeDeleteModel
from sentry.new_migrations.monkey.state import DeletionAction


class Migration(CheckedMigration):

dependencies = [
("bad_flow_delete_model_without_pending_app", "0001_initial"),
]

operations = [
SafeDeleteModel(
name="TestTable",
deletion_action=DeletionAction.DELETE,
),
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
from django.db import models


class TestTable(models.Model):
field = models.IntegerField(default=0, null=False)
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
import django
from django.db import migrations, models

import sentry
from sentry.new_migrations.migrations import CheckedMigration


class Migration(CheckedMigration):

initial = True

dependencies = []

operations = [
migrations.CreateModel(
name="FkTable",
fields=[
(
"id",
models.AutoField(
auto_created=True, primary_key=True, serialize=False, verbose_name="ID"
),
),
],
),
migrations.CreateModel(
name="TestTable",
fields=[
(
"id",
models.AutoField(
auto_created=True, primary_key=True, serialize=False, verbose_name="ID"
),
),
(
"fk_table",
sentry.db.models.fields.foreignkey.FlexibleForeignKey(
on_delete=django.db.models.deletion.CASCADE,
to="bad_flow_delete_pending_with_fk_constraints_app.fktable",
db_index=False,
),
),
],
),
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
from sentry.new_migrations.migrations import CheckedMigration
from sentry.new_migrations.monkey.models import SafeDeleteModel
from sentry.new_migrations.monkey.state import DeletionAction


class Migration(CheckedMigration):
atomic = False

dependencies = [
("bad_flow_delete_pending_with_fk_constraints_app", "0001_initial"),
]

operations = [
SafeDeleteModel(
name="TestTable",
deletion_action=DeletionAction.MOVE_TO_PENDING,
),
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
from django.db import models

from sentry.db.models import FlexibleForeignKey


class FkTable(models.Model):
field = models.IntegerField(default=0, null=False)


class TestTable(models.Model):
field = models.IntegerField(default=0, null=False)
fk_table = FlexibleForeignKey(FkTable, db_index=False)
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# Generated by Django 3.1 on 2019-09-22 21:47
import django
from django.db import migrations, models

import sentry
from sentry.new_migrations.migrations import CheckedMigration


class Migration(CheckedMigration):

initial = True

dependencies = []

operations = [
migrations.CreateModel(
name="FkTable",
fields=[
(
"id",
models.AutoField(
auto_created=True, primary_key=True, serialize=False, verbose_name="ID"
),
),
],
),
migrations.CreateModel(
name="TestTable",
fields=[
(
"id",
models.AutoField(
auto_created=True, primary_key=True, serialize=False, verbose_name="ID"
),
),
(
"fk_table",
sentry.db.models.fields.foreignkey.FlexibleForeignKey(
on_delete=django.db.models.deletion.CASCADE,
to="good_flow_delete_pending_with_fk_constraints_app.fktable",
db_index=False,
),
),
],
),
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
import django
from django.db import migrations

import sentry
from sentry.new_migrations.migrations import CheckedMigration
from sentry.new_migrations.monkey.models import SafeDeleteModel
from sentry.new_migrations.monkey.state import DeletionAction


class Migration(CheckedMigration):
atomic = False

dependencies = [
("good_flow_delete_pending_with_fk_constraints_app", "0001_initial"),
]

operations = [
migrations.AlterField(
model_name="TestTable",
name="fk_table",
field=sentry.db.models.fields.foreignkey.FlexibleForeignKey(
on_delete=django.db.models.deletion.CASCADE,
to="good_flow_delete_pending_with_fk_constraints_app.fktable",
db_index=False,
db_constraint=False,
),
),
SafeDeleteModel(
name="TestTable",
deletion_action=DeletionAction.MOVE_TO_PENDING,
),
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
from sentry.new_migrations.migrations import CheckedMigration
from sentry.new_migrations.monkey.models import SafeDeleteModel
from sentry.new_migrations.monkey.state import DeletionAction


class Migration(CheckedMigration):
dependencies = [
("good_flow_delete_pending_with_fk_constraints_app", "0002_remove_constraints_and_pending"),
]

operations = [
SafeDeleteModel(
name="TestTable",
deletion_action=DeletionAction.DELETE,
),
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
from django.db import models

from sentry.db.models import FlexibleForeignKey


class FkTable(models.Model):
field = models.IntegerField(default=0, null=False)


class TestTable(models.Model):
field = models.IntegerField(default=0, null=False)
fk_table = FlexibleForeignKey(FkTable, db_index=False)
Empty file.
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
from django.db import migrations, models

from sentry.new_migrations.migrations import CheckedMigration


class Migration(CheckedMigration):
initial = True
dependencies = []

operations = [
migrations.CreateModel(
name="TestTable",
fields=[
(
"id",
models.AutoField(
auto_created=True, primary_key=True, serialize=False, verbose_name="ID"
),
),
],
),
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
from sentry.new_migrations.migrations import CheckedMigration
from sentry.new_migrations.monkey.models import SafeDeleteModel
from sentry.new_migrations.monkey.state import DeletionAction


class Migration(CheckedMigration):
dependencies = [
("good_flow_delete_simple_app", "0001_initial"),
]

operations = [
SafeDeleteModel(
name="TestTable",
deletion_action=DeletionAction.MOVE_TO_PENDING,
),
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
from sentry.new_migrations.migrations import CheckedMigration
from sentry.new_migrations.monkey.models import SafeDeleteModel
from sentry.new_migrations.monkey.state import DeletionAction


class Migration(CheckedMigration):
dependencies = [
("good_flow_delete_simple_app", "0002_set_pending"),
]

operations = [
SafeDeleteModel(
name="TestTable",
deletion_action=DeletionAction.DELETE,
),
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
from django.db import models


class TestTable(models.Model):
field = models.IntegerField(default=0, null=False)
12 changes: 7 additions & 5 deletions src/sentry/db/postgres/schema.py
Original file line number Diff line number Diff line change
Expand Up @@ -88,14 +88,16 @@ def alter_db_table(self, model, old_db_table, new_db_table):
"More info here: https://develop.sentry.dev/database-migrations/#renaming-tables"
)

def delete_model(self, model):
def delete_model(self, model, is_safe=False):
"""
It's never safe to delete a model using the standard migration process
"""
raise UnsafeOperationException(
f"Deleting the {model.__name__} model is unsafe.\n"
"More info here: https://develop.sentry.dev/database-migrations/#deleting-tables"
)
if not is_safe:
raise UnsafeOperationException(
f"Deleting the {model.__name__} model is unsafe.\n"
"More info here: https://develop.sentry.dev/database-migrations/#deleting-tables"
)
super(DatabaseSchemaEditorMixin, self).delete_model(model)

def remove_field(self, model, field):
"""
Expand Down
Loading
Loading