Statistics
| Branch: | Tag: | Revision:

root / snf-astakos-app / astakos / im / management / commands / service-update.py @ f2c27eb6

History | View | Annotate | Download (3.9 kB)

1 e72aa2da Kostas Papadimitriou
# Copyright 2012 GRNET S.A. All rights reserved.
2 e72aa2da Kostas Papadimitriou
#
3 e72aa2da Kostas Papadimitriou
# Redistribution and use in source and binary forms, with or
4 e72aa2da Kostas Papadimitriou
# without modification, are permitted provided that the following
5 e72aa2da Kostas Papadimitriou
# conditions are met:
6 e72aa2da Kostas Papadimitriou
#
7 e72aa2da Kostas Papadimitriou
#   1. Redistributions of source code must retain the above
8 e72aa2da Kostas Papadimitriou
#      copyright notice, this list of conditions and the following
9 e72aa2da Kostas Papadimitriou
#      disclaimer.
10 e72aa2da Kostas Papadimitriou
#
11 e72aa2da Kostas Papadimitriou
#   2. Redistributions in binary form must reproduce the above
12 e72aa2da Kostas Papadimitriou
#      copyright notice, this list of conditions and the following
13 e72aa2da Kostas Papadimitriou
#      disclaimer in the documentation and/or other materials
14 e72aa2da Kostas Papadimitriou
#      provided with the distribution.
15 e72aa2da Kostas Papadimitriou
#
16 e72aa2da Kostas Papadimitriou
# THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
17 e72aa2da Kostas Papadimitriou
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 e72aa2da Kostas Papadimitriou
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19 e72aa2da Kostas Papadimitriou
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
20 e72aa2da Kostas Papadimitriou
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21 e72aa2da Kostas Papadimitriou
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22 e72aa2da Kostas Papadimitriou
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
23 e72aa2da Kostas Papadimitriou
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
24 e72aa2da Kostas Papadimitriou
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25 e72aa2da Kostas Papadimitriou
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
26 e72aa2da Kostas Papadimitriou
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27 e72aa2da Kostas Papadimitriou
# POSSIBILITY OF SUCH DAMAGE.
28 e72aa2da Kostas Papadimitriou
#
29 e72aa2da Kostas Papadimitriou
# The views and conclusions contained in the software and
30 e72aa2da Kostas Papadimitriou
# documentation are those of the authors and should not be
31 e72aa2da Kostas Papadimitriou
# interpreted as representing official policies, either expressed
32 e72aa2da Kostas Papadimitriou
# or implied, of GRNET S.A.
33 e72aa2da Kostas Papadimitriou
34 e72aa2da Kostas Papadimitriou
from optparse import make_option
35 e72aa2da Kostas Papadimitriou
from datetime import datetime
36 e72aa2da Kostas Papadimitriou
37 e72aa2da Kostas Papadimitriou
from django.core.management.base import BaseCommand, CommandError
38 e72aa2da Kostas Papadimitriou
from django.core.exceptions import ValidationError
39 e72aa2da Kostas Papadimitriou
40 e72aa2da Kostas Papadimitriou
from astakos.im.models import Service
41 e72aa2da Kostas Papadimitriou
from ._common import remove_user_permission, add_user_permission
42 e72aa2da Kostas Papadimitriou
43 e72aa2da Kostas Papadimitriou
44 e72aa2da Kostas Papadimitriou
class Command(BaseCommand):
45 e72aa2da Kostas Papadimitriou
    args = "<service ID>"
46 e72aa2da Kostas Papadimitriou
    help = "Modify service attributes"
