def remove_from_project(self, project, next): """ Similar to L{add_to_project} but does the reverse, deleting the permission from the project using:: from expedient.common.permissions.shortcuts import \ delete_permission delete_permission("can_use_aggregate", self.as_leaf_class(), project) and then redirecting to C{next}. Additionally, if not overridden, this function stops all slices in the project before removing the aggregate. Subclasses should also stop slices. """ must_have_permission("user", self.as_leaf_class(), "can_use_aggregate") prefix = self.__class__.get_url_name_prefix() try: return reverse("%s_aggregate_project_remove" % prefix, kwargs={ 'agg_id': self.id, 'proj_id': project.id }) + "?next=%s" % next except NoReverseMatch: # Stop all the slices in the project for this aggregate. for slice in project.slice_set.all(): try: self.as_leaf_class().stop_slice(slice) except: pass delete_permission("can_use_aggregate", self.as_leaf_class(), project) return next
def remove_from_project(self, project, next): """ Similar to L{add_to_project} but does the reverse, deleting the permission from the project using:: from expedient.common.permissions.shortcuts import \ delete_permission delete_permission("can_use_aggregate", self.as_leaf_class(), project) and then redirecting to C{next}. Additionally, if not overridden, this function stops all slices in the project before removing the aggregate. Subclasses should also stop slices. """ must_have_permission("user", self.as_leaf_class(), "can_use_aggregate") prefix = self.__class__.get_url_name_prefix() try: return reverse("%s_aggregate_project_remove" % prefix, kwargs={'agg_id': self.id, 'proj_id': project.id})+"?next=%s" % next except NoReverseMatch: # Stop all the slices in the project for this aggregate. for slice in project.slice_set.all(): try: self.as_leaf_class().stop_slice(slice) except: pass # Carolina: remove permision for aggregate in every slice inside the project self.remove_from_slice(slice, next) delete_permission("can_use_aggregate", self.as_leaf_class(), project) return next
def remove_from_user(self, user, next): """ Works exactly the same as L{remove_from_project} but for a user. Does not stop any slices. """ prefix = self.__class__.get_url_name_prefix() try: return reverse("%s_aggregate_user_remove" % prefix, kwargs={'agg_id': self.id, 'user_id': user.id})+"?next=%s" % next except NoReverseMatch: delete_permission("can_use_aggregate", self.as_leaf_class(), user) return next
def remove_from_slice(self, slice, next): """ Works exactly the same as L{remove_from_project} but for a slice. It stops the slice if not overridden. Subclasses should stop the slice before removing the permission. """ must_have_permission("user", self.as_leaf_class(), "can_use_aggregate") must_have_permission("project", self.as_leaf_class(), "can_use_aggregate") prefix = self.__class__.get_url_name_prefix() try: return reverse("%s_aggregate_slice_remove" % prefix, kwargs={'agg_id': self.id, 'slice_id': slice.id})+"?next=%s" % next except NoReverseMatch: try: self.as_leaf_class().stop_slice(slice) except: pass delete_permission("can_use_aggregate", self.as_leaf_class(), slice) return next