Simplify the code for picking json serialization functions to expose the logic better

This commit is contained in:
Jason Grout 2014-07-22 15:21:28 +00:00
parent 06084e996c
commit 97141c6bca

View File

@ -198,11 +198,10 @@ class Widget(LoggingConfigurable):
state = {} state = {}
for k in keys: for k in keys:
f = self.trait_metadata(k, 'serialize') f = self.trait_metadata(k, 'serialize')
value = getattr(self, k) if f is None:
if f is not None: f = self._serialize_trait
state[k] = f(value) value = getattr(self, k)
else: state[k] = f(value)
state[k] = self._serialize_trait(value)
return state return state
def send(self, content): def send(self, content):
@ -289,10 +288,9 @@ class Widget(LoggingConfigurable):
for name in self.keys: for name in self.keys:
if name in sync_data: if name in sync_data:
f = self.trait_metadata(name, 'deserialize') f = self.trait_metadata(name, 'deserialize')
if f is not None: if f is None:
value = f(sync_data[name]) f = self._deserialize_trait
else: value = f(sync_data[name])
value = self._deserialize_trait(sync_data[name])
with self._lock_property(name, value): with self._lock_property(name, value):
setattr(self, name, value) setattr(self, name, value)