diff --git a/kqueen/serializers.py b/kqueen/serializers.py index 6fc0fde8..f78df9a1 100644 --- a/kqueen/serializers.py +++ b/kqueen/serializers.py @@ -1,5 +1,6 @@ from flask.json import JSONEncoder + class CustomJSONEncoder(JSONEncoder): def default(self, obj): diff --git a/kqueen/storages/etcd.py b/kqueen/storages/etcd.py index df0d0994..b1a68806 100644 --- a/kqueen/storages/etcd.py +++ b/kqueen/storages/etcd.py @@ -217,6 +217,22 @@ class IdField(Field): pass +class JSONField(Field): + """JSON is stored as value""" + + def set_value(self, value): + if isinstance(value, str): + self.value = json.loads(value) + elif isinstance(value, dict): + self.value = value + + def serialize(self): + if self.value and isinstance(self.value, dict): + return json.dumps(self.value) + else: + return None + + db = EtcdOrm() # TODO: implement required fields