rebuild 0.0.2
This commit is contained in:
102
app.py
102
app.py
@@ -1,48 +1,57 @@
|
||||
from scripts import req_from_sd as req
|
||||
from models import Company, Server, Workstation, Fiscalnik, session_instance, OFDName, SrokFN, ModelKKT
|
||||
from scripts import req_all_from_sd as req
|
||||
from scripts import req_by_uuid as get
|
||||
import models
|
||||
import json
|
||||
from datetime import datetime
|
||||
|
||||
def fill_companies():
|
||||
metaclass = 'ou$company'
|
||||
attrs = 'adress,title,UUID,KEsInUse,additionalName,childOUs, parent'
|
||||
attrs = 'adress,title,UUID,KEsInUse,additionalName,childOUs, parent,lastModifiedDate'
|
||||
response = req(metaclass, attrs)
|
||||
if response:
|
||||
with models.session_instance() as session:
|
||||
for company_json in response:
|
||||
existing_company = session.query(models.Company).filter_by(uuid=company_json['UUID']).first()
|
||||
date_string = company_json['lastModifiedDate']
|
||||
strfdate = datetime.strptime(date_string, '%Y.%m.%d %H:%M:%S')
|
||||
base_date = strfdate.strftime('%Y-%m-%dT%H:%M:%S')
|
||||
|
||||
if response:
|
||||
companies_json = json.loads(response)
|
||||
for company_json in companies_json:
|
||||
company = Company(
|
||||
uuid = company_json['UUID'],
|
||||
title = company_json['title'],
|
||||
address = company_json['adress'],
|
||||
additional_name = company_json['additionalName'] if 'additionalName' in company_json else None
|
||||
)
|
||||
try:
|
||||
session_instance.add(company)
|
||||
session_instance.flush()
|
||||
except:
|
||||
session_instance.rollback()
|
||||
print(company_json['title'])
|
||||
continue
|
||||
kes_in_use = company_json['KEsInUse']
|
||||
for kes in kes_in_use:
|
||||
meta_class = kes['metaClass']
|
||||
equipment_uuid = kes['UUID']
|
||||
if meta_class == 'objectBase$Server':
|
||||
server = Server(
|
||||
uuid = equipment_uuid
|
||||
if not existing_company or existing_company.lastmodify.strftime('%Y-%m-%dT%H:%M:%S') != base_date:
|
||||
company = models.Company(
|
||||
title=company_json['title'],
|
||||
uuid=company_json['UUID'],
|
||||
address=company_json['adress'],
|
||||
additional_name=company_json['additionalName'],
|
||||
lastmodify=base_date
|
||||
)
|
||||
company.servers.append(server)
|
||||
if meta_class == 'objectBase$Workstation':
|
||||
workstation = Workstation(
|
||||
uuid = equipment_uuid
|
||||
)
|
||||
company.workstations.append(workstation)
|
||||
if meta_class == 'objectBase$FR':
|
||||
fiscal = Fiscalnik(
|
||||
uuid = equipment_uuid
|
||||
)
|
||||
company.fiscals.append(fiscal)
|
||||
session_instance.commit()
|
||||
kes_in_use = company_json['KEsInUse']
|
||||
if kes_in_use:
|
||||
|
||||
for kes in kes_in_use:
|
||||
if kes['metaClass'] == 'objectBase$Server':
|
||||
|
||||
server = models.Server(
|
||||
uuid = kes['UUID'],
|
||||
owner = company.uuid
|
||||
)
|
||||
company.servers.append(server)
|
||||
if kes['metaClass'] == 'objectBase$Workstation':
|
||||
workstation = models.Workstation(
|
||||
uuid = kes['UUID'],
|
||||
owner = company.uuid
|
||||
)
|
||||
company.workstations.append(workstation)
|
||||
if kes['metaClass'] == 'objectBase$FR':
|
||||
fiscal = models.Fiscalnik(
|
||||
uuid = kes['UUID'],
|
||||
owner = company.uuid
|
||||
)
|
||||
company.fiscals.append(fiscal)
|
||||
|
||||
session.merge(company)
|
||||
else: continue
|
||||
session.commit()
|
||||
|
||||
|
||||
def fill_servers():
|
||||
metaclass = 'objectBase$Server'
|
||||
@@ -294,9 +303,14 @@ def fill_sroki_fns():
|
||||
|
||||
if __name__ == '__main__':
|
||||
fill_companies()
|
||||
fill_servers()
|
||||
fill_workstations()
|
||||
fill_ofd_names()
|
||||
fill_model_kkts()
|
||||
fill_sroki_fns()
|
||||
fill_fiscals()
|
||||
# fill_servers()
|
||||
# fill_workstations()
|
||||
# fill_ofd_names()
|
||||
# fill_model_kkts()
|
||||
# fill_sroki_fns()
|
||||
# fill_fiscals()
|
||||
# with session_instance as session:
|
||||
|
||||
# stmt = select(Fiscalnik).where(Fiscalnik.uuid == 'objectBase$5611391')
|
||||
# user = session.scalars(stmt).first()
|
||||
# print(user.model_kkt)
|
||||
BIN
base.db-journal
BIN
base.db-journal
Binary file not shown.
0
database.py
Normal file
0
database.py
Normal file
23
files/00105707796831.json
Normal file
23
files/00105707796831.json
Normal file
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"modelName": "АТОЛ 25Ф",
|
||||
"serialNumber": "00105707796831",
|
||||
"RNM": "0004421585034085",
|
||||
"organizationName": "ОБЩЕСТВО С ОГРАНИЧЕННОЙ ОТВЕТСТВЕННОСТЬЮ \"МЕГА СЕРВИС\"",
|
||||
"fn_serial": "9287440301117169",
|
||||
"datetime_reg": "2021-06-17 17:01:00",
|
||||
"dateTime_end": "2024-07-01 00:00:00",
|
||||
"ofdName": "АО <КАЛУГА АСТРАЛ>",
|
||||
"bootVersion": "3.0.8319",
|
||||
"ffdVersion": "105",
|
||||
"INN": "7730255999",
|
||||
"attribute_excise": "False",
|
||||
"attribute_marked": "Не поддерживается в текущей версии драйвера",
|
||||
"fnExecution": "Не поддерживается в текущей версии драйвера",
|
||||
"hostname": "13CASH08",
|
||||
"url_rms": "https://aom-himki.iiko.it:443/resto",
|
||||
"teamviever_id": "1050831481",
|
||||
"anydesk_id": "334171076",
|
||||
"total_space_sys": "69.48 Gb",
|
||||
"free_space_sys": "45.86 Gb",
|
||||
"current_time": "2024-05-08 20:42:24"
|
||||
}
|
||||
23
files/00106126844935.json
Normal file
23
files/00106126844935.json
Normal file
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"modelName": "АТОЛ 30Ф",
|
||||
"serialNumber": "00106126844935",
|
||||
"RNM": "0007195642054348",
|
||||
"organizationName": "ИП Зайцев Егор Владимирович",
|
||||
"fn_serial": "7281440500463082",
|
||||
"datetime_reg": "2023-04-24 21:05:00",
|
||||
"dateTime_end": "2024-06-07 00:00:00",
|
||||
"ofdName": "ООО Такском",
|
||||
"bootVersion": "5.8.100",
|
||||
"ffdVersion": "120",
|
||||
"INN": "110120364802",
|
||||
"attribute_excise": "True",
|
||||
"attribute_marked": "True",
|
||||
"fnExecution": "ФН-1.2 исполнение Ин15-3 ",
|
||||
"hostname": "AVE-SHAVE-GK",
|
||||
"url_rms": "https://ave-shawe.iiko.it:443/resto",
|
||||
"teamviever_id": "None",
|
||||
"anydesk_id": "391033027",
|
||||
"total_space_sys": "58.13 Gb",
|
||||
"free_space_sys": "27.29 Gb",
|
||||
"current_time": "2024-05-09 14:15:56"
|
||||
}
|
||||
23
files/00106202123911.json
Normal file
23
files/00106202123911.json
Normal file
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"modelName": "АТОЛ 55Ф",
|
||||
"serialNumber": "00106202123911",
|
||||
"RNM": "0002593555046068",
|
||||
"organizationName": "ООО \"ТЕАТРАЛЬНАЯ\"",
|
||||
"fn_serial": "7284440500258734",
|
||||
"datetime_reg": "2023-06-30 14:08:00",
|
||||
"dateTime_end": "2024-08-13 00:00:00",
|
||||
"ofdName": "сбис",
|
||||
"bootVersion": "5.8.100",
|
||||
"ffdVersion": "120",
|
||||
"INN": "6827024224 ",
|
||||
"attribute_excise": "True",
|
||||
"attribute_marked": "True",
|
||||
"fnExecution": "ФН-1.2 исполнение Ав15-3 ",
|
||||
"hostname": "User-PC80",
|
||||
"url_rms": "https://chainik-cloud.iiko.it:443/resto",
|
||||
"teamviever_id": "593526432",
|
||||
"anydesk_id": "1919438899",
|
||||
"total_space_sys": "111.25 Gb",
|
||||
"free_space_sys": "73.01 Gb",
|
||||
"current_time": "2024-05-07 18:20:55"
|
||||
}
|
||||
23
files/00106302050149.json
Normal file
23
files/00106302050149.json
Normal file
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"modelName": "АТОЛ FPrint-22ПТК",
|
||||
"serialNumber": "00106302050149",
|
||||
"RNM": "0000839196015549",
|
||||
"organizationName": "ИП АВАНЕСОВА НАТАЛЬЯ НОРДЕЕВНА",
|
||||
"fn_serial": "7281440501031166",
|
||||
"datetime_reg": "2023-05-28 10:18:00",
|
||||
"dateTime_end": "2024-07-11 00:00:00",
|
||||
"ofdName": "ООО \"Такском\"",
|
||||
"bootVersion": "5.8.100",
|
||||
"ffdVersion": "120",
|
||||
"INN": "507901506303",
|
||||
"attribute_excise": "True",
|
||||
"attribute_marked": "True",
|
||||
"fnExecution": "ФН-1.2 исполнение Ин15-3 ",
|
||||
"hostname": "RASSKAZOVKA_BAGET",
|
||||
"url_rms": "http://88.99.60.29:8187/resto",
|
||||
"teamviever_id": "1145765525",
|
||||
"anydesk_id": "952794502",
|
||||
"total_space_sys": "59.62 Gb",
|
||||
"free_space_sys": "7.44 Gb",
|
||||
"current_time": "2024-05-06 02:02:23"
|
||||
}
|
||||
23
files/00106309062146.json
Normal file
23
files/00106309062146.json
Normal file
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"modelName": "АТОЛ FPrint-22ПТК",
|
||||
"serialNumber": "00106309062146",
|
||||
"RNM": "0005464060042782",
|
||||
"organizationName": "ИП ИЛЬЕНКО МАКСИМ МИХАЙЛОВИЧ",
|
||||
"fn_serial": "9287440301158465",
|
||||
"datetime_reg": "2021-05-21 16:35:00",
|
||||
"dateTime_end": "2024-06-04 00:00:00",
|
||||
"ofdName": "ООО \"Эвотор ОФД\"",
|
||||
"bootVersion": "5.8.100",
|
||||
"ffdVersion": "105",
|
||||
"INN": "501300190904",
|
||||
"attribute_excise": "False",
|
||||
"attribute_marked": "Не поддерживается в текущей версии драйвера",
|
||||
"fnExecution": "Не поддерживается в текущей версии драйвера",
|
||||
"hostname": "Kaldis_ST-8",
|
||||
"url_rms": "https://kaldis-st-8.iiko.it:443/resto",
|
||||
"teamviever_id": "130045574",
|
||||
"anydesk_id": "856695376",
|
||||
"total_space_sys": "59.62 Gb",
|
||||
"free_space_sys": "26.18 Gb",
|
||||
"current_time": "2024-05-09 01:11:30"
|
||||
}
|
||||
23
files/00106309239401.json
Normal file
23
files/00106309239401.json
Normal file
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"modelName": "АТОЛ FPrint-22ПТК",
|
||||
"serialNumber": "00106309239401",
|
||||
"RNM": "0005463930014863",
|
||||
"organizationName": "ИП ИЛЬЕНКО МАКСИМ МИХАЙЛОВИЧ",
|
||||
"fn_serial": "9287440301158440",
|
||||
"datetime_reg": "2021-05-21 15:58:00",
|
||||
"dateTime_end": "2024-06-04 00:00:00",
|
||||
"ofdName": "ООО \"Эвотор ОФД\"",
|
||||
"bootVersion": "5.8.100",
|
||||
"ffdVersion": "105",
|
||||
"INN": "501300190904",
|
||||
"attribute_excise": "False",
|
||||
"attribute_marked": "False",
|
||||
"fnExecution": "",
|
||||
"hostname": "Kaldis_ST-7",
|
||||
"url_rms": "https://kaldis-st-7.iiko.it:443/resto",
|
||||
"teamviever_id": "130042147",
|
||||
"anydesk_id": "595633117",
|
||||
"total_space_sys": "59.62 Gb",
|
||||
"free_space_sys": "20.22 Gb",
|
||||
"current_time": "2024-05-06 01:41:41"
|
||||
}
|
||||
23
files/00106309300916.json
Normal file
23
files/00106309300916.json
Normal file
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"modelName": "АТОЛ FPrint-22ПТК",
|
||||
"serialNumber": "00106309300916",
|
||||
"RNM": "0006138955056715",
|
||||
"organizationName": "ИП ИЛЬЕНКО МАРИЯ ВЛАДИМИРОВНА",
|
||||
"fn_serial": "7281440701572965",
|
||||
"datetime_reg": "2024-04-23 21:49:00",
|
||||
"dateTime_end": "2025-06-07 00:00:00",
|
||||
"ofdName": "ООО \"Эвотор ОФД\"",
|
||||
"bootVersion": "5.8.100",
|
||||
"ffdVersion": "120",
|
||||
"INN": "504005415507",
|
||||
"attribute_excise": "True",
|
||||
"attribute_marked": "True",
|
||||
"fnExecution": "ФН-1.2 исполнение Ин15-3 ",
|
||||
"hostname": "POS-Lianozovo",
|
||||
"url_rms": "https://kaldis-lianozovo.iiko.it:443/resto",
|
||||
"teamviever_id": "1493401222",
|
||||
"anydesk_id": "668050369",
|
||||
"total_space_sys": "59.14 Gb",
|
||||
"free_space_sys": "7.49 Gb",
|
||||
"current_time": "2024-05-09 23:16:42"
|
||||
}
|
||||
23
files/00106309330871.json
Normal file
23
files/00106309330871.json
Normal file
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"modelName": "АТОЛ FPrint-22ПТК",
|
||||
"serialNumber": "00106309330871",
|
||||
"RNM": "0002792971023790",
|
||||
"organizationName": "ООО \"ФинЦентр\"",
|
||||
"fn_serial": "9961440300055208",
|
||||
"datetime_reg": "2023-02-23 09:04:00",
|
||||
"dateTime_end": "2026-03-09 00:00:00",
|
||||
"ofdName": "АО <Калуга Астрал>",
|
||||
"bootVersion": "5.8.100",
|
||||
"ffdVersion": "120",
|
||||
"INN": "7743884031 ",
|
||||
"attribute_excise": "False",
|
||||
"attribute_marked": "True",
|
||||
"fnExecution": "ФН-1.1М исполнение Ин36-1М ",
|
||||
"hostname": "POS-W10",
|
||||
"url_rms": "https://press-bar-moskva-m-servis.iiko.it:443/resto",
|
||||
"teamviever_id": "1231759409",
|
||||
"anydesk_id": "407482388",
|
||||
"total_space_sys": "59.62 Gb",
|
||||
"free_space_sys": "28.14 Gb",
|
||||
"current_time": "2024-05-06 12:25:56"
|
||||
}
|
||||
23
files/00106905442664.json
Normal file
23
files/00106905442664.json
Normal file
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"modelName": "АТОЛ 77Ф",
|
||||
"serialNumber": "00106905442664",
|
||||
"RNM": "0001326280045003",
|
||||
"organizationName": "АВАНЕСОВА НАТАЛЬЯ НОРДЕЕВНА",
|
||||
"fn_serial": "7380440700519749",
|
||||
"datetime_reg": "2024-04-05 14:58:00",
|
||||
"dateTime_end": "2025-05-20 00:00:00",
|
||||
"ofdName": "ООО <Такском>",
|
||||
"bootVersion": "5.8.100",
|
||||
"ffdVersion": "120",
|
||||
"INN": "507901506303",
|
||||
"attribute_excise": "True",
|
||||
"attribute_marked": "True",
|
||||
"fnExecution": "ФН-1.2 исполнение Ин15-4 ",
|
||||
"hostname": "DESKTOP-IUSVUSE",
|
||||
"url_rms": "http://88.99.60.29:8187/resto",
|
||||
"teamviever_id": "1284989181",
|
||||
"anydesk_id": "None",
|
||||
"total_space_sys": "59.04 Gb",
|
||||
"free_space_sys": "18.64 Gb",
|
||||
"current_time": "2024-05-06 02:08:13"
|
||||
}
|
||||
23
files/00108100739722.json
Normal file
23
files/00108100739722.json
Normal file
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"modelName": "АТОЛ 20Ф",
|
||||
"serialNumber": "00108100739722",
|
||||
"RNM": "0001781789038839",
|
||||
"organizationName": "ИП Пилин Игорь Андреевич",
|
||||
"fn_serial": "9961440300916272",
|
||||
"datetime_reg": "2022-08-18 08:36:00",
|
||||
"dateTime_end": "2025-09-01 00:00:00",
|
||||
"ofdName": "АО \"ЭСК\"",
|
||||
"bootVersion": "3.0.4253",
|
||||
"ffdVersion": "105",
|
||||
"INN": "344309628497",
|
||||
"attribute_excise": "False",
|
||||
"attribute_marked": "False",
|
||||
"fnExecution": "",
|
||||
"hostname": "WIN-DMS6GB0U6TO",
|
||||
"url_rms": "https://3-sushi-mira.iiko.it:443/resto",
|
||||
"teamviever_id": "1285328750",
|
||||
"anydesk_id": "998297587",
|
||||
"total_space_sys": "111.38 Gb",
|
||||
"free_space_sys": "63.19 Gb",
|
||||
"current_time": "2024-05-09 07:08:03"
|
||||
}
|
||||
23
files/00108129540393.json
Normal file
23
files/00108129540393.json
Normal file
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"modelName": "АТОЛ 20Ф",
|
||||
"serialNumber": "00108129540393",
|
||||
"RNM": "0007978093023550",
|
||||
"organizationName": "ИП Ким Вячеслав",
|
||||
"fn_serial": "7380440700292820",
|
||||
"datetime_reg": "2024-04-11 15:18:00",
|
||||
"dateTime_end": "2025-05-26 00:00:00",
|
||||
"ofdName": "ООО ПЕТЕР-СЕРВИС Спецтехнологии",
|
||||
"bootVersion": "5.8.100",
|
||||
"ffdVersion": "120",
|
||||
"INN": "650125159002",
|
||||
"attribute_excise": "True",
|
||||
"attribute_marked": "True",
|
||||
"fnExecution": "ФН-1.2 исполнение Ин15-4 ",
|
||||
"hostname": "KASSA2-KHABAR",
|
||||
"url_rms": "https://mirine-brosko-habarovsk.iiko.it:443/resto",
|
||||
"teamviever_id": "None",
|
||||
"anydesk_id": "1063125576",
|
||||
"total_space_sys": "59.09 Gb",
|
||||
"free_space_sys": "34.89 Gb",
|
||||
"current_time": "2024-05-07 12:27:50"
|
||||
}
|
||||
23
files/00108722684571.json
Normal file
23
files/00108722684571.json
Normal file
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"modelName": "АТОЛ 27Ф",
|
||||
"serialNumber": "00108722684571",
|
||||
"RNM": "0005975228045176",
|
||||
"organizationName": "Индивидуальный предприниматель Аванесова Наталья Нордеевна",
|
||||
"fn_serial": "7380440700402306",
|
||||
"datetime_reg": "2024-04-05 14:43:00",
|
||||
"dateTime_end": "2025-05-20 00:00:00",
|
||||
"ofdName": "ООО Такском",
|
||||
"bootVersion": "5.10.0",
|
||||
"ffdVersion": "120",
|
||||
"INN": "507901506303",
|
||||
"attribute_excise": "True",
|
||||
"attribute_marked": "True",
|
||||
"fnExecution": "ФН-1.2 исполнение Ин15-4 ",
|
||||
"hostname": "Burkina-kofe-NEW",
|
||||
"url_rms": "http://88.99.60.29:8187/resto",
|
||||
"teamviever_id": "650019532",
|
||||
"anydesk_id": "1562660748",
|
||||
"total_space_sys": "59.62 Gb",
|
||||
"free_space_sys": "34.64 Gb",
|
||||
"current_time": "2024-05-06 02:16:47"
|
||||
}
|
||||
23
files/00109522991414.json
Normal file
23
files/00109522991414.json
Normal file
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"modelName": "АТОЛ 22 v2 Ф",
|
||||
"serialNumber": "00109522991414",
|
||||
"RNM": "0007882610017388",
|
||||
"organizationName": "ИП СОКЛАКОВА АННА СЕРГЕЕВНА",
|
||||
"fn_serial": "7380440700100735",
|
||||
"datetime_reg": "2024-02-29 13:10:00",
|
||||
"dateTime_end": "2025-04-14 00:00:00",
|
||||
"ofdName": "ООО Такском",
|
||||
"bootVersion": "5.8.17",
|
||||
"ffdVersion": "120",
|
||||
"INN": "771315163893",
|
||||
"attribute_excise": "True",
|
||||
"attribute_marked": "True",
|
||||
"fnExecution": "ФН-1.2 исполнение Ин15-4 ",
|
||||
"hostname": "VESTERDAM",
|
||||
"url_rms": "https://pokolenie-kofe-vesterdam.iiko.it:443/resto",
|
||||
"teamviever_id": "743932094",
|
||||
"anydesk_id": "369655451",
|
||||
"total_space_sys": "58.13 Gb",
|
||||
"free_space_sys": "21.30 Gb",
|
||||
"current_time": "2024-05-09 10:38:44"
|
||||
}
|
||||
143
models.py
143
models.py
@@ -1,101 +1,122 @@
|
||||
from sqlalchemy import create_engine, Column, String, String, ForeignKey, event
|
||||
from sqlalchemy.ext.declarative import declarative_base
|
||||
from sqlalchemy.orm import relationship, sessionmaker
|
||||
from typing import Optional, Annotated
|
||||
from sqlalchemy import create_engine, String, String, ForeignKey
|
||||
from sqlalchemy.orm import relationship, sessionmaker, Mapped, mapped_column, DeclarativeBase
|
||||
from typing import List
|
||||
from datetime import datetime
|
||||
|
||||
c_uuid = Annotated[str, ForeignKey('companies.uuid')]
|
||||
class Base(DeclarativeBase):
|
||||
pass
|
||||
|
||||
engine = create_engine('postgresql://postgres:994525@10.25.1.250:5432/mhtest', echo=True)
|
||||
session_instance = sessionmaker(engine)
|
||||
|
||||
Base = declarative_base()
|
||||
|
||||
class Company(Base):
|
||||
__tablename__ = 'companies'
|
||||
|
||||
uuid = Column(String, primary_key=True)
|
||||
title = Column(String)
|
||||
address = Column(String)
|
||||
additional_name = Column(String)
|
||||
uuid: Mapped[str] = mapped_column(primary_key=True)
|
||||
title: Mapped[str] = mapped_column(String(100))
|
||||
address: Mapped[str | None] = mapped_column(String(250))
|
||||
additional_name: Mapped[str | None] = mapped_column(String(150))
|
||||
lastmodify: Mapped[datetime]
|
||||
# equipinuse: Mapped[List['Server','Workstation','Fiscalnik']] = relationship(back_populates="owner")
|
||||
|
||||
servers = relationship("Server", back_populates="owner")
|
||||
workstations = relationship("Workstation", back_populates="owner")
|
||||
fiscals = relationship("Fiscalnik", back_populates="owner")
|
||||
servers: Mapped[List["Server"]] = relationship(back_populates="owner")
|
||||
workstations: Mapped[List["Workstation"]] = relationship(back_populates="owner")
|
||||
fiscals: Mapped[List["Fiscalnik"]] = relationship(back_populates="owner")
|
||||
|
||||
def __repr__(self):
|
||||
return f'{self.title}'
|
||||
|
||||
|
||||
|
||||
|
||||
class Server(Base):
|
||||
__tablename__ = 'servers'
|
||||
|
||||
uuid = Column(String, primary_key=True)
|
||||
UniqueID = Column(String)
|
||||
Teamviewer = Column(String)
|
||||
AnyDesk = Column(String)
|
||||
rdp = Column(String)
|
||||
ip = Column(String)
|
||||
CabinetLink = Column(String)
|
||||
DeviceName = Column(String)
|
||||
uuid: Mapped[str] = mapped_column(primary_key=True)
|
||||
UniqueID: Mapped[str | None] = mapped_column(String(50))
|
||||
Teamviewer: Mapped[str | None] = mapped_column(String(100))
|
||||
AnyDesk: Mapped[str | None] = mapped_column(String(100))
|
||||
rdp: Mapped[str | None] = mapped_column(String(100))
|
||||
ip: Mapped[str | None] = mapped_column(String(100))
|
||||
CabinetLink: Mapped[str | None] = mapped_column(String(100))
|
||||
DeviceName: Mapped[str | None] = mapped_column(String(100))
|
||||
lastmodify: Mapped[datetime]
|
||||
|
||||
company_uuid = c_uuid
|
||||
owner = relationship("Company", back_populates="servers")
|
||||
company_uuid: Mapped[str] = mapped_column(ForeignKey('companies.uuid'))
|
||||
owner: Mapped["Company"] = relationship(back_populates="servers")
|
||||
|
||||
def __repr__(self):
|
||||
return f'{self.DeviceName}'
|
||||
|
||||
class Workstation(Base):
|
||||
__tablename__ = 'workstations'
|
||||
|
||||
uuid = Column(String, primary_key=True)
|
||||
AnyDesk = Column(String)
|
||||
Teamviewer = Column(String)
|
||||
DeviceName = Column(String)
|
||||
uuid: Mapped[str] = mapped_column(primary_key=True)
|
||||
AnyDesk: Mapped[str | None] = mapped_column(String(100))
|
||||
Teamviewer: Mapped[str | None] = mapped_column(String(100))
|
||||
DeviceName: Mapped[str | None] = mapped_column(String(100))
|
||||
lastmodify: Mapped[datetime]
|
||||
|
||||
company_uuid = Column(String, ForeignKey('companies.uuid'))
|
||||
owner = relationship("Company", back_populates="workstations")
|
||||
company_uuid: Mapped[str] = mapped_column(ForeignKey('companies.uuid'))
|
||||
owner: Mapped["Company"] = relationship(back_populates="workstations")
|
||||
|
||||
def __repr__(self):
|
||||
return f'{self.DeviceName}'
|
||||
|
||||
class Fiscalnik(Base):
|
||||
__tablename__ = 'fiscals'
|
||||
|
||||
uuid = Column(String, primary_key=True)
|
||||
rnkkt = Column(String)
|
||||
LegalName = Column(String)
|
||||
FNNumber = Column(String)
|
||||
KKTRegDate = Column(String)
|
||||
FNExpireDate = Column(String)
|
||||
FRSerialNumber = Column(String)
|
||||
uuid: Mapped[str] = mapped_column(primary_key=True)
|
||||
rnkkt: Mapped[str | None] = mapped_column(String(50))
|
||||
LegalName: Mapped[str] = mapped_column(String(150))
|
||||
FNNumber: Mapped[int]
|
||||
KKTRegDate: Mapped[datetime]
|
||||
FNExpireDate: Mapped[datetime]
|
||||
FRSerialNumber: Mapped[int]
|
||||
lastmodify: Mapped[datetime]
|
||||
|
||||
company_uuid = Column(String, ForeignKey('companies.uuid'))
|
||||
owner = relationship("Company", back_populates="fiscals")
|
||||
company_uuid: Mapped[str] = mapped_column(ForeignKey('companies.uuid'))
|
||||
owner: Mapped["Company"] = relationship(back_populates="fiscals")
|
||||
|
||||
# Внешние ключи для связи с вспомогательными таблицами
|
||||
ofd_uuid = Column(String, ForeignKey('ofd_names.uuid'))
|
||||
ofd = relationship("OFDName")
|
||||
model_kkt_uuid = Column(String, ForeignKey('model_kkts.uuid'))
|
||||
model_kkt = relationship("ModelKKT")
|
||||
srok_fn_uuid = Column(String, ForeignKey('sroki_fns.uuid'))
|
||||
srok_fn = relationship("SrokFN")
|
||||
ofd_uuid: Mapped[str] = mapped_column(ForeignKey('ofd_names.uuid'))
|
||||
ofd: Mapped["OFDName"] = relationship()
|
||||
model_kkt_uuid: Mapped[str] = mapped_column(ForeignKey('model_kkts.uuid'))
|
||||
model_kkt: Mapped["ModelKKT"] = relationship()
|
||||
srok_fn_uuid: Mapped[str] = mapped_column(ForeignKey('sroki_fns.uuid'))
|
||||
srok_fn: Mapped["SrokFN"] = relationship()
|
||||
|
||||
def __repr__(self):
|
||||
return f'{self.FRSerialNumber}'
|
||||
|
||||
class OFDName(Base):
|
||||
__tablename__ = 'ofd_names'
|
||||
|
||||
uuid = Column(String, primary_key=True)
|
||||
title = Column(String)
|
||||
code = Column(String)
|
||||
uuid: Mapped[str] = mapped_column(primary_key=True)
|
||||
title: Mapped[str]
|
||||
code: Mapped[str]
|
||||
|
||||
def __repr__(self):
|
||||
return self.title
|
||||
return f'{self.title}'
|
||||
|
||||
class ModelKKT(Base):
|
||||
__tablename__ = 'model_kkts'
|
||||
|
||||
uuid = Column(String, primary_key=True)
|
||||
title = Column(String)
|
||||
code = Column(String)
|
||||
uuid: Mapped[str] = mapped_column(primary_key=True)
|
||||
title: Mapped[str]
|
||||
code: Mapped[str]
|
||||
|
||||
def __repr__(self):
|
||||
return self.title
|
||||
return f'{self.title}'
|
||||
|
||||
class SrokFN(Base):
|
||||
__tablename__ = 'sroki_fns'
|
||||
|
||||
uuid = Column(String, primary_key=True)
|
||||
title = Column(String)
|
||||
code = Column(String)
|
||||
uuid: Mapped[str] = mapped_column(primary_key=True)
|
||||
title: Mapped[str]
|
||||
code: Mapped[str]
|
||||
|
||||
def __repr__(self):
|
||||
return self.title
|
||||
|
||||
engine = create_engine('sqlite:///base.db')
|
||||
session_factory = sessionmaker(bind=engine)
|
||||
session_instance = session_factory()
|
||||
return f'{self.title}'
|
||||
|
||||
Base.metadata.create_all(engine)
|
||||
|
||||
1
oucompany.json
Normal file
1
oucompany.json
Normal file
File diff suppressed because one or more lines are too long
54
scripts.py
54
scripts.py
@@ -1,21 +1,45 @@
|
||||
import os
|
||||
import sys
|
||||
import requests
|
||||
import mureq, os, sys, re
|
||||
|
||||
def req_from_sd(metaclass, attrs):
|
||||
|
||||
def req_all_from_sd(metaclass, attrs) -> dict | Exception:
|
||||
url = f'https://myhoreca.itsm365.com/sd/services/rest/find/{metaclass}'
|
||||
access_key = os.getenv('SDKEY')
|
||||
if access_key is None:
|
||||
sys.stderr.write("Ошибка: Не удалось получить доступный ключ для запроса\n")
|
||||
sys.exit(1)
|
||||
return Exception
|
||||
response = mureq.get(url, params={'accessKey': access_key, 'attrs': attrs})
|
||||
if response.status_code == 200:
|
||||
return response.json()
|
||||
|
||||
|
||||
|
||||
def req_by_uuid(metaclass, uuid) -> dict | Exception:
|
||||
url = f'https://myhoreca.itsm365.com/sd/services/rest/get/{uuid}'
|
||||
access_key = os.getenv('SDKEY')
|
||||
if access_key is None:
|
||||
sys.stderr.write("Ошибка: Не удалось получить доступный ключ для запроса\n")
|
||||
return Exception
|
||||
|
||||
params = {'accessKey': access_key, 'attrs': attrs}
|
||||
response = requests.post(url, params=params)
|
||||
|
||||
if response.status_code == 201:
|
||||
sys.stdout.write("Успешно добавлено\n")
|
||||
elif response.status_code == 200:
|
||||
return response.text
|
||||
elif response.status_code == 500:
|
||||
sys.stderr.write("Ошибка подключения: " + str.strip(response.text) + '\n')
|
||||
sys.exit(1)
|
||||
match metaclass:
|
||||
case 'objectBase$Workstation':
|
||||
attrs = 'UUID,AnyDesk,Teamviewer,DeviceName,owner,lastModifiedDate'
|
||||
case 'ou$company':
|
||||
attrs = 'adress,title,UUID,KEsInUse,additionalName,childOUs,parent,lastModifiedDate'
|
||||
case 'objectBase$Server':
|
||||
attrs = 'UniqueID,UUID,Teamviewer,AnyDesk,RDP,IP,CabinetLink,DeviceName,owner,lastModifiedDate'
|
||||
case 'objectBase$FR':
|
||||
attrs = 'RNKKT,KKTRegDate,OFDName,UUID,FNExpireDate,LegalName,FRSerialNumber,ModelKKT,SrokFN,FNNumber,owner,lastModifiedDate'
|
||||
case _:
|
||||
attrs = False
|
||||
|
||||
if attrs: response = mureq.get(url, params={'accessKey': access_key, 'attrs': attrs})
|
||||
else: response = mureq.get(url, params={'accessKey': access_key})
|
||||
|
||||
if response.status_code == 200:
|
||||
return response.json()
|
||||
else:
|
||||
return Exception
|
||||
|
||||
|
||||
companys = req_by_uuid('objectBase$Workstation', 'objectBase$8203200')
|
||||
print(companys)
|
||||
Reference in New Issue
Block a user