Statistics
| Branch: | Tag: | Revision:

root / snf-astakos-app / astakos / im / management / commands / resource-list.py @ 2a2c6876

History | View | Annotate | Download (2.6 kB)

1 77f6e87f Sofia Papagiannaki
# Copyright 2012 GRNET S.A. All rights reserved.
2 77f6e87f Sofia Papagiannaki
#
3 77f6e87f Sofia Papagiannaki
# Redistribution and use in source and binary forms, with or
4 77f6e87f Sofia Papagiannaki
# without modification, are permitted provided that the following
5 77f6e87f Sofia Papagiannaki
# conditions are met:
6 77f6e87f Sofia Papagiannaki
#
7 77f6e87f Sofia Papagiannaki
#   1. Redistributions of source code must retain the above
8 77f6e87f Sofia Papagiannaki
#      copyright notice, this list of conditions and the following
9 77f6e87f Sofia Papagiannaki
#      disclaimer.
10 77f6e87f Sofia Papagiannaki
#
11 77f6e87f Sofia Papagiannaki
#   2. Redistributions in binary form must reproduce the above
12 77f6e87f Sofia Papagiannaki
#      copyright notice, this list of conditions and the following
13 77f6e87f Sofia Papagiannaki
#      disclaimer in the documentation and/or other materials
14 77f6e87f Sofia Papagiannaki
#      provided with the distribution.
15 77f6e87f Sofia Papagiannaki
#
16 77f6e87f Sofia Papagiannaki
# THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
17 77f6e87f Sofia Papagiannaki
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 77f6e87f Sofia Papagiannaki
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19 77f6e87f Sofia Papagiannaki
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
20 77f6e87f Sofia Papagiannaki
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21 77f6e87f Sofia Papagiannaki
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22 77f6e87f Sofia Papagiannaki
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
23 77f6e87f Sofia Papagiannaki
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
24 77f6e87f Sofia Papagiannaki
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25 77f6e87f Sofia Papagiannaki
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
26 77f6e87f Sofia Papagiannaki
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27 77f6e87f Sofia Papagiannaki
# POSSIBILITY OF SUCH DAMAGE.
28 77f6e87f Sofia Papagiannaki
#
29 77f6e87f Sofia Papagiannaki
# The views and conclusions contained in the software and
30 77f6e87f Sofia Papagiannaki
# documentation are those of the authors and should not be
31 77f6e87f Sofia Papagiannaki
# interpreted as representing official policies, either expressed
32 77f6e87f Sofia Papagiannaki
# or implied, of GRNET S.A.
33 77f6e87f Sofia Papagiannaki
34 77f6e87f Sofia Papagiannaki
from optparse import make_option
35 77f6e87f Sofia Papagiannaki
36 e1a80257 Sofia Papagiannaki
from django.core.management.base import NoArgsCommand
37 77f6e87f Sofia Papagiannaki
38 77f6e87f Sofia Papagiannaki
from astakos.im.models import Resource
39 77f6e87f Sofia Papagiannaki
40 5ce3ce4f Sofia Papagiannaki
41 e1a80257 Sofia Papagiannaki
class Command(NoArgsCommand):
42 77f6e87f Sofia Papagiannaki
    help = "List resources"
43 77f6e87f Sofia Papagiannaki
44 e1a80257 Sofia Papagiannaki
    option_list = NoArgsCommand.option_list + (
45 77f6e87f Sofia Papagiannaki
        make_option('-c',
46 5ce3ce4f Sofia Papagiannaki
                    action='store_true',
47 5ce3ce4f Sofia Papagiannaki
                    dest='csv',
48 5ce3ce4f Sofia Papagiannaki
                    default=False,
49 5ce3ce4f Sofia Papagiannaki
                    help="Use pipes to separate values"),
50 77f6e87f Sofia Papagiannaki
    )
51 77f6e87f Sofia Papagiannaki
52 e1a80257 Sofia Papagiannaki
    def handle_noargs(self, **options):
53 77f6e87f Sofia Papagiannaki
        resources = Resource.objects.select_related().all()
54 77f6e87f Sofia Papagiannaki
55 77f6e87f Sofia Papagiannaki
        labels = ('id', 'service', 'name')
56 77f6e87f Sofia Papagiannaki
        columns = (3, 40, 40)
57 77f6e87f Sofia Papagiannaki
58 77f6e87f Sofia Papagiannaki
        if not options['csv']:
59 77f6e87f Sofia Papagiannaki
            line = ' '.join(l.rjust(w) for l, w in zip(labels, columns))
60 77f6e87f Sofia Papagiannaki
            self.stdout.write(line + '\n')
61 77f6e87f Sofia Papagiannaki
            sep = '-' * len(line)
62 77f6e87f Sofia Papagiannaki
            self.stdout.write(sep + '\n')
63 77f6e87f Sofia Papagiannaki
64 77f6e87f Sofia Papagiannaki
        for r in resources:
65 77f6e87f Sofia Papagiannaki
            fields = (str(r.id), r.service.name, r.name)
66 77f6e87f Sofia Papagiannaki
67 77f6e87f Sofia Papagiannaki
            if options['csv']:
68 77f6e87f Sofia Papagiannaki
                line = '|'.join(fields)
69 77f6e87f Sofia Papagiannaki
            else:
70 77f6e87f Sofia Papagiannaki
                line = ' '.join(f.rjust(w) for f, w in zip(fields, columns))
71 77f6e87f Sofia Papagiannaki
72 77f6e87f Sofia Papagiannaki
            self.stdout.write(line.encode('utf8') + '\n')