12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- from flask import Blueprint, render_template, request, url_for, redirect
- from flask_wtf import FlaskForm
- from wtforms import StringField, SubmitField
- from wtforms.validators import DataRequired, Length, ValidationError
- from flask_login import login_required
- from .db import db, Archive, Role
- from .login import role_required
- from .logger import Logger
- archive = Blueprint("archive", __name__)
- class CreateArchiveForm(FlaskForm):
- name = StringField("名字", description="归档名字",
- validators=[
- DataRequired(f"必须填写归档名字"),
- Length(1, 32, message=f"归档名字长度为0-32位")])
- describe = StringField("描述", description="归档描述",
- validators=[
- Length(0, 100, message=f"归档描述长度为0-100位")])
- submit = SubmitField("提交")
- def validate_name(self, field):
- """ 检验email是否合法 """
- if Archive.query.filter_by(name=field.data).first():
- raise ValidationError("归档已存在")
- @archive.route("/all")
- @role_required(Role.CHECK_ARCHIVE, "list all archive")
- def list_all_page():
- page = request.args.get("page", 1, type=int)
- pagination = (Archive.query
- .order_by(Archive.name.asc())
- .paginate(page=page, per_page=8, error_out=False))
- Logger.print_load_page_log("list all archive")
- return render_template("archive/list.html",
- page=page,
- items=pagination.items,
- pagination=pagination)
- @archive.route("/create", methods=["GET", "POST"])
- @login_required
- @role_required(Role.CREATE_ARCHIVE, "create archive")
- def create_page():
- form = CreateArchiveForm()
- if form.validate_on_submit():
- ac = Archive(name=form.name.data, describe=form.describe.data)
- db.session.add(ac)
- db.session.commit()
- Logger.print_user_opt_success_log(f"create new archive {ac.name}")
- return redirect(url_for("comment.list_all_page", archive=ac.id, page=1))
- Logger.print_load_page_log("create archive page")
- return render_template("archive/create.html", form=form)
|