Revision 027a1ba1

b/snf-astakos-app/astakos/im/management/commands/astakos-load-service-resources.py
1
# encoding: utf-8
2

  
3
# Copyright 2012 GRNET S.A. All rights reserved.
4
#
5
# Redistribution and use in source and binary forms, with or
6
# without modification, are permitted provided that the following
7
# conditions are met:
8
#
9
#   1. Redistributions of source code must retain the above
10
#      copyright notice, this list of conditions and the following
11
#      disclaimer.
12
#
13
#   2. Redistributions in binary form must reproduce the above
14
#      copyright notice, this list of conditions and the following
15
#      disclaimer in the documentation and/or other materials
16
#      provided with the distribution.
17
#
18
# THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
19
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
20
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
21
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
22
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
25
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
26
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
27
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
28
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29
# POSSIBILITY OF SUCH DAMAGE.
30
#
31
# The views and conclusions contained in the software and
32
# documentation are those of the authors and should not be
33
# interpreted as representing official policies, either expressed
34
# or implied, of GRNET S.A.
35

  
36
from astakos.im.models import Service, Resource
37
from django.core.management.base import BaseCommand, CommandError
38
import logging
39

  
40
logger = logging.getLogger(__name__)
41

  
42
def create_service_resources(service_name, service_dict):
43
    url = service_dict.get('url')
44
    resources = service_dict.get('resources') or ()
45
    service, created = Service.objects.get_or_create(
46
        name=service_name,
47
        defaults={'url': url}
48
    )
49

  
50
    for r in resources:
51
        try:
52
            resource_name = r.pop('name', '')
53
            uplimit = r.pop('uplimit', None)
54
            r, created = Resource.objects.get_or_create(
55
                service=service,
56
                name=resource_name,
57
                defaults=r)
58
        except Exception, e:
59
            print "Cannot create resource ", resource_name
60
            continue
61

  
62
class Command(BaseCommand):
63
    args = ""
64
    help = "Register service resources"
65

  
66
    def handle(self, *args, **options):
67
        from astakos.im.settings import SERVICES
68
        for k, v in SERVICES.iteritems():
69
            create_service_resources(k, v)
70

  

Also available in: Unified diff