replace django.core.urlresolvers w/ django.urls
[mygpo.git] / mygpo / users / tasks.py
blobcb2f7dca2b926eaf2ff29bb98ff4b60ec1646480
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 . import models
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 = models.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_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)
48 for user in users:
49 clients = models.Client.objects.filter(user=user)
50 logger.warn('Deleting %d clients of user "%s"',
51 len(clients), user.username)
52 clients.delete()
53 logger.warn('Deleting user "%s"', user.username)
54 user.delete()
57 @periodic_task(run_every=timedelta(hours=1))
58 def clearsessions():
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()