pre-commit changes

This commit is contained in:
2024-12-08 12:17:19 +03:00
parent 2852ce1f96
commit 87e9029b09
15 changed files with 400 additions and 293 deletions

View File

@@ -1,27 +1,33 @@
from flask import request, Blueprint, render_template, url_for
from checker import check_auth
from os import path
from datetime import date
from .report_model import view_report_model, create_report_model
import json
from datetime import date
from os import path
with open(path.join(path.dirname(__file__), 'reports.json'), encoding='utf-8') as f:
from checker import check_auth
from flask import Blueprint, render_template, request, url_for
from .report_model import create_report_model, view_report_model
with open(path.join(path.dirname(__file__), "reports.json"), encoding="utf-8") as f:
report_list = json.load(f)
report_bp = Blueprint('report_bp', __name__, template_folder='templates', static_folder='static')
report_bp = Blueprint(
"report_bp", __name__, template_folder="templates", static_folder="static"
)
@report_bp.route('/menu')
@report_bp.route("/menu")
@check_auth
def menu():
if request.method == 'GET':
return render_template('report_menu.html')
if request.method == "GET":
return render_template("report_menu.html")
# Рекомендации от ИС
# @report_bp.route('/test', methods=['GET'])
# def get_test():
# return render_template('report_basic.html',
# is_write=True,
# title='Создание отчетов',
# return render_template('report_basic.html',
# is_write=True,
# title='Создание отчетов',
# items=report_list,
# date_today=date.today())
@@ -29,16 +35,19 @@ def menu():
# def post_test():
# report_response = model(request, report_list)
# return view(report_response)
@report_bp.route('/create', methods=['GET', 'POST'])
@report_bp.route("/create", methods=["GET", "POST"])
@check_auth
def create():
if request.method == 'GET':
return render_template('report_basic.html',
is_write=True,
title='Создание отчетов',
items=report_list,
date_today=date.today())
if request.method == "GET":
return render_template(
"report_basic.html",
is_write=True,
title="Создание отчетов",
items=report_list,
date_today=date.today(),
)
else:
result = create_report_model(request, report_list)
if result.status:
@@ -46,20 +55,26 @@ def create():
else:
return render_template("error.html", error_message=result.error_message)
@report_bp.route('/view', methods=['GET', 'POST'])
@report_bp.route("/view", methods=["GET", "POST"])
@check_auth
def view():
if request.method == 'GET':
return render_template('report_basic.html',
is_write=False,
title='Просмотр отчетов',
items=report_list,
date_today=date.today())
if request.method == "GET":
return render_template(
"report_basic.html",
is_write=False,
title="Просмотр отчетов",
items=report_list,
date_today=date.today(),
)
else:
result = view_report_model(request, report_list)
if result.status:
return render_template("output.html", items=result.result,
header='Результаты отчёта',
link = url_for('report_bp.menu'))
return render_template(
"output.html",
items=result.result,
header="Результаты отчёта",
link=url_for("report_bp.menu"),
)
else:
return render_template("error.html", error_message=result.error_message)
return render_template("error.html", error_message=result.error_message)

View File

@@ -1,81 +1,87 @@
from dataclasses import dataclass
from Database.work import select_list, procedure
from Database.sql_provider import SQLProvider
from flask import current_app, session
from os import path
sql_provider = SQLProvider(path.join(path.dirname(__file__), 'sql'))
from Database.sql_provider import SQLProvider
from Database.work import procedure, select_list
from flask import current_app, session
sql_provider = SQLProvider(path.join(path.dirname(__file__), "sql"))
@dataclass
class InfoRespronse:
result: tuple
error_message: str
status: bool
def check_report(input_data: dict) -> bool:
db_config = current_app.config['db_config']
result = procedure(db_config, 'check_report', tuple(input_data.values()))
if result is None or result['exist'] == 0:
def check_report(input_data: dict) -> bool:
db_config = current_app.config["db_config"]
result = procedure(db_config, "check_report", tuple(input_data.values()))
if result is None or result["exist"] == 0:
return False
return True
def view_report_model(request, report_list: dict) -> InfoRespronse:
id = request.form.get('category')
month = request.form.get('month')
year = request.form.get('year')
id = request.form.get("category")
month = request.form.get("month")
year = request.form.get("year")
data = dict(id=id, month=month, year=year)
if session['role'] in report_list[id]['data']['read']:
if session["role"] in report_list[id]["data"]["read"]:
status = check_report(data)
if not status:
return InfoRespronse((),
error_message = 'Отчет не найден',
status=False)
db_config = current_app.config['db_config']
view_script = report_list[id]['data']['view']
_sql = sql_provider.get(f'{view_script}.sql', data)
return InfoRespronse((), error_message="Отчет не найден", status=False)
db_config = current_app.config["db_config"]
view_script = report_list[id]["data"]["view"]
_sql = sql_provider.get(f"{view_script}.sql", data)
result = select_list(db_config, _sql)
if result is None:
return InfoRespronse((),
error_message = 'Ошибка в подключении к базе данных. Свяжитесь с администратором',
status=False)
return InfoRespronse(result, error_message='', status=True)
return InfoRespronse(
(),
error_message="Ошибка в подключении к базе данных. Свяжитесь с администратором",
status=False,
)
return InfoRespronse(result, error_message="", status=True)
else:
return InfoRespronse((),
error_message='Недостаточно прав для чтения данного отчета!',
status=False)
return InfoRespronse(
(),
error_message="Недостаточно прав для чтения данного отчета!",
status=False,
)
def create_report_model(request, report_list: dict) -> InfoRespronse:
id = request.form.get('category')
month = request.form.get('month')
year = request.form.get('year')
id = request.form.get("category")
month = request.form.get("month")
year = request.form.get("year")
data = dict(id=id, month=month, year=year)
if session['role'] in report_list[id]['data']['write']:
if session["role"] in report_list[id]["data"]["write"]:
status = check_report(data)
if status:
return InfoRespronse((),
error_message = 'Отчет уже существует',
status=False)
db_config = current_app.config['db_config']
proc_name = report_list[id]['data']['procedure']
return InfoRespronse((), error_message="Отчет уже существует", status=False)
db_config = current_app.config["db_config"]
proc_name = report_list[id]["data"]["procedure"]
args = tuple(data.values())
result = procedure(db_config, proc_name, args)
if result is None:
return InfoRespronse((),
error_message = 'Ошибка в подключении к базе данных. Свяжитесь с администратором',
status=False)
return InfoRespronse((), error_message='', status=True)
return InfoRespronse(
(),
error_message="Ошибка в подключении к базе данных. Свяжитесь с администратором",
status=False,
)
return InfoRespronse((), error_message="", status=True)
else:
return InfoRespronse((),
error_message='Недостаточно прав для создания данного отчета!',
status=False)
return InfoRespronse(
(),
error_message="Недостаточно прав для создания данного отчета!",
status=False,
)