营养校准、后台美化、静态走对象存储 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:
+19
-7
@@ -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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user