1 from datetime
import datetime
, timedelta
2 from importlib
import import_module
4 from celery
import shared_task
5 from django_db_geventpool
.utils
import close_connection
7 from django
.contrib
.auth
import get_user_model
8 from django
.conf
import settings
12 from celery
.utils
.log
import get_task_logger
14 logger
= get_task_logger(__name__
)
17 @shared_task(max_retries
=5, default_retry_delay
=60)
19 def sync_user(user_pk
):
20 """Syncs all of the user's sync groups"""
21 from mygpo
.users
.models
import SubscriptionException
23 User
= get_user_model()
24 user
= User
.objects
.get(pk
=user_pk
)
26 groups
= models
.SyncGroup
.objects
.filter(user
=user
)
32 except SubscriptionException
:
33 # no need to retry on SubscriptionException
37 logger
.exception("retrying task")
38 raise sync_user
.retry()
41 @shared_task(run_every
=timedelta(hours
=1))
43 def remove_inactive_users():
44 """Remove users that have not been activated"""
45 User
= get_user_model()
47 # time for which to keep unactivated and deleted users
48 valid_days
= settings
.ACTIVATION_VALID_DAYS
49 remove_before
= datetime
.utcnow() - timedelta(days
=valid_days
)
50 logger
.warning("Removing unactivated users before %s", remove_before
)
52 users
= User
.objects
.filter(is_active
=False, date_joined__lt
=remove_before
)
55 clients
= models
.Client
.objects
.filter(user
=user
)
56 logger
.warning('Deleting %d clients of user "%s"', len(clients
), user
.username
)
58 logger
.warning('Deleting user "%s"', user
.username
)
62 @shared_task(run_every
=timedelta(hours
=1))
65 """Clear expired sessions
67 This runs code that should normally be run by ``manage.py clearsessions``.
68 If Django's internals change, see
69 django/contrib/sessions/management/commands/clearsessions.py for the
70 current implementation."""
72 engine
= import_module(settings
.SESSION_ENGINE
)
73 engine
.SessionStore
.clear_expired()