Statistics
| Branch: | Tag: | Revision:

root / snf-astakos-app / astakos / im / tasks.py @ 3b258643

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