diff --git a/app.py b/app.py deleted file mode 100644 index 50bb880..0000000 --- a/app.py +++ /dev/null @@ -1,153 +0,0 @@ -import os -import json -import sqlite3 -import time -import requests -import sys -from dateutil import parser -import schedule -# from dotenv import load_dotenv - -# load_dotenv() - -def post(url, params): - response = requests.post(url, params=params) - if response.status_code == 201: - return 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) - -def create_table(type): - #Создаём пустую таблицу - db_path = os.getenv("BDPATH") - db_file = "fiscals.db" - table_name = type - conn = sqlite3.connect(db_path + db_file) - c = conn.cursor() - c.execute(""" - CREATE TABLE IF NOT EXISTS %s ( - serialNumber TEXT PRIMARY KEY, - modelName TEXT, - RNM TEXT, - organizationName TEXT, - fn_serial TEXT, - datetime_reg TEXT, - dateTime_end TEXT, - ofdName TEXT, - bootVersion TEXT, - ffdVersion TEXT, - fnExecution TEXT, - INN TEXT, - UUID TEXT, - owner_uuid TEXT - )""" % table_name) - conn.commit() - conn.close() - - -def importFromJSON(file_path): - with open(file_path, 'r', encoding='utf-8') as json_file: - data = json.load(json_file) - path = os.getenv("BDPATH") + 'fiscals.db' - conn = sqlite3.connect(path) - c = conn.cursor() - table_exists = c.execute('''SELECT name FROM sqlite_master WHERE type='table' AND name='pos_fiscals' ''').fetchone() - if not table_exists: - create_table('pos_fiscals') - c.execute('''INSERT OR REPLACE INTO pos_fiscals - (modelName, serialNumber, RNM, organizationName, fn_serial, datetime_reg, - dateTime_end, ofdName, bootVersion, ffdVersion, fnExecution, INN) - VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)''', - (data['modelName'], data['serialNumber'], data['RNM'], data['organizationName'], - data['fn_serial'], data['datetime_reg'], data['dateTime_end'], data['ofdName'], - data['bootVersion'], data['ffdVersion'], data['fnExecution'], data['INN'])) - conn.commit() - conn.close() - -def process_json_files(directory): - for filename in os.listdir(directory): - if filename.endswith('.json'): - importFromJSON(os.path.join(directory, filename)) - - -def importFromServiceDesk(sd_data): - conn = sqlite3.connect(os.getenv("BDPATH") + 'fiscals.db') - parsed=json.loads(sd_data) - c = conn.cursor() - for data in parsed: - owner_uuid = data['owner']['UUID'] if data.get('owner') and data['owner'].get('UUID') else None - modelName = data['ModelKKT']['title'] - ofdName = data['OFDName']['title'] if data.get('OFDName') else None - ffdVersion = data['FFD']['title'] if data.get('FFD') else None - - c.execute('''INSERT OR REPLACE INTO sd_fiscals - (modelName, serialNumber, RNM, organizationName, fn_serial, datetime_reg, - dateTime_end, ofdName, bootVersion, ffdVersion, owner_uuid, UUID) - VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)''', - (modelName, data['FRSerialNumber'], data['RNKKT'], data['LegalName'], - data['FNNumber'], data['KKTRegDate'], data['FNExpireDate'], ofdName, - data['FRDownloader'], ffdVersion, owner_uuid, data['UUID'])) - conn.commit() - conn.close() - - -def update_sd_table(): - url = 'https://myhoreca.itsm365.com/sd/services/rest/find/objectBase$FR' - params = {'accessKey': os.getenv('SDKEY'), 'attrs': 'UUID,FRSerialNumber,RNKKT,KKTRegDate,FNExpireDate,FNNumber,owner,FRDownloader,LegalName,OFDName,ModelKKT,FFD'} - response = post(url, params) - if response: - importFromServiceDesk(response) - - -def compare_and_update(): - conn_sd = sqlite3.connect(os.getenv("BDPATH") + 'fiscals.db') - conn_pos = sqlite3.connect(os.getenv("BDPATH") + 'fiscals.db') - c_pos = conn_pos.cursor() - c_sd = conn_sd.cursor() - - c_sd.execute('''SELECT modelName, serialNumber, RNM, organizationName, fn_serial, datetime_reg, - dateTime_end, ofdName, bootVersion, ffdVersion, fnExecution, owner_uuid, UUID - FROM sd_fiscals''') - sd_data = c_sd.fetchall() - - c_pos.execute('''SELECT modelName, serialNumber, RNM, organizationName, fn_serial, datetime_reg, - dateTime_end, ofdName, bootVersion, ffdVersion, fnExecution, INN - FROM pos_fiscals''') - pos_data = c_pos.fetchall() - - for sd_entry in sd_data: - for pos_entry in pos_data: - if sd_entry[1] == pos_entry[1]: - sd_date = parser.parse(sd_entry[6]) - pos_date = parser.parse(pos_entry[6]) - - if sd_date != pos_date: - sys.stdout.write(f"Объект с UUID {sd_entry[12]} будет изменен.\n") - formatted_date = pos_date.strftime('%Y.%m.%d %H:%M:%S') - if 'ИНН:' not in pos_entry[3]: - legalName = pos_entry[3] + ' ' + 'ИНН:' + pos_entry[11] - else: - legalName = pos_entry[3] - edit_url = f'https://myhoreca.itsm365.com/sd/services/rest/edit/{sd_entry[12]}' - params = {'accessKey': os.getenv('SDKEY'), 'FNNumber': pos_entry[4], 'FNExpireDate': formatted_date, 'LegalName': legalName, 'RNKKT': pos_entry[2], 'FRDownloader': pos_entry[8]} - post(edit_url, params) - - conn_pos.close() - conn_sd.close() - -def run_tasks(): - schedule.every(30).minutes.do(update_sd_table) - schedule.every(30).minutes.do(compare_and_update) - schedule.every(30).minutes.do(process_json_files, os.getenv('JSONPATH')) - - while True: - schedule.run_pending() - time.sleep(1) - -if __name__ == '__main__': - create_table('pos_fiscals') - create_table('sd_fiscals') - run_tasks() \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml deleted file mode 100644 index 01e67ab..0000000 --- a/docker-compose.yml +++ /dev/null @@ -1,35 +0,0 @@ -version: '3.8' - -services: - fnrefresher: - build: - context: . - dockerfile: dockerfile - volumes: - - "/opt/ftp/files:/opt/app/files" - environment: - - JSONPATH=/opt/app/files - - BDPATH=/opt/app/files - - SDKEY='23a910df-77e0-4417-a23e-3617b6a0f0ef' - - ftpserver: - image: stilliard/pure-ftpd - container_name: ftpserver - ports: - - "21:21" - - "30000-30005:30000-30005" - volumes: - - "/opt/ftp/files:/home/ftpuser" -# uncomment for ssl/tls, see https://github.com/stilliard/docker-pure-ftpd#tls -# - "/etc/letsencrypt/live//cert.pem:/etc/ssl/private/pure-ftpd-cert.pem" -# - "/etc/letsencrypt/live//privkey.pem:/etc/ssl/private/pure-ftpd-key.pem" - environment: -# PUBLICHOST: - FTP_USER_NAME: ftpuser - FTP_USER_PASS: 11 - FTP_USER_HOME: /home/ftpuser -# for ssl/tls -# ADDED_FLAGS: '--tls=2' - restart: always - depends_on: - - fnrefresher \ No newline at end of file diff --git a/dockerfile b/dockerfile deleted file mode 100644 index 1aea362..0000000 --- a/dockerfile +++ /dev/null @@ -1,18 +0,0 @@ -FROM python:3.11.9-slim - - -RUN apt-get update && \ - apt-get install -y --no-install-recommends \ - git \ - tzdata \ - && rm -rf /var/lib/apt/lists/* - -WORKDIR /opt/app - -RUN git clone https://github.com/serty2005/MHservice.git . - -ENV TZ="Europe/Moscow" - -RUN pip install -r requirements.txt - -CMD ["python", "/opt/app/app.py"] \ No newline at end of file diff --git a/files/fiscals.db b/files/fiscals.db deleted file mode 100644 index 21a7dc0..0000000 Binary files a/files/fiscals.db and /dev/null differ diff --git a/newapp.py b/newapp.py new file mode 100644 index 0000000..ee8226e --- /dev/null +++ b/newapp.py @@ -0,0 +1 @@ +#newapp will be here \ No newline at end of file diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index 73564a7..0000000 Binary files a/requirements.txt and /dev/null differ