Gracefully handle when self.observer is absent
After pickles / deepcopying etc..
This commit is contained in:
parent
83fff80b0f
commit
0075c0a1e8
@ -1135,7 +1135,8 @@ class DataObserver(object):
|
|||||||
self.name = name
|
self.name = name
|
||||||
|
|
||||||
def updated(self):
|
def updated(self):
|
||||||
self.instance._mark_as_changed(self.name)
|
if hasattr(self.instance, '_mark_as_changed'):
|
||||||
|
self.instance._mark_as_changed(self.name)
|
||||||
|
|
||||||
|
|
||||||
class BaseList(list):
|
class BaseList(list):
|
||||||
@ -1146,6 +1147,11 @@ class BaseList(list):
|
|||||||
self.observer = observer
|
self.observer = observer
|
||||||
super(BaseList, self).__init__(list_items)
|
super(BaseList, self).__init__(list_items)
|
||||||
|
|
||||||
|
def __getattribute__(self, name):
|
||||||
|
if name == 'observer' and not hasattr(self, 'observer'):
|
||||||
|
self.observer = DataObserver(None, None)
|
||||||
|
return super(BaseList, self).__getattribute__(name)
|
||||||
|
|
||||||
def __setitem__(self, *args, **kwargs):
|
def __setitem__(self, *args, **kwargs):
|
||||||
self.observer.updated()
|
self.observer.updated()
|
||||||
super(BaseList, self).__setitem__(*args, **kwargs)
|
super(BaseList, self).__setitem__(*args, **kwargs)
|
||||||
@ -1198,6 +1204,11 @@ class BaseDict(dict):
|
|||||||
self.observer = observer
|
self.observer = observer
|
||||||
super(BaseDict, self).__init__(dict_items)
|
super(BaseDict, self).__init__(dict_items)
|
||||||
|
|
||||||
|
def __getattribute__(self, name):
|
||||||
|
if name == 'observer' and not hasattr(self, 'observer'):
|
||||||
|
self.observer = DataObserver(None, None)
|
||||||
|
return super(BaseList, self).__getattribute__(name)
|
||||||
|
|
||||||
def __setitem__(self, *args, **kwargs):
|
def __setitem__(self, *args, **kwargs):
|
||||||
self.observer.updated()
|
self.observer.updated()
|
||||||
super(BaseDict, self).__setitem__(*args, **kwargs)
|
super(BaseDict, self).__setitem__(*args, **kwargs)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user