예제 #1
0
def is_valid_session(request):
    if hatoholserver.SESSION_NAME_META not in request.META:
        return False
    session_id = request.META[hatoholserver.SESSION_NAME_META]

    user_id = get_user_id_from_hatohol_server(session_id)
    return user_id is not None
예제 #2
0
def is_valid_session(request):
    try:
        user_id = get_user_id_from_hatohol_server(request)
        return True
    except:
        return False
예제 #3
0
def json_settings_handler(request, id, model_class, view_path):

    content_type = 'application/json'

    try:
        user_id = get_user_id_from_hatohol_server(request)
    except (NoHatoholUser, NoHatoholSession):
        return http.HttpResponseForbidden(content_type=content_type)

    if request.method == 'POST':
        unicode_body = smart_text(request.body, encoding=request.encoding)
        model = model_class(user_id=user_id, settings_json=unicode_body)
        try:
            model.full_clean()
        except ValidationError as e:
            return http.HttpResponseBadRequest(json.dumps(e.messages),
                                               content_type=content_type)
        model.save()
        response = http.HttpResponse(to_json(model),
                                     content_type=content_type,
                                     status=201)
        response['Location'] = reverse('hatohol.views.graphs', args=[model.id])
        return response
    elif request.method == 'PUT':
        if id is None:
            message = 'id is required'
            return http.HttpResponseBadRequest(to_json(message),
                                               content_type=content_type)
        try:
            unicode_body = smart_text(request.body, encoding=request.encoding)
            model = model_class.objects.get(id=id)
            if model.user_id != user_id:
                return http.HttpResponseForbidden(content_type=content_type)
            model.settings_json = unicode_body
            model.full_clean()
            model.save()
            return http.HttpResponse(to_json(model), content_type=content_type)
        except model_class.DoesNotExist:
            return http.HttpResponseNotFound(content_type=content_type)
        except ValidationError as e:
            return http.HttpResponseBadRequest(json.dumps(e.messages),
                                               content_type=content_type)
    elif request.method == 'DELETE':
        if id is None:
            message = 'id is required'
            return http.HttpResponseBadRequest(to_json(message),
                                               content_type=content_type)
        try:
            model = model_class.objects.get(id=id)
        except model_class.DoesNotExist:
            return http.HttpResponseNotFound()
        else:
            if model.user_id != user_id:
                return http.HttpResponseForbidden(content_type=content_type)
            model.delete()
            return http.HttpResponse()
    else:
        if id:
            try:
                model = model_class.objects.get(id=id)
            except model_class.DoesNotExist:
                return http.HttpResponseNotFound()
            if model.user_id != user_id:
                return http.HttpResponseForbidden(content_type=content_type)
            response = model
        else:
            models = model_class.objects.filter(user_id=user_id).order_by('id')
            response = models
        return http.HttpResponse(to_json(response), content_type=content_type)
예제 #4
0
파일: views.py 프로젝트: Rkumagaya/hatohol
def is_valid_session(request):
    try:
        user_id = get_user_id_from_hatohol_server(request)
        return True
    except:
        return False
