Пример #1
0
    def post_quotes(self):
        content_type = self.request.content_type
        body = self.request.body
        print(body)
        if body is None:
            return Response(status=400,
                            content_type="application/json",
                            charset="UTF-8",
                            body=json.dumps({"error": "content not found"}))
        if content_type == "application/json":
            quotes = self.request.json
        else:
            return Response(status=400,
                            content_type="application/json",
                            charset="UTF-8",
                            body=json.dumps(
                                {'error': 'content type must be json'}))

        if type(quotes) is not dict or quotes.values() is None:
            json_format_error = {
                'error':
                'malformed json, ex: {quotes: {quote1: {Flat is better than nested.}'
            }
            return Response(status=400,
                            content_type="application/json",
                            charset="UTF-8",
                            body=json.dumps(json_format_error))

        if len(quotes.items()) > 0:
            print("Quotes to save:", len(quotes.items()))
            try:
                for keys, values in quotes.items():
                    Quote.unpack_and_save_values(data=values)
                return Response(status=201,
                                content_type="application/json",
                                charset="UTF-8")
            except DBAPIError as exec:
                return Response(status=400,
                                content_type="application/json",
                                charset="UTF-8",
                                body=json.dumps({"error": exec.args}))
        else:
            return Response(status=400,
                            content_type="application/json",
                            charset="UTF-8",
                            body=json.dumps({"error": "bad request"}))