1a30ffc90d2692d182860bf601c7b2f756408664
[wolnelektury.git] / src / funding / management / commands / funding_notify.py
1 # -*- coding: utf-8 -*-
2 # This file is part of Wolnelektury, licensed under GNU Affero GPLv3 or later.
3 # Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
4 #
5 from optparse import make_option
6 from django.core.management.base import BaseCommand
7
8
9 class Command(BaseCommand):
10     option_list = BaseCommand.option_list + (
11         make_option('-q', '--quiet', action='store_false', dest='verbose', default=True,
12             help='Suppress output'),
13     )
14     help = 'Sends relevant funding notifications.'
15
16     def handle(self, **options):
17
18         from datetime import date, timedelta
19         from funding.models import Offer
20         from funding import app_settings
21         from django.core.cache import caches
22         from django.conf import settings
23
24         verbose = options['verbose']
25
26         for offer in Offer.past().filter(notified_end=None):
27             if verbose:
28                 print 'Notify end:', offer
29             # The 'WL fund' list needs to be updated.
30             caches[settings.CACHE_MIDDLEWARE_ALIAS].clear()
31             offer.flush_includes()
32             offer.notify_end()
33
34         current = Offer.current()
35         if (current is not None and
36                 current.end <= date.today() + timedelta(app_settings.DAYS_NEAR - 1) and
37                 not current.notified_near):
38             if verbose:
39                 print 'Notify near:', current
40             current.notify_near()