예제 #5
0
파일: views.py 프로젝트: Rkumagaya/hatohol
def json_settings_handler(request, id, model_class, view_path):

    content_type = 'application/json'

    try:
        user_id = get_user_id_from_hatohol_server(request)
    except (NoHatoholUser, NoHatoholSession):
        return http.HttpResponseForbidden(content_type=content_type)

    if request.method == 'POST':
        unicode_body = smart_text(request.body, encoding=request.encoding)
        model = model_class(user_id=user_id, settings_json=unicode_body)
        try:
            model.full_clean()
        except ValidationError as e:
            return http.HttpResponseBadRequest(json.dumps(e.messages),
                                               content_type=content_type)
        model.save()
        response = http.HttpResponse(to_json(model),
                                     content_type=content_type,
                                     status=201)
        response['Location'] = reverse(view_path, args=[model.id])
        return response
    elif request.method == 'PUT':
        if id is None:
            message = 'id is required'
            return http.HttpResponseBadRequest(to_json(message),
                                               content_type=content_type)
        try:
            unicode_body = smart_text(request.body, encoding=request.encoding)
            model = model_class.objects.get(id=id)
            if model.user_id != user_id:
                return http.HttpResponseForbidden(content_type=content_type)
            model.settings_json = unicode_body
            model.full_clean()
            model.save()
            return http.HttpResponse(to_json(model),
                                     content_type=content_type)
        except model_class.DoesNotExist:
            return http.HttpResponseNotFound(content_type=content_type)
        except ValidationError as e:
            return http.HttpResponseBadRequest(json.dumps(e.messages),
                                               content_type=content_type)
    elif request.method == 'DELETE':
        if id is None:
            message = 'id is required'
            return http.HttpResponseBadRequest(to_json(message),
                                               content_type=content_type)
        try:
            model = model_class.objects.get(id=id)
        except model_class.DoesNotExist:
            return http.HttpResponseNotFound()
        else:
            if model.user_id != user_id:
                return http.HttpResponseForbidden(content_type=content_type)
            model.delete()
            return http.HttpResponse()
    else:
        if id:
            try:
                model = model_class.objects.get(id=id)
            except model_class.DoesNotExist:
                return http.HttpResponseNotFound()
            if model.user_id != user_id:
                return http.HttpResponseForbidden(content_type=content_type)
            response = model
        else:
            models = model_class.objects.filter(user_id=user_id).order_by('id')
            response = models
        return http.HttpResponse(to_json(response), content_type=content_type)
예제 #6
0
def graphs(request, id):

    content_type = 'application/json'

    try:
        user_id = get_user_id_from_hatohol_server(request)
    except (NoHatoholUser, NoHatoholSession):
        return http.HttpResponseForbidden(content_type=content_type)

    if request.method == 'POST':
        graph = Graph(user_id=user_id, settings_json=request.body)
        try:
            graph.full_clean()
        except ValidationError as e:
            return http.HttpResponseBadRequest(json.dumps(e.messages),
                                               content_type=content_type)
        graph.save()
        response = http.HttpResponse(to_json(graph),
                                     content_type=content_type,
                                     status=201)
        response['Location'] = reverse('hatohol.views.graphs',
                                       args=[graph.id])
        return response
    elif request.method == 'PUT':
        if id is None:
            message = 'id is required'
            return http.HttpResponseBadRequest(to_json(message),
                                               content_type=content_type)
        try:
            graph = Graph.objects.get(id=id)
            if graph.user_id != user_id:
                return http.HttpResponseForbidden(content_type=content_type)
            graph.settings_json = request.body
            graph.full_clean()
            graph.save()
            return http.HttpResponse(to_json(graph),
                                     content_type=content_type)
        except Graph.DoesNotExist:
            return http.HttpResponseNotFound(content_type=content_type)
        except ValidationError as e:
            return http.HttpResponseBadRequest(json.dumps(e.messages),
                                               content_type=content_type)
    elif request.method == 'DELETE':
        if id is None:
            message = 'id is required'
            return http.HttpResponseBadRequest(to_json(message),
                                               content_type=content_type)
        try:
            graph = Graph.objects.get(id=id)
        except Graph.DoesNotExist:
            return http.HttpResponseNotFound()
        else:
            if graph.user_id != user_id:
                return http.HttpResponseForbidden(content_type=content_type)
            graph.delete()
            return http.HttpResponse()
    else:
        if id:
            try:
                graph = Graph.objects.get(id=id)
            except Graph.DoesNotExist:
                return http.HttpResponseNotFound()
            if graph.user_id != user_id:
                return http.HttpResponseForbidden(content_type=content_type)
            response = graph
        else:
            graphs = Graph.objects.filter(user_id=user_id).order_by('id')
            response = graphs
        return http.HttpResponse(to_json(response), content_type=content_type)