beta 2.0
This commit is contained in:
+76
-1
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user