Рекомендации от ИС
This commit is contained in:
@@ -1,8 +1,8 @@
|
|||||||
from flask import request, Blueprint, render_template, session, url_for
|
from flask import request, Blueprint, render_template, url_for
|
||||||
from checker import check_auth
|
from checker import check_auth
|
||||||
from os import path
|
from os import path
|
||||||
from datetime import date
|
from datetime import date
|
||||||
from .report_model import view_report, make_report
|
from .report_model import view_report_model, create_report_model
|
||||||
import json
|
import json
|
||||||
|
|
||||||
with open(path.join(path.dirname(__file__), 'reports.json')) as f:
|
with open(path.join(path.dirname(__file__), 'reports.json')) as f:
|
||||||
@@ -16,6 +16,20 @@ def menu():
|
|||||||
if request.method == 'GET':
|
if request.method == 'GET':
|
||||||
return render_template('report_menu.html')
|
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='Создание отчетов',
|
||||||
|
# items=report_list,
|
||||||
|
# date_today=date.today())
|
||||||
|
|
||||||
|
# @report_bp.route('/test', methods=['POST'])
|
||||||
|
# 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
|
@check_auth
|
||||||
def create():
|
def create():
|
||||||
@@ -26,20 +40,11 @@ def create():
|
|||||||
items=report_list,
|
items=report_list,
|
||||||
date_today=date.today())
|
date_today=date.today())
|
||||||
else:
|
else:
|
||||||
id = request.form.get('category')
|
result = create_report_model(request, report_list)
|
||||||
month = request.form.get('month')
|
if result.status:
|
||||||
year = request.form.get('year')
|
return render_template("OK.html")
|
||||||
data = dict(id=id, month=month, year=year)
|
|
||||||
|
|
||||||
if session['role'] in report_list[id]['data']['write']:
|
|
||||||
proc_name = report_list[id]['data']['procedure']
|
|
||||||
ready_report = make_report(data, proc_name)
|
|
||||||
if ready_report.status:
|
|
||||||
return render_template("OK.html")
|
|
||||||
else:
|
|
||||||
return render_template("error.html", error_message=ready_report.error_message)
|
|
||||||
else:
|
else:
|
||||||
return render_template("error.html", error_message='Недостаточно прав для создания данного отчета!')
|
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
|
@check_auth
|
||||||
@@ -51,19 +56,10 @@ def view():
|
|||||||
items=report_list,
|
items=report_list,
|
||||||
date_today=date.today())
|
date_today=date.today())
|
||||||
else:
|
else:
|
||||||
id = request.form.get('category')
|
result = view_report_model(request, report_list)
|
||||||
month = request.form.get('month')
|
if result.status:
|
||||||
year = request.form.get('year')
|
return render_template("output.html", items=result.result,
|
||||||
data = dict(id=id, month=month, year=year)
|
header='Результаты отчёта',
|
||||||
|
link = url_for('report_bp.menu'))
|
||||||
if session['role'] in report_list[id]['data']['read']:
|
|
||||||
ready_report = view_report(data, report_list[id]['data']['view'])
|
|
||||||
if ready_report.status:
|
|
||||||
title= f'{report_list[id]['data']['title']} за {data["month"]}-{data["year"]}'
|
|
||||||
return render_template("output.html", items=ready_report.result,
|
|
||||||
header=title,
|
|
||||||
link = url_for('report_bp.menu'))
|
|
||||||
else:
|
|
||||||
return render_template("error.html", error_message=ready_report.error_message)
|
|
||||||
else:
|
else:
|
||||||
return render_template("error.html", error_message='Недосточно прав для чтения данного отчета!')
|
return render_template("error.html", error_message=result.error_message)
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
from .db.work import select_list, procedure
|
from .db.work import select_list, procedure
|
||||||
from .db.sql_provider import SQLProvider
|
from .db.sql_provider import SQLProvider
|
||||||
from flask import current_app
|
from flask import current_app, session
|
||||||
from os import path
|
from os import path
|
||||||
|
|
||||||
sql_provider = SQLProvider(path.join(path.dirname(__file__), 'sql'))
|
sql_provider = SQLProvider(path.join(path.dirname(__file__), 'sql'))
|
||||||
@@ -17,32 +17,59 @@ def check_report(input_data: dict) -> bool:
|
|||||||
return False
|
return False
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def view_report(input_data: dict, view_script: str) -> InfoRespronse:
|
|
||||||
status = check_report(input_data)
|
|
||||||
if not status:
|
|
||||||
return InfoRespronse((),
|
|
||||||
error_message = 'Отчет не найден',
|
|
||||||
status=False)
|
|
||||||
|
|
||||||
_sql = sql_provider.get(f'{view_script}.sql', input_data)
|
|
||||||
result = select_list(current_app.config['db_config'], _sql)
|
|
||||||
if result is None:
|
|
||||||
return InfoRespronse((),
|
|
||||||
error_message = 'Ошибка в подключении к базе данных. Свяжитесь с администратором',
|
|
||||||
status=False)
|
|
||||||
return InfoRespronse(result, error_message='', status=True)
|
|
||||||
|
|
||||||
def make_report(input_data: dict, proc_name: str) -> InfoRespronse:
|
def view_report_model(request, report_list: dict) -> InfoRespronse:
|
||||||
status = check_report(input_data)
|
id = request.form.get('category')
|
||||||
if status:
|
month = request.form.get('month')
|
||||||
return InfoRespronse((),
|
year = request.form.get('year')
|
||||||
error_message = 'Отчет уже существует',
|
|
||||||
|
data = dict(id=id, month=month, year=year)
|
||||||
|
|
||||||
|
if session['role'] in report_list[id]['data']['read']:
|
||||||
|
status = check_report(data)
|
||||||
|
if not status:
|
||||||
|
return InfoRespronse((),
|
||||||
|
error_message = 'Отчет не найден',
|
||||||
|
status=False)
|
||||||
|
|
||||||
|
view_script = report_list[id]['data']['view']
|
||||||
|
_sql = sql_provider.get(f'{view_script}.sql', data)
|
||||||
|
result = select_list(current_app.config['db_config'], _sql)
|
||||||
|
if result is None:
|
||||||
|
return InfoRespronse((),
|
||||||
|
error_message = 'Ошибка в подключении к базе данных. Свяжитесь с администратором',
|
||||||
|
status=False)
|
||||||
|
return InfoRespronse(result, error_message='', status=True)
|
||||||
|
else:
|
||||||
|
return InfoRespronse((),
|
||||||
|
error_message='Недостаточно прав для чтения данного отчета!',
|
||||||
status=False)
|
status=False)
|
||||||
|
|
||||||
data = tuple(input_data.values())
|
def create_report_model(request, report_list: dict) -> InfoRespronse:
|
||||||
result = procedure(current_app.config['db_config'], proc_name, data)
|
id = request.form.get('category')
|
||||||
if result is None:
|
month = request.form.get('month')
|
||||||
return InfoRespronse((),
|
year = request.form.get('year')
|
||||||
error_message = 'Ошибка в подключении к базе данных. Свяжитесь с администратором',
|
|
||||||
status=False)
|
data = dict(id=id, month=month, year=year)
|
||||||
return InfoRespronse((), error_message='', status=True)
|
|
||||||
|
if session['role'] in report_list[id]['data']['write']:
|
||||||
|
|
||||||
|
status = check_report(data)
|
||||||
|
if status:
|
||||||
|
return InfoRespronse((),
|
||||||
|
error_message = 'Отчет уже существует',
|
||||||
|
status=False)
|
||||||
|
|
||||||
|
proc_name = report_list[id]['data']['procedure']
|
||||||
|
args = tuple(data.values())
|
||||||
|
result = procedure(current_app.config['db_config'], proc_name, args)
|
||||||
|
|
||||||
|
if result is None:
|
||||||
|
return InfoRespronse((),
|
||||||
|
error_message = 'Ошибка в подключении к базе данных. Свяжитесь с администратором',
|
||||||
|
status=False)
|
||||||
|
return InfoRespronse((), error_message='', status=True)
|
||||||
|
else:
|
||||||
|
return InfoRespronse((),
|
||||||
|
error_message='Недостаточно прав для создания данного отчета!',
|
||||||
|
status=False)
|
||||||
@@ -1,16 +1,22 @@
|
|||||||
{
|
{
|
||||||
"1": {"name" : "Заготовки", "data": {
|
"1": {
|
||||||
"title" : "Отчет о поставках заготовок",
|
"name" : "Заготовки",
|
||||||
"write" : ["Менеджер"],
|
"data": {
|
||||||
"read" : ["Менеджер", "Управляющий"],
|
"title" : "Отчет о поставках заготовок",
|
||||||
"view" : "workpiece_report",
|
"write" : ["Менеджер"],
|
||||||
"procedure" : "report_workpiece_2"
|
"read" : ["Менеджер", "Управляющий"],
|
||||||
}},
|
"view" : "workpiece_report",
|
||||||
"2": {"name": "Поставщики", "data": {
|
"procedure" : "report_workpiece_2"
|
||||||
"title" : "Отчет о поставках поставщиками",
|
}
|
||||||
"write" : ["Бухгалтер"],
|
},
|
||||||
"read" : ["Бухгалтер", "Управляющий"],
|
"2": {
|
||||||
"view" : "sellers_report",
|
"name": "Поставщики",
|
||||||
"procedure" : "report_sellers_2"
|
"data": {
|
||||||
}}
|
"title" : "Отчет о поставках поставщиками",
|
||||||
|
"write" : ["Бухгалтер"],
|
||||||
|
"read" : ["Бухгалтер", "Управляющий"],
|
||||||
|
"view" : "sellers_report",
|
||||||
|
"procedure" : "report_sellers_2"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user