Revision c700f742 snf-astakos-app/astakos/im/api/service.py

b/snf-astakos-app/astakos/im/api/service.py
38 38

  
39 39
from django.http import HttpResponse
40 40
from django.views.decorators.csrf import csrf_exempt
41
from django.utils import simplejson as json
41 42

  
42
from astakos.im.api.faults import Fault, Unauthorized, InternalServerError, BadRequest
43
from astakos.im.api import render_fault, _get_user_by_email, _get_user_by_username
43
from . import render_fault
44
from .faults import (
45
    Fault, Unauthorized, InternalServerError, BadRequest, ItemNotFound)
44 46
from astakos.im.models import AstakosUser, Service
45 47
from astakos.im.forms import FeedbackForm
46 48
from astakos.im.functions import send_feedback as send_feedback_func
......
81 83

  
82 84

  
83 85
@api_method(http_method='GET', token_required=True)
84
def get_user_by_email(request, user=None):
86
def get_user_info(request):
85 87
    # Normal Response Codes: 200
86 88
    # Error Response Codes: internalServerError (500)
87 89
    #                       badRequest (400)
88 90
    #                       unauthorised (401)
89
    #                       forbidden (403)
90 91
    #                       itemNotFound (404)
91
    email = request.GET.get('name')
92
    return _get_user_by_email(email)
93

  
94

  
95
@api_method(http_method='GET', token_required=True)
96
def get_user_by_username(request, user_id, user=None):
97
    # Normal Response Codes: 200
98
    # Error Response Codes: internalServerError (500)
99
    #                       badRequest (400)
100
    #                       unauthorised (401)
101
    #                       forbidden (403)
102
    #                       itemNotFound (404)
103
    return _get_user_by_username(user_id)
92
    username = request.META.get('HTTP_X_USER_USERNAME')
93
    uuid = request.META.get('HTTP_X_USER_UUID')
94
    if not username and not uuid:
95
        raise BadRequest('Either username or uuid is required.')
96

  
97
    query = AstakosUser.objects.all()
98
    user_info = None
99
    if username:
100
        try:
101
            #user = query.get(username__iexact=username)
102
            user = query.get(username__iexact=username[:30])
103
        except AstakosUser.DoesNotExist:
104
            raise ItemNotFound('Invalid username: %s' % username)
105
        else:
106
            user_info = {'uuid': user.uuid}
107
    else:
108
        try:
109
            user = query.get(uuid=uuid)
110
        except AstakosUser.DoesNotExist:
111
            raise ItemNotFound('Invalid uuid: %s' % uuid)
112
        else:
113
            user_info = {'username': user.username}
114

  
115
    response = HttpResponse()
116
    response.status = 200
117
    response.content = json.dumps(user_info)
118
    response['Content-Type'] = 'application/json; charset=UTF-8'
119
    response['Content-Length'] = len(response.content)
120
    return response
104 121

  
105 122

  
106 123
@csrf_exempt

Also available in: Unified diff