コード例 #1
0
ファイル: models.py プロジェクト: cargious/ocf
    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
コード例 #2
0
 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
コード例 #3
0
ファイル: models.py プロジェクト: pentikousis/C-BAS-framework
 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
コード例 #4
0
ファイル: models.py プロジェクト: pentikousis/C-BAS-framework
    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