From ff760c3affa35758c1b1da48e28a8ba3e9960c20 Mon Sep 17 00:00:00 2001 From: Federico Fantini <122294644+federicofantini@users.noreply.github.com> Date: Mon, 8 Jan 2024 16:29:46 +0100 Subject: [PATCH 1/6] fixed wrong migration management --- web/users/migrations/0001b_typo.py | 18 ++++++++++++++++++ web/users/migrations/0002_reports.py | 2 +- 2 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 web/users/migrations/0001b_typo.py diff --git a/web/users/migrations/0001b_typo.py b/web/users/migrations/0001b_typo.py new file mode 100644 index 00000000000..18998ec80e0 --- /dev/null +++ b/web/users/migrations/0001b_typo.py @@ -0,0 +1,18 @@ +import django.db.models.deletion +from django.conf import settings +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("users", "0001_initial"), + ] + + operations = [ + migrations.RenameField( + model_name="userprofile", + old_name="suscription", + new_name="subscription", + ), + ] diff --git a/web/users/migrations/0002_reports.py b/web/users/migrations/0002_reports.py index 35bc9b28e74..432ff2ee936 100644 --- a/web/users/migrations/0002_reports.py +++ b/web/users/migrations/0002_reports.py @@ -7,7 +7,7 @@ class Migration(migrations.Migration): dependencies = [ - ("users", "0001_initial"), + ("users", "0001b_typo"), ] operations = [ From 76694db4ab90bf52a639c4e5be225be683879d10 Mon Sep 17 00:00:00 2001 From: Federico Fantini Date: Mon, 8 Jan 2024 16:46:23 +0100 Subject: [PATCH 2/6] removed unued imports --- web/users/migrations/0001b_typo.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/web/users/migrations/0001b_typo.py b/web/users/migrations/0001b_typo.py index 18998ec80e0..4216e899257 100644 --- a/web/users/migrations/0001b_typo.py +++ b/web/users/migrations/0001b_typo.py @@ -1,6 +1,4 @@ -import django.db.models.deletion -from django.conf import settings -from django.db import migrations, models +from django.db import migrations class Migration(migrations.Migration): From 64259b03d13be4281dac1b287c8180060449ffe0 Mon Sep 17 00:00:00 2001 From: Federico Fantini Date: Mon, 8 Jan 2024 18:07:52 +0100 Subject: [PATCH 3/6] generalization --- web/users/migrations/0001b_typo.py | 16 ---------- web/users/migrations/0002_reports.py | 19 ------------ web/users/migrations/0002_typo_reports.py | 37 +++++++++++++++++++++++ 3 files changed, 37 insertions(+), 35 deletions(-) delete mode 100644 web/users/migrations/0001b_typo.py delete mode 100644 web/users/migrations/0002_reports.py create mode 100644 web/users/migrations/0002_typo_reports.py diff --git a/web/users/migrations/0001b_typo.py b/web/users/migrations/0001b_typo.py deleted file mode 100644 index 4216e899257..00000000000 --- a/web/users/migrations/0001b_typo.py +++ /dev/null @@ -1,16 +0,0 @@ -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ("users", "0001_initial"), - ] - - operations = [ - migrations.RenameField( - model_name="userprofile", - old_name="suscription", - new_name="subscription", - ), - ] diff --git a/web/users/migrations/0002_reports.py b/web/users/migrations/0002_reports.py deleted file mode 100644 index 432ff2ee936..00000000000 --- a/web/users/migrations/0002_reports.py +++ /dev/null @@ -1,19 +0,0 @@ -# Generated by Django 4.1 on 2022-11-24 08:39 -# https://realpython.com/django-migrations-a-primer/ - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ("users", "0001b_typo"), - ] - - operations = [ - migrations.AddField( - model_name="userprofile", - name="reports", - field=models.BooleanField(default=False), - ), - ] diff --git a/web/users/migrations/0002_typo_reports.py b/web/users/migrations/0002_typo_reports.py new file mode 100644 index 00000000000..37d9ef5a834 --- /dev/null +++ b/web/users/migrations/0002_typo_reports.py @@ -0,0 +1,37 @@ +from django.db import migrations, models +from users.models import UserProfile + + +class Migration(migrations.Migration): + + dependencies = [ + ("users", "0001_initial"), + ] + + operations = list() + + userprofile_fields = [f.name for f in UserProfile._meta.get_fields()] + if "suscription" in userprofile_fields: + operations.append( + migrations.RenameField( + model_name="UserProfile", + old_name="suscription", + new_name="subscription", + ) + ) + if "subscription" not in userprofile_fields: + operations.append( + migrations.AddField( + model_name="UserProfile", + name="subscription", + field=models.CharField(default="5/m", max_length=50), + ) + ) + if "reports" not in userprofile_fields: + operations.append( + migrations.AddField( + model_name="UserProfile", + name="reports", + field=models.BooleanField(default=False), + ) + ) From 5054f6d3ed82073bf9a9f398fa7cb4818ca5763d Mon Sep 17 00:00:00 2001 From: Federico Fantini Date: Tue, 9 Jan 2024 08:44:03 +0100 Subject: [PATCH 4/6] moved fix to new migration --- web/users/migrations/0002_reports.py | 19 +++++++++++++++++++ .../{0002_typo_reports.py => 0003_fix.py} | 2 +- 2 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 web/users/migrations/0002_reports.py rename web/users/migrations/{0002_typo_reports.py => 0003_fix.py} (96%) diff --git a/web/users/migrations/0002_reports.py b/web/users/migrations/0002_reports.py new file mode 100644 index 00000000000..35bc9b28e74 --- /dev/null +++ b/web/users/migrations/0002_reports.py @@ -0,0 +1,19 @@ +# Generated by Django 4.1 on 2022-11-24 08:39 +# https://realpython.com/django-migrations-a-primer/ + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("users", "0001_initial"), + ] + + operations = [ + migrations.AddField( + model_name="userprofile", + name="reports", + field=models.BooleanField(default=False), + ), + ] diff --git a/web/users/migrations/0002_typo_reports.py b/web/users/migrations/0003_fix.py similarity index 96% rename from web/users/migrations/0002_typo_reports.py rename to web/users/migrations/0003_fix.py index 37d9ef5a834..a85fabeaef0 100644 --- a/web/users/migrations/0002_typo_reports.py +++ b/web/users/migrations/0003_fix.py @@ -5,7 +5,7 @@ class Migration(migrations.Migration): dependencies = [ - ("users", "0001_initial"), + ("users", "0002_reports"), ] operations = list() From 3161e992852d1854fd3e0770a32528abf2c40942 Mon Sep 17 00:00:00 2001 From: Federico Fantini Date: Tue, 9 Jan 2024 10:13:35 +0100 Subject: [PATCH 5/6] I go back to base case --- web/users/migrations/0003_fix.py | 37 ------------------- .../0003_rename_field_subscription.py | 16 ++++++++ 2 files changed, 16 insertions(+), 37 deletions(-) delete mode 100644 web/users/migrations/0003_fix.py create mode 100644 web/users/migrations/0003_rename_field_subscription.py diff --git a/web/users/migrations/0003_fix.py b/web/users/migrations/0003_fix.py deleted file mode 100644 index a85fabeaef0..00000000000 --- a/web/users/migrations/0003_fix.py +++ /dev/null @@ -1,37 +0,0 @@ -from django.db import migrations, models -from users.models import UserProfile - - -class Migration(migrations.Migration): - - dependencies = [ - ("users", "0002_reports"), - ] - - operations = list() - - userprofile_fields = [f.name for f in UserProfile._meta.get_fields()] - if "suscription" in userprofile_fields: - operations.append( - migrations.RenameField( - model_name="UserProfile", - old_name="suscription", - new_name="subscription", - ) - ) - if "subscription" not in userprofile_fields: - operations.append( - migrations.AddField( - model_name="UserProfile", - name="subscription", - field=models.CharField(default="5/m", max_length=50), - ) - ) - if "reports" not in userprofile_fields: - operations.append( - migrations.AddField( - model_name="UserProfile", - name="reports", - field=models.BooleanField(default=False), - ) - ) diff --git a/web/users/migrations/0003_rename_field_subscription.py b/web/users/migrations/0003_rename_field_subscription.py new file mode 100644 index 00000000000..99616521fa9 --- /dev/null +++ b/web/users/migrations/0003_rename_field_subscription.py @@ -0,0 +1,16 @@ +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ("users", "0002_reports"), + ] + + operations = [ + migrations.RenameField( + model_name="userprofile", + old_name="suscription", + new_name="subscription", + ), + ] From c51ea3da6f98d0c641475e5cc209eb5372ffa780 Mon Sep 17 00:00:00 2001 From: Federico Fantini Date: Tue, 9 Jan 2024 11:53:14 +0100 Subject: [PATCH 6/6] fixed migration with sql --- .../0003_rename_field_subscription.py | 32 ++++++++++++++----- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/web/users/migrations/0003_rename_field_subscription.py b/web/users/migrations/0003_rename_field_subscription.py index 99616521fa9..54ab307011f 100644 --- a/web/users/migrations/0003_rename_field_subscription.py +++ b/web/users/migrations/0003_rename_field_subscription.py @@ -1,4 +1,26 @@ -from django.db import migrations +from django.db import connection, migrations + + +def migrate(apps, schema_editor): + with schema_editor.connection.cursor() as cursor: + if connection.vendor == "postgresql": + cursor.execute("SELECT column_name FROM information_schema.columns WHERE table_name = 'users_userprofile';") + elif connection.vendor == "sqlite": + cursor.execute("SELECT sql FROM sqlite_master WHERE tbl_name = 'users_userprofile' AND type = 'table';") + columns = [el[0] for el in cursor.fetchall()] + if "suscription" in columns: + cursor.execute("ALTER TABLE users_userprofile RENAME COLUMN suscription TO subscription;") + + +def reverse_migrate(apps, schema_editor): + with schema_editor.connection.cursor() as cursor: + if connection.vendor == "postgresql": + cursor.execute("SELECT column_name FROM information_schema.columns WHERE table_name = 'users_userprofile';") + elif connection.vendor == "sqlite": + cursor.execute("SELECT sql FROM sqlite_master WHERE tbl_name = 'users_userprofile' AND type = 'table';") + columns = [el[0] for el in cursor.fetchall()] + if "subscription" in columns: + cursor.execute("ALTER TABLE users_userprofile RENAME COLUMN subscription TO suscription;") class Migration(migrations.Migration): @@ -7,10 +29,4 @@ class Migration(migrations.Migration): ("users", "0002_reports"), ] - operations = [ - migrations.RenameField( - model_name="userprofile", - old_name="suscription", - new_name="subscription", - ), - ] + operations = [migrations.RunPython(migrate, reverse_migrate)]