Statistics
| Branch: | Tag: | Revision:

root / snf-astakos-app / astakos / im / management / commands / project-list.py @ 6dadd24a

History | View | Annotate | Download (2.9 kB)

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