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
10 from mygpo
.users
.models
import SyncGroup
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
= 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_unactivated_users():
38 """ Remove users that have not been activated """
39 User
= get_user_model()
40 valid_days
= settings
.ACTIVATION_VALID_DAYS
41 remove_before
= datetime
.utcnow() - timedelta(days
=valid_days
)
42 logger
.warn('Removing unactivated users before %s', remove_before
)
44 users
= User
.objects
.filter(is_active
=False, date_joined__lt
=remove_before
)
45 logger
.warn('Removing %d unactivated users', users
.count())
50 @periodic_task(run_every
=timedelta(hours
=1))
52 """ Clear expired sessions
54 This runs code that should normally be run by ``manage.py clearsessions``.
55 If Django's internals change, see
56 django/contrib/sessions/management/commands/clearsessions.py for the
57 current implementation. """
59 engine
= import_module(settings
.SESSION_ENGINE
)
60 engine
.SessionStore
.clear_expired()