Рекомендации от ИС

This commit is contained in:
2024-11-23 11:48:55 +03:00
parent 0b85b57c5d
commit a6c5ef9883
3 changed files with 100 additions and 71 deletions

View File

@@ -1,7 +1,7 @@
from dataclasses import dataclass
from .db.work import select_list, procedure
from .db.sql_provider import SQLProvider
from flask import current_app
from flask import current_app, session
from os import path
sql_provider = SQLProvider(path.join(path.dirname(__file__), 'sql'))
@@ -17,32 +17,59 @@ def check_report(input_data: dict) -> bool:
return False
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:
status = check_report(input_data)
if status:
return InfoRespronse((),
error_message = 'Отчет уже существует',
def view_report_model(request, report_list: dict) -> InfoRespronse:
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']:
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)
data = tuple(input_data.values())
result = procedure(current_app.config['db_config'], proc_name, data)
if result is None:
return InfoRespronse((),
error_message = 'Ошибка в подключении к базе данных. Свяжитесь с администратором',
status=False)
return InfoRespronse((), error_message='', status=True)
def create_report_model(request, report_list: dict) -> InfoRespronse:
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']:
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)