Statistics
| Branch: | Tag: | Revision:

root / db / credit_allocator.py @ d41d6a00

History | View | Annotate | Download (2.2 kB)

1 48130e66 Georgios Gousios
# Copyright 2011 GRNET S.A. All rights reserved.
2 ce4015d4 Vassilios Karakoidas
#
3 48130e66 Georgios Gousios
# Redistribution and use in source and binary forms, with or without
4 48130e66 Georgios Gousios
# modification, are permitted provided that the following conditions
5 48130e66 Georgios Gousios
# are met:
6 ce4015d4 Vassilios Karakoidas
#
7 48130e66 Georgios Gousios
#   1. Redistributions of source code must retain the above copyright
8 48130e66 Georgios Gousios
#      notice, this list of conditions and the following disclaimer.
9 5b32775a Vassilios Karakoidas
#
10 48130e66 Georgios Gousios
#  2. Redistributions in binary form must reproduce the above copyright
11 48130e66 Georgios Gousios
#     notice, this list of conditions and the following disclaimer in the
12 48130e66 Georgios Gousios
#     documentation and/or other materials provided with the distribution.
13 ce4015d4 Vassilios Karakoidas
#
14 48130e66 Georgios Gousios
# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
15 48130e66 Georgios Gousios
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16 48130e66 Georgios Gousios
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17 48130e66 Georgios Gousios
# ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
18 48130e66 Georgios Gousios
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19 48130e66 Georgios Gousios
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20 48130e66 Georgios Gousios
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21 48130e66 Georgios Gousios
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22 48130e66 Georgios Gousios
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23 48130e66 Georgios Gousios
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24 48130e66 Georgios Gousios
# SUCH DAMAGE.
25 48130e66 Georgios Gousios
#
26 48130e66 Georgios Gousios
# The views and conclusions contained in the software and documentation are
27 48130e66 Georgios Gousios
# those of the authors and should not be interpreted as representing official
28 48130e66 Georgios Gousios
# policies, either expressed or implied, of GRNET S.A.
29 48130e66 Georgios Gousios
30 48130e66 Georgios Gousios
# Credit Allocator - Administration script
31 48130e66 Georgios Gousios
#
32 48130e66 Georgios Gousios
# Execute once to increase user credits according to their monthly rate
33 ce4015d4 Vassilios Karakoidas
34 738c4d47 Georgios Gousios
from synnefo.db.models import *
35 fa672379 Vassilios Karakoidas
from django.db.models import F
36 9ee31b09 Vassilios Karakoidas
from datetime import datetime
37 9ee31b09 Vassilios Karakoidas
38 c718de42 Georgios Gousios
from synnefo.logic import log
39 9ee31b09 Vassilios Karakoidas
40 fa672379 Vassilios Karakoidas
41 ce4015d4 Vassilios Karakoidas
# main entry point
42 4940f0f6 Vassilios Karakoidas
def allocate_credit():
43 c718de42 Georgios Gousios
    logger = log.get_logger("synnefo.logic")
44 c718de42 Georgios Gousios
45 fa672379 Vassilios Karakoidas
    # Select the users that their monthly
46 90b28517 Vassilios Karakoidas
    user_list = SynnefoUser.objects.all()
47 4940f0f6 Vassilios Karakoidas
    
48 4940f0f6 Vassilios Karakoidas
    if len(user_list) == 0:
49 c718de42 Georgios Gousios
        logger.warning('No users found')
50 9ee31b09 Vassilios Karakoidas
    else:
51 c718de42 Georgios Gousios
        logger.info('Found %d user(s)' % ( len(user_list), ))
52 ce4015d4 Vassilios Karakoidas
53 fa672379 Vassilios Karakoidas
    for user in user_list:
54 b90da243 Vassilios Karakoidas
        user.allocate_credits()
55 c718de42 Georgios Gousios
        logger.info("Adding %d credits to %s. Total: %d" % ( user.monthly_rate, user.name, user.credit ))
56 fa672379 Vassilios Karakoidas
        user.save()