import os import subprocess from dataclasses import dataclass from django.conf import settings from django.core.management.base import BaseCommand from django.template.loader import render_to_string from django.core.management import call_command from web.models import WebSettings @dataclass class Color: name: str index: int value: str class Command(BaseCommand): """ Usage: python manage.py build_tailwind_theme """ def handle(self, *args, **options): web_settings = WebSettings.load() path = os.path.join(settings.BASE_DIR, 'web', 'static', 'css', 'main.css') colors = [] for color_name, data in web_settings.theme_colors.items(): for index, value in data.items(): color = Color(color_name, index, value) colors.append(color) result = str(render_to_string('theme/main.css.template', context={'colors': colors})) with open(path, 'w') as f: f.write(result) subprocess.run(['tailwindcss', '-i', 'web/static/css/main.css', '-o', 'web/static/css/styles.css', '--minify']) call_command('collectstatic', '--no-input')