archive.py 1.8 KB

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