def sync_groups_permissions(): """ Synchronize latest permissions and applies them to all existing group repositories Args: None Returns: None """ for repo in Repository.objects.all(): # this needs to be idempotent roles_clear_repo_permissions(repo) roles_init_new_repo(repo)
def add_creator_permission(sender, **kwargs): """ Give the creator of a repository admin permissions over that repository. """ from roles.api import assign_user_to_repo_group, roles_init_new_repo from roles.permissions import GroupTypes instance = kwargs.pop("instance", None) if not kwargs["created"]: return if not isinstance(instance, Repository): return roles_init_new_repo(instance) assign_user_to_repo_group( instance.created_by, instance, GroupTypes.REPO_ADMINISTRATOR, )