Skip to content
Snippets Groups Projects
staff.py 1.33 KiB
Newer Older
from datetime import datetime

from flask import render_template, Blueprint, redirect, url_for, flash, request, g
from flask_login import login_required, current_user
from app import Project, db, messages
from app.forms.project import ProjectForm
bp = Blueprint("staff", __name__, url_prefix="/staff")


@bp.route("/projects", methods=["GET", "POST"])
    form = ProjectForm()
    if form.validate_on_submit():
        project = Project(
            title=form.title.data,
            description=form.description.data,
            proposer=current_user.username,
        )
        db.session.add(project)
        db.session.commit()
        return redirect(url_for("staff.projects"))
    active_projects: list[Project] = Project.query.filter(
        Project.deleted.is_(None)
    ).all()
    return render_template("pages/projects.html", projects=active_projects)


@bp.route("/projects/create")
@login_required
def create_project():
    return render_template("pages/project-form.html", form=ProjectForm())
@bp.route("/projects/<project_id>/delete")
@login_required
def delete_project(project_id):
    if project := Project.query.get(project_id):
        project.deleted = datetime.utcnow()
        db.session.commit()
    else:
        flash(messages.PROJECT_NOT_FOUND)
    return redirect(url_for("staff.projects"))