예제 #1
0
 def test_widget_from_json_obj(self):
     with self.assertRaises(jsonschema.exceptions.ValidationError,
                            msg='invalid should fail'):
         Widget.from_json_obj({"Name": 5, "Creted": "dfgdfggdf"})
     sample_widget_json_rep = {
         "name": "sample",
         "num_of_parts": 5,
         "created_date": "2012-06-14",
         "updated_date": "2021-04-25",
         "an_extra_prop": 55555,
         "a_complex_extra_prop": {
             "stuff": [4.1, "eggs", [3, "spam"]]
         }
     }
     self.assertEqual(Widget.from_json_obj(sample_widget_json_rep),
                      self.sample_widget)
예제 #2
0
def put_widget(widget_name):
    try:
        try:  # if this succeeds, the widget already exists and is getting updated
            if not request.is_json:
                raise ValueError('request body was not parseable json')
            old_widget = get_widget_store().get_widget_by_name(widget_name)
            new_widget_json_obj = request.get_json()
            new_widget_json_obj.update({
                "updated_date":
                datetime.today().strftime("%Y-%m-%d"),
                "created_date":
                old_widget["Created date"]
            })
            new_widget = Widget.from_json_obj(new_widget_json_obj)
            get_widget_store().put_widget(new_widget)
            return jsonify(new_widget_json_obj), 200
        except LookupError:  # if we're here, a new widget is getting created
            new_widget_json_obj = request.get_json()
            new_widget_json_obj.update({
                "created_date":
                datetime.today().strftime("%Y-%m-%d"),
                "updated_date":
                datetime.today().strftime("%Y-%m-%d")
            })
            new_widget = Widget.from_json_obj(new_widget_json_obj)
            get_widget_store().put_widget(new_widget)
            return jsonify(new_widget_json_obj), 201
    except jsonschema.exceptions.ValidationError as ve:
        return (jsonify({
            "error class": "invalid widget representation",
            "uri": request.path,
            "cause": ve.message
        }), 400)
    except Exception:
        app.logger.exception('Unexpected exception')
        abort(500)
예제 #3
0
def add_widgets():
    try:
        new_widget_json_objs = request.get_json()
        for new_widget_json_obj in new_widget_json_objs:
            new_widget_json_obj.update({
                "updated_date":
                datetime.today().strftime("%Y-%m-%d"),
                "created_date":
                datetime.today().strftime("%Y-%m-%d")
            })
        new_widgets = [Widget.from_json_obj(w) for w in new_widget_json_objs]
        get_widget_store().put_widgets(new_widgets)
        return jsonify(new_widget_json_objs), 200
    except jsonschema.exceptions.ValidationError as ve:
        return (jsonify({
            "error class": "invalid widget representation",
            "uri": request.path,
            "cause": ve.message
        }), 400)
    except Exception:
        app.logger.exception('Unexpected exception')
        abort(500)