Statistics
| Branch: | Tag: | Revision:

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

History | View | Annotate | Download (3.2 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 5f703b47 Sofia Papagiannaki
from ._common import format_bool
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 6ebe72f8 Giorgos Korfiatis
        apps = ProjectApplication.objects.select_related('project').all().order_by('id')
54 2a71814e Giorgos Korfiatis
55 5f703b47 Sofia Papagiannaki
        labels = (
56 34452951 Giorgos Korfiatis
            'Application', 'Precursor', 'Status', 'Name', 'Project', 'Status'
57 5f703b47 Sofia Papagiannaki
        )
58 d0e78bbe Giorgos Korfiatis
        columns = (11, 10, 14, 30, 10, 10)
59 ccab6eb5 Sofia Papagiannaki
60 ccab6eb5 Sofia Papagiannaki
        if not options['csv']:
61 ccab6eb5 Sofia Papagiannaki
            line = ' '.join(l.rjust(w) for l, w in zip(labels, columns))
62 ccab6eb5 Sofia Papagiannaki
            self.stdout.write(line + '\n')
63 ccab6eb5 Sofia Papagiannaki
            sep = '-' * len(line)
64 ccab6eb5 Sofia Papagiannaki
            self.stdout.write(sep + '\n')
65 ccab6eb5 Sofia Papagiannaki
66 ccab6eb5 Sofia Papagiannaki
        for app in apps:
67 2a71814e Giorgos Korfiatis
            precursor = app.precursor_application
68 2a71814e Giorgos Korfiatis
            prec_id = precursor.id if precursor else ''
69 2a71814e Giorgos Korfiatis
70 6dadd24a Sofia Papagiannaki
            try:
71 2a71814e Giorgos Korfiatis
                project = app.project
72 2a71814e Giorgos Korfiatis
                project_id = project.id
73 f6b041c0 Giorgos Korfiatis
                status = project.state_display()
74 6dadd24a Sofia Papagiannaki
            except:
75 6dadd24a Sofia Papagiannaki
                project_id = ''
76 2a71814e Giorgos Korfiatis
                status     = ''
77 2a71814e Giorgos Korfiatis
78 ccab6eb5 Sofia Papagiannaki
            fields = (
79 ccab6eb5 Sofia Papagiannaki
                str(app.id),
80 2a71814e Giorgos Korfiatis
                str(prec_id),
81 d0e78bbe Giorgos Korfiatis
                app.state_display(),
82 73fbaec4 Sofia Papagiannaki
                app.name,
83 34452951 Giorgos Korfiatis
                str(project_id),
84 2a71814e Giorgos Korfiatis
                status
85 ccab6eb5 Sofia Papagiannaki
            )
86 ccab6eb5 Sofia Papagiannaki
87 ccab6eb5 Sofia Papagiannaki
            if options['csv']:
88 ccab6eb5 Sofia Papagiannaki
                line = '|'.join(fields)
89 ccab6eb5 Sofia Papagiannaki
            else:
90 ccab6eb5 Sofia Papagiannaki
                line = ' '.join(f.rjust(w) for f, w in zip(fields, columns))
91 ccab6eb5 Sofia Papagiannaki
92 ccab6eb5 Sofia Papagiannaki
            self.stdout.write(line.encode('utf8') + '\n')