Statistics
| Branch: | Tag: | Revision:

root / snf-astakos-app / astakos / im / management / commands / component-add.py @ 3848b521

History | View | Annotate | Download (2.5 kB)

1 252eef38 Giorgos Korfiatis
# Copyright 2013 GRNET S.A. All rights reserved.
2 252eef38 Giorgos Korfiatis
#
3 252eef38 Giorgos Korfiatis
# Redistribution and use in source and binary forms, with or
4 252eef38 Giorgos Korfiatis
# without modification, are permitted provided that the following
5 252eef38 Giorgos Korfiatis
# conditions are met:
6 252eef38 Giorgos Korfiatis
#
7 252eef38 Giorgos Korfiatis
#   1. Redistributions of source code must retain the above
8 252eef38 Giorgos Korfiatis
#      copyright notice, this list of conditions and the following
9 252eef38 Giorgos Korfiatis
#      disclaimer.
10 252eef38 Giorgos Korfiatis
#
11 252eef38 Giorgos Korfiatis
#   2. Redistributions in binary form must reproduce the above
12 252eef38 Giorgos Korfiatis
#      copyright notice, this list of conditions and the following
13 252eef38 Giorgos Korfiatis
#      disclaimer in the documentation and/or other materials
14 252eef38 Giorgos Korfiatis
#      provided with the distribution.
15 252eef38 Giorgos Korfiatis
#
16 252eef38 Giorgos Korfiatis
# THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
17 252eef38 Giorgos Korfiatis
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 252eef38 Giorgos Korfiatis
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19 252eef38 Giorgos Korfiatis
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
20 252eef38 Giorgos Korfiatis
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21 252eef38 Giorgos Korfiatis
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22 252eef38 Giorgos Korfiatis
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
23 252eef38 Giorgos Korfiatis
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
24 252eef38 Giorgos Korfiatis
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25 252eef38 Giorgos Korfiatis
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
26 252eef38 Giorgos Korfiatis
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27 252eef38 Giorgos Korfiatis
# POSSIBILITY OF SUCH DAMAGE.
28 252eef38 Giorgos Korfiatis
#
29 252eef38 Giorgos Korfiatis
# The views and conclusions contained in the software and
30 252eef38 Giorgos Korfiatis
# documentation are those of the authors and should not be
31 252eef38 Giorgos Korfiatis
# interpreted as representing official policies, either expressed
32 252eef38 Giorgos Korfiatis
# or implied, of GRNET S.A.
33 252eef38 Giorgos Korfiatis
34 252eef38 Giorgos Korfiatis
from django.core.management.base import BaseCommand, CommandError
35 252eef38 Giorgos Korfiatis
from astakos.im.models import Component
36 252eef38 Giorgos Korfiatis
37 252eef38 Giorgos Korfiatis
38 252eef38 Giorgos Korfiatis
class Command(BaseCommand):
39 252eef38 Giorgos Korfiatis
    args = "<name> <component URL>"
40 252eef38 Giorgos Korfiatis
    help = "Register a component"
41 252eef38 Giorgos Korfiatis
42 252eef38 Giorgos Korfiatis
    def handle(self, *args, **options):
43 7bffb44b Giorgos Korfiatis
        if len(args) < 2:
44 252eef38 Giorgos Korfiatis
            raise CommandError("Invalid number of arguments")
45 252eef38 Giorgos Korfiatis
46 252eef38 Giorgos Korfiatis
        name = args[0]
47 252eef38 Giorgos Korfiatis
        url = args[1]
48 252eef38 Giorgos Korfiatis
        try:
49 252eef38 Giorgos Korfiatis
            s = Component.objects.get(name=name)
50 252eef38 Giorgos Korfiatis
            m = "There already exists a component named '%s'." % name
51 252eef38 Giorgos Korfiatis
            raise CommandError(m)
52 252eef38 Giorgos Korfiatis
        except Component.DoesNotExist:
53 252eef38 Giorgos Korfiatis
            pass
54 252eef38 Giorgos Korfiatis
55 252eef38 Giorgos Korfiatis
        components = list(Component.objects.filter(url=url))
56 252eef38 Giorgos Korfiatis
        if components:
57 252eef38 Giorgos Korfiatis
            m = "Component URL '%s' is registered for another service." % url
58 252eef38 Giorgos Korfiatis
            raise CommandError(m)
59 252eef38 Giorgos Korfiatis
60 252eef38 Giorgos Korfiatis
        try:
61 252eef38 Giorgos Korfiatis
            c = Component.objects.create(name=name, url=url)
62 252eef38 Giorgos Korfiatis
        except BaseException:
63 252eef38 Giorgos Korfiatis
            raise CommandError("Failed to register component.")
64 252eef38 Giorgos Korfiatis
        else:
65 252eef38 Giorgos Korfiatis
            self.stdout.write('Token: %s\n' % c.auth_token)