Initial commit

This commit is contained in:
Richard
2026-07-31 10:08:13 +02:00
parent 652943fb7e
commit a69f31649c
7192 changed files with 924319 additions and 0 deletions
View File
+6
View File
@@ -0,0 +1,6 @@
from django.contrib import admin
from .models import BrandingSetting
@admin.register(BrandingSetting)
class BrandingSettingAdmin(admin.ModelAdmin):
list_display = ['app_name', 'primary_color', 'secondary_color']
@@ -0,0 +1,25 @@
# Generated by Django 6.0.7 on 2026-07-31 07:21
from django.db import migrations, models
class Migration(migrations.Migration):
initial = True
dependencies = [
]
operations = [
migrations.CreateModel(
name='BrandingSetting',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('app_name', models.CharField(default='Veranstaltungsschichtplaner', max_length=200)),
('logo_url', models.CharField(blank=True, default='', max_length=500)),
('primary_color', models.CharField(default='#2563eb', max_length=50)),
('secondary_color', models.CharField(default='#4f46e5', max_length=50)),
('custom_banner_text', models.TextField(blank=True, default='')),
],
),
]
@@ -0,0 +1,48 @@
# Generated by Django 6.0.7 on 2026-07-31 07:44
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('branding', '0001_initial'),
]
operations = [
migrations.AddField(
model_name='brandingsetting',
name='community_info_text',
field=models.TextField(default='Initiative e.V. Hausverein\nOffene Angebote, DIY-Kultur & engagierte Schichten.'),
),
migrations.AddField(
model_name='brandingsetting',
name='community_info_title',
field=models.CharField(default='📌 Verein & Infos', max_length=200),
),
migrations.AddField(
model_name='brandingsetting',
name='show_community_info_box',
field=models.BooleanField(default=True),
),
migrations.AddField(
model_name='brandingsetting',
name='show_support_box',
field=models.BooleanField(default=True),
),
migrations.AddField(
model_name='brandingsetting',
name='support_box_text',
field=models.TextField(default='Hilf mit als Helfer*in an der Bar, beim Essen kochen oder beim Auf- & Abbau.'),
),
migrations.AddField(
model_name='brandingsetting',
name='support_box_title',
field=models.CharField(default='❤️ Unterstützen', max_length=200),
),
migrations.AlterField(
model_name='brandingsetting',
name='primary_color',
field=models.CharField(default='#E05A47', max_length=50),
),
]
+26
View File
@@ -0,0 +1,26 @@
from django.db import models
class BrandingSetting(models.Model):
app_name = models.CharField(max_length=200, default="Veranstaltungsschichtplaner")
logo_url = models.CharField(max_length=500, blank=True, default="")
primary_color = models.CharField(max_length=50, default="#E05A47")
secondary_color = models.CharField(max_length=50, default="#4f46e5")
custom_banner_text = models.TextField(blank=True, default="")
# Home Page Community Info Box
show_community_info_box = models.BooleanField(default=True)
community_info_title = models.CharField(max_length=200, default="📌 Verein & Infos")
community_info_text = models.TextField(default="Initiative e.V. Hausverein\nOffene Angebote, DIY-Kultur & engagierte Schichten.")
# Home Page Support Box
show_support_box = models.BooleanField(default=True)
support_box_title = models.CharField(max_length=200, default="❤️ Unterstützen")
support_box_text = models.TextField(default="Hilf mit als Helfer*in an der Bar, beim Essen kochen oder beim Auf- & Abbau.")
@classmethod
def get_solo(cls):
obj, _ = cls.objects.get_or_create(pk=1)
return obj
def __str__(self):
return f"Branding: {self.app_name}"
+7
View File
@@ -0,0 +1,7 @@
from rest_framework import serializers
from .models import BrandingSetting
class BrandingSettingSerializer(serializers.ModelSerializer):
class Meta:
model = BrandingSetting
fields = '__all__'
+6
View File
@@ -0,0 +1,6 @@
from django.urls import path
from .views import BrandingView
urlpatterns = [
path('', BrandingView.as_view(), name='branding-detail'),
]
+22
View File
@@ -0,0 +1,22 @@
from rest_framework import views, permissions, status
from rest_framework.response import Response
from .models import BrandingSetting
from .serializers import BrandingSettingSerializer
class BrandingView(views.APIView):
def get_permissions(self):
if self.request.method == 'GET':
return [permissions.AllowAny()]
return [permissions.IsAdminUser()]
def get(self, request):
setting = BrandingSetting.get_solo()
return Response(BrandingSettingSerializer(setting).data)
def post(self, request):
setting = BrandingSetting.get_solo()
serializer = BrandingSettingSerializer(setting, data=request.data, partial=True)
if serializer.is_valid():
serializer.save()
return Response(serializer.data)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)