Revision 890c2065 snf-astakos-app/astakos/im/api/service.py

b/snf-astakos-app/astakos/im/api/service.py
40 40
from django.views.decorators.csrf import csrf_exempt
41 41
from django.utils import simplejson as json
42 42

  
43
from . import render_fault
43
from . import render_fault, __get_uuid_displayname_catalog, __send_feedback
44 44
from .faults import (
45 45
    Fault, Unauthorized, InternalServerError, BadRequest, ItemNotFound)
46
from astakos.im.models import AstakosUser, Service
47
from astakos.im.forms import FeedbackForm
48
from astakos.im.functions import send_feedback as send_feedback_func
46
from astakos.im.models import Service
49 47

  
50 48
logger = logging.getLogger(__name__)
51 49

  
......
82 80
        return wrapper
83 81
    return decorator
84 82

  
85

  
86
@api_method(http_method='GET', token_required=True)
87
def get_user_info(request):
83
@csrf_exempt
84
@api_method(http_method='POST', token_required=True)
85
def get_uuid_displayname_catalogs(request):
88 86
    # Normal Response Codes: 200
89 87
    # Error Response Codes: internalServerError (500)
90 88
    #                       badRequest (400)
91 89
    #                       unauthorised (401)
92
    #                       itemNotFound (404)
93
    username = request.META.get('HTTP_X_USER_USERNAME')
94
    uuid = request.META.get('HTTP_X_USER_UUID')
95
    if not username and not uuid:
96
        raise BadRequest('Either username or uuid is required.')
97

  
98
    query = AstakosUser.objects.all()
99
    user_info = None
100
    if username:
101
        try:
102
            user = query.get(username__iexact=username)
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
121 90

  
91
    return __get_uuid_displayname_catalog(request)
122 92

  
123 93
@csrf_exempt
124 94
@api_method(http_method='POST', token_required=True)
......
127 97
    # Error Response Codes: internalServerError (500)
128 98
    #                       badRequest (400)
129 99
    #                       unauthorised (401)
130
    auth_token = request.POST.get('auth', '')
131
    if not auth_token:
132
        raise BadRequest('Missing user authentication')
133

  
134
    user = None
135
    try:
136
        user = AstakosUser.objects.get(auth_token=auth_token)
137
    except:
138
        pass
139

  
140
    if not user:
141
        raise BadRequest('Invalid user authentication')
142

  
143
    form = FeedbackForm(request.POST)
144
    if not form.is_valid():
145
        raise BadRequest('Invalid data')
146 100

  
147
    msg = form.cleaned_data['feedback_msg']
148
    data = form.cleaned_data['feedback_data']
149
    send_feedback_func(msg, data, user, email_template_name)
150
    response = HttpResponse(status=200)
151
    response['Content-Length'] = len(response.content)
152
    return response
101
    return __send_feedback(request, email_template_name)

Also available in: Unified diff