This repository has been archived on 2025-10-24. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
RIS/App/Report/report_model.py
T
2024-11-22 22:56:11 +03:00

49 lines
2.0 KiB
Python

from dataclasses import dataclass
from .db.work import select_list, procedure
from .db.sql_provider import SQLProvider
from flask import current_app
from os import path
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:
_sql = sql_provider.get('check_report.sql', input_data)
result = select_list(current_app.config['db_config'], _sql)
if result is None or result[0]['exist'] == 0:
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 = 'Отчет уже существует',
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)