From 16cd2742214661ad1a0008d8751205561814a8e1 Mon Sep 17 00:00:00 2001 From: Macbook Date: Sat, 3 Jan 2026 14:17:06 +0300 Subject: [PATCH] =?UTF-8?q?=D0=B4=D0=BE=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=BA=D0=B0=20=D0=B0=D0=BA=D1=82=D0=B8=D0=B2=D0=B0=D1=86=D0=B8?= =?UTF-8?q?=D0=B8=20=D0=BF=D0=BE=D0=B7=D0=B4=D1=80=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B9=20=D1=81=20=D0=94=D0=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app.db | Bin 110592 -> 110592 bytes app.py | 1 + medods_handler.py | 84 +++++++++++++++++++++++++--------------------- 3 files changed, 47 insertions(+), 38 deletions(-) diff --git a/app.db b/app.db index 88b830b438f3ddf5ef6d438f6e6b152efe3294c1..6d6b550fb3e2e7e5054e766a0f53de4afe71b282 100644 GIT binary patch delta 109 zcmZp8z}E19ZGtqT{6raNR(S@!HqDJGh4ZzG)2cFpJhQwb%>v3iypyYnf*d2=vU3Up z9Ww(Xi_9a9BAjz7O7nC}B0@JUu)E60x!t~$aTl|=nXZAMu7R`47@BXBfPy`3p_V1u)E60u-(3taTl|=sji`su91m?p_!GDp_PG!o`He6 Nk%jSgfl9^?W&n-VA#DHv diff --git a/app.py b/app.py index 12b7e5e..a245758 100644 --- a/app.py +++ b/app.py @@ -351,6 +351,7 @@ def api_birthdate(): userData = userUpdate["userData"] try: userDB = UsersBirthdate.query.filter_by(id=userId).first() + userDB.enabled = userData["enabled"] userDB.photo_link = userData["photoLink"] userDB.congratulations = userData["congratulations"] db.session.commit() diff --git a/medods_handler.py b/medods_handler.py index 822b86b..f9f18d8 100644 --- a/medods_handler.py +++ b/medods_handler.py @@ -22,7 +22,7 @@ def updateUsersBirthdate() -> bool: logger.error("Ответ не получен") return False responseData = response.json() - usersFromDB = [] + usersFromMedods = list[dict]() for user in responseData["data"]: if user["birthdate"] is None: continue @@ -35,45 +35,53 @@ def updateUsersBirthdate() -> bool: "birthdate": datetime.date.fromisoformat(user["birthdate"]), "specialties": [spec["title"] for spec in user["specialties"]], } - usersFromDB.append(userDict) - if user["status"] != "active": - logger.info(f"Сотрудник {userDict['name']} отключен") - 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) + usersFromMedods.append(userDict) + + birthdateUsers = UsersBirthdate.query.all() + for birthdateUser in birthdateUsers: + medodsUser = None + + for userFromMedods in usersFromMedods: + if userFromMedods["id"] == birthdateUser.id: + medodsUser = userFromMedods.copy() + usersFromMedods.remove(userFromMedods) + break + + if medodsUser is None: + logger.info(f"Удален сотрудник {birthdateUser.short_name}") + db.session.delete(birthdateUser) + db.session.commit() + continue + + isUpdated = False + if birthdateUser.name != medodsUser["name"]: + birthdateUser.name = medodsUser["name"] + birthdateUser.short_name = medodsUser["short_name"] + isUpdated = True + if birthdateUser.birthdate != medodsUser["birthdate"]: + birthdateUser.birthdate = medodsUser["birthdate"] + isUpdated = True + if birthdateUser.specialties != medodsUser["specialties"]: + birthdateUser.specialties = medodsUser["specialties"] + isUpdated = True + + if isUpdated: + logger.info(f"Обновлен сотрудник {birthdateUser.short_name}") db.session.commit() - for user in usersFromDB: - existingUser = UsersBirthdate.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 = UsersBirthdate( - 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() + for user in usersFromMedods: + logger.info(f"Добавлен сотрудник {user['short_name']}") + newUser = UsersBirthdate( + id=user["id"], + enabled=user["enabled"], + 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: