From ecb107dd567d1aa7e90e183e07f5f269feef64c9 Mon Sep 17 00:00:00 2001 From: kevin Date: Wed, 26 Feb 2025 16:00:37 +0100 Subject: [PATCH] fix saving for sepparated models --- panel/src/panel/migrations/0001_initial.py | 102 +++++++++++++++++- ...y => 0002_alter_configuration_operator.py} | 13 ++- .../0003_alter_configuration_operator.py | 27 +++++ ...emove_deployformmodel_mastodon_and_more.py | 55 ---------- .../src/panel/migrations/0003_renamemodel.py | 18 ---- ...tion_user_configuration_enable_and_more.py | 35 ------ .../migrations/0005_merge_20250226_1037.py | 14 --- panel/src/panel/views.py | 28 +++-- 8 files changed, 149 insertions(+), 143 deletions(-) rename panel/src/panel/migrations/{0002_deployformmodel_user.py => 0002_alter_configuration_operator.py} (55%) create mode 100644 panel/src/panel/migrations/0003_alter_configuration_operator.py delete mode 100644 panel/src/panel/migrations/0003_remove_deployformmodel_mastodon_and_more.py delete mode 100644 panel/src/panel/migrations/0003_renamemodel.py delete mode 100644 panel/src/panel/migrations/0004_remove_configuration_user_configuration_enable_and_more.py delete mode 100644 panel/src/panel/migrations/0005_merge_20250226_1037.py diff --git a/panel/src/panel/migrations/0001_initial.py b/panel/src/panel/migrations/0001_initial.py index e9538067..a6f2bf0b 100644 --- a/panel/src/panel/migrations/0001_initial.py +++ b/panel/src/panel/migrations/0001_initial.py @@ -1,17 +1,61 @@ -# Generated by Django 4.2.16 on 2025-02-20 08:56 +# Generated by Django 4.2.16 on 2025-02-26 12:01 +from django.conf import settings from django.db import migrations, models +import django.db.models.deletion class Migration(migrations.Migration): initial = True - dependencies = [] + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ] operations = [ migrations.CreateModel( - name="DeployFormModel", + name="Configuration", + fields=[ + ( + "id", + models.BigAutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ( + "enable", + models.BooleanField( + default=False, help_text="Enable the configuration" + ), + ), + ( + "domain", + models.CharField( + choices=[ + ("fediversity_eu", "fediversity.eu"), + ("fediversity_net", "fediversity.net"), + ], + max_length=255, + ), + ), + ( + "operator", + models.ForeignKey( + help_text="Operator who owns the configuration", + null=True, + on_delete=django.db.models.deletion.SET_NULL, + related_name="configurations", + to=settings.AUTH_USER_MODEL, + ), + ), + ], + ), + migrations.CreateModel( + name="PixelfedConfig", fields=[ ( "id", @@ -22,10 +66,58 @@ class Migration(migrations.Migration): verbose_name="ID", ), ), - ("domain", models.TextField()), - ("mastodon", models.BooleanField(default=False)), ("pixelfed", models.BooleanField(default=False)), + ( + "deploy_form", + models.OneToOneField( + on_delete=django.db.models.deletion.CASCADE, + to="panel.configuration", + ), + ), + ], + ), + migrations.CreateModel( + name="PeertubeConfig", + fields=[ + ( + "id", + models.BigAutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), ("peertube", models.BooleanField(default=False)), + ( + "deploy_form", + models.OneToOneField( + on_delete=django.db.models.deletion.CASCADE, + to="panel.configuration", + ), + ), + ], + ), + migrations.CreateModel( + name="MastodonConfig", + fields=[ + ( + "id", + models.BigAutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ("mastodon", models.BooleanField(default=False)), + ( + "deploy_form", + models.OneToOneField( + on_delete=django.db.models.deletion.CASCADE, + to="panel.configuration", + ), + ), ], ), ] diff --git a/panel/src/panel/migrations/0002_deployformmodel_user.py b/panel/src/panel/migrations/0002_alter_configuration_operator.py similarity index 55% rename from panel/src/panel/migrations/0002_deployformmodel_user.py rename to panel/src/panel/migrations/0002_alter_configuration_operator.py index 59fa6fc4..f413f1ad 100644 --- a/panel/src/panel/migrations/0002_deployformmodel_user.py +++ b/panel/src/panel/migrations/0002_alter_configuration_operator.py @@ -1,4 +1,4 @@ -# Generated by Django 4.2.16 on 2025-02-20 09:20 +# Generated by Django 4.2.16 on 2025-02-26 12:10 from django.conf import settings from django.db import migrations, models @@ -13,12 +13,15 @@ class Migration(migrations.Migration): ] operations = [ - migrations.AddField( - model_name="deployformmodel", - name="user", + migrations.AlterField( + model_name="configuration", + name="operator", field=models.ForeignKey( default=1, - on_delete=django.db.models.deletion.CASCADE, + help_text="Operator who owns the configuration", + null=True, + on_delete=django.db.models.deletion.SET_NULL, + related_name="configurations", to=settings.AUTH_USER_MODEL, ), ), diff --git a/panel/src/panel/migrations/0003_alter_configuration_operator.py b/panel/src/panel/migrations/0003_alter_configuration_operator.py new file mode 100644 index 00000000..c7b76a70 --- /dev/null +++ b/panel/src/panel/migrations/0003_alter_configuration_operator.py @@ -0,0 +1,27 @@ +# Generated by Django 4.2.16 on 2025-02-26 12:19 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ("panel", "0002_alter_configuration_operator"), + ] + + operations = [ + migrations.AlterField( + model_name="configuration", + name="operator", + field=models.ForeignKey( + help_text="Operator who owns the configuration", + null=True, + on_delete=django.db.models.deletion.SET_NULL, + related_name="configurations", + to=settings.AUTH_USER_MODEL, + ), + ), + ] diff --git a/panel/src/panel/migrations/0003_remove_deployformmodel_mastodon_and_more.py b/panel/src/panel/migrations/0003_remove_deployformmodel_mastodon_and_more.py deleted file mode 100644 index 33226853..00000000 --- a/panel/src/panel/migrations/0003_remove_deployformmodel_mastodon_and_more.py +++ /dev/null @@ -1,55 +0,0 @@ -# Generated by Django 4.2.16 on 2025-02-25 10:25 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('panel', '0002_deployformmodel_user'), - ] - - operations = [ - migrations.RemoveField( - model_name='deployformmodel', - name='mastodon', - ), - migrations.RemoveField( - model_name='deployformmodel', - name='peertube', - ), - migrations.RemoveField( - model_name='deployformmodel', - name='pixelfed', - ), - migrations.AlterField( - model_name='deployformmodel', - name='domain', - field=models.CharField(choices=[('fediversity_eu', 'fediversity.eu'), ('fediversity_net', 'fediversity.net')], max_length=255), - ), - migrations.CreateModel( - name='PixelfedConfig', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('pixelfed', models.BooleanField(default=False)), - ('deploy_form', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to='panel.deployformmodel')), - ], - ), - migrations.CreateModel( - name='PeertubeConfig', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('peertube', models.BooleanField(default=False)), - ('deploy_form', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to='panel.deployformmodel')), - ], - ), - migrations.CreateModel( - name='MastodonConfig', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('mastodon', models.BooleanField(default=False)), - ('deploy_form', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to='panel.deployformmodel')), - ], - ), - ] diff --git a/panel/src/panel/migrations/0003_renamemodel.py b/panel/src/panel/migrations/0003_renamemodel.py deleted file mode 100644 index 5a5fec21..00000000 --- a/panel/src/panel/migrations/0003_renamemodel.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 4.2.16 on 2025-02-20 09:20 - -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - dependencies = [ - ('panel', '0002_deployformmodel_user'), - ] - - operations = [ - migrations.RenameModel( - old_name='DeployFormModel', - new_name='Configuration', - ), - ] diff --git a/panel/src/panel/migrations/0004_remove_configuration_user_configuration_enable_and_more.py b/panel/src/panel/migrations/0004_remove_configuration_user_configuration_enable_and_more.py deleted file mode 100644 index ab5ad013..00000000 --- a/panel/src/panel/migrations/0004_remove_configuration_user_configuration_enable_and_more.py +++ /dev/null @@ -1,35 +0,0 @@ -# Generated by Django 4.2.16 on 2025-02-24 09:49 - -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ('panel', '0003_renamemodel'), - ] - - operations = [ - migrations.RemoveField( - model_name='configuration', - name='user', - ), - migrations.AddField( - model_name='configuration', - name='enable', - field=models.BooleanField(default=False, help_text='Enable the configuration'), - ), - migrations.AddField( - model_name='configuration', - name='operator', - field=models.ForeignKey(help_text='Operator who owns the configuration', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='configurations', to=settings.AUTH_USER_MODEL), - ), - migrations.AlterField( - model_name='configuration', - name='domain', - field=models.CharField(choices=[('fediversity_eu', 'fediversity.eu'), ('fediversity_net', 'fediversity.net')], max_length=255), - ), - ] diff --git a/panel/src/panel/migrations/0005_merge_20250226_1037.py b/panel/src/panel/migrations/0005_merge_20250226_1037.py deleted file mode 100644 index aa6e2762..00000000 --- a/panel/src/panel/migrations/0005_merge_20250226_1037.py +++ /dev/null @@ -1,14 +0,0 @@ -# Generated by Django 4.2.16 on 2025-02-26 10:37 - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('panel', '0003_remove_deployformmodel_mastodon_and_more'), - ('panel', '0004_remove_configuration_user_configuration_enable_and_more'), - ] - - operations = [ - ] diff --git a/panel/src/panel/views.py b/panel/src/panel/views.py index 1b699d6f..7059c43d 100644 --- a/panel/src/panel/views.py +++ b/panel/src/panel/views.py @@ -36,22 +36,28 @@ class ConfigurationForm(LoginRequiredMixin, UpdateView): def get_object(self, queryset=None): obj, created = Configuration.objects.get_or_create( operator=self.request.user) - + return obj def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) deploy_form = self.get_object() - mastodon_config, _ = MastodonConfig.objects.get_or_create( - deploy_form=deploy_form) - pixelfed_config, _ = PixelfedConfig.objects.get_or_create( - deploy_form=deploy_form) - peertube_config, _ = PeertubeConfig.objects.get_or_create( - deploy_form=deploy_form) - - context['mastodon_form'] = MastodonConfigForm(instance=mastodon_config) - context['pixelfed_form'] = PixelfedConfigForm(instance=pixelfed_config) - context['peertube_form'] = PeertubeConfigForm(instance=peertube_config) + context.update({ + 'mastodon_form': MastodonConfigForm(self.request.POST or None, instance=deploy_form.mastodonconfig), + 'pixelfed_form': PixelfedConfigForm(self.request.POST or None, instance=deploy_form.pixelfedconfig), + 'peertube_form': PeertubeConfigForm(self.request.POST or None, instance=deploy_form.peertubeconfig), + }) return context + + def form_valid(self, form): + response = super().form_valid(form) # Save main Configuration form + obj = self.get_object() # Get instance + + # Save related forms + MastodonConfigForm(self.request.POST, instance=obj.mastodonconfig).save() + PixelfedConfigForm(self.request.POST, instance=obj.pixelfedconfig).save() + PeertubeConfigForm(self.request.POST, instance=obj.peertubeconfig).save() + + return response \ No newline at end of file