From 1fd0d8c643c12ed95a6fa1af0587876deef2012c Mon Sep 17 00:00:00 2001 From: kevin Date: Thu, 20 Feb 2025 10:54:55 +0100 Subject: [PATCH] Add saveable Deploy services form --- panel/src/panel/admin.py | 4 ++ panel/src/panel/forms.py | 2 +- panel/src/panel/migrations/0001_initial.py | 31 ++++++++++++++ .../migrations/0002_deployformmodel_user.py | 25 +++++++++++ panel/src/panel/migrations/__init__.py | 0 panel/src/panel/models.py | 6 ++- .../src/panel/templates/deploy_services.html | 42 ------------------- panel/src/panel/views.py | 9 ++-- 8 files changed, 71 insertions(+), 48 deletions(-) create mode 100644 panel/src/panel/admin.py create mode 100644 panel/src/panel/migrations/0001_initial.py create mode 100644 panel/src/panel/migrations/0002_deployformmodel_user.py create mode 100644 panel/src/panel/migrations/__init__.py diff --git a/panel/src/panel/admin.py b/panel/src/panel/admin.py new file mode 100644 index 00000000..1206f52b --- /dev/null +++ b/panel/src/panel/admin.py @@ -0,0 +1,4 @@ +from django.contrib import admin +from .models import DeployFormModel + +admin.site.register(DeployFormModel) diff --git a/panel/src/panel/forms.py b/panel/src/panel/forms.py index ae966250..c898f83b 100644 --- a/panel/src/panel/forms.py +++ b/panel/src/panel/forms.py @@ -9,5 +9,5 @@ class DeployForm(forms.ModelForm): 'domain', 'mastodon', 'pixelfed', - 'mastodon', + 'peertube', ] diff --git a/panel/src/panel/migrations/0001_initial.py b/panel/src/panel/migrations/0001_initial.py new file mode 100644 index 00000000..e9538067 --- /dev/null +++ b/panel/src/panel/migrations/0001_initial.py @@ -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)), + ], + ), + ] diff --git a/panel/src/panel/migrations/0002_deployformmodel_user.py b/panel/src/panel/migrations/0002_deployformmodel_user.py new file mode 100644 index 00000000..59fa6fc4 --- /dev/null +++ b/panel/src/panel/migrations/0002_deployformmodel_user.py @@ -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, + ), + ), + ] diff --git a/panel/src/panel/migrations/__init__.py b/panel/src/panel/migrations/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/panel/src/panel/models.py b/panel/src/panel/models.py index 9aeb88fd..dfee2273 100644 --- a/panel/src/panel/models.py +++ b/panel/src/panel/models.py @@ -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}" diff --git a/panel/src/panel/templates/deploy_services.html b/panel/src/panel/templates/deploy_services.html index 76583e91..ad67e72d 100644 --- a/panel/src/panel/templates/deploy_services.html +++ b/panel/src/panel/templates/deploy_services.html @@ -3,49 +3,7 @@
{% csrf_token %} {{ form.as_p }} -
- - -
-
- Services: - -
- - -
- - - -
- - -
- - - -
- - -
- -
diff --git a/panel/src/panel/views.py b/panel/src/panel/views.py index e879b9e2..b9c04357 100644 --- a/panel/src/panel/views.py +++ b/panel/src/panel/views.py @@ -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 \ No newline at end of file