Statistics
| Branch: | Tag: | Revision:

root / snf-astakos-app / astakos / im / tasks.py @ fc1e2f02

History | View | Annotate | Download (2.3 kB)

1 fc1e2f02 Sofia Papagiannaki
# Copyright 2011 GRNET S.A. All rights reserved.
2 fc1e2f02 Sofia Papagiannaki
#
3 fc1e2f02 Sofia Papagiannaki
# Redistribution and use in source and binary forms, with or
4 fc1e2f02 Sofia Papagiannaki
# without modification, are permitted provided that the following
5 fc1e2f02 Sofia Papagiannaki
# conditions are met:
6 fc1e2f02 Sofia Papagiannaki
#
7 fc1e2f02 Sofia Papagiannaki
#   1. Redistributions of source code must retain the above
8 fc1e2f02 Sofia Papagiannaki
#      copyright notice, this list of conditions and the following
9 fc1e2f02 Sofia Papagiannaki
#      disclaimer.
10 fc1e2f02 Sofia Papagiannaki
#
11 fc1e2f02 Sofia Papagiannaki
#   2. Redistributions in binary form must reproduce the above
12 fc1e2f02 Sofia Papagiannaki
#      copyright notice, this list of conditions and the following
13 fc1e2f02 Sofia Papagiannaki
#      disclaimer in the documentation and/or other materials
14 fc1e2f02 Sofia Papagiannaki
#      provided with the distribution.
15 fc1e2f02 Sofia Papagiannaki
#
16 fc1e2f02 Sofia Papagiannaki
# THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
17 fc1e2f02 Sofia Papagiannaki
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 fc1e2f02 Sofia Papagiannaki
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19 fc1e2f02 Sofia Papagiannaki
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
20 fc1e2f02 Sofia Papagiannaki
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21 fc1e2f02 Sofia Papagiannaki
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22 fc1e2f02 Sofia Papagiannaki
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
23 fc1e2f02 Sofia Papagiannaki
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
24 fc1e2f02 Sofia Papagiannaki
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25 fc1e2f02 Sofia Papagiannaki
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
26 fc1e2f02 Sofia Papagiannaki
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27 fc1e2f02 Sofia Papagiannaki
# POSSIBILITY OF SUCH DAMAGE.
28 fc1e2f02 Sofia Papagiannaki
#
29 fc1e2f02 Sofia Papagiannaki
# The views and conclusions contained in the software and
30 fc1e2f02 Sofia Papagiannaki
# documentation are those of the authors and should not be
31 fc1e2f02 Sofia Papagiannaki
# interpreted as representing official policies, either expressed
32 fc1e2f02 Sofia Papagiannaki
# or implied, of GRNET S.A.
33 fc1e2f02 Sofia Papagiannaki
34 fc1e2f02 Sofia Papagiannaki
from celery.task import task, periodic_task
35 fc1e2f02 Sofia Papagiannaki
from celery.schedules import crontab
36 fc1e2f02 Sofia Papagiannaki
37 fc1e2f02 Sofia Papagiannaki
from functools import wraps
38 fc1e2f02 Sofia Papagiannaki
39 fc1e2f02 Sofia Papagiannaki
from astakos.im.endpoints.quotaholder import send_quota
40 fc1e2f02 Sofia Papagiannaki
from astakos.im.endpoints.aquarium.producer import report_credits_event, report_user_event
41 fc1e2f02 Sofia Papagiannaki
42 fc1e2f02 Sofia Papagiannaki
import logging
43 fc1e2f02 Sofia Papagiannaki
44 fc1e2f02 Sofia Papagiannaki
logger = logging.getLogger(__name__)
45 fc1e2f02 Sofia Papagiannaki
46 fc1e2f02 Sofia Papagiannaki
def log(func):
47 fc1e2f02 Sofia Papagiannaki
    @wraps(func)
48 fc1e2f02 Sofia Papagiannaki
    def wrapper(*args, **kwargs):
49 fc1e2f02 Sofia Papagiannaki
        logger.info('Starting the %s' % func)
50 fc1e2f02 Sofia Papagiannaki
        return func(*args, **kwargs)
51 fc1e2f02 Sofia Papagiannaki
    return wrapper
52 fc1e2f02 Sofia Papagiannaki
53 fc1e2f02 Sofia Papagiannaki
#@periodic_task(run_every=crontab(day_of_month='1'))
54 fc1e2f02 Sofia Papagiannaki
@periodic_task(run_every=crontab())
55 fc1e2f02 Sofia Papagiannaki
@log
56 fc1e2f02 Sofia Papagiannaki
def propagate_credits_update():
57 fc1e2f02 Sofia Papagiannaki
    report_credits_event()
58 fc1e2f02 Sofia Papagiannaki
59 fc1e2f02 Sofia Papagiannaki
@task
60 fc1e2f02 Sofia Papagiannaki
@log
61 fc1e2f02 Sofia Papagiannaki
def propagate_groupmembers_quota(group):
62 fc1e2f02 Sofia Papagiannaki
    if group.is_disabled:
63 fc1e2f02 Sofia Papagiannaki
        return
64 fc1e2f02 Sofia Papagiannaki
    send_quota(group.approved_members)