1
0

archive.py 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. from flask import Blueprint, render_template, request, url_for, redirect
  2. from flask_wtf import FlaskForm
  3. from wtforms import StringField, SubmitField
  4. from wtforms.validators import DataRequired, Length, ValidationError
  5. from flask_login import login_required
  6. from .db import db, Archive, Role
  7. from .login import role_required
  8. archive = Blueprint("archive", __name__)
  9. class CreateArchiveForm(FlaskForm):
  10. name = StringField("名字", description="归档名字",
  11. validators=[
  12. DataRequired(f"必须填写归档名字"),
  13. Length(1, 32, message=f"归档名字长度为0-32位")])
  14. describe = StringField("描述", description="归档描述",
  15. validators=[
  16. Length(0, 100, message=f"归档描述长度为0-100位")])
  17. submit = SubmitField("提交")
  18. def validate_name(self, field):
  19. """ 检验email是否合法 """
  20. if Archive.query.filter_by(name=field.data).first():
  21. raise ValidationError("归档已存在")
  22. @archive.route("/all")
  23. @role_required(Role.CHECK_ARCHIVE)
  24. def list_all_page():
  25. page = request.args.get("page", 1, type=int)
  26. pagination = (Archive.query
  27. .order_by(Archive.name.asc())
  28. .paginate(page=page, per_page=8, error_out=False))
  29. return render_template("archive/list.html",
  30. page=page,
  31. items=pagination.items,
  32. pagination=pagination)
  33. @archive.route("/create", methods=["GET", "POST"])
  34. @login_required
  35. @role_required(Role.CREATE_ARCHIVE)
  36. def create_page():
  37. form = CreateArchiveForm()
  38. if form.validate_on_submit():
  39. ac = Archive(name=form.name.data, describe=form.describe.data)
  40. db.session.add(ac)
  41. db.session.commit()
  42. return redirect(url_for("comment.list_all_page", archive=ac.id, page=1))
  43. return render_template("archive/create.html", form=form)