fix saving for sepparated models

This commit is contained in:
Kevin Muller 2025-02-26 16:00:37 +01:00 committed by Kiara Grouwstra
parent 7c8c6c7eb9
commit 624e354da5
Signed by: kiara
SSH key fingerprint: SHA256:COspvLoLJ5WC5rFb9ZDe5urVCkK4LJZOsjfF4duRJFU
8 changed files with 149 additions and 143 deletions

View file

@ -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",
),
),
],
),
]

View file

@ -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,
),
),

View file

@ -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,
),
),
]

View file

@ -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')),
],
),
]

View file

@ -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',
),
]

View file

@ -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),
),
]

View file

@ -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 = [
]

View file

@ -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