Initial commit
This commit is contained in:
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -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),
|
||||
),
|
||||
]
|
||||
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
@@ -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}"
|
||||
@@ -0,0 +1,7 @@
|
||||
from rest_framework import serializers
|
||||
from .models import BrandingSetting
|
||||
|
||||
class BrandingSettingSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = BrandingSetting
|
||||
fields = '__all__'
|
||||
@@ -0,0 +1,6 @@
|
||||
from django.urls import path
|
||||
from .views import BrandingView
|
||||
|
||||
urlpatterns = [
|
||||
path('', BrandingView.as_view(), name='branding-detail'),
|
||||
]
|
||||
@@ -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)
|
||||
Reference in New Issue
Block a user