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',
'mastodon',
'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.contrib.auth.models import User
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)
pixelfed = models.BooleanField(default=False)
peertube = models.BooleanField(default=False)
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' %}">
{% csrf_token %}
{{ 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>

View file

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