Revision 5a8067ad

b/snf-astakos-app/astakos/im/management/commands/_common.py
59 59
        return None
60 60

  
61 61

  
62
def format_bool(b):
63
    return 'YES' if b else 'NO'
64

  
65

  
66
def format_date(d):
67
    if not d:
68
        return ''
69

  
70
    if d < datetime.now():
71
        return timesince(d) + ' ago'
72
    else:
73
        return 'in ' + timeuntil(d)
74

  
75

  
76
def format_dict(d, level=1, ident=22):
77
    iteritems = d.iteritems()
78
    if not isinstance(d, OrderedDict):
79
        iteritems = sorted(iteritems)
80

  
81
    l = ['%s: %s\n' % (k.rjust(level*ident), format(v, level+1))
82
         for k, v in iteritems]
83
    l.insert(0, '\n')
84
    return ''.join(l)
85

  
86

  
87
def format_set(s):
88
    return list(s)
89

  
90

  
91
def format(obj, level=1, ident=22):
92
    if isinstance(obj, bool):
93
        return format_bool(obj)
94
    elif isinstance(obj, datetime):
95
        return format_date(obj)
96
    elif isinstance(obj, dict):
97
        return format_dict(obj, level, ident)
98
    elif isinstance(obj, set):
99
        return format_set(obj)
100
    else:
101
        return obj
102

  
103

  
104 62
def get_astakosuser_content_type():
105 63
    try:
106 64
        return ContentType.objects.get(app_label='im',
......
159 117
        return -1
160 118

  
161 119

  
162
def shortened(s, limit, suffix=True):
163
    length = len(s)
164
    if length <= limit:
165
        return s
166
    else:
167
        display = limit - 2
168
        if suffix:
169
            return '..' + s[-display:]
170
        else:
171
            return s[:display] + '..'
172

  
173

  
174
# Copied from snf-cyclades-app/synnefo/management/common.py
175
# It could be moved to snf-common
176
def filter_results(objects, filter_by):
177
    filter_list = filter_by.split(",")
178
    filter_dict = {}
179
    exclude_dict = {}
180

  
181
    def map_field_type(query):
182
        def fix_bool(val):
183
            if val.lower() in ("yes", "true", "t"):
184
                return True
185
            if val.lower() in ("no", "false", "f"):
186
                return False
187
            return val
188

  
189
        if "!=" in query:
190
            key, val = query.split("!=")
191
            exclude_dict[key] = fix_bool(val)
192
            return
193
        OP_MAP = {
194
            ">=": "__gte",
195
            "=>": "__gte",
196
            ">":  "__gt",
197
            "<=": "__lte",
198
            "=<": "__lte",
199
            "<":  "__lt",
200
            "=":  "",
201
        }
202
        for op, new_op in OP_MAP.items():
203
            if op in query:
204
                key, val = query.split(op)
205
                filter_dict[key + new_op] = fix_bool(val)
206
                return
207

  
208
    map(lambda x: map_field_type(x), filter_list)
209

  
210
    try:
211
        objects = objects.filter(**filter_dict)
212
        return objects.exclude(**exclude_dict)
213
    except FieldError as e:
214
        raise CommandError(e)
215
    except Exception as e:
216
        raise CommandError("Can not filter results: %s" % e)
217

  
218

  
219 120
def is_uuid(s):
220 121
    if s is None:
221 122
        return False
b/snf-astakos-app/astakos/im/management/commands/user-show.py
41 41
from synnefo.webproject.management.commands import SynnefoCommand
42 42
from synnefo.webproject.management import utils
43 43

  
44
from ._common import format, show_quotas, style_options, check_style
44
from ._common import show_quotas, style_options, check_style
45 45

  
46 46
import uuid
47 47

  
......
106 106
                    ('invitation level', user.level),
107 107
                    ('providers', user.auth_providers_display),
108 108
                    ('verified', user.is_verified),
109
                    ('has credits', format(user.has_credits)),
110 109
                    ('groups', [elem.name for elem in user.groups.all()]),
111 110
                    ('permissions', [elem.codename
112 111
                                     for elem in user.user_permissions.all()]),

Also available in: Unified diff