营养校准、后台美化、静态走对象存储 CDN、标题可编辑、admin 拼音搜索

- 菜品营养按食物成分表+烹饪方式校准(calibrate_nutrition 命令)
- 后台接入 jazzmin 主题美化,移除 Google Fonts(模板覆盖)
- 前端/后台静态资源指向 qnycdn 对象存储 CDN(vite base + DJANGO_STATIC_URL)
- 菜单标题学校名称/周数可编辑,日期随周数计算
- admin 搜索支持拼音首字母/全拼(Dish.pinyin 索引,pypinyin)
- Dockerfile 使用清华 pip 镜像源
This commit is contained in:
root
2026-08-06 21:11:14 +08:00
parent 75f214dc40
commit 65b52b052f
16 changed files with 805 additions and 16 deletions
+19 -7
View File
@@ -223,23 +223,35 @@ def generate_week_menu(payload, menu_key='a'):
return week
def build_menu_title(label):
today = date.today()
week_no = today.isocalendar().week
monday = today - timedelta(days=today.weekday())
def build_menu_title(label, school_name=None, week_no=None):
school_name = school_name or SCHOOL_NAME
iso = date.today().isocalendar()
try:
week_no = int(week_no) if week_no is not None else iso.week
except (TypeError, ValueError):
week_no = iso.week
if not 1 <= week_no <= 53:
week_no = iso.week
try:
monday = date.fromisocalendar(iso.year, week_no, 1)
except ValueError:
monday = date.today() - timedelta(days=date.today().weekday())
friday = monday + timedelta(days=4)
date_range = f'{monday.month}.{monday.day}--{friday.month}.{friday.day}'
return f'{SCHOOL_NAME}[第{week_no}周]{date_range}营养{label}菜单'
return f'{school_name}[第{week_no}周]{date_range}营养{label}菜单'
@api_view(['POST'])
def generate_menu(request):
data = request.data
school = data.get('school_name') or SCHOOL_NAME
week_no = data.get('week_no')
menus = {}
for label in ('A', 'B'):
key = label.lower()
menus[key] = {
'title': build_menu_title(label),
'week': generate_week_menu(request.data, menu_key=key),
'title': build_menu_title(label, school, week_no),
'week': generate_week_menu(data, menu_key=key),
}
return Response(menus)