diff --git a/App/Auth/auth.py b/App/Auth/auth.py new file mode 100644 index 0000000..d7415b5 --- /dev/null +++ b/App/Auth/auth.py @@ -0,0 +1,30 @@ +from flask import request, Blueprint, render_template, session, redirect, url_for +from os import path +from .auth_route import route +from Database.sql_provider import SQLProvider +import json + +sql_provider = SQLProvider(path.join(path.dirname(__file__), 'sql')) +auth_bp = Blueprint('auth_bp', __name__, template_folder='templates') + +with open(path.join(path.dirname(__file__), 'config.json')) as f: + config = json.load(f) + +@auth_bp.route('/', methods=['GET', 'POST']) +def auth(): + if request.method == 'GET': + return render_template('auth.html') + else: + data = request.form.to_dict() + print(data) + auth_data = route(config, data, sql_provider, 'auth.sql') + if auth_data.status: + session.update({ + 'user_id': auth_data.result[0]['user_ID'], + 'role': auth_data.result[0]['role'], + 'db_config': config, + 'permanent': True + }) + return redirect(url_for('index')) + else: + return auth_data.error_message diff --git a/App/Auth/auth_route.py b/App/Auth/auth_route.py index 4298f15..4472666 100644 --- a/App/Auth/auth_route.py +++ b/App/Auth/auth_route.py @@ -1,28 +1,15 @@ -from flask import request, Blueprint, render_template, session, redirect, url_for -from os import path -from db.sql_provider import SQLProvider -from db.select import select_list -import json +from dataclasses import dataclass +from Database.select import select_list +@dataclass +class InfoRespronse: + result: tuple + error_message: str + status: bool -sql_provider = SQLProvider(path.join(path.dirname(__file__), 'sql')) -auth_bp = Blueprint('auth_bp', __name__, template_folder='templates') - -with open(path.join(path.dirname(__file__), 'config.json')) as f: - config = json.load(f) - -@auth_bp.route('/', methods=['GET', 'POST']) -def auth(): - if request.method == 'GET': - return render_template('auth.html') - else: - data = dict(request.form) - print(data) - result = select_list(config, sql_provider.get('auth.sql', data)) - if result[1]: - session['user_id'] = result[1][0]['user_ID'] - session['role'] = result[1][0]['role'] - session['db_config'] = config - session.permanent = True - return redirect(url_for('index')) - else: - return 'Неправильный логин или пароль' \ No newline at end of file +def route(db_config, input_data, sql_provider, name) -> InfoRespronse: + _sql = sql_provider.get(name, input_data) + print("sql = ", _sql) + result = select_list(db_config, _sql) + if result is None: + return InfoRespronse(result, error_message = 'Ошибка на этапе авторизации', status=False) + return InfoRespronse(result, error_message='', status=True) \ No newline at end of file diff --git a/App/Auth/templates/auth.html b/App/Auth/templates/auth.html index 70ad0fe..595a817 100644 --- a/App/Auth/templates/auth.html +++ b/App/Auth/templates/auth.html @@ -2,7 +2,7 @@ - Authorization + Авторизация
diff --git a/App/Queries/req.py b/App/Queries/req.py deleted file mode 100644 index c1b7c3c..0000000 --- a/App/Queries/req.py +++ /dev/null @@ -1,20 +0,0 @@ -from flask import request, Blueprint, render_template, session, redirect, url_for -from os import path -from db.sql_provider import SQLProvider -from db.select import select_list -from checker import check_auth - -sql_provider = SQLProvider(path.join(path.dirname(__file__), 'sql')) -requests_bp = Blueprint('requests_bp', __name__, template_folder='templates') - -@requests_bp.route('/', methods=['GET', 'POST']) -@check_auth -def sklad_zapros(): - if request.method == 'GET': - result = select_list(session['db_config'], sql_provider.get('zagotovki.sql', {})) - return render_template('sklad_zapros.html', materials=result[1], status=True) - else: - name = dict(request.form) - print(name) - result = select_list(session['db_config'], sql_provider.get('zapros1.sql', name)) - return render_template('sklad_zapros.html', materials=result[1], result_table=result) \ No newline at end of file diff --git a/App/Queries/requests.py b/App/Queries/requests.py new file mode 100644 index 0000000..6f06fd6 --- /dev/null +++ b/App/Queries/requests.py @@ -0,0 +1,26 @@ +from flask import request, Blueprint, render_template, session +from os import path +from Database.sql_provider import SQLProvider +from checker import check_auth +from .requests_route import route + +sql_provider = SQLProvider(path.join(path.dirname(__file__), 'sql')) +requests_bp = Blueprint('requests_bp', __name__, template_folder='templates') + +@requests_bp.route('/', methods=['GET', 'POST']) +@check_auth +def sklad_zapros(): + if request.method == 'GET': + zagotovki = route(session['db_config'], {}, sql_provider, 'zagotovki.sql') + if zagotovki.status: + return render_template('sklad_zapros.html', materials=zagotovki.result, status=True) + else: + return zagotovki.error_message + else: + material = dict(request.form) + zagotovki = route(session['db_config'], material, sql_provider, 'zapros1.sql') + if zagotovki.status: + print(zagotovki.result) + return render_template('sklad_zapros.html', items=zagotovki.result) + else: + return zagotovki.error_message \ No newline at end of file diff --git a/App/Queries/requests_route.py b/App/Queries/requests_route.py new file mode 100644 index 0000000..961753b --- /dev/null +++ b/App/Queries/requests_route.py @@ -0,0 +1,15 @@ +from dataclasses import dataclass +from Database.select import select_list +@dataclass +class InfoRespronse: + result: tuple + error_message: str + status: bool + +def route(db_config, input_data, sql_provider, name) -> InfoRespronse: + _sql = sql_provider.get(name, input_data) + print("sql = ", _sql) + result = select_list(db_config, _sql) + if result is None: + return InfoRespronse(result, error_message = 'Ошибка в подключении к базе данных', status=False) + return InfoRespronse(result, error_message='', status=True) \ No newline at end of file diff --git a/App/Queries/templates/sklad_zapros.html b/App/Queries/templates/sklad_zapros.html index 034df6e..6dcb26a 100644 --- a/App/Queries/templates/sklad_zapros.html +++ b/App/Queries/templates/sklad_zapros.html @@ -2,12 +2,12 @@ - Hello World + Заготовки на складе - -

Hello World

{% if status %} + +

Выберите материал