123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- from flask import Blueprint, render_template, redirect, url_for
- import tools.utils as utils
- from core.dtos import ProjectDto
- from core.user_session import Permission
- from stores import BudgetStore, ProjectStore, ProjectTaskStore
- logger = utils.get_logger()
- project_bp = Blueprint("project", __name__, template_folder="templates")
- project_store = ProjectStore()
- budget_store = BudgetStore()
- project_task_store = ProjectTaskStore()
- @project_bp.route("/", methods=["GET"])
- @Permission.authorize
- def index():
- return render_template("project/index.html", page_active="project")
- @project_bp.route("/budget_info/<project_id>", methods=["GET"])
- @Permission.authorize
- def budget_info(project_id: str):
- project = project_store.get(project_id)
- try:
- budgets = budget_store.get_budget_info(project_id)
- except Exception as e:
- logger.error(f"访问项目概算页面失败[{project_id}]: {str(e)}")
- return redirect(url_for("project.project_error", project_id=project_id))
- return render_template(
- "project/budget_info.html",
- page_active="project",
- project=project,
- budgets=budgets,
- )
- @project_bp.route("/quota_info/<project_id>/<int:task_id>", methods=["GET"])
- @Permission.authorize
- def quota_info(project_id: str, task_id: int):
- project = project_store.get(project_id)
- task = project_task_store.get_task_dto(task_id)
- try:
- budgets = budget_store.get_budget_info(project_id)
- except Exception as e:
- logger.error(f"访问定额输入页面失败[{project_id}]: {str(e)}")
- return redirect(url_for("project.project_error", project_id=project_id))
- return render_template(
- "project/quota_info.html",
- page_active="project",
- project=project,
- budgets=budgets,
- task=task,
- )
- @project_bp.route("/project_error/<project_id>", methods=["GET"])
- @Permission.authorize
- def project_error(project_id: str):
- project = project_store.get(project_id)
- if not project:
- project = ProjectDto(project_id=project_id, project_name="")
- return render_template("project/error.html", page_active="project", project=project)
|