47 e72aa2da Kostas Papadimitriou
48 e72aa2da Kostas Papadimitriou
    option_list = BaseCommand.option_list + (
49 e72aa2da Kostas Papadimitriou
        make_option('--order',
50 e72aa2da Kostas Papadimitriou
                    dest='order',
51 e72aa2da Kostas Papadimitriou
                    metavar='NUM',
52 e72aa2da Kostas Papadimitriou
                    default=None,
53 e72aa2da Kostas Papadimitriou
                    help="Set service order"),
54 e72aa2da Kostas Papadimitriou
        make_option('--name',
55 e72aa2da Kostas Papadimitriou
                    dest='name',
56 e72aa2da Kostas Papadimitriou
                    default=None,
57 e72aa2da Kostas Papadimitriou
                    help="Set service name"),
58 e72aa2da Kostas Papadimitriou
        make_option('--url',
59 e72aa2da Kostas Papadimitriou
                    dest='url',
60 e72aa2da Kostas Papadimitriou
                    default=None,
61 e72aa2da Kostas Papadimitriou
                    help="Set service url"),
62 e72aa2da Kostas Papadimitriou
        make_option('--icon',
63 e72aa2da Kostas Papadimitriou
                    dest='icon',
64 e72aa2da Kostas Papadimitriou
                    default=None,
65 e72aa2da Kostas Papadimitriou
                    help="Set service icon (displayed by cloudbar)"),
66 e72aa2da Kostas Papadimitriou
        make_option('--auth-token',
67 e72aa2da Kostas Papadimitriou
                    dest='auth_token',
68 e72aa2da Kostas Papadimitriou
                    default=None,
69 e72aa2da Kostas Papadimitriou
                    help="Set a custom service auth token"),
70 e72aa2da Kostas Papadimitriou
        make_option('--renew-auth-token',
71 e72aa2da Kostas Papadimitriou
                    action='store_true',
72 e72aa2da Kostas Papadimitriou
                    dest='renew_token',
73 e72aa2da Kostas Papadimitriou
                    default=False,
74 e72aa2da Kostas Papadimitriou
                    help="Renew service auth token"),
75 e72aa2da Kostas Papadimitriou
    )
76 e72aa2da Kostas Papadimitriou
77 e72aa2da Kostas Papadimitriou
    def handle(self, *args, **options):
78 e72aa2da Kostas Papadimitriou
        if len(args) != 1:
79 e72aa2da Kostas Papadimitriou
            raise CommandError("Please provide a service ID")
80 e72aa2da Kostas Papadimitriou
81 e72aa2da Kostas Papadimitriou
        try:
82 e72aa2da Kostas Papadimitriou
            service = Service.objects.get(id=int(args[0]))
83 e72aa2da Kostas Papadimitriou
        except Service.DoesNotExist:
84 e72aa2da Kostas Papadimitriou
            raise CommandError("Service does not exist. You may run snf-mange "
85 e72aa2da Kostas Papadimitriou
                               "service-list for available service IDs.")
86 e72aa2da Kostas Papadimitriou
87 e72aa2da Kostas Papadimitriou
        order = options.get('order')
88 e72aa2da Kostas Papadimitriou
        name = options.get('name')
89 e72aa2da Kostas Papadimitriou
        url = options.get('url')
90 e72aa2da Kostas Papadimitriou
        icon = options.get('icon')
91 e72aa2da Kostas Papadimitriou
        auth_token = options.get('auth_token')
92 e72aa2da Kostas Papadimitriou
        renew_token = options.get('renew_token')
93 e72aa2da Kostas Papadimitriou
94 e72aa2da Kostas Papadimitriou
        if order != None:
95 e72aa2da Kostas Papadimitriou
            service.order = order
96 e72aa2da Kostas Papadimitriou
97 e72aa2da Kostas Papadimitriou
        if name:
98 e72aa2da Kostas Papadimitriou
            service.name = name
99 e72aa2da Kostas Papadimitriou
100 e72aa2da Kostas Papadimitriou
        if url:
101 e72aa2da Kostas Papadimitriou
            service.url = url
102 e72aa2da Kostas Papadimitriou
103 e72aa2da Kostas Papadimitriou
        if icon:
104 e72aa2da Kostas Papadimitriou
            service.icon = icon
105 e72aa2da Kostas Papadimitriou
106 e72aa2da Kostas Papadimitriou
        if auth_token:
107 e72aa2da Kostas Papadimitriou
            service.auth_token = auth_token
108 e72aa2da Kostas Papadimitriou
109 e72aa2da Kostas Papadimitriou
        if renew_token and not auth_token:
110 e72aa2da Kostas Papadimitriou
            service.renew_token()
111 e72aa2da Kostas Papadimitriou
112 e72aa2da Kostas Papadimitriou
        service.save()