1 from datetime
import datetime
, timedelta
2 from importlib
import import_module
4 from celery
.decorators
import periodic_task
6 from django
.contrib
.auth
import get_user_model
7 from django
.conf
import settings
9 from mygpo
.celery
import celery
12 from celery
.utils
.log
import get_task_logger
13 logger
= get_task_logger(__name__
)
16 @celery.task(max_retries
=5, default_retry_delay
=60)
18 """ Syncs all of the user's sync groups """
19 from mygpo
.users
.models
import SubscriptionException
21 groups
= models
.SyncGroup
.objects
.filter(user
=user
)
27 except SubscriptionException
:
28 # no need to retry on SubscriptionException
31 except Exception as e
:
32 logger
.exception('retrying task')
33 raise sync_user
.retry()
36 @periodic_task(run_every
=timedelta(hours
=1))
37 def remove_inactive_users():
38 """ Remove users that have not been activated """
39 User
= get_user_model()
41 # time for which to keep unactivated and deleted users
42 valid_days
= settings
.ACTIVATION_VALID_DAYS
43 remove_before
= datetime
.utcnow() - timedelta(days
=valid_days
)
44 logger
.warn('Removing unactivated users before %s', remove_before
)
46 users
= User
.objects
.filter(is_active
=False, date_joined__lt
=remove_before
)
49 clients
= models
.Client
.objects
.filter(user
=user
)
50 logger
.warn('Deleting %d clients of user "%s"',
51 len(clients
), user
.username
)
53 logger
.warn('Deleting user "%s"', user
.username
)
57 @periodic_task(run_every
=timedelta(hours
=1))
59 """ Clear expired sessions
61 This runs code that should normally be run by ``manage.py clearsessions``.
62 If Django's internals change, see
63 django/contrib/sessions/management/commands/clearsessions.py for the
64 current implementation. """
66 engine
= import_module(settings
.SESSION_ENGINE
)
67 engine
.SessionStore
.clear_expired()