Revision 5ce3ce4f snf-astakos-app/astakos/im/api/__init__.py

b/snf-astakos-app/astakos/im/api/__init__.py
51 51

  
52 52
absolute = lambda request, url: request.build_absolute_uri(url)
53 53

  
54

  
54 55
def render_fault(request, fault):
55 56
    if isinstance(fault, InternalServerError) and settings.DEBUG:
56 57
        fault.details = format_exc(fault)
......
63 64
    response['Content-Length'] = len(response.content)
64 65
    return response
65 66

  
67

  
66 68
def api_method(http_method=None):
67 69
    """Decorator function for views that implement an API method."""
68 70
    def decorator(func):
......
82 84
        return wrapper
83 85
    return decorator
84 86

  
87

  
85 88
def _get_user_by_username(user_id):
86 89
    try:
87
        user = AstakosUser.objects.get(username = user_id)
90
        user = AstakosUser.objects.get(username=user_id)
88 91
    except AstakosUser.DoesNotExist:
89 92
        raise ItemNotFound('Invalid userid')
90 93
    else:
91 94
        response = HttpResponse()
92
        response.status=200
93
        user_info = {'id':user.id,
94
                     'username':user.username,
95
                     'email':[user.email],
96
                     'name':user.realname,
97
                     'auth_token_created':user.auth_token_created.strftime(format),
98
                     'auth_token_expires':user.auth_token_expires.strftime(format),
99
                     'has_credits':user.has_credits,
100
                     'enabled':user.is_active,
101
                     'groups':[g.name for g in user.groups.all()]}
95
        response.status = 200
96
        user_info = {'id': user.id,
97
                     'username': user.username,
98
                     'email': [user.email],
99
                     'name': user.realname,
100
                     'auth_token_created': user.auth_token_created.strftime(format),
101
                     'auth_token_expires': user.auth_token_expires.strftime(format),
102
                     'has_credits': user.has_credits,
103
                     'enabled': user.is_active,
104
                     'groups': [g.name for g in user.groups.all()]}
102 105
        response.content = json.dumps(user_info)
103 106
        response['Content-Type'] = 'application/json; charset=UTF-8'
104 107
        response['Content-Length'] = len(response.content)
105 108
        return response
106 109

  
110

  
107 111
def _get_user_by_email(email):
108 112
    if not email:
109 113
        raise BadRequest('Email missing')
110 114
    try:
111
        user = AstakosUser.objects.get(email = email)
115
        user = AstakosUser.objects.get(email=email)
112 116
    except AstakosUser.DoesNotExist:
113 117
        raise ItemNotFound('Invalid email')
114
    
118

  
115 119
    if not user.is_active:
116 120
        raise ItemNotFound('Inactive user')
117 121
    else:
118 122
        response = HttpResponse()
119
        response.status=200
120
        user_info = {'id':user.id,
121
                     'username':user.username,
122
                     'email':[user.email],
123
                     'enabled':user.is_active,
124
                     'name':user.realname,
125
                     'auth_token_created':user.auth_token_created.strftime(format),
126
                     'auth_token_expires':user.auth_token_expires.strftime(format),
127
                     'has_credits':user.has_credits,
128
                     'groups':[g.name for g in user.groups.all()],
129
                     'user_permissions':[p.codename for p in user.user_permissions.all()]}
123
        response.status = 200
124
        user_info = {'id': user.id,
125
                     'username': user.username,
126
                     'email': [user.email],
127
                     'enabled': user.is_active,
128
                     'name': user.realname,
129
                     'auth_token_created': user.auth_token_created.strftime(format),
130
                     'auth_token_expires': user.auth_token_expires.strftime(format),
131
                     'has_credits': user.has_credits,
132
                     'groups': [g.name for g in user.groups.all()],
133
                     'user_permissions': [p.codename for p in user.user_permissions.all()]}
130 134
        response.content = json.dumps(user_info)
131 135
        response['Content-Type'] = 'application/json; charset=UTF-8'
132 136
        response['Content-Length'] = len(response.content)
133 137
        return response
134 138

  
139

  
135 140
@api_method(http_method='GET')
136 141
def get_services(request):
137 142
    callback = request.GET.get('callback', None)
138 143
    services = Service.objects.all()
139
    data = tuple({'id':s.pk, 'name':s.name, 'url':s.url, 'icon':s.icon} for s in services)
144
    data = tuple({'id': s.pk, 'name': s.name, 'url': s.url, 'icon':
145
                 s.icon} for s in services)
140 146
    data = json.dumps(data)
141 147
    mimetype = 'application/json'
142 148

  
......
146 152

  
147 153
    return HttpResponse(content=data, mimetype=mimetype)
148 154

  
155

  
149 156
@api_method()
150 157
def get_menu(request, with_extra_links=False, with_signout=True):
151 158
    user = request.user
......
159 166
            pass
160 167
    if not isinstance(user, AstakosUser):
161 168
        index_url = reverse('index')
162
        l = [{ 'url': absolute(request, index_url), 'name': "Sign in"}]
169
        l = [{'url': absolute(request, index_url), 'name': "Sign in"}]
163 170
    else:
164 171
        l = []
165 172
        append = l.append
......
216 223
                        ),
217 224
                        item(
218 225
                            url=absolute(request,
219
                                reverse('group_create_list')
220
                            ),
226
                                         reverse('group_create_list')
227
                                         ),
221 228
                            name="Create"
222 229
                        ),
223 230
                        item(
......
246 253
                    name="Sign out"
247 254
                )
248 255
            )
249
    
256

  
250 257
    callback = request.GET.get('callback', None)
251 258
    data = json.dumps(tuple(l))
252 259
    mimetype = 'application/json'
......
257 264

  
258 265
    return HttpResponse(content=data, mimetype=mimetype)
259 266

  
267

  
260 268
class MenuItem(dict):
261 269
    current_path = ''
262
    
270

  
263 271
    def __init__(self, *args, **kwargs):
264 272
        super(MenuItem, self).__init__(*args, **kwargs)
265 273
        if kwargs.get('url') or kwargs.get('submenu'):
266 274
            self.__set_is_active__()
267
    
275

  
268 276
    def __setitem__(self, key, value):
269 277
        super(MenuItem, self).__setitem__(key, value)
270 278
        if key in ('url', 'submenu'):
271 279
            self.__set_is_active__()
272
    
280

  
273 281
    def __set_is_active__(self):
274 282
        if self.get('is_active'):
275 283
            return
......
285 293
                self.__setitem__('is_active', True)
286 294
            except StopIteration:
287 295
                return
288
        
296

  
289 297
    def __setattribute__(self, name, value):
290 298
        super(MenuItem, self).__setattribute__(name, value)
291 299
        if name == 'current_path':
292
            self.__set_is_active__()
300
            self.__set_is_active__()

Also available in: Unified diff