def container_moved_update_used_space(content, event): """Event called on folder, when they are moved, we want to update the quota on parents folders. """ if content != event.object or IRoot.providedBy(content): # Root is being destroyed, we don't care about quota anymore. return if event.newParent is event.oldParent: # For rename event, we don't need to do something. return service = queryUtility(IExtensionService) if service is None: return verify = service.get_quota_subsystem_status() if verify is None: # Quota accounting is disabled. return size = content.used_space if not size or size < 0: return if event.oldParent and IQuotaContainer.providedBy(event.oldParent): event.oldParent.update_used_space(-size, verify) if event.newParent and IQuotaContainer.providedBy(event.newParent): event.newParent.update_used_space(size, verify)
def content_moved_update_quota(content, event): """Event called on a quotable when they are moved to update quota on parents folders. """ if content != event.object or event.newParent is event.oldParent: return service = queryUtility(IExtensionService) if service is None: return verify = service.get_quota_subsystem_status() if verify is None: # Quota accouting is disabled return size = content.get_quota_usage() if not size or size < 0: return if event.oldParent and IQuotaContainer.providedBy(event.oldParent): event.oldParent.update_used_space(-size, verify) if event.newParent and IQuotaContainer.providedBy(event.newParent): event.newParent.update_used_space(size, verify)
def update_quota(self): parent = aq_parent(self) if IQuotaContainer.providedBy(parent): service = queryUtility(IExtensionService) if service is None: return verify = service.get_quota_subsystem_status() if verify is None: return # Every content must be inside a container (unless they # are inside an image ...). new_size = self.get_quota_usage() if new_size < 0: # Broken quota usage return delta = new_size - self._old_size if delta: parent.update_used_space(delta, verify) self._old_size = new_size