[Migration] remove remaining CouchDB related code
[mygpo.git] / mygpo / users / tasks.py
blob9a2e251f86a85c84c668b7079a95934d706b73ca
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)
17 def sync_user(user):
18 """ Syncs all of the user's sync groups """
19 from mygpo.users.models import SubscriptionException
21 groups = SyncGroup.objects.filter(user=user)
22 for group in groups:
24 try:
25 group.sync()
27 except SubscriptionException:
28 # no need to retry on SubscriptionException
29 pass
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())
47 users.delete()
50 @periodic_task(run_every=timedelta(hours=1))
51 def clearsessions():
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()