Statistics
| Branch: | Tag: | Revision:

root / snf-astakos-app / astakos / quotaholder_app / management / commands / commission-show.py @ 35cbac33

History | View | Annotate | Download (3.5 kB)

1 a4451f59 Giorgos Korfiatis
# Copyright 2013 GRNET S.A. All rights reserved.
2 a4451f59 Giorgos Korfiatis
#
3 a4451f59 Giorgos Korfiatis
# Redistribution and use in source and binary forms, with or
4 a4451f59 Giorgos Korfiatis
# without modification, are permitted provided that the following
5 a4451f59 Giorgos Korfiatis
# conditions are met:
6 a4451f59 Giorgos Korfiatis
#
7 a4451f59 Giorgos Korfiatis
#   1. Redistributions of source code must retain the above
8 a4451f59 Giorgos Korfiatis
#      copyright notice, this list of conditions and the following
9 a4451f59 Giorgos Korfiatis
#      disclaimer.
10 a4451f59 Giorgos Korfiatis
#
11 a4451f59 Giorgos Korfiatis
#   2. Redistributions in binary form must reproduce the above
12 a4451f59 Giorgos Korfiatis
#      copyright notice, this list of conditions and the following
13 a4451f59 Giorgos Korfiatis
#      disclaimer in the documentation and/or other materials
14 a4451f59 Giorgos Korfiatis
#      provided with the distribution.
15 a4451f59 Giorgos Korfiatis
#
16 a4451f59 Giorgos Korfiatis
# THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
17 a4451f59 Giorgos Korfiatis
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 a4451f59 Giorgos Korfiatis
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19 a4451f59 Giorgos Korfiatis
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
20 a4451f59 Giorgos Korfiatis
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21 a4451f59 Giorgos Korfiatis
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22 a4451f59 Giorgos Korfiatis
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
23 a4451f59 Giorgos Korfiatis
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
24 a4451f59 Giorgos Korfiatis
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25 a4451f59 Giorgos Korfiatis
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
26 a4451f59 Giorgos Korfiatis
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27 a4451f59 Giorgos Korfiatis
# POSSIBILITY OF SUCH DAMAGE.
28 a4451f59 Giorgos Korfiatis
#
29 a4451f59 Giorgos Korfiatis
# The views and conclusions contained in the software and
30 a4451f59 Giorgos Korfiatis
# documentation are those of the authors and should not be
31 a4451f59 Giorgos Korfiatis
# interpreted as representing official policies, either expressed
32 a4451f59 Giorgos Korfiatis
# or implied, of GRNET S.A.
33 a4451f59 Giorgos Korfiatis
34 35cbac33 Giorgos Korfiatis
from snf_django.management.commands import SynnefoCommand, CommandError
35 d758784b Christos Stavrakakis
from snf_django.management import utils
36 a4451f59 Giorgos Korfiatis
37 a4451f59 Giorgos Korfiatis
from astakos.quotaholder_app.models import Commission, Provision
38 a4451f59 Giorgos Korfiatis
39 a4451f59 Giorgos Korfiatis
40 a4451f59 Giorgos Korfiatis
class Command(SynnefoCommand):
41 a4451f59 Giorgos Korfiatis
    args = "<commission serial>"
42 a4451f59 Giorgos Korfiatis
    help = "Show details for a pending commission"
43 a4451f59 Giorgos Korfiatis
44 a4451f59 Giorgos Korfiatis
    def handle(self, *args, **options):
45 a4451f59 Giorgos Korfiatis
        self.output_format = options['output_format']
46 a4451f59 Giorgos Korfiatis
47 a4451f59 Giorgos Korfiatis
        if len(args) != 1:
48 a4451f59 Giorgos Korfiatis
            raise CommandError("Please provide a commission serial.")
49 a4451f59 Giorgos Korfiatis
50 a4451f59 Giorgos Korfiatis
        try:
51 a4451f59 Giorgos Korfiatis
            serial = int(args[0])
52 a4451f59 Giorgos Korfiatis
        except ValueError:
53 a4451f59 Giorgos Korfiatis
            raise CommandError('Expecting an integer serial.')
54 a4451f59 Giorgos Korfiatis
55 a4451f59 Giorgos Korfiatis
        try:
56 a4451f59 Giorgos Korfiatis
            commission = Commission.objects.get(serial=serial)
57 a4451f59 Giorgos Korfiatis
        except Commission.DoesNotExist:
58 a4451f59 Giorgos Korfiatis
            m = 'There is no pending commission with serial %s.' % serial
59 a4451f59 Giorgos Korfiatis
            raise CommandError(m)
60 a4451f59 Giorgos Korfiatis
61 a4451f59 Giorgos Korfiatis
        data = {'serial':     serial,
62 a4451f59 Giorgos Korfiatis
                'name':       commission.name,
63 a4451f59 Giorgos Korfiatis
                'clientkey':  commission.clientkey,
64 a4451f59 Giorgos Korfiatis
                'issue_time': commission.issue_datetime,
65 a4451f59 Giorgos Korfiatis
                }
66 a4451f59 Giorgos Korfiatis
        self.pprint_dict(data)
67 a4451f59 Giorgos Korfiatis
68 a4451f59 Giorgos Korfiatis
        provisions = Provision.objects.filter(serial=commission)
69 a4451f59 Giorgos Korfiatis
        data, labels = self.show_provisions(provisions)
70 a4451f59 Giorgos Korfiatis
        self.stdout.write('\n')
71 a4451f59 Giorgos Korfiatis
        self.pprint_table(data, labels, title='Provisions')
72 a4451f59 Giorgos Korfiatis
73 a4451f59 Giorgos Korfiatis
    def show_provisions(self, provisions):
74 a4451f59 Giorgos Korfiatis
        acc = []
75 a4451f59 Giorgos Korfiatis
        labels = 'holder', 'resource', 'source', 'quantity'
76 a4451f59 Giorgos Korfiatis
        for provision in provisions:
77 a4451f59 Giorgos Korfiatis
            fields = []
78 a4451f59 Giorgos Korfiatis
            for label in labels:
79 a4451f59 Giorgos Korfiatis
                f = getattr(provision, label)
80 a4451f59 Giorgos Korfiatis
                fields.append(f)
81 a4451f59 Giorgos Korfiatis
            acc.append(fields)
82 a4451f59 Giorgos Korfiatis
        return acc, labels
83 a4451f59 Giorgos Korfiatis
84 a4451f59 Giorgos Korfiatis
    def pprint_dict(self, d, vertical=True):
85 a4451f59 Giorgos Korfiatis
        utils.pprint_table(self.stdout, [d.values()], d.keys(),
86 a4451f59 Giorgos Korfiatis
                           self.output_format, vertical=vertical)
87 a4451f59 Giorgos Korfiatis
88 a4451f59 Giorgos Korfiatis
    def pprint_table(self, tbl, labels, title=None):
89 a4451f59 Giorgos Korfiatis
        utils.pprint_table(self.stdout, tbl, labels,
90 a4451f59 Giorgos Korfiatis
                           self.output_format, title=title)