Untitled
unknown
plain_text
2 years ago
7.1 kB
10
Indexable
import asyncio
import math
import os
import zeep
import secrets
import json
from pymongo import MongoClient
from motor.motor_asyncio import AsyncIOMotorClient
from loguru import logger
import time
from routers.parents import msg
# credentials = ("школа", "Parsec", "123456")
# client = zeep.Client("http://172.16.16.5:10101/IntegrationService/IntegrationService.asmx?WSDL")
# session = client.service.OpenSession(*credentials)
# sessionId = session.Value.SessionID
# Создайте подключение к MongoDB
mongo_client = MongoClient('mongodb://localhost:27017/')
db = mongo_client['mydatabase']
collection = db['users']
collection2 = db['event']
clear2 = lambda: os.system('cls')
red = "\u001b[31;1m"
gr = "\u001b[32m"
ye = "\u001b[33;1m"
guests = []
async def update():
print('Обновление базы данных ')
people = client.service.GetOrgUnitsHierarhyWithPersons(sessionId)
for i in range(len(people)):
people2 = (people[i])
try:
if people2['FIRST_NAME']:
pattern = {
'lastname': people2['LAST_NAME'],
'firstname': people2['FIRST_NAME'],
'middlename': people2['MIDDLE_NAME'],
'id': people2['ID'],
'parent_id': ''
}
is_exists = collection.count_documents({'id': people2['ID']})
if not is_exists:
collection.insert_one(pattern)
else:
continue
# print(people2['LAST_NAME'], "|", people2['FIRST_NAME'], "|", people2['MIDDLE_NAME'], "|", people2['ID'])
else:
continue
except:
continue
async def update_parent_id(user_id, user_dict, message):
# Получить всех пользователей из MongoDB
all_users = collection.find()
found = False
for user in all_users:
# Сравнить каждого пользователя с данными в словаре
if user['firstname'] == user_dict['firstname'] and user['lastname'] == user_dict['lastname']:
# Если совпадение найдено, обновить parent_id этого пользователя
collection.update_one({'id': user['id']}, {'$set': {'parent_id': user_id}})
await message.answer(f"❖ ✔️ Вы успешно зарегистрировались")
found = True
break
if not found:
await message.answer(f"❖ ✖️ Нет такого ученика")
async def input_user(lastname, firstname):
data = {
'lastname': lastname,
'firstname': firstname
}
async def update_user(user_id: int, data: dict):
await db.users.update_one({"_id": user_id}, {"$set": data})
async def updatebot(): # получает события и записывает новые в базу
while True:
data = (client.service.GetHardwareEventsResolved(sessionId, 0))
for i in range(len(data)):
data2 = (data[i])
data3 = json.loads(data2)
if data3['User']['Raw'] == "00000000-0000-0000-0000-000000000000":
continue
if data3['User']['Resolved']:
if (data3['Component']['Raw'] == "7d41863e-1836-4319-9439-7fca7dae24f7" or
data3['Component']['Raw'] == "6f5a2a3e-e802-4048-90de-fd6829b7f177" or
data3['Component']['Raw'] == "c2b73d4f-c793-4dc4-b2e5-e6ffe506edc1" or
data3['Component']['Raw'] == "955cf25f-8119-4a75-a6f7-2317ac868faa"):
# print(data3['Date'], "|", data3['User']['Resolved'], "|", data3['Component']['Resolved'])
if data3['User']['Resolved']:
data4 = (
data3['Date'], data3['User']['Resolved'], data3['Component']['Resolved'], data3['User']['Raw'])
guests.append(data4)
guests.insert(0, data4)
timeb = time.time()
pattern = {'data': data3['Date'],
'name': data3['User']['Resolved'],
'place': data3['Component']['Resolved'],
'id': data3['User']['Raw'],
'bool': '',
'time': timeb
}
is_exists = collection2.count_documents({'id': data3['User']['Raw']})
if not is_exists:
collection2.insert_one(pattern)
else:
continue
# print()
# print()
# for i in range(5):
# guests2 = (guests[i])
# logger.info(f'{gr}{guests2[0]} {red}{guests2[1]} {gr}{guests2[2]}')
await asyncio.sleep(5)
# clear2()
async def updateevent(): # проверяет на события и если есть новые отпровляет родителю
while True:
for i in collection2.find():
dataup = i['data'].split('T')[1]
dataup2 = dataup.split(':')[0]
dataup2 = int(dataup2) + 4
dataup3 = str(dataup2) + ':' + dataup.split(':')[1] + ':' + dataup.split(':')[2]
if not i['bool']:
for e in collection.find({'id': i['id']}):
if e['parent_id']:
try:
print(dataup3, "|", e['lastname'], e['firstname'], "| В школе")
# тут должна быть отправка сообщения, прмерно как внизу
# await bot.send_message(chat_id=e['parent_id'], text=(dataup3, "|", e['lastname'], e['firstname'], "| В школе"))
collection2.update_one({"id": i['id']}, {"$set": {"bool": '1'}})
print("Отправил")
except:
print("Не отправил сообщение")
continue
await asyncio.sleep(10)
async def delevent(): # удаляет события спустя 8 часов или в 5 утра удаляеть все события с базы
while True:
timedel = int(time.strftime('%H'))
if timedel >= 5:
collection2.delete_many({})
print('удалил')
else:
print('Время не пришло')
for i in collection2.find():
time1 = int(i['time'])
time2 = math.ceil(time.time())
if time1 <= time2:
collection2.delete_one({'id': i['id']})
print("Запись удалена из базы |", i['name'])
await asyncio.sleep(60)
async def delevent2():
await asyncio.sleep(10)
await msg()
Editor is loading...
Leave a Comment