mirror of
https://github.com/narrrl/holy-flavor-rater.git
synced 2026-11-04 00:47:02 +01:00
added configuration folder for banner settings
This commit is contained in:
1 parent
0cec8bbcf8
commit
dd67fa4b79
5 files changed
+93
No files matched your search
@@ -0,0 +1,57 @@
|
||||
from django.core.management.base import BaseCommand
|
||||
from api.models import Banner
|
||||
import os
|
||||
import json
|
||||
|
||||
class Command(BaseCommand):
|
||||
help = 'Seeds banner models and missing settings from JSON files in backend/banners/'
|
||||
|
||||
def handle(self, *args, **options):
|
||||
# Determine the banners directory relative to the project root
|
||||
project_root = os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(__file__))))
|
||||
banners_dir = os.path.join(project_root, 'banners')
|
||||
|
||||
if not os.path.exists(banners_dir):
|
||||
self.stdout.write(self.style.WARNING(f"Banners directory not found at {banners_dir}"))
|
||||
return
|
||||
|
||||
for filename in os.listdir(banners_dir):
|
||||
if filename.endswith('.json'):
|
||||
filepath = os.path.join(banners_dir, filename)
|
||||
try:
|
||||
with open(filepath, 'r') as f:
|
||||
data = json.load(f)
|
||||
|
||||
slug = data.get('slug')
|
||||
if not slug:
|
||||
continue
|
||||
|
||||
banner, created = Banner.objects.get_or_create(
|
||||
slug=slug,
|
||||
defaults={
|
||||
'name': data.get('name', slug),
|
||||
'description': data.get('description', ''),
|
||||
'settings': data.get('settings', {})
|
||||
}
|
||||
)
|
||||
|
||||
if not created:
|
||||
# Sync missing settings from JSON to DB without overwriting existing keys
|
||||
db_settings = banner.settings or {}
|
||||
json_settings = data.get('settings', {})
|
||||
|
||||
updated = False
|
||||
for key, value in json_settings.items():
|
||||
if key not in db_settings:
|
||||
db_settings[key] = value
|
||||
updated = True
|
||||
|
||||
if updated:
|
||||
banner.settings = db_settings
|
||||
banner.save()
|
||||
self.stdout.write(self.style.SUCCESS(f"Synced new settings for banner '{slug}' from {filename}"))
|
||||
else:
|
||||
self.stdout.write(self.style.SUCCESS(f"Created new banner '{slug}' from {filename}"))
|
||||
|
||||
except Exception as e:
|
||||
self.stdout.write(self.style.ERROR(f"Failed to sync banner from {filename}: {e}"))
|
||||
Reference in new issue
Block a user