- 将 routes/admin.py (672行) 拆分为 routes/admin/ 包 - 按功能模块拆分:auth, dashboard, articles, categories, tags, settings, stats, upload, authors - 端口从 16012 改为 16013 - 初始化数据库和管理员账户
63 lines
2.0 KiB
Python
63 lines
2.0 KiB
Python
"""作者管理路由"""
|
|
from flask import render_template, redirect, url_for, request, flash
|
|
from app.routes.admin import admin_bp, login_required
|
|
from app.services import AuthorService
|
|
|
|
|
|
@admin_bp.route('/authors')
|
|
@login_required
|
|
def authors():
|
|
"""作者列表"""
|
|
authors = AuthorService.get_all()
|
|
return render_template('admin/authors.html', authors=authors)
|
|
|
|
|
|
@admin_bp.route('/authors/create', methods=['GET', 'POST'])
|
|
@login_required
|
|
def author_create():
|
|
"""创建作者"""
|
|
if request.method == 'POST':
|
|
name = request.form.get('name')
|
|
avatar = request.form.get('avatar')
|
|
bio = request.form.get('bio')
|
|
website = request.form.get('website')
|
|
|
|
AuthorService.create(name=name, avatar=avatar, bio=bio, website=website)
|
|
flash('作者创建成功', 'success')
|
|
return redirect(url_for('admin.authors'))
|
|
|
|
return render_template('admin/author_form.html', author=None)
|
|
|
|
|
|
@admin_bp.route('/authors/<int:author_id>/edit', methods=['GET', 'POST'])
|
|
@login_required
|
|
def author_edit(author_id):
|
|
"""编辑作者"""
|
|
author = AuthorService.get_by_id(author_id)
|
|
if not author:
|
|
flash('作者不存在', 'danger')
|
|
return redirect(url_for('admin.authors'))
|
|
|
|
if request.method == 'POST':
|
|
AuthorService.update(author_id,
|
|
name=request.form.get('name'),
|
|
avatar=request.form.get('avatar'),
|
|
bio=request.form.get('bio'),
|
|
website=request.form.get('website')
|
|
)
|
|
flash('作者更新成功', 'success')
|
|
return redirect(url_for('admin.authors'))
|
|
|
|
return render_template('admin/author_form.html', author=author)
|
|
|
|
|
|
@admin_bp.route('/authors/<int:author_id>/delete', methods=['POST'])
|
|
@login_required
|
|
def author_delete(author_id):
|
|
"""删除作者"""
|
|
if AuthorService.delete(author_id):
|
|
flash('作者已删除', 'success')
|
|
else:
|
|
flash('删除失败', 'danger')
|
|
return redirect(url_for('admin.authors'))
|