Statistics
| Branch: | Tag: | Revision:

root / snf-astakos-app / astakos / im / api / __init__.py @ 318f44d9

History | View | Annotate | Download (3.8 kB)

1 6b03a847 Sofia Papagiannaki
# Copyright 2011-2012 GRNET S.A. All rights reserved.
2 6b03a847 Sofia Papagiannaki
#
3 6b03a847 Sofia Papagiannaki
# Redistribution and use in source and binary forms, with or
4 6b03a847 Sofia Papagiannaki
# without modification, are permitted provided that the following
5 6b03a847 Sofia Papagiannaki
# conditions are met:
6 6b03a847 Sofia Papagiannaki
#
7 6b03a847 Sofia Papagiannaki
#   1. Redistributions of source code must retain the above
8 6b03a847 Sofia Papagiannaki
#      copyright notice, this list of conditions and the following
9 6b03a847 Sofia Papagiannaki
#      disclaimer.
10 6b03a847 Sofia Papagiannaki
#
11 6b03a847 Sofia Papagiannaki
#   2. Redistributions in binary form must reproduce the above
12 6b03a847 Sofia Papagiannaki
#      copyright notice, this list of conditions and the following
13 6b03a847 Sofia Papagiannaki
#      disclaimer in the documentation and/or other materials
14 6b03a847 Sofia Papagiannaki
#      provided with the distribution.
15 6b03a847 Sofia Papagiannaki
#
16 6b03a847 Sofia Papagiannaki
# THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
17 6b03a847 Sofia Papagiannaki
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 6b03a847 Sofia Papagiannaki
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19 6b03a847 Sofia Papagiannaki
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
20 6b03a847 Sofia Papagiannaki
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21 6b03a847 Sofia Papagiannaki
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22 6b03a847 Sofia Papagiannaki
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
23 6b03a847 Sofia Papagiannaki
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
24 6b03a847 Sofia Papagiannaki
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25 6b03a847 Sofia Papagiannaki
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
26 6b03a847 Sofia Papagiannaki
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27 6b03a847 Sofia Papagiannaki
# POSSIBILITY OF SUCH DAMAGE.
28 6b03a847 Sofia Papagiannaki
#
29 6b03a847 Sofia Papagiannaki
# The views and conclusions contained in the software and
30 6b03a847 Sofia Papagiannaki
# documentation are those of the authors and should not be
31 6b03a847 Sofia Papagiannaki
# interpreted as representing official policies, either expressed
32 6b03a847 Sofia Papagiannaki
# or implied, of GRNET S.A.
33 6b03a847 Sofia Papagiannaki
34 6b03a847 Sofia Papagiannaki
from django.http import HttpResponse
35 6b03a847 Sofia Papagiannaki
from django.utils import simplejson as json
36 6b03a847 Sofia Papagiannaki
37 6b03a847 Sofia Papagiannaki
from astakos.im.models import AstakosUser
38 6294eae4 Sofia Papagiannaki
from astakos.im.api.faults import ItemNotFound
39 6b03a847 Sofia Papagiannaki
40 6b03a847 Sofia Papagiannaki
format = ('%a, %d %b %Y %H:%M:%S GMT')
41 6b03a847 Sofia Papagiannaki
42 6b03a847 Sofia Papagiannaki
def _get_user_by_username(user_id):
43 6b03a847 Sofia Papagiannaki
    try:
44 6b03a847 Sofia Papagiannaki
        user = AstakosUser.objects.get(username = user_id)
45 6b03a847 Sofia Papagiannaki
    except AstakosUser.DoesNotExist, e:
46 6b03a847 Sofia Papagiannaki
        raise ItemNotFound('Invalid userid')
47 6b03a847 Sofia Papagiannaki
    else:
48 6b03a847 Sofia Papagiannaki
        response = HttpResponse()
49 6b03a847 Sofia Papagiannaki
        response.status=200
50 6b03a847 Sofia Papagiannaki
        user_info = {'id':user.id,
51 6b03a847 Sofia Papagiannaki
                     'username':user.username,
52 6b03a847 Sofia Papagiannaki
                     'email':[user.email],
53 6b03a847 Sofia Papagiannaki
                     'name':user.realname,
54 6b03a847 Sofia Papagiannaki
                     'auth_token_created':user.auth_token_created.strftime(format),
55 6b03a847 Sofia Papagiannaki
                     'auth_token_expires':user.auth_token_expires.strftime(format),
56 6b03a847 Sofia Papagiannaki
                     'has_credits':user.has_credits,
57 6b03a847 Sofia Papagiannaki
                     'enabled':user.is_active,
58 6b03a847 Sofia Papagiannaki
                     'groups':[g.name for g in user.groups.all()]}
59 6b03a847 Sofia Papagiannaki
        response.content = json.dumps(user_info)
60 6b03a847 Sofia Papagiannaki
        response['Content-Type'] = 'application/json; charset=UTF-8'
61 6b03a847 Sofia Papagiannaki
        response['Content-Length'] = len(response.content)
62 6b03a847 Sofia Papagiannaki
        return response
63 6b03a847 Sofia Papagiannaki
64 6b03a847 Sofia Papagiannaki
def _get_user_by_email(email):
65 6b03a847 Sofia Papagiannaki
    if not email:
66 6b03a847 Sofia Papagiannaki
        raise BadRequest('Email missing')
67 6b03a847 Sofia Papagiannaki
    try:
68 6b03a847 Sofia Papagiannaki
        user = AstakosUser.objects.get(email = email)
69 6b03a847 Sofia Papagiannaki
    except AstakosUser.DoesNotExist, e:
70 6b03a847 Sofia Papagiannaki
        raise ItemNotFound('Invalid email')
71 6b03a847 Sofia Papagiannaki
    
72 6b03a847 Sofia Papagiannaki
    if not user.is_active:
73 6b03a847 Sofia Papagiannaki
        raise ItemNotFound('Inactive user')
74 6b03a847 Sofia Papagiannaki
    else:
75 6b03a847 Sofia Papagiannaki
        response = HttpResponse()
76 6b03a847 Sofia Papagiannaki
        response.status=200
77 6b03a847 Sofia Papagiannaki
        user_info = {'id':user.id,
78 6b03a847 Sofia Papagiannaki
                     'username':user.username,
79 6b03a847 Sofia Papagiannaki
                     'email':[user.email],
80 6b03a847 Sofia Papagiannaki
                     'enabled':user.is_active,
81 6b03a847 Sofia Papagiannaki
                     'name':user.realname,
82 6b03a847 Sofia Papagiannaki
                     'auth_token_created':user.auth_token_created.strftime(format),
83 6b03a847 Sofia Papagiannaki
                     'auth_token_expires':user.auth_token_expires.strftime(format),
84 6b03a847 Sofia Papagiannaki
                     'has_credits':user.has_credits,
85 6b03a847 Sofia Papagiannaki
                     'groups':[g.name for g in user.groups.all()],
86 6b03a847 Sofia Papagiannaki
                     'user_permissions':[p.codename for p in user.user_permissions.all()]}
87 6b03a847 Sofia Papagiannaki
        response.content = json.dumps(user_info)
88 6b03a847 Sofia Papagiannaki
        response['Content-Type'] = 'application/json; charset=UTF-8'
89 6b03a847 Sofia Papagiannaki
        response['Content-Length'] = len(response.content)
90 6b03a847 Sofia Papagiannaki
        return response