From 544078ec9c321d360338d1ec163550405ae807ca Mon Sep 17 00:00:00 2001 From: Hanne Moa Date: Wed, 5 Aug 2026 10:40:58 +0200 Subject: [PATCH 1/5] Remove outdated migrations for notificatin profiles --- .../migrations/0003_delete_phonenumber.py | 2 +- ...ashed_0015_remove_days_alter_days_array.py | 178 ------------------ ...1_squashed_notificationprofile_20250512.py | 2 - .../migrations/0016_noop.py | 17 -- .../0017_change_event_type_to_event_types.py | 39 ---- ...move_closed_and_unacked_from_filterblob.py | 29 --- 6 files changed, 1 insertion(+), 266 deletions(-) delete mode 100644 src/argus/notificationprofile/migrations/0001_squashed_0015_remove_days_alter_days_array.py delete mode 100644 src/argus/notificationprofile/migrations/0016_noop.py delete mode 100644 src/argus/notificationprofile/migrations/0017_change_event_type_to_event_types.py delete mode 100644 src/argus/notificationprofile/migrations/0018_remove_closed_and_unacked_from_filterblob.py diff --git a/src/argus/auth/migrations/0003_delete_phonenumber.py b/src/argus/auth/migrations/0003_delete_phonenumber.py index 551b539cc..a5602af29 100644 --- a/src/argus/auth/migrations/0003_delete_phonenumber.py +++ b/src/argus/auth/migrations/0003_delete_phonenumber.py @@ -18,7 +18,7 @@ def copy_destinations_to_phone_number_table(apps, schema_editor): class Migration(migrations.Migration): dependencies = [ - ("argus_notificationprofile", "0001_squashed_0015_remove_days_alter_days_array"), + ("argus_notificationprofile", "0001_squashed_notificationprofile_20250512"), ("argus_auth", "0002_alter_user_first_name"), ] diff --git a/src/argus/notificationprofile/migrations/0001_squashed_0015_remove_days_alter_days_array.py b/src/argus/notificationprofile/migrations/0001_squashed_0015_remove_days_alter_days_array.py deleted file mode 100644 index 6a227ac47..000000000 --- a/src/argus/notificationprofile/migrations/0001_squashed_0015_remove_days_alter_days_array.py +++ /dev/null @@ -1,178 +0,0 @@ -# Generated by Django 4.1.7 on 2024-02-05 09:56 - -from django.conf import settings -import django.contrib.postgres.fields -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - initial = True - - dependencies = [ - ("argus_auth", "0001_initial"), - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ] - - operations = [ - migrations.CreateModel( - name="DestinationConfig", - fields=[ - ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), - ("label", models.CharField(blank=True, max_length=50, null=True)), - ("settings", models.JSONField()), - ], - ), - migrations.CreateModel( - name="Filter", - fields=[ - ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), - ("name", models.CharField(max_length=40)), - ("filter", models.JSONField(default=dict)), - ( - "user", - models.ForeignKey( - on_delete=django.db.models.deletion.CASCADE, related_name="filters", to=settings.AUTH_USER_MODEL - ), - ), - ], - ), - migrations.CreateModel( - name="Media", - fields=[ - ("slug", models.SlugField(blank=True, max_length=20, primary_key=True)), - ("name", models.CharField(max_length=20)), - ("installed", models.BooleanField(default=True)), - ], - options={ - "verbose_name": "Medium", - "verbose_name_plural": "Media", - }, - ), - migrations.CreateModel( - name="Timeslot", - fields=[ - ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), - ("name", models.CharField(max_length=40)), - ( - "user", - models.ForeignKey( - on_delete=django.db.models.deletion.CASCADE, - related_name="timeslots", - to=settings.AUTH_USER_MODEL, - ), - ), - ], - options={ - "ordering": ["name"], - }, - ), - migrations.CreateModel( - name="TimeRecurrence", - fields=[ - ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), - ( - "days", - django.contrib.postgres.fields.ArrayField( - base_field=models.IntegerField( - choices=[ - (1, "Monday"), - (2, "Tuesday"), - (3, "Wednesday"), - (4, "Thursday"), - (5, "Friday"), - (6, "Saturday"), - (7, "Sunday"), - ] - ), - size=7, - ), - ), - ("start", models.TimeField(help_text="Local time.")), - ("end", models.TimeField(help_text="Local time.")), - ( - "timeslot", - models.ForeignKey( - on_delete=django.db.models.deletion.CASCADE, - related_name="time_recurrences", - to="argus_notificationprofile.timeslot", - ), - ), - ], - ), - migrations.CreateModel( - name="NotificationProfile", - fields=[ - ("id", models.AutoField(primary_key=True, serialize=False)), - ("name", models.CharField(blank=True, max_length=40, null=True)), - ("active", models.BooleanField(default=True)), - ( - "destinations", - models.ManyToManyField( - blank=True, - related_name="notification_profiles", - to="argus_notificationprofile.destinationconfig", - ), - ), - ( - "filters", - models.ManyToManyField(related_name="notification_profiles", to="argus_notificationprofile.filter"), - ), - ( - "timeslot", - models.ForeignKey( - on_delete=django.db.models.deletion.CASCADE, - related_name="notification_profiles", - to="argus_notificationprofile.timeslot", - ), - ), - ( - "user", - models.ForeignKey( - on_delete=django.db.models.deletion.CASCADE, - related_name="notification_profiles", - to=settings.AUTH_USER_MODEL, - ), - ), - ], - ), - migrations.AddField( - model_name="destinationconfig", - name="media", - field=models.ForeignKey( - on_delete=django.db.models.deletion.CASCADE, - related_name="destinations", - to="argus_notificationprofile.media", - ), - ), - migrations.AddField( - model_name="destinationconfig", - name="user", - field=models.ForeignKey( - on_delete=django.db.models.deletion.CASCADE, related_name="destinations", to=settings.AUTH_USER_MODEL - ), - ), - migrations.AddConstraint( - model_name="timeslot", - constraint=models.UniqueConstraint(fields=("name", "user"), name="timeslot_unique_name_per_user"), - ), - migrations.AddConstraint( - model_name="notificationprofile", - constraint=models.UniqueConstraint(fields=("user", "name"), name="unique_name_per_user"), - ), - migrations.AddConstraint( - model_name="filter", - constraint=models.UniqueConstraint(fields=("name", "user"), name="filter_unique_name_per_user"), - ), - migrations.AddConstraint( - model_name="destinationconfig", - constraint=models.UniqueConstraint(fields=("user", "settings"), name="unique_destination_per_user"), - ), - migrations.AddConstraint( - model_name="destinationconfig", - constraint=models.UniqueConstraint( - fields=("user", "media", "label"), name="unique_label_per_user_and_medium" - ), - ), - ] diff --git a/src/argus/notificationprofile/migrations/0001_squashed_notificationprofile_20250512.py b/src/argus/notificationprofile/migrations/0001_squashed_notificationprofile_20250512.py index b1583b145..89c0d1bb8 100644 --- a/src/argus/notificationprofile/migrations/0001_squashed_notificationprofile_20250512.py +++ b/src/argus/notificationprofile/migrations/0001_squashed_notificationprofile_20250512.py @@ -9,8 +9,6 @@ class Migration(migrations.Migration): - replaces = [('argus_notificationprofile', '0001_squashed_0015_remove_days_alter_days_array'), ('argus_notificationprofile', '0016_noop'), ('argus_notificationprofile', '0017_change_event_type_to_event_types'), ('argus_notificationprofile', '0018_remove_closed_and_unacked_from_filterblob')] - dependencies = [ ('argus_auth', '0001_initial'), migrations.swappable_dependency(settings.AUTH_USER_MODEL), diff --git a/src/argus/notificationprofile/migrations/0016_noop.py b/src/argus/notificationprofile/migrations/0016_noop.py deleted file mode 100644 index 3e8b86634..000000000 --- a/src/argus/notificationprofile/migrations/0016_noop.py +++ /dev/null @@ -1,17 +0,0 @@ -# Generated by Django 4.2.11 on 2024-04-09 12:04 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - dependencies = [ - ("argus_notificationprofile", "0001_squashed_0015_remove_days_alter_days_array"), - ] - - operations = [ - migrations.AlterField( - model_name="media", - name="slug", - field=models.SlugField(blank=True, max_length=20, primary_key=True, serialize=False), - ), - ] diff --git a/src/argus/notificationprofile/migrations/0017_change_event_type_to_event_types.py b/src/argus/notificationprofile/migrations/0017_change_event_type_to_event_types.py deleted file mode 100644 index d236d6b2f..000000000 --- a/src/argus/notificationprofile/migrations/0017_change_event_type_to_event_types.py +++ /dev/null @@ -1,39 +0,0 @@ -# Generated by Django 4.2.11 on 2024-05-14 07:51 - -from django.db import migrations - - -def change_event_type_to_a_list_in_filter(apps, schema_editor): - Filter = apps.get_model("argus_notificationprofile", "Filter") - - for filter_ in Filter.objects.filter(filter__event_type__isnull=False): - if filter_.filter["event_type"]: - filter_.filter["event_types"] = [filter_.filter["event_type"]] - filter_.save() - del filter_.filter["event_type"] - filter_.save() - - -def change_event_types_to_a_string_in_filter(apps, schema_editor): - # will lose data - Filter = apps.get_model("argus_notificationprofile", "Filter") - - for filter_ in Filter.objects.filter(filter__event_types__isnull=False): - if filter_.filter["event_types"]: - filter_.filter["event_type"] = filter_.filter["event_types"][0] - filter_.save() - del filter_.filter["event_types"] - filter_.save() - - -class Migration(migrations.Migration): - dependencies = [ - ("argus_notificationprofile", "0016_noop"), - ] - - operations = [ - migrations.RunPython( - change_event_type_to_a_list_in_filter, - change_event_types_to_a_string_in_filter, - ) - ] diff --git a/src/argus/notificationprofile/migrations/0018_remove_closed_and_unacked_from_filterblob.py b/src/argus/notificationprofile/migrations/0018_remove_closed_and_unacked_from_filterblob.py deleted file mode 100644 index fc3e7428f..000000000 --- a/src/argus/notificationprofile/migrations/0018_remove_closed_and_unacked_from_filterblob.py +++ /dev/null @@ -1,29 +0,0 @@ -from django.db import migrations - - -def remove_closed_and_unacked_from_filterblob(apps, schema_editor): - Filter = apps.get_model("argus_notificationprofile", "Filter") - - for filter_ in Filter.objects.all(): - closed = filter_.filter.pop("closed", None) - if filter_.filter.get("open", None) == closed: - filter_.filter.pop("open", None) - - unacked = filter_.filter.pop("unacked", None) - if filter_.filter.get("acked", None) == unacked: - filter_.filter.pop("acked", None) - - filter_.save() - - -class Migration(migrations.Migration): - dependencies = [ - ("argus_notificationprofile", "0017_change_event_type_to_event_types"), - ] - - operations = [ - migrations.RunPython( - remove_closed_and_unacked_from_filterblob, - migrations.RunPython.noop, - ), - ] From 13bf91b9a216ada5e354eb810d5e0866a1b583e5 Mon Sep 17 00:00:00 2001 From: Hanne Moa Date: Wed, 5 Aug 2026 10:42:12 +0200 Subject: [PATCH 2/5] Remove outdated migrations for incidents --- src/argus/incident/migrations/0001_initial.py | 180 ------------------ .../0001_squashed_incident_20250514.py | 2 - .../0002_empty_source_incident_id.py | 26 --- .../migrations/0003_incident_level.py | 18 -- .../migrations/0004_add_ChangeEvent_proxy.py | 29 --- .../migrations/0005_alter_event_type.py | 35 ---- .../migrations/0006_incident_search_text.py | 37 ---- .../migrations/0007_alter_event_type.py | 18 -- .../migrations/0008_incident_metadata.py | 17 -- ..._bigautofield_on_quickly_growing_tables.py | 33 ---- 10 files changed, 395 deletions(-) delete mode 100644 src/argus/incident/migrations/0001_initial.py delete mode 100644 src/argus/incident/migrations/0002_empty_source_incident_id.py delete mode 100644 src/argus/incident/migrations/0003_incident_level.py delete mode 100644 src/argus/incident/migrations/0004_add_ChangeEvent_proxy.py delete mode 100644 src/argus/incident/migrations/0005_alter_event_type.py delete mode 100644 src/argus/incident/migrations/0006_incident_search_text.py delete mode 100644 src/argus/incident/migrations/0007_alter_event_type.py delete mode 100644 src/argus/incident/migrations/0008_incident_metadata.py delete mode 100644 src/argus/incident/migrations/0009_use_bigautofield_on_quickly_growing_tables.py diff --git a/src/argus/incident/migrations/0001_initial.py b/src/argus/incident/migrations/0001_initial.py deleted file mode 100644 index 524731524..000000000 --- a/src/argus/incident/migrations/0001_initial.py +++ /dev/null @@ -1,180 +0,0 @@ -# Generated by Django 3.0.8 on 2020-09-29 06:27 - -import argus.incident.fields -import argus.incident.validators -from django.conf import settings -import django.core.validators -from django.db import migrations, models -import django.db.models.deletion -import django.utils.timezone - - -class Migration(migrations.Migration): - - initial = True - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ] - # fmt:off - operations = [ - migrations.CreateModel( - name="Event", - fields=[ - ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), - ("timestamp", models.DateTimeField()), - ("received", models.DateTimeField(default=django.utils.timezone.now)), - ("type", models.CharField(choices=[("STA", "Incident start"), ("END", "Incident end"), ("CLO", "Close"), ("REO", "Reopen"), ("ACK", "Acknowledge"), ("OTH", "Other")], max_length=3)), - ("description", models.TextField(blank=True)), - ], - options={ - "ordering": ["-timestamp"], - }, - ), - migrations.CreateModel( - name="Incident", - fields=[ - ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), - ("start_time", models.DateTimeField(help_text="The time the incident was created.")), - ("end_time", argus.incident.fields.DateTimeInfinityField(blank=True, help_text="The time the incident was resolved or closed. If not set, the incident is stateless; if 'infinity' is checked, the incident is stateful, but has not yet been resolved or closed - i.e. open.", null=True)), - ("source_incident_id", models.TextField(verbose_name="source incident ID")), - ("details_url", models.TextField(blank=True, validators=[django.core.validators.URLValidator], verbose_name="details URL")), - ("description", models.TextField(blank=True)), - ("ticket_url", models.TextField(blank=True, help_text="URL to existing ticket in a ticketing system.", validators=[django.core.validators.URLValidator], verbose_name="ticket URL")), - ], - options={ - "ordering": ["-start_time"], - }, - ), - migrations.CreateModel( - name="IncidentRelation", - fields=[ - ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), - ("description", models.TextField(blank=True)), - ], - ), - migrations.CreateModel( - name="IncidentRelationType", - fields=[ - ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), - ("name", models.TextField()), - ], - options={ - "ordering": ["name"], - }, - ), - migrations.CreateModel( - name="IncidentTagRelation", - fields=[ - ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), - ("added_time", models.DateTimeField(auto_now_add=True)), - ], - ), - migrations.CreateModel( - name="SourceSystem", - fields=[ - ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), - ("name", models.TextField()), - ("base_url", models.TextField(blank=True, help_text="Base url to combine with an incident's relative url to point to more info in the source system.")), - ], - ), - migrations.CreateModel( - name="SourceSystemType", - fields=[ - ("name", models.TextField(primary_key=True, serialize=False, validators=[argus.incident.validators.validate_lowercase])), - ], - options={ - "ordering": ["name"], - }, - ), - migrations.CreateModel( - name="Tag", - fields=[ - ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), - ("key", models.TextField(validators=[argus.incident.validators.validate_key])), - ("value", models.TextField()), - ], - ), - migrations.CreateModel( - name="Acknowledgement", - fields=[ - ("event", models.OneToOneField(on_delete=django.db.models.deletion.PROTECT, primary_key=True, related_name="ack", serialize=False, to="argus_incident.Event")), - ("expiration", models.DateTimeField(blank=True, null=True)), - ], - options={ - "ordering": ["-event__timestamp"], - }, - ), - migrations.AddConstraint( - model_name="tag", - constraint=models.UniqueConstraint(fields=("key", "value"), name="tag_unique_key_and_value"), - ), - migrations.AddField( - model_name="sourcesystem", - name="type", - field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name="instances", to="argus_incident.SourceSystemType"), - ), - migrations.AddField( - model_name="sourcesystem", - name="user", - field=models.OneToOneField(on_delete=django.db.models.deletion.PROTECT, related_name="source_system", to=settings.AUTH_USER_MODEL), - ), - migrations.AddField( - model_name="incidenttagrelation", - name="added_by", - field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name="tags_added", to=settings.AUTH_USER_MODEL), - ), - migrations.AddField( - model_name="incidenttagrelation", - name="incident", - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name="incident_tag_relations", to="argus_incident.Incident"), - ), - migrations.AddField( - model_name="incidenttagrelation", - name="tag", - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name="incident_tag_relations", to="argus_incident.Tag"), - ), - migrations.AddField( - model_name="incidentrelation", - name="incident1", - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name="+", to="argus_incident.Incident"), - ), - migrations.AddField( - model_name="incidentrelation", - name="incident2", - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name="+", to="argus_incident.Incident"), - ), - migrations.AddField( - model_name="incidentrelation", - name="type", - field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name="incident_relations", to="argus_incident.IncidentRelationType"), - ), - migrations.AddField( - model_name="incident", - name="source", - field=models.ForeignKey(help_text="The source system that the incident originated in.", on_delete=django.db.models.deletion.PROTECT, related_name="incidents", to="argus_incident.SourceSystem"), - ), - migrations.AddField( - model_name="event", - name="actor", - field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name="caused_events", to=settings.AUTH_USER_MODEL), - ), - migrations.AddField( - model_name="event", - name="incident", - field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name="events", to="argus_incident.Incident"), - ), - migrations.AddConstraint( - model_name="sourcesystem", - constraint=models.UniqueConstraint(fields=("name", "type"), name="sourcesystem_unique_name_per_type"), - ), - migrations.AddConstraint( - model_name="incidenttagrelation", - constraint=models.UniqueConstraint(fields=("tag", "incident"), name="incidenttagrelation_unique_tags_per_incident"), - ), - migrations.AddConstraint( - model_name="incident", - constraint=models.UniqueConstraint(fields=("source_incident_id", "source"), name="incident_unique_source_incident_id_per_source"), - ), - ] - # fmt:on diff --git a/src/argus/incident/migrations/0001_squashed_incident_20250514.py b/src/argus/incident/migrations/0001_squashed_incident_20250514.py index 2b72e5b36..93939c40c 100644 --- a/src/argus/incident/migrations/0001_squashed_incident_20250514.py +++ b/src/argus/incident/migrations/0001_squashed_incident_20250514.py @@ -11,8 +11,6 @@ class Migration(migrations.Migration): - replaces = [('argus_incident', '0001_initial'), ('argus_incident', '0002_empty_source_incident_id'), ('argus_incident', '0003_incident_level'), ('argus_incident', '0004_add_ChangeEvent_proxy'), ('argus_incident', '0005_alter_event_type'), ('argus_incident', '0006_incident_search_text'), ('argus_incident', '0007_alter_event_type'), ('argus_incident', '0008_incident_metadata'), ('argus_incident', '0009_use_bigautofield_on_quickly_growing_tables')] - dependencies = [ migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] diff --git a/src/argus/incident/migrations/0002_empty_source_incident_id.py b/src/argus/incident/migrations/0002_empty_source_incident_id.py deleted file mode 100644 index 4314d3347..000000000 --- a/src/argus/incident/migrations/0002_empty_source_incident_id.py +++ /dev/null @@ -1,26 +0,0 @@ -# Generated by Django 3.0.10 on 2020-11-18 11:19 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('argus_incident', '0001_initial'), - ] - - operations = [ - migrations.RemoveConstraint( - model_name='incident', - name='incident_unique_source_incident_id_per_source', - ), - migrations.AlterField( - model_name='incident', - name='source_incident_id', - field=models.TextField(blank=True, default='', verbose_name='source incident ID'), - ), - migrations.AddConstraint( - model_name='incident', - constraint=models.UniqueConstraint(condition=models.Q(source_incident_id__gt=''), fields=('source_incident_id', 'source'), name='incident_unique_source_incident_id_per_source'), - ), - ] diff --git a/src/argus/incident/migrations/0003_incident_level.py b/src/argus/incident/migrations/0003_incident_level.py deleted file mode 100644 index c0cfb9cad..000000000 --- a/src/argus/incident/migrations/0003_incident_level.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 3.2 on 2021-04-15 12:17 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('argus_incident', '0002_empty_source_incident_id'), - ] - - operations = [ - migrations.AddField( - model_name='incident', - name='level', - field=models.IntegerField(choices=[(1, '1'), (2, '2'), (3, '3'), (4, '4'), (5, '5')], default=5), - ), - ] diff --git a/src/argus/incident/migrations/0004_add_ChangeEvent_proxy.py b/src/argus/incident/migrations/0004_add_ChangeEvent_proxy.py deleted file mode 100644 index c2778ece7..000000000 --- a/src/argus/incident/migrations/0004_add_ChangeEvent_proxy.py +++ /dev/null @@ -1,29 +0,0 @@ -# Generated by Django 3.2.5 on 2021-09-07 08:43 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('argus_incident', '0003_incident_level'), - ] - - operations = [ - migrations.CreateModel( - name='ChangeEvent', - fields=[ - ], - options={ - 'proxy': True, - 'indexes': [], - 'constraints': [], - }, - bases=('argus_incident.event',), - ), - migrations.AlterField( - model_name='event', - name='type', - field=models.CharField(choices=[('STA', 'Incident start'), ('END', 'Incident end'), ('CHI', 'Incident change'), ('CLO', 'Close'), ('REO', 'Reopen'), ('ACK', 'Acknowledge'), ('OTH', 'Other')], max_length=3), - ), - ] diff --git a/src/argus/incident/migrations/0005_alter_event_type.py b/src/argus/incident/migrations/0005_alter_event_type.py deleted file mode 100644 index 2ddc5848d..000000000 --- a/src/argus/incident/migrations/0005_alter_event_type.py +++ /dev/null @@ -1,35 +0,0 @@ -# Generated by Django 3.2.11 on 2022-03-01 12:34 - -from django.db import migrations, models - - -def add_stateless_event_type(apps, schema_editor): - # Change INCIDENT_START events for stateless incidents to STATELESS - Event = apps.get_model('argus_incident', 'Event') - for event in Event.objects.all(): - if event.type == "STA" and event.incident.end_time == None: - event.type="LES" - event.save() - -def remove_stateless_event_type(apps, schema_editor): - # undo changes made by add_stateless_event_type - Event = apps.get_model('argus_incident', 'Event') - for event in Event.objects.all(): - if event.type == "LES": - event.type = "STA" - event.save() - -class Migration(migrations.Migration): - - dependencies = [ - ('argus_incident', '0004_add_ChangeEvent_proxy'), - ] - - operations = [ - migrations.AlterField( - model_name='event', - name='type', - field=models.CharField(choices=[('STA', 'Incident start'), ('END', 'Incident end'), ('CHI', 'Incident change'), ('CLO', 'Close'), ('REO', 'Reopen'), ('ACK', 'Acknowledge'), ('OTH', 'Other'), ('LES', 'Stateless')], max_length=3), - ), - migrations.RunPython(add_stateless_event_type, remove_stateless_event_type), - ] diff --git a/src/argus/incident/migrations/0006_incident_search_text.py b/src/argus/incident/migrations/0006_incident_search_text.py deleted file mode 100644 index cdddcdc9d..000000000 --- a/src/argus/incident/migrations/0006_incident_search_text.py +++ /dev/null @@ -1,37 +0,0 @@ -# Generated by Django 3.2.11 on 2022-03-04 08:02 - -from django.db import migrations, models - - -def fill_search_text(apps, schema_editor): - # Fills in search_text field - Incident = apps.get_model('argus_incident', 'Incident') - for incident in Incident.objects.all(): - search_fields = [] - for event in incident.events.all(): - search_fields.append(event.description) - incident.search_text = " ".join(search_fields) - incident.save() - -def clear_search_text(apps, schema_editor): - # clears search_text field - Incident = apps.get_model('argus_incident', 'Incident') - for incident in Incident.objects.all(): - incident.search_text = "" - incident.save() - - -class Migration(migrations.Migration): - - dependencies = [ - ('argus_incident', '0005_alter_event_type'), - ] - - operations = [ - migrations.AddField( - model_name='incident', - name='search_text', - field=models.TextField(blank=True, default='', verbose_name='Search Text'), - ), - migrations.RunPython(fill_search_text, clear_search_text), - ] diff --git a/src/argus/incident/migrations/0007_alter_event_type.py b/src/argus/incident/migrations/0007_alter_event_type.py deleted file mode 100644 index 9c3b6af4b..000000000 --- a/src/argus/incident/migrations/0007_alter_event_type.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 3.2.11 on 2022-03-10 10:05 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('argus_incident', '0006_incident_search_text'), - ] - - operations = [ - migrations.AlterField( - model_name='event', - name='type', - field=models.TextField(choices=[('STA', 'Incident start'), ('END', 'Incident end'), ('CHI', 'Incident change'), ('CLO', 'Close'), ('REO', 'Reopen'), ('ACK', 'Acknowledge'), ('OTH', 'Other'), ('LES', 'Stateless')]), - ), - ] diff --git a/src/argus/incident/migrations/0008_incident_metadata.py b/src/argus/incident/migrations/0008_incident_metadata.py deleted file mode 100644 index 6a387b417..000000000 --- a/src/argus/incident/migrations/0008_incident_metadata.py +++ /dev/null @@ -1,17 +0,0 @@ -# Generated by Django 4.2.11 on 2024-04-24 08:20 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - dependencies = [ - ("argus_incident", "0007_alter_event_type"), - ] - - operations = [ - migrations.AddField( - model_name="incident", - name="metadata", - field=models.JSONField(blank=True, default=dict), - ), - ] diff --git a/src/argus/incident/migrations/0009_use_bigautofield_on_quickly_growing_tables.py b/src/argus/incident/migrations/0009_use_bigautofield_on_quickly_growing_tables.py deleted file mode 100644 index fcb1dd15e..000000000 --- a/src/argus/incident/migrations/0009_use_bigautofield_on_quickly_growing_tables.py +++ /dev/null @@ -1,33 +0,0 @@ -# Generated by Django 5.2 on 2025-05-14 06:44 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('argus_incident', '0008_incident_metadata'), - ] - - operations = [ - migrations.AlterField( - model_name='event', - name='id', - field=models.BigAutoField(primary_key=True, serialize=False), - ), - migrations.AlterField( - model_name='incident', - name='id', - field=models.BigAutoField(primary_key=True, serialize=False), - ), - migrations.AlterField( - model_name='incidenttagrelation', - name='id', - field=models.BigAutoField(primary_key=True, serialize=False), - ), - migrations.AlterField( - model_name='tag', - name='id', - field=models.BigAutoField(primary_key=True, serialize=False), - ), - ] From 34b99bf06bdf9eccd15d8935ac53b5a7a3b72546 Mon Sep 17 00:00:00 2001 From: Hanne Moa Date: Wed, 5 Aug 2026 11:31:37 +0200 Subject: [PATCH 3/5] add changelog fragment --- changelog.d/2022.removed.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 changelog.d/2022.removed.md diff --git a/changelog.d/2022.removed.md b/changelog.d/2022.removed.md new file mode 100644 index 000000000..f12bf2a6b --- /dev/null +++ b/changelog.d/2022.removed.md @@ -0,0 +1,12 @@ +Removed the most easily removable outdated migrations. See NOTES! + +NOTES: + +After checkout/install run + +``` +python manage.py migrate --prune argus_notificationprofile +python manage.py migrate --prune argus_incident +``` + +to clean up in Django's hidden migrations table. From 5c71f0564232cdea1095074f18357e95f1fd2b41 Mon Sep 17 00:00:00 2001 From: Hanne Moa Date: Wed, 5 Aug 2026 12:37:19 +0200 Subject: [PATCH 4/5] Remove outdated migrations for auth --- .../migrations/0002_alter_user_first_name.py | 18 -------- ...hed_auth_20250512_add_preferences_model.py | 2 - .../migrations/0003_delete_phonenumber.py | 30 ------------ .../migrations/0004_add_preferences_model.py | 46 ------------------- 4 files changed, 96 deletions(-) delete mode 100644 src/argus/auth/migrations/0002_alter_user_first_name.py delete mode 100644 src/argus/auth/migrations/0003_delete_phonenumber.py delete mode 100644 src/argus/auth/migrations/0004_add_preferences_model.py diff --git a/src/argus/auth/migrations/0002_alter_user_first_name.py b/src/argus/auth/migrations/0002_alter_user_first_name.py deleted file mode 100644 index cd3fa3ed3..000000000 --- a/src/argus/auth/migrations/0002_alter_user_first_name.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 3.2 on 2021-04-08 11:51 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('argus_auth', '0001_initial'), - ] - - operations = [ - migrations.AlterField( - model_name='user', - name='first_name', - field=models.CharField(blank=True, max_length=150, verbose_name='first name'), - ), - ] diff --git a/src/argus/auth/migrations/0002_squashed_auth_20250512_add_preferences_model.py b/src/argus/auth/migrations/0002_squashed_auth_20250512_add_preferences_model.py index 81db9f1a9..0f1c5a0aa 100644 --- a/src/argus/auth/migrations/0002_squashed_auth_20250512_add_preferences_model.py +++ b/src/argus/auth/migrations/0002_squashed_auth_20250512_add_preferences_model.py @@ -7,8 +7,6 @@ class Migration(migrations.Migration): - replaces = [('argus_auth', '0002_alter_user_first_name'), ('argus_auth', '0003_delete_phonenumber'), ('argus_auth', '0004_add_preferences_model')] - dependencies = [ ('argus_auth', '0001_initial'), ] diff --git a/src/argus/auth/migrations/0003_delete_phonenumber.py b/src/argus/auth/migrations/0003_delete_phonenumber.py deleted file mode 100644 index a5602af29..000000000 --- a/src/argus/auth/migrations/0003_delete_phonenumber.py +++ /dev/null @@ -1,30 +0,0 @@ -# Generated by Django 3.2.6 on 2022-02-13 17:10 - -from django.db import migrations - - -def copy_destinations_to_phone_number_table(apps, schema_editor): - PhoneNumber = apps.get_model("argus_auth", "PhoneNumber") - DestinationConfig = apps.get_model("argus_notificationprofile", "DestinationConfig") - db_alias = schema_editor.connection.alias - - for destination in DestinationConfig.objects.filter(media_id="sms"): - PhoneNumber.objects.using(db_alias).create( - user=destination.user, - phone_number=destination.settings["phone_number"], - ) - - -class Migration(migrations.Migration): - - dependencies = [ - ("argus_notificationprofile", "0001_squashed_notificationprofile_20250512"), - ("argus_auth", "0002_alter_user_first_name"), - ] - - operations = [ - migrations.RunPython(migrations.RunPython.noop, copy_destinations_to_phone_number_table), - migrations.DeleteModel( - name="PhoneNumber", - ), - ] diff --git a/src/argus/auth/migrations/0004_add_preferences_model.py b/src/argus/auth/migrations/0004_add_preferences_model.py deleted file mode 100644 index ff552892e..000000000 --- a/src/argus/auth/migrations/0004_add_preferences_model.py +++ /dev/null @@ -1,46 +0,0 @@ -# Generated by Django 4.2.16 on 2024-10-22 13:06 - -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - dependencies = [ - ("argus_auth", "0003_delete_phonenumber"), - ] - - operations = [ - migrations.CreateModel( - name="Preferences", - fields=[ - ( - "id", - models.AutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ("namespace", models.CharField(max_length=255)), - ("preferences", models.JSONField(blank=True, default=dict)), - ( - "user", - models.ForeignKey( - on_delete=django.db.models.deletion.CASCADE, - related_name="preferences", - to=settings.AUTH_USER_MODEL, - ), - ), - ], - options={ - "verbose_name": "User Preferences", - "verbose_name_plural": "Users' Preferences", - }, - ), - migrations.AddConstraint( - model_name="preferences", - constraint=models.UniqueConstraint(fields=("user", "namespace"), name="unique_preference"), - ), - ] From 71016aab16e3ad26069e72dbdc6986ee51e364ce Mon Sep 17 00:00:00 2001 From: Hanne Moa Date: Wed, 5 Aug 2026 12:42:34 +0200 Subject: [PATCH 5/5] fixup! add changelog fragment --- changelog.d/2022.removed.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/changelog.d/2022.removed.md b/changelog.d/2022.removed.md index f12bf2a6b..4dc424fcb 100644 --- a/changelog.d/2022.removed.md +++ b/changelog.d/2022.removed.md @@ -1,4 +1,4 @@ -Removed the most easily removable outdated migrations. See NOTES! +Removed outdated migrations files. See NOTES! NOTES: @@ -7,6 +7,7 @@ After checkout/install run ``` python manage.py migrate --prune argus_notificationprofile python manage.py migrate --prune argus_incident +python manage.py migrate --prune argus_auth ``` to clean up in Django's hidden migrations table.