Add saveable Deploy services form

This commit is contained in:
Kevin Muller 2025-02-20 10:54:55 +01:00
parent 2fa4bdaa84
commit 25981cdf33
8 changed files with 71 additions and 48 deletions

4
panel/src/panel/admin.py Normal file
View file

@ -0,0 +1,4 @@
from django.contrib import admin
from .models import DeployFormModel
admin.site.register(DeployFormModel)

View file

@ -9,5 +9,5 @@ class DeployForm(forms.ModelForm):
'domain', 'domain',
'mastodon', 'mastodon',
'pixelfed', 'pixelfed',
'mastodon', 'peertube',
] ]

View file

@ -0,0 +1,31 @@
# Generated by Django 4.2.16 on 2025-02-20 08:56
from django.db import migrations, models
class Migration(migrations.Migration):
initial = True
dependencies = []
operations = [
migrations.CreateModel(
name="DeployFormModel",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
("domain", models.TextField()),
("mastodon", models.BooleanField(default=False)),
("pixelfed", models.BooleanField(default=False)),
("peertube", models.BooleanField(default=False)),
],
),
]

View file

@ -0,0 +1,25 @@
# 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 = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
("panel", "0001_initial"),
]
operations = [
migrations.AddField(
model_name="deployformmodel",
name="user",
field=models.ForeignKey(
default=1,
on_delete=django.db.models.deletion.CASCADE,
to=settings.AUTH_USER_MODEL,
),
),
]

View file

View file

@ -1,11 +1,13 @@
from django.db import models from django.db import models
from django.contrib.auth.models import User
class DeployFormModel(models.Model): class DeployFormModel(models.Model):
domain = models.TextField() user = models.ForeignKey(User, on_delete=models.CASCADE, default=1)
domain = models.CharField(max_length=255)
mastodon = models.BooleanField(default=False) mastodon = models.BooleanField(default=False)
pixelfed = models.BooleanField(default=False) pixelfed = models.BooleanField(default=False)
peertube = models.BooleanField(default=False) peertube = models.BooleanField(default=False)
def __str__(self): def __str__(self):
return self.domain return f"User: {self.user.username}, Domain: {self.domain}, Mastodon: {self.mastodon}, Pixelfed: {self.pixelfed}, Peertube: {self.peertube}"

View file

@ -3,49 +3,7 @@
<form method="post" enctype="multipart/form-data" action="{% url 'deploy_services' %}"> <form method="post" enctype="multipart/form-data" action="{% url 'deploy_services' %}">
{% csrf_token %} {% csrf_token %}
{{ form.as_p }} {{ form.as_p }}
<div>
<input type="text" id="domain" name="domain" placeholder="fediversity.net" value="fediversity.net" />
<label for="domain">Domain</label>
</div>
<fieldset>
<legend>Services:</legend>
<div>
<input type="checkbox" id="mastodon" name="mastodon" checked />
<label for="mastodon">Mastodon</label>
</div>
<!--
<div>
<input type="text" id="subdomain-mastodon" name="subdomain-mastodon" placeholder="mastodon" value="mastodon" />
<label for="subdomain-mastodon">subdomain for Mastodon</label>
</div>
-->
<div>
<input type="checkbox" id="pixelfed" name="pixelfed" checked />
<label for="pixelfed">Pixelfed</label>
</div>
<!--
<div>
<input type="text" id="subdomain-pixelfed" name="subdomain-pixelfed" placeholder="pixelfed" value="pixelfed" />
<label for="subdomain-pixelfed">subdomain for Pixelfed</label>
</div>
-->
<div>
<input type="checkbox" id="peertube" name="peertube" checked />
<label for="peertube">Peertube</label>
</div>
<!--
<div>
<input type="text" id="subdomain-peertube" name="subdomain-peertube" placeholder="peertube" value="peertube" />
<label for="subdomain-peertube">subdomain for Peertube</label>
</div>
-->
</fieldset> </fieldset>

View file

@ -2,8 +2,8 @@ from django.contrib.auth.mixins import LoginRequiredMixin
from django.contrib.auth.models import User from django.contrib.auth.models import User
from django.views.generic import TemplateView from django.views.generic import TemplateView
from django.views.generic import DetailView from django.views.generic import DetailView
from django.views.generic.edit import CreateView from django.views.generic.edit import UpdateView
from django.shortcuts import render, redirect from django.shortcuts import get_object_or_404
from django.urls import reverse_lazy from django.urls import reverse_lazy
from .models import DeployFormModel from .models import DeployFormModel
from .forms import DeployForm from .forms import DeployForm
@ -20,9 +20,12 @@ class AccountDetail(LoginRequiredMixin, DetailView):
class ServiceList(TemplateView): class ServiceList(TemplateView):
template_name = 'service_list.html' template_name = 'service_list.html'
class DeployServices(LoginRequiredMixin, TemplateView): class DeployServices(LoginRequiredMixin, UpdateView):
template_name = 'deploy_services.html' template_name = 'deploy_services.html'
model = DeployFormModel model = DeployFormModel
form_class = DeployForm form_class = DeployForm
success_url = reverse_lazy('index') success_url = reverse_lazy('index')
def get_object(self, queryset=None):
obj, created = DeployFormModel.objects.get_or_create(user=self.request.user)
return obj