This commit is contained in:
2025-12-23 01:12:10 +03:00
parent 69706d0cb7
commit 6ec4bd00e2
22 changed files with 1923 additions and 175 deletions
+76 -1
View File
@@ -1,8 +1,83 @@
import datetime
from db import ApiEndpoint, MedodsAPI, UsersMedods, VkPost, db
from db import ApiEndpoint, MedodsAPI, UsersBirthdate, UsersMedods, VkPost, db
from http_client import send_request
def updateUsersBirthdate() -> bool:
from app import logger
try:
medodsApi = MedodsAPI.query.first()
if not medodsApi:
return False
requestParams = ApiEndpoint.query.filter_by(title="Список сотрудников").first()
if not requestParams:
return False
response = send_request(
requestParams.method,
f"{medodsApi.url}{requestParams.url_path}",
params=requestParams.query_params,
)
if not response:
logger.error("Ответ не получен")
return False
responseData = response.json()
usersFromDB = []
for user in responseData["data"]:
if user["birthdate"] is None:
continue
userDict = {
"id": int(user["id"]),
"name": f"{user['surname']} {user['name']} {user['secondName']}",
"short_name": f"{user['surname']} {user['name'][:1]}. {user['secondName'][:1]}.",
"sex": user["sex"],
"birthdate": datetime.date.fromisoformat(user["birthdate"]),
"specialties": [spec["title"] for spec in user["specialties"]],
}
usersFromDB.append(userDict)
actualUsersIds = [user["id"] for user in usersFromDB]
allExistingUsers = UsersBirthdate.query.all()
for user in allExistingUsers:
if user.id not in actualUsersIds:
logger.info(f"Удален сотрудник {user.name} {user.surname}")
db.session.delete(user)
db.session.commit()
for user in usersFromDB:
existingUser = UsersMedods.query.filter_by(id=user["id"]).first()
if existingUser:
changes = False
if existingUser.name != user["name"]:
existingUser.name = user["name"]
existingUser.short_name = user["short_name"]
changes = True
if existingUser.birthdate != user["birthdate"]:
existingUser.birthdate = user["birthdate"]
changes = True
if existingUser.specialties != user["specialties"]:
existingUser.specialties = user["specialties"]
changes = True
if changes:
db.session.commit()
else:
newUser = UsersMedods(
id=user["id"],
name=user["name"],
short_name=user["short_name"],
sex=user["sex"],
birthdate=user["birthdate"],
specialties=user["specialties"],
)
db.session.add(newUser)
db.session.commit()
return True
except Exception as e:
logger.error(f"Ошибка при обновлении списка сотрудников: {e}")
return False
def updateMedodsUsers() -> bool:
from app import logger