diff options
| author | Bobby <[email protected]> | 2023-07-19 22:35:34 -0400 |
|---|---|---|
| committer | Bobby <[email protected]> | 2023-07-19 22:35:34 -0400 |
| commit | 052fdcb685ac1f5a15d01048c07c201b8e762d2f (patch) | |
| tree | 235574f3bba0c6e95983cd4f07b5b28b6bb6f0d6 | |
| parent | bc9b2d89600e49be0425d21a8ae0d4ec13b72936 (diff) | |
| download | thatcomputerscientist-052fdcb685ac1f5a15d01048c07c201b8e762d2f.tar.xz thatcomputerscientist-052fdcb685ac1f5a15d01048c07c201b8e762d2f.zip | |
Fixing User Deletion Scheduler
| -rw-r--r-- | blog/apps.py | 4 | ||||
| -rw-r--r-- | jobs/tasks.py | 11 | ||||
| -rw-r--r-- | jobs/updater.py | 7 | ||||
| -rw-r--r-- | thatcomputerscientist/settings.py | 2 | ||||
| -rw-r--r-- | thatcomputerscientist/tasks.py | 24 | ||||
| -rw-r--r-- | users/apps.py | 5 |
6 files changed, 23 insertions, 30 deletions
diff --git a/blog/apps.py b/blog/apps.py index 94788a5e..65e290db 100644 --- a/blog/apps.py +++ b/blog/apps.py @@ -4,3 +4,7 @@ from django.apps import AppConfig class BlogConfig(AppConfig): default_auto_field = 'django.db.models.BigAutoField' name = 'blog' + + def ready(self): + from jobs import updater + updater.start() diff --git a/jobs/tasks.py b/jobs/tasks.py new file mode 100644 index 00000000..9742f078 --- /dev/null +++ b/jobs/tasks.py @@ -0,0 +1,11 @@ +from django.contrib.auth.models import User +from django.utils import timezone + +def delete_inactive_users(): + # Delete users who have not verified their email address within 72 hours + # of registering, ie. email_verified=False and date_joined > 72 hours ago + users = User.objects.filter(date_joined__lt=timezone.now() - timezone.timedelta(hours=72), userprofile__email_verified=False) + for user in users: + print("Deleting user: " + user.username) + user.delete() +
\ No newline at end of file diff --git a/jobs/updater.py b/jobs/updater.py new file mode 100644 index 00000000..1636d14d --- /dev/null +++ b/jobs/updater.py @@ -0,0 +1,7 @@ +from apscheduler.schedulers.background import BackgroundScheduler +from jobs.tasks import delete_inactive_users + +def start(): + scheduler = BackgroundScheduler() + scheduler.add_job(delete_inactive_users, 'interval', minutes=60) + scheduler.start() diff --git a/thatcomputerscientist/settings.py b/thatcomputerscientist/settings.py index ddae61f3..8f9c2220 100644 --- a/thatcomputerscientist/settings.py +++ b/thatcomputerscientist/settings.py @@ -61,7 +61,7 @@ INSTALLED_APPS = [ 'thatcomputerscientist', 'haystack', 'django_hosts', - 'blog', + 'blog.apps.BlogConfig', 'users', 'userpages', 'blog_admin', diff --git a/thatcomputerscientist/tasks.py b/thatcomputerscientist/tasks.py deleted file mode 100644 index a41b3cee..00000000 --- a/thatcomputerscientist/tasks.py +++ /dev/null @@ -1,24 +0,0 @@ -from users.models import UserProfile -from django.contrib.auth.models import User -from django.utils import timezone -from datetime import datetime -from apscheduler.schedulers.background import BackgroundScheduler - -def delete_inactive_users(): - # Delete users who have not verified their email address within 72 hours - # of registering, ie. email_verified=False and date_joined > 72 hours ago - - users = UserProfile.objects.filter(email_verified=False) - for user in users: - try: - current_user = User.objects.get(user=user) - if current_user.date_joined < timezone.now() - timezone.timedelta(hours=72): - current_user.delete() - except: - pass - - -def schedule(): - scheduler = BackgroundScheduler() - scheduler.add_job(delete_inactive_users, 'interval', hours=1) - scheduler.start() diff --git a/users/apps.py b/users/apps.py index 16ed36b8..72b14010 100644 --- a/users/apps.py +++ b/users/apps.py @@ -4,8 +4,3 @@ from django.apps import AppConfig class UsersConfig(AppConfig): default_auto_field = 'django.db.models.BigAutoField' name = 'users' - - def ready(self): - - from thatcomputerscientist.tasks import schedule - schedule() |
