From 929f19fbd837c1e2afddf763596370adfb5a3cb5 Mon Sep 17 00:00:00 2001 From: Evgeniy Golodnykh Date: Sun, 9 Feb 2025 22:45:06 +0300 Subject: [PATCH] add cron script to delete inactive users --- blackfox/api/cron.py | 30 ++++++++++++++++++++++++++---- blackfox/blackfox/settings.py | 1 + 2 files changed, 27 insertions(+), 4 deletions(-) diff --git a/blackfox/api/cron.py b/blackfox/api/cron.py index 0016334..7c5c7fe 100644 --- a/blackfox/api/cron.py +++ b/blackfox/api/cron.py @@ -1,3 +1,4 @@ +import datetime as dt import logging import time @@ -18,8 +19,13 @@ User = get_user_model() -error_message = 'Updating data for user "{user}" failed with error "{err}"' -successful_message = 'Fatsecret data for user "{user}" successfully updated' +fooddiary_autoupdate_error_message = ( + 'Updating data for user "{user}" failed with error "{err}"' +) +fooddiary_autoupdate_successful_message = ( + 'Fatsecret data for user "{user}" successfully updated' +) +delete_inactive_user_message = 'Inactive user "{user}" has been deleted' def fooddiary_autoupdate(): @@ -34,8 +40,24 @@ def fooddiary_autoupdate(): try: objs = get_fooddiary_objects(user) except Exception as err: - logging.error(error_message.format(user=user.username, err=err)) + logging.error(fooddiary_autoupdate_error_message.format( + user=user.username, err=err + )) continue FoodDiary.objects.bulk_create(objs=objs) - logging.info(successful_message.format(user=user.username)) + logging.info(fooddiary_autoupdate_successful_message.format( + user=user.username + )) time.sleep(1) + + +def delete_inactive_users(): + """A function for Cron to delete inactive users.""" + + inactive_users = User.objects.filter(Q(is_active=False)) + for user in inactive_users: + if (dt.date.today() - user.date_joined.date()).days > 1: + User.objects.filter(id=user.id).delete() + logging.info(delete_inactive_user_message.format( + user=user.username + )) diff --git a/blackfox/blackfox/settings.py b/blackfox/blackfox/settings.py index 98f107f..1b61bc8 100644 --- a/blackfox/blackfox/settings.py +++ b/blackfox/blackfox/settings.py @@ -232,6 +232,7 @@ CRONJOBS = [ ('0 1 * * *', 'api.cron.fooddiary_autoupdate', '>> /var/log/cron.log 2>&1'), + ('0 2 * * *', 'api.cron.delete_inactive_users', '>> /var/log/cron.log 2>&1'), ] SPECTACULAR_SETTINGS = {