Something like this in your crontab should work:
# m h dom mon dow command
- PYTHONPATH=.
- DJANGO_SETTINGS_MODULE=patchwork.settings.production
- */10 * * * * cd patchwork; python patchwork/bin/patchwork-cron.py
+ */10 * * * * cd patchwork; ./manage.py cron
- the frequency should be the same as the NOTIFICATION_DELAY_MINUTES
+== Cron script changes ==
+
+The patchwork cron script has been moved to a manage.py command. Instead
+of running patchwork-cron.py, run:
+
+ ./manage.py cron
+
== Upgrading to 3b8a61c ==
Recent commits have changed a few admin-visible components of patchwork, so
+++ /dev/null
-#!/usr/bin/env python
-
-import sys
-from patchwork.utils import send_notifications, do_expiry
-
-def main(args):
- errors = send_notifications()
- for (recipient, error) in errors:
- print "Failed sending to %s: %s" % (recipient.email, ex)
-
- do_expiry()
-
-if __name__ == '__main__':
- sys.exit(main(sys.argv))
-
--- /dev/null
+#!/usr/bin/env python
+
+from django.core.management.base import BaseCommand, CommandError
+from patchwork.utils import send_notifications, do_expiry
+
+class Command(BaseCommand):
+ help = ('Run periodic patchwork functions: send notifications and '
+ 'expire unused users')
+
+ def handle(self, *args, **kwargs):
+ errors = send_notifications()
+ for (recipient, error) in errors:
+ self.stderr.write("Failed sending to %s: %s" %
+ (recipient.email, ex))
+
+ do_expiry()
+
+if __name__ == '__main__':
+ sys.exit(main(sys.argv))
+