Updates
This commit is contained in:
32
app/source/API_App.py
Normal file
32
app/source/API_App.py
Normal 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
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
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
138
app/source/OLD_Pages.py
Normal 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
127
app/source/Pages.py
Normal 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}")
|
||||
Reference in New Issue
Block a user