bgneal@513: """
bgneal@513: Celery tasks for the core application.
bgneal@513: 
bgneal@513: """
bgneal@513: from celery.task import task
bgneal@513: import django.core.mail
bgneal@513: 
bgneal@519: import core.whos_online
bgneal@519: 
bgneal@513: 
bgneal@513: @task
bgneal@513: def add(x, y):
bgneal@516:     """
bgneal@516:     It is useful to have a test task laying around. This is it.
bgneal@516: 
bgneal@516:     """
bgneal@513:     return x + y
bgneal@513: 
bgneal@516: 
bgneal@513: @task
bgneal@513: def send_mail(subject, message, from_email, recipient_list, **kwargs):
bgneal@516:     """
bgneal@516:     A task to send mail via Django.
bgneal@516: 
bgneal@516:     """
bgneal@513:     django.core.mail.send_mail(subject, message, from_email, recipient_list,
bgneal@513:             **kwargs)
bgneal@516: 
bgneal@516: 
bgneal@516: @task
bgneal@516: def cleanup():
bgneal@516:     """
bgneal@516:     A task to perform site-wide cleanup actions.
bgneal@516: 
bgneal@516:     """
bgneal@518:     # These imports, when placed at the top of the module, caused all kinds of
bgneal@518:     # import problems when running on the production server (Python 2.5 and
bgneal@518:     # mod_wsgi). Moving them here worked around that problem.
bgneal@518: 
bgneal@517:     from django.core.management.commands.cleanup import Command as CleanupCommand
bgneal@517:     from forums.management.commands.forum_cleanup import Command as ForumCleanup
bgneal@518: 
bgneal@516:     # Execute Django's cleanup command (deletes old sessions).
bgneal@516: 
bgneal@516:     command = CleanupCommand()
bgneal@516:     command.execute()
bgneal@516: 
bgneal@516:     # Execute our forum cleanup command to delete old last visit records.
bgneal@516: 
bgneal@516:     command = ForumCleanup()
bgneal@516:     command.execute()
bgneal@519: 
bgneal@519: 
bgneal@519: @task
bgneal@519: def max_users():
bgneal@519:     """
bgneal@519:     Run the periodic task to calculate the who's online max users/visitors
bgneal@519:     statistics.
bgneal@519: 
bgneal@519:     """
bgneal@519:     core.whos_online.max_users()