Skip to content

Commit ad1c358

Browse files
ref: install django-pgtrigger
this will be used to manage the triggers in getsentry
1 parent b1c9639 commit ad1c358

File tree

5 files changed

+14
-5
lines changed

5 files changed

+14
-5
lines changed

requirements-base.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ datadog>=0.49
1414
django-crispy-forms>=1.14.0
1515
django-csp>=3.8
1616
django-pg-zero-downtime-migrations>=0.18
17+
django-pgtrigger
1718
Django>=5.1.7
1819
djangorestframework>=3.16
1920
drf-spectacular>=0.27.2

requirements-dev-frozen.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ django==5.1.7
4444
django-crispy-forms==1.14.0
4545
django-csp==3.8
4646
django-pg-zero-downtime-migrations==0.18
47+
django-pgtrigger==4.15.2
4748
django-stubs-ext==5.1.3
4849
djangorestframework==3.16.0
4950
docker==7.1.0

requirements-frozen.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ django==5.1.7
3737
django-crispy-forms==1.14.0
3838
django-csp==3.8
3939
django-pg-zero-downtime-migrations==0.18
40+
django-pgtrigger==4.15.2
4041
djangorestframework==3.16.0
4142
drf-spectacular==0.27.2
4243
fastjsonschema==2.16.2

src/sentry/conf/server.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -394,6 +394,7 @@ def env(
394394
"django.contrib.sites",
395395
"drf_spectacular",
396396
"crispy_forms",
397+
"pgtrigger",
397398
"rest_framework",
398399
"sentry",
399400
"sentry.analytics",

src/sentry/db/postgres/schema.py

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,13 @@
55
from django.db.models import Field, Model
66
from django.db.models.base import ModelBase
77
from django_zero_downtime_migrations.backends.postgres.schema import (
8-
DatabaseSchemaEditorMixin,
8+
DatabaseSchemaEditorMixin as ZeroDowntimeMixin,
9+
)
10+
from django_zero_downtime_migrations.backends.postgres.schema import (
911
Unsafe,
1012
UnsafeOperationException,
1113
)
14+
from pgtrigger.migrations import DatabaseSchemaEditorMixin as PgTriggerMixin
1215

1316
unsafe_mapping = {
1417
Unsafe.ADD_COLUMN_NOT_NULL: (
@@ -59,7 +62,7 @@ def inner(self, *args, **kwargs):
5962
return inner
6063

6164

62-
class MakeBtreeGistSchemaEditor(PostgresDatabaseSchemaEditor):
65+
class MakeBtreeGistSchemaEditor(PgTriggerMixin, PostgresDatabaseSchemaEditor):
6366
"""workaround for https://code.djangoproject.com/ticket/36374"""
6467

6568
def create_model(self, model: type[Model]) -> None:
@@ -68,7 +71,9 @@ def create_model(self, model: type[Model]) -> None:
6871
super().create_model(model)
6972

7073

71-
class SafePostgresDatabaseSchemaEditor(DatabaseSchemaEditorMixin, PostgresDatabaseSchemaEditor):
74+
class SafePostgresDatabaseSchemaEditor(
75+
PgTriggerMixin, ZeroDowntimeMixin, PostgresDatabaseSchemaEditor
76+
):
7277
add_field = translate_unsafeoperation_exception(PostgresDatabaseSchemaEditor.add_field)
7378
alter_field = translate_unsafeoperation_exception(PostgresDatabaseSchemaEditor.alter_field)
7479
alter_db_tablespace = translate_unsafeoperation_exception(
@@ -94,7 +99,7 @@ def delete_model(self, model, is_safe=False):
9499
f"Deleting the {model.__name__} model is unsafe.\n"
95100
"More info here: https://develop.sentry.dev/database-migrations/#deleting-tables"
96101
)
97-
super(DatabaseSchemaEditorMixin, self).delete_model(model)
102+
super(ZeroDowntimeMixin, self).delete_model(model)
98103

99104
def remove_field(self, model, field, is_safe=False):
100105
"""
@@ -105,7 +110,7 @@ def remove_field(self, model, field, is_safe=False):
105110
f"Removing the {model.__name__}.{field.name} field is unsafe.\n"
106111
"More info here: https://develop.sentry.dev/database-migrations/#deleting-columns"
107112
)
108-
super(DatabaseSchemaEditorMixin, self).remove_field(model, field)
113+
super(ZeroDowntimeMixin, self).remove_field(model, field)
109114

110115

111116
class DatabaseSchemaEditorProxy:

0 commit comments

Comments
 (0)