From fbd556a9b9a8e355444e40b443e9cd10551bf727 Mon Sep 17 00:00:00 2001 From: Horilla Date: Thu, 6 Mar 2025 12:10:01 +0530 Subject: [PATCH] [UPDT] OUTLOOK: Token refresh logic --- outlook_auth/models.py | 11 +++++++++++ outlook_auth/scheduler.py | 2 +- outlook_auth/views.py | 4 ++-- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/outlook_auth/models.py b/outlook_auth/models.py index 91bf9bbcd..45fb0e9b5 100644 --- a/outlook_auth/models.py +++ b/outlook_auth/models.py @@ -71,3 +71,14 @@ class AzureApi(models.Model): if duration_seconds > expires_in_seconds: return _("Expired⚠️") return f"{display}/{sec_to_hm(expires_in_seconds)}" + + def is_token_expired(self): + """ + is token expired + """ + if self.last_refreshed: + duration_seconds = (timezone.now() - self.last_refreshed).seconds + expires_in_seconds = self.token.get("expires_in") + if duration_seconds > expires_in_seconds: + return True + return False diff --git a/outlook_auth/scheduler.py b/outlook_auth/scheduler.py index 53f0bc55e..5fed3de65 100644 --- a/outlook_auth/scheduler.py +++ b/outlook_auth/scheduler.py @@ -36,7 +36,7 @@ if not any( scheduler.add_job( refresh_outlook_auth_token, "interval", - minutes=30, + minutes=50, id="refresh_outlook_auth_token", ) scheduler.start() diff --git a/outlook_auth/views.py b/outlook_auth/views.py index 11a44b577..b6c6c2dfa 100644 --- a/outlook_auth/views.py +++ b/outlook_auth/views.py @@ -132,8 +132,8 @@ def send_outlook_email(request, email_data=None): else: api = models.AzureApi.objects.filter(company=selected_company).first() token = api.token - - refresh_outlook_token(api) + if not token and not api.is_token_expired(): + refresh_outlook_token(api) if not token and request: messages.info(request, "Mail not sent") return redirect("outlook_login")