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