Gracefully handle when self.observer is absent
After pickles / deepcopying etc..
This commit is contained in:
		| @@ -1135,7 +1135,8 @@ class DataObserver(object): | ||||
|         self.name = name | ||||
|  | ||||
|     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): | ||||
| @@ -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) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user