This repository has been archived on 2025-10-24. You can view files and clone it, but cannot push or open issues or pull requests.
Files
RIS/App/Report/report_model.py

75 lines
3.0 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from dataclasses import dataclass
from .db.work import select_list, procedure
from .db.sql_provider import SQLProvider
from flask import current_app, session
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:
result = procedure(current_app.config['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')
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)
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)