This commit is contained in:
2024-02-29 01:04:07 +04:00
parent e358a96e76
commit c6979addd0
28 changed files with 2897 additions and 180 deletions

32
app/source/API_App.py Normal file
View File

@@ -0,0 +1,32 @@
#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
"""
Нестандартные процедуры, которые использует только это приложение
Дата последней оптимизации: 07.06.2022
"""
import uuid # Уникальные имена
import os # Работа с ОС
import shutil # Копирование файлов
import time # работа с временем
import datetime # Работа с датой
import sys
from app import app # чтение из config.py
sys.path.append("app/source")
import API_Common as APIC
NameModule = "API_App"
###############################################################################
def UserHeader(SessionID: str, Vars: dict) -> str:
"""Вызывается из API_Common"""
# print(str(Vars["request"].url.split('/')))
request = Vars["request"]
CurStr = Vars["CurStr"]
Link = ""
LinkReport = ""
return CurStr

1176
app/source/API_Common.py Normal file

File diff suppressed because it is too large Load Diff

1084
app/source/OLD_API_Common.py Normal file

File diff suppressed because it is too large Load Diff

138
app/source/OLD_Pages.py Normal file
View File

@@ -0,0 +1,138 @@
#!/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}")

127
app/source/Pages.py Normal file
View File

@@ -0,0 +1,127 @@
#!/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
###############################################################################
# Проверка сессии
###############################################################################
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", "")):
pass # Пока не проверяем
# Создаем страничку
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 (
):
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}")