@@ -1,145 +0,0 @@
import os
from django . core . management . base import BaseCommand
from django . core . files . storage import default_storage
from apps . projects . models import Project , Asset , CardLayer
from apps . templates . models import CardTemplate
class Command ( BaseCommand ) :
help = ' Initialize cards design system with sample data '
def handle ( self , * args , * * options ) :
self . stdout . write ( self . style . SUCCESS ( ' Starting initialization... ' ) )
# 创建模板和数据
self . create_templates ( )
self . create_default_assets ( )
self . create_sample_project ( )
self . stdout . write ( self . style . SUCCESS ( ' Initialization complete! ' ) )
def create_templates ( self ) :
""" 创建示例模板 """
templates = [
{
' id ' : ' classic ' ,
' name ' : ' 经典风格 ' ,
' description ' : ' 标准扑克牌设计,传统花色和字体 ' ,
' color_spade ' : ' #000000 ' ,
' color_heart ' : ' #FF0000 ' ,
' color_club ' : ' #000000 ' ,
' color_diamond ' : ' #FF0000 ' ,
' color_background ' : ' #FFFFFF ' ,
} ,
{
' id ' : ' modern ' ,
' name ' : ' 现代简约 ' ,
' description ' : ' 扁平化设计,简洁线条 ' ,
' color_spade ' : ' #333333 ' ,
' color_heart ' : ' #E53935 ' ,
' color_club ' : ' #333333 ' ,
' color_diamond ' : ' #E53935 ' ,
' color_background ' : ' #FAFAFA ' ,
}
]
for template_data in templates :
try :
template = CardTemplate . objects . get ( id = template_data [ ' id ' ] )
if not template . default_assets :
template . default_assets = template_data
template . save ( )
except CardTemplate . DoesNotExist :
template = CardTemplate . objects . create (
id = template_data [ ' id ' ] ,
name = template_data [ ' name ' ] ,
description = template_data [ ' description ' ] ,
color_spade = template_data [ ' color_spade ' ] ,
color_heart = template_data [ ' color_heart ' ] ,
color_club = template_data [ ' color_club ' ] ,
color_diamond = template_data [ ' color_diamond ' ] ,
color_background = template_data [ ' color_background ' ] ,
default_assets = template_data
)
def create_default_assets ( self ) :
""" 创建默认花色素材 """
suits = {
' spade ' : 0xE27B60 ,
' heart ' : 0xE27B60 ,
' club ' : 0xE27B60 ,
' diamond ' : 0xE27B60
}
materials = ' backend/media/assets '
os . makedirs ( materials , exist_ok = True )
for suit_name , color_code in suits . items ( ) :
# 创建简单SVG花色图案
svg_path = os . path . join ( ' backend/media/assets ' , f ' { suit_name } .svg ' )
storyboardSVG = ''' <svg xmlns= " http://www.w3.org/2000/svg " viewBox= " 0 0 100 100 " >
<path d= " M50 5 L50 30 L55 25 L55 5 Z " fill= " ''' f ' # { color_code : 06X } ' f ' " \n />
< path d = " M50 5 L45 25 L50 30 L55 25 Z " fill = " ' ' ' f ' # {color_code:06X} ' f ' " \n / >
< path d = " M30 55 Q30 45 40 45 L50 55 L60 45 Q70 45 70 55 Q70 65 60 70 L50 60 L40 70 Q30 65 30 55 Z " fill = " ' ' ' f ' # {color_code:06X} ' f ' " \n / >
< path d = " M20 80 L20 95 L80 95 L80 80 " stroke = " ' ' ' f ' # {color_code:06X} ' f ' " \n stroke - width = " 8 " fill = " none " / > ^
< / svg > '''
with open(svg_path, ' w ' , encoding= ' utf-8 ' ) as f:
f.write(storyboardSVG)
# 创建Asset记录
Asset.objects.create(
asset_type= ' suit_symbol ' ,
asset_key=suit_name,
color=f ' # {color_code:06X} '
)
def create_sample_project(self):
" " " 创建示例项目 " " "
try:
project = Project.objects.get(name= " 示例项目 " )
self.stdout.write(self.style.WARNING( ' 示例项目已存在,跳过创建 ' ))
return
except Project.DoesNotExist:
project = Project.objects.create(
name= " 示例项目 " ,
template_id= ' classic ' ,
card_width=750,
card_height=1050,
export_resolution= ' standard ' ,
export_include_back=True
)
# 创建示例素材
suit_assets = [
{ ' type ' : ' suit_symbol ' , ' key ' : ' spade ' },
{ ' type ' : ' suit_symbol ' , ' key ' : ' heart ' },
{ ' type ' : ' suit_symbol ' , ' key ' : ' club ' },
{ ' type ' : ' suit_symbol ' , ' key ' : ' diamond ' },
]
for asset_data in suit_assets:
Asset.objects.create(
asset_type=asset_data[ ' type ' ],
asset_key=asset_data[ ' key ' ],
width=60,
height=60
)
# 创建JQK示例素材记录( 临时)
face_cards = [
{ ' type ' : ' face_card ' , ' key ' : ' spade-J ' },
{ ' type ' : ' face_card ' , ' key ' : ' spade-Q ' },
{ ' type ' : ' face_card ' , ' key ' : ' spade-K ' },
]
for face_card in face_cards:
Asset.objects.create(
asset_type=face_card[ ' type ' ],
asset_key=face_card[ ' key ' ],
width=300,
height=500
)
self.stdout.write(self.style.SUCCESS(f ' 项目 " {project.name} " 已创建 ' ))