From 44fe2f1c2a3dd583fb4daa8c2563167f6b34a459 Mon Sep 17 00:00:00 2001 From: Jam <1347620+JamsRepos@users.noreply.github.com> Date: Mon, 6 May 2024 00:17:56 +0100 Subject: [PATCH] =?UTF-8?q?perf:=20=F0=9F=9A=80=20Only=20update=20Emby/Jel?= =?UTF-8?q?lyfin=20users=20when=20data=20is=20different?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/wizarr-backend/wizarr_backend/app/scheduler.py | 4 +--- apps/wizarr-backend/wizarr_backend/helpers/emby.py | 13 +++++++------ .../wizarr_backend/helpers/jellyfin.py | 11 ++++++----- apps/wizarr-backend/wizarr_backend/helpers/users.py | 4 ++-- 4 files changed, 16 insertions(+), 16 deletions(-) diff --git a/apps/wizarr-backend/wizarr_backend/app/scheduler.py b/apps/wizarr-backend/wizarr_backend/app/scheduler.py index 43eb19515..1bae9854c 100644 --- a/apps/wizarr-backend/wizarr_backend/app/scheduler.py +++ b/apps/wizarr-backend/wizarr_backend/app/scheduler.py @@ -22,12 +22,10 @@ def check_expiring_users(): # Get all users that have an expiration date set and are expired expiring = get_users_by_expiring() - print(expiring) - # Delete all expired users for user in expiring: global_delete_user_from_media_server(user.id) - info(f"Deleting user { user.email if user.email else user.username } due to expired invite.") + info(f"Deleting user { user.email if user.email is not None else user.username } due to expired invite.") @schedule.task("interval", id="clearRevokedSessions", hours=1, misfire_grace_time=900) diff --git a/apps/wizarr-backend/wizarr_backend/helpers/emby.py b/apps/wizarr-backend/wizarr_backend/helpers/emby.py index a84981b96..1bbdc3af2 100644 --- a/apps/wizarr-backend/wizarr_backend/helpers/emby.py +++ b/apps/wizarr-backend/wizarr_backend/helpers/emby.py @@ -381,7 +381,6 @@ def sync_emby_users(server_api_key: Optional[str] = None, server_url: Optional[s # Get users from Emby emby_users = get_emby_users(server_api_key=server_api_key, server_url=server_url) - # Get users from database database_users = get_users(False) @@ -393,13 +392,15 @@ def sync_emby_users(server_api_key: Optional[str] = None, server_url: Optional[s create_user(username=emby_user["Name"], token=emby_user["Id"], email=email) info(f"User {emby_user['Name']} successfully imported to database.") - # If the user does exist then update their username and email + # If the user does exist then update their username and email if it has changed else: user = get_user_by_token(emby_user["Id"], verify=False) - user.username = emby_user["Name"] - user.email = emby_user["ConnectUserName"] if "ConnectUserName" in emby_user else None - user.save() - info(f"User {emby_user['Name']} successfully updated in database.") + email = emby_user["ConnectUserName"] if "ConnectUserName" in emby_user else None + if (emby_user["Name"] != user.username or (email is not None and email != user.email)): + user.username = emby_user["Name"] + user.email = email + user.save() + info(f"User {emby_user['Name']} successfully updated in database.") # If database_users.token not in emby_users.id, delete from database for database_user in database_users: diff --git a/apps/wizarr-backend/wizarr_backend/helpers/jellyfin.py b/apps/wizarr-backend/wizarr_backend/helpers/jellyfin.py index 92035105d..c4983923b 100644 --- a/apps/wizarr-backend/wizarr_backend/helpers/jellyfin.py +++ b/apps/wizarr-backend/wizarr_backend/helpers/jellyfin.py @@ -378,7 +378,6 @@ def sync_jellyfin_users(server_api_key: Optional[str] = None, server_url: Option # Get users from Jellyfin jellyfin_users = get_jellyfin_users(server_api_key=server_api_key, server_url=server_url) - # Get users from database database_users = get_users(False) @@ -388,12 +387,14 @@ def sync_jellyfin_users(server_api_key: Optional[str] = None, server_url: Option create_user(username=jellyfin_user["Name"], token=jellyfin_user["Id"]) info(f"User {jellyfin_user['Name']} successfully imported to database.") - # If the user does exist then update their username + # If database_users.token in jellyfin_users.id, update the users name in database else: user = get_user_by_token(jellyfin_user["Id"], verify=False) - user.username = jellyfin_user["Name"] - user.save() - info(f"User {jellyfin_user['Name']} successfully updated in database.") + + if (jellyfin_user["Name"] != user.username): + user.username = jellyfin_user["Name"] + user.save() + info(f"User {jellyfin_user['Name']} successfully updated in database.") # If database_users.token not in jellyfin_users.id, delete from database for database_user in database_users: diff --git a/apps/wizarr-backend/wizarr_backend/helpers/users.py b/apps/wizarr-backend/wizarr_backend/helpers/users.py index 0d4dc25a5..6417d5d28 100644 --- a/apps/wizarr-backend/wizarr_backend/helpers/users.py +++ b/apps/wizarr-backend/wizarr_backend/helpers/users.py @@ -1,7 +1,7 @@ from app.models.database.users import Users from app.models.users import UsersModel from playhouse.shortcuts import model_to_dict -from datetime import datetime +from datetime import datetime, timezone # ANCHOR - Get Users def get_users(as_dict: bool = True) -> list[Users]: @@ -124,7 +124,7 @@ def get_users_by_expiring() -> list[Users]: """ # Get all users by expiring - users: list[Users] = Users.select().where(Users.expires <= datetime.utcnow()) + users: list[Users] = Users.select().where(Users.expires <= datetime.now(timezone.utc)) return users