def append(self, related): if self.is_source(): args = [self.obj, related, self.relation.name] else: args = [related, self.obj, self.relation.name] ObjectMap.default().connect(*args)
def save(self): """ Overload model's save() """ # Get previous version if self.id: old = ManagedObject.objects.get(id=self.id) else: old = None # Save super(ManagedObject, self).save() # IPAM sync if self.object_profile.sync_ipam: self.sync_ipam() # Notify changes if ((old is None and self.trap_source_ip) or (old and self.trap_source_ip != old.trap_source_ip) or (old and self.activator.id != old.activator.id)): self.sae_refresh_event_filter() # Notify new object if old is None: SelectorCache.rebuild_for_object(self) self.event(self.EV_NEW, {"object": self}) if not self.collector or not self.trap_source_ip: # Remove from object mappings ObjectMap.delete_map(self) else: # Add to object mappings ObjectMap.update_map( self, self.collector, self.trap_source_ip)
def _clear(self): if self.is_source(): ids = ObjectMap.default().targets(self.obj, self.relation.name) else: ids = ObjectMap.default().sources(self.obj, self.relation.name) for objid in list(ids): ObjectMap.default().disconnect(self.obj, objid, self.relation.name)
def __init__(self, name): self.name = name ObjectMap.default().add(self) self.db[self.__objectid__] = self
def __iter__(self): if self.is_source(): return ObjectMap.default().targets(self.obj, self.relation.name) else: return ObjectMap.default().sources(self.obj, self.relation.name)