[Suggestions] move existing code into own app
[mygpo.git] / mygpo / users / tasks.py
blob3b22031f208ee963f6381796b2e66c5d557824db
1 from datetime import datetime, timedelta
3 from celery.decorators import periodic_task
5 from django.contrib.auth import get_user_model
6 from django.conf import settings
8 from mygpo.celery import celery
10 from celery.utils.log import get_task_logger
11 logger = get_task_logger(__name__)
14 @celery.task(max_retries=5, default_retry_delay=60)
15 def sync_user(user):
16 """ Syncs all of the user's sync groups """
17 from mygpo.users.models import SubscriptionException
19 groups = SyncGroup.objects.filter(user=user)
20 for group in groups:
22 try:
23 group.sync()
25 except SubscriptionException:
26 # no need to retry on SubscriptionException
27 pass
29 except Exception as e:
30 logger.exception('retrying task')
31 raise sync_user.retry()
34 @periodic_task(run_every=timedelta(hours=1))
35 def remove_unactivated_users():
36 """ Remove users that have not been activated """
37 User = get_user_model()
38 valid_days = settings.ACTIVATION_VALID_DAYS
39 remove_before = datetime.utcnow() - timedelta(days=valid_days)
40 logger.warn('Removing unactivated users before %s', remove_before)
42 users = User.objects.filter(is_active=False, date_joined__lt=remove_before)
43 logger.warn('Removing %d unactivated users', users.count())
45 users.delete()