Example #1
0
    def post(self, request):
        odlc_proto = interop_api_pb2.Odlc()
        try:
            json_format.Parse(request.body, odlc_proto)
        except Exception as e:
            return HttpResponseBadRequest(
                'Failed to parse request. Error: %s' % str(e))
        # Validate ODLC proto fields.
        try:
            validate_odlc_proto(odlc_proto)
        except ValueError as e:
            return HttpResponseBadRequest(str(e))
        # Cannot set ODLC ID on a post.
        if odlc_proto.HasField('id'):
            return HttpResponseBadRequest(
                'Cannot specify ID for POST request.')

        # Check that there aren't too many ODLCs uploaded already.
        odlc_count = Odlc.objects.filter(user=request.user).filter(
            mission=odlc_proto.mission).count()
        if odlc_count >= ODLC_UPLOAD_LIMIT:
            return HttpResponseBadRequest(
                'Reached upload limit for ODLCs for mission.')

        # Build the ODLC object from the request.
        odlc = Odlc()
        odlc.user = request.user
        update_odlc_from_proto(odlc, odlc_proto)
        odlc.save()

        return HttpResponse(json_format.MessageToJson(odlc_to_proto(odlc)),
                            content_type="application/json")
Example #2
0
    def post(self, request):
        odlc_proto = interop_api_pb2.Odlc()
        try:
            json_format.Parse(request.body, odlc_proto)
        except Exception as e:
            return HttpResponseBadRequest(
                'Failed to parse request. Error: %s' % str(e))
        # Validate ODLC proto fields.
        try:
            validate_odlc_proto(odlc_proto)
        except ValueError as e:
            return HttpResponseBadRequest(str(e))
        # Cannot set ODLC ID on a post.
        if odlc_proto.HasField('id'):
            return HttpResponseBadRequest(
                'Cannot specify ID for POST request.')

        # Build the ODLC object from the request.
        odlc = Odlc()
        odlc.user = request.user
        update_odlc_from_proto(odlc, odlc_proto)
        odlc.save()

        return HttpResponse(json_format.MessageToJson(odlc_to_proto(odlc)),
                            content_type="application/json")