Revision 437c0052

b/snf-astakos-app/astakos/im/endpoints/qh.py
46 46
    from kamaki.clients.quotaholder import QuotaholderClient
47 47
    from kamaki.clients.quotaholder import QH_PRACTICALLY_INFINITE
48 48

  
49
from synnefo.util.number import strbigdec
50

  
49 51
ENTITY_KEY = '1'
50 52

  
51 53

  
......
154 156
QuotaLimits = namedtuple('QuotaLimits', ('holder',
155 157
                                         'resource',
156 158
                                         'capacity',
157
                                         'import_limit',
159
                                        'import_limit',
158 160
                                         'export_limit'))
159 161

  
160
QuotaValues = namedtuple('QuotaValues', ('quantity',
161
                                         'capacity',
162
                                         'import_limit',
163
                                         'export_limit'))
162
class QuotaValues(namedtuple('QuotaValues', ('quantity',
163
                                             'capacity',
164
                                             'import_limit',
165
                                             'export_limit'))):
166
    __slots__ = ()
167
    def __dir__(self):
168
            return ['quantity', 'capacity', 'import_limit', 'export_limit']
169

  
170
    def __str__(self):
171
        return '\t'.join(['%s=%s' % (f, strbigdec(getattr(self, f))) for f in dir(self)])
164 172

  
165 173
def add_quota_values(q1, q2):
166 174
    return QuotaValues(
b/snf-astakos-app/astakos/im/management/commands/_common.py
65 65
    else:
66 66
        return 'in ' + timeuntil(d)
67 67

  
68
def format_dict(d, level=1, ident=22):
69
    l = ['%s: %s\n' % (k.rjust(level*ident), format(v, level+1)) \
70
            for k, v in sorted(d.iteritems())]
71
    l.insert(0, '\n')
72
    return ''.join(l)
73

  
74
def format_set(s):
75
    return list(s)
76

  
77
def format(obj, level=1, ident=22):
78
    if isinstance(obj, bool):
79
        return format_bool(obj)
80
    elif isinstance(obj, datetime):
81
        return format_date(obj)
82
    elif isinstance(obj, dict):
83
        return format_dict(obj, level, ident)
84
    elif isinstance(obj, set):
85
        return format_set(obj)
86
    else:
87
        return obj
68 88

  
69 89
def get_astakosuser_content_type():
70 90
    try:
b/snf-astakos-app/astakos/im/management/commands/invitation-list.py
53 53

  
54 54
    def handle_noargs(self, **options):
55 55
        invitations = Invitation.objects.all().order_by('id')
56
        
56

  
57 57
        labels = ('id', 'inviter', 'email', 'real name', 'code', 'consumed')
58 58
        columns = (3, 24, 24, 24, 20, 4, 8)
59 59

  
b/snf-astakos-app/astakos/im/management/commands/user-show.py
34 34
from django.core.management.base import BaseCommand, CommandError
35 35

  
36 36
from astakos.im.models import AstakosUser, get_latest_terms
37
from astakos.im.util import model_to_dict
37 38

  
38
from ._common import format_bool, format_date
39
from ._common import format
39 40

  
40 41

  
41 42
class Command(BaseCommand):
......
62 63
                'email': user.email,
63 64
                'first name': user.first_name,
64 65
                'last name': user.last_name,
65
                'active': format_bool(user.is_active),
66
                'admin': format_bool(user.is_superuser),
67
                'last login': format_date(user.last_login),
68
                'date joined': format_date(user.date_joined),
69
                'last update': format_date(user.updated),
66
                'active': user.is_active,
67
                'admin': user.is_superuser,
68
                'last login': user.last_login,
69
                'date joined': user.date_joined,
70
                'last update': user.updated,
70 71
                #'token': user.auth_token,
71
                'token expiration': format_date(user.auth_token_expires),
72
                'token expiration': user.auth_token_expires,
72 73
                'invitations': user.invitations,
73 74
                'invitation level': user.level,
74 75
                'providers': user.auth_providers_display,
75
                'verified': format_bool(user.is_verified),
76
                'has_credits': format_bool(user.has_credits),
76
                'verified': user.is_verified,
77
                'has_credits': format(user.has_credits),
77 78
                'groups': [elem.name for elem in user.groups.all()],
78 79
                'permissions': [elem.codename for elem in user.user_permissions.all()],
79 80
                'group_permissions': user.get_group_permissions(),
80
                'email_verified': format_bool(user.email_verified),
81
                'email_verified': user.email_verified,
81 82
                'username': user.username,
82
                'activation_sent_date': format_date(user.activation_sent),
83
                'resources': dict(user.all_quotas()),
83
                'activation_sent_date': user.activation_sent,
84
                'resources': user.all_quotas(),
84 85
                'uuid': user.uuid
85 86
            }
86 87
            if get_latest_terms():
87 88
                has_signed_terms = user.signed_terms
88
                kv['has_signed_terms'] = format_bool(has_signed_terms)
89
                kv['has_signed_terms'] = has_signed_terms
89 90
                if has_signed_terms:
90
                    kv['date_signed_terms'] = format_date(
91
                        user.date_signed_terms)
91
                    kv['date_signed_terms'] = user.date_signed_terms
92 92

  
93
            for key, val in sorted(kv.items()):
94
                line = '%s: %s\n' % (key.rjust(22), val)
95
                self.stdout.write(line.encode('utf8'))
93
            self.stdout.write(format(kv))
96 94
            self.stdout.write('\n')

Also available in: Unified diff