- @property
- def _added_attribute_registry(self):
- if not hasattr(self, '_real_added_attribute_registry'):
- self._real_added_attribute_registry = {}
- return self._real_added_attribute_registry
-
- @property
- def _removed_attribute_registry(self):
- if not hasattr(self, '_real_removed_attribute_registry'):
- self._real_removed_attribute_registry = []
- return self._real_removed_attribute_registry
-
- def save(self, *args, **kwargs):
- super(Entity, self).save(*args, **kwargs)
-
- for key in self._removed_attribute_registry:
- self.attribute_set.filter(key__exact=key).delete()
- del self._removed_attribute_registry[:]
-
- for field, value in self._added_attribute_registry.items():
- try:
- attribute = self.attribute_set.get(key__exact=field.key)
- except Attribute.DoesNotExist:
- attribute = Attribute()
- attribute.entity = self
- attribute.key = field.key
-
- field.set_attribute_value(attribute, value)
- attribute.save()
- self._added_attribute_registry.clear()
-