Revision bd40abfa snf-astakos-app/astakos/im/api/user.py

b/snf-astakos-app/astakos/im/api/user.py
1
# Copyright 2011-2012 GRNET S.A. All rights reserved.
1
# Copyright 2011-2013 GRNET S.A. All rights reserved.
2 2
#
3 3
# Redistribution and use in source and binary forms, with or
4 4
# without modification, are permitted provided that the following
......
40 40
from django.utils import simplejson as json
41 41
from django.views.decorators.csrf import csrf_exempt
42 42

  
43
from .faults import (
44
    Fault, Unauthorized, InternalServerError, BadRequest, Forbidden)
43
from snf_django.lib.api import faults
45 44
from . import render_fault, __get_uuid_displayname_catalogs, __send_feedback
46 45

  
47 46
from astakos.im.models import AstakosUser
......
64 63
        def wrapper(request, *args, **kwargs):
65 64
            try:
66 65
                if http_method and request.method != http_method:
67
                    raise BadRequest('Method not allowed.')
66
                    raise faults.BadRequest('Method not allowed.')
68 67
                x_auth_token = request.META.get('HTTP_X_AUTH_TOKEN')
69 68
                if token_required:
70 69
                    if not x_auth_token:
71
                        raise Unauthorized('Access denied')
70
                        raise faults.Unauthorized('Access denied')
72 71
                    try:
73 72
                        user = AstakosUser.objects.get(auth_token=x_auth_token)
74 73
                        if not user.has_perms(perms):
75
                            raise Forbidden('Unauthorized request')
74
                            raise faults.Forbidden('Unauthorized request')
76 75
                    except AstakosUser.DoesNotExist, e:
77
                        raise Unauthorized('Invalid X-Auth-Token')
76
                        raise faults.Unauthorized('Invalid X-Auth-Token')
78 77
                    kwargs['user'] = user
79 78
                response = func(request, *args, **kwargs)
80 79
                return response
81
            except Fault, fault:
80
            except faults.Fault, fault:
82 81
                return render_fault(request, fault)
83 82
            except BaseException, e:
84 83
                logger.exception('Unexpected error: %s' % e)
85
                fault = InternalServerError('Unexpected error')
84
                fault = faults.InternalServerError('Unexpected error')
86 85
                return render_fault(request, fault)
87 86
        return wrapper
88 87
    return decorator
......
95 94
    #                       badRequest (400)
96 95
    #                       unauthorised (401)
97 96
    if not user:
98
        raise BadRequest('No user')
97
        raise faults.BadRequest('No user')
99 98

  
100 99
    # Check if the is active.
101 100
    if not user.is_active:
102
        raise Unauthorized('User inactive')
101
        raise faults.Unauthorized('User inactive')
103 102

  
104 103
    # Check if the token has expired.
105 104
    if (time() - mktime(user.auth_token_expires.timetuple())) > 0:
106
        raise Unauthorized('Authentication expired')
105
        raise faults.Unauthorized('Authentication expired')
107 106

  
108 107
    if not user.signed_terms:
109
        raise Unauthorized('Pending approval terms')
108
        raise faults.Unauthorized('Pending approval terms')
110 109

  
111 110
    response = HttpResponse()
112 111
    user_info = {
......
135 134
    response['Content-Length'] = len(response.content)
136 135
    return response
137 136

  
137

  
138 138
@csrf_exempt
139 139
@api_method(http_method='POST', token_required=True)
140 140
def get_uuid_displayname_catalogs(request, user=None):
......
145 145

  
146 146
    return __get_uuid_displayname_catalogs(request)
147 147

  
148

  
148 149
@csrf_exempt
149 150
@api_method(http_method='POST', token_required=True)
150
def send_feedback(request, email_template_name='im/feedback_mail.txt', user=None):
151
def send_feedback(request, email_template_name='im/feedback_mail.txt',
152
                  user=None):
151 153
    # Normal Response Codes: 200
152 154
    # Error Response Codes: internalServerError (500)
153 155
    #                       badRequest (400)

Also available in: Unified diff