Files
MainSite/app/source/OLD_Pages.py
2024-02-29 01:04:07 +04:00

139 lines
7.2 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.

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Дата оптимизации: 09.06.2022
Дата тестирования: 14.06.2022
"""
import os
# Активация FLASK
from app import app # чтение из config.py
from flask import render_template # использование шаблонов
# from flask import request # получение данных Cookie, GET и POST
from flask import jsonify # ответ в формате JSON
# from flask import redirect # Код страницы и перенаравление
# import json
import sys
import configparser
import importlib.util
# Подключаем свои библиотеки
sys.path.append("app/source")
import API_Common as APIC
import API_App
# import API_MSSQL
# import API_App
###############################################################################
# Проверка сессии
###############################################################################
def CheckSession(SessionID):
if SessionID is not None:
if (SessionID != ""):
CurDataSession: APIC.DataSession = APIC.CheckSession(SessionID, True)
if (CurDataSession.status == False): return False
CurSessionID = CurDataSession.sessionid
# Если нет в базе такой сессии, то заного авторизуемся
if (CurSessionID == ""): return False
return True
else:
return False
else:
return False
###############################################################################
# POST
###############################################################################
def API(SessionID, CurPage):
config = configparser.ConfigParser()
config.read("app/pages/" + CurPage + "/config.ini")
VarArray = {}
if (CheckSession(SessionID) == False) and config["ACCESS"]["NeedAuth"] == 1:
return "Требуется повторная авторизация. Нажмите F5.", 401
if (CurPage != ""):
spec = importlib.util.spec_from_file_location("module.name", f"app/pages/{CurPage}/source.py")
CurPage = importlib.util.module_from_spec(spec)
spec.loader.exec_module(CurPage)
return CurPage.API(SessionID)
VarArray.update({'status': 'Неизвестная операция'})
return jsonify(VarArray)
###############################################################################
# MAIN
###############################################################################
def Main(SessionID, CurPage):
# Объявление переменных
Var = {"Title": "", "ProgName": app.config['PROGNAME']}
Modal_Vars = {}
S = APIC.CheckSession(SessionID, False)
# Получаем уровень доступа
if (S.userid not in ("-1", "")):
UserData: API_MSSQL.Result = API_App.GetDataUserByID(APIC.ReadDataSession(SessionID, "userid"))
# Создаем страничку
try:
if (CurPage is None):
return render_template('Pages.htm', head=APIC.UserHead(Var) # Подключаем раздел head со скриптами и css
, UserHeader=APIC.UserHeader(SessionID, Var) # Рисуем шапку на странице
, Modals=APIC.Modals(Modal_Vars) # Модальные окна
, ThreadVars_message=APIC.ThreadVars_Message() #
, version=app.config['VERSION'] #
, R_category="{{R.category}}" #
, R_name="{{R.name}}" #
, R_description="{{R.description}}" #
, R_autor="{{R.autor}}" #
, R_tags="{{R.tags}}" #
, CurTag="{{CurTag}}" #
)
# Если вошли в режиме Установщика то проверку не проверяем
if (S.userid != "-1"):
# Проверка прав на модуль
if (os.path.isfile("app/pages/" + CurPage + "/config.ini") == False):
return render_template('error_403.htm', head=APIC.UserHead(Var) # Подключаем раздел head со скриптами и css
, UserHeader=APIC.UserErrorHeader(SessionID, Var) # Рисуем шапку на странице
, ThreadVars_message=f"Не удалось получить настройки для страницы {CurPage}. Похоже, эта страница на стадии разработки")
config = configparser.ConfigParser()
config.read("app/pages/" + CurPage + "/config.ini")
if (config["ACCESS"]["UserInterFace"] not in ("0", "")):
if (
str(UserData.GetRecord(0, "UserInterFace")) not in config["ACCESS"]["UserInterFace"].split(',')
# or AccessOMS < int(config["ACCESS"]["AccessOMS"])
or int(UserData.GetRecord(0, "AccessOMS")) < int(config["ACCESS"]["AccessOMS"])
or int(UserData.GetRecord(0, "AccessLPU")) < int(config["ACCESS"]["AccessLPU"])
or int(UserData.GetRecord(0, "AccessUOG")) < int(config["ACCESS"]["AccessUOG"])
or int(UserData.GetRecord(0, "AccessENP")) < int(config["ACCESS"]["AccessENP"])
or int(UserData.GetRecord(0, "AccessSMS")) < int(config["ACCESS"]["AccessSMS"])
or int(UserData.GetRecord(0, "AccessPostCard")) < int(config["ACCESS"]["AccessPostCard"])
or int(UserData.GetRecord(0, "AccessPhone")) < int(config["ACCESS"]["AccessPhone"])
or int(UserData.GetRecord(0, "AccessDial")) < int(config["ACCESS"]["AccessDial"])
or int(UserData.GetRecord(0, "AccessAnkets")) < int(config["ACCESS"]["AccessAnkets"])
):
return render_template('error_403.htm', head=APIC.UserHead(Var) # Подключаем раздел head со скриптами и css
, UserHeader=APIC.UserErrorHeader(SessionID, Var) # Рисуем шапку на странице
, ThreadVars_message="Извините, но вам не хватает доступа к этой странице.")
import importlib.util
spec = importlib.util.spec_from_file_location("module.name", "app/pages/" + CurPage + "/source.py")
CurPage = importlib.util.module_from_spec(spec)
spec.loader.exec_module(CurPage)
return CurPage.Main(SessionID)
except Exception as E:
return render_template('error_500.htm', head=APIC.UserHead(Var) # Подключаем раздел head со скриптами и css
, UserHeader=APIC.UserHeader(SessionID, Var) # Рисуем шапку на странице
, ThreadVars_message=f"При открытии страницы {CurPage} произошла ошибка: {E}")