Statistics
| Branch: | Tag: | Revision:

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

History | View | Annotate | Download (2.5 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 b6852727 Olga Brani
from astakos.im.endpoints.qh import send_quota
40 f9aea9c8 Sofia Papagiannaki
from astakos.im.endpoints.aquarium.producer import (
41 f9aea9c8 Sofia Papagiannaki
    report_credits_event,
42 73fbaec4 Sofia Papagiannaki
    report_user_event)
43 6e029beb Sofia Papagiannaki
from astakos.im.endpoints.aquarium.client import AquariumClient
44 fc1e2f02 Sofia Papagiannaki
45 fc1e2f02 Sofia Papagiannaki
import logging
46 fc1e2f02 Sofia Papagiannaki
47 fc1e2f02 Sofia Papagiannaki
logger = logging.getLogger(__name__)
48 fc1e2f02 Sofia Papagiannaki
49 5ce3ce4f Sofia Papagiannaki
50 fc1e2f02 Sofia Papagiannaki
def log(func):
51 fc1e2f02 Sofia Papagiannaki
    @wraps(func)
52 fc1e2f02 Sofia Papagiannaki
    def wrapper(*args, **kwargs):
53 6e029beb Sofia Papagiannaki
        logger.info('Starting the %s with args=%s kwargs=%s' % (
54 5ce3ce4f Sofia Papagiannaki
                    func, args, kwargs
55 5ce3ce4f Sofia Papagiannaki
                    )
56 5ce3ce4f Sofia Papagiannaki
                    )
57 fc1e2f02 Sofia Papagiannaki
        return func(*args, **kwargs)
58 fc1e2f02 Sofia Papagiannaki
    return wrapper
59 fc1e2f02 Sofia Papagiannaki
60 5ce3ce4f Sofia Papagiannaki
61 28bcc2cf Sofia Papagiannaki
@periodic_task(run_every=crontab(day_of_month='1'))
62 fc1e2f02 Sofia Papagiannaki
@log
63 fc1e2f02 Sofia Papagiannaki
def propagate_credits_update():
64 fc1e2f02 Sofia Papagiannaki
    report_credits_event()
65 fc1e2f02 Sofia Papagiannaki
66 5ce3ce4f Sofia Papagiannaki
67 fc1e2f02 Sofia Papagiannaki
@task
68 fc1e2f02 Sofia Papagiannaki
@log
69 fc1e2f02 Sofia Papagiannaki
def propagate_groupmembers_quota(group):
70 fc1e2f02 Sofia Papagiannaki
    if group.is_disabled:
71 fc1e2f02 Sofia Papagiannaki
        return
72 fc1e2f02 Sofia Papagiannaki
    send_quota(group.approved_members)
73 6e029beb Sofia Papagiannaki
74 5ce3ce4f Sofia Papagiannaki
75 6e029beb Sofia Papagiannaki
@task
76 6e029beb Sofia Papagiannaki
@log
77 6e029beb Sofia Papagiannaki
def request_billing(user, start, end):
78 6e029beb Sofia Papagiannaki
    return AquariumClient().get_billing(user, start, end)