From 754b1df99f5e0f363bff33ea1c6dd552bac1c2f9 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Jul 04 2016 08:28:33 +0000 Subject: Fix adding groups to a project when groups aren't managed in pagure --- diff --git a/pagure/lib/__init__.py b/pagure/lib/__init__.py index 08d9781..9ab1b95 100644 --- a/pagure/lib/__init__.py +++ b/pagure/lib/__init__.py @@ -753,22 +753,34 @@ def add_user_to_project(session, project, new_user, user): return 'User added' -def add_group_to_project(session, project, new_group, user): +def add_group_to_project( + session, project, new_group, user, create=False, is_admin=False): ''' Add a specified group to a specified project. ''' - group_obj = search_groups(session, group_name=new_group) - - if not group_obj: - raise pagure.exceptions.PagureException( - 'No group %s found.' % new_group - ) - user_obj = search_user(session, username=user) if not user_obj: raise pagure.exceptions.PagureException( 'No user %s found.' % user ) - if user_obj not in project.users and user_obj != project.user: + group_obj = search_groups(session, group_name=new_group) + + if not group_obj: + if create: + group_obj = pagure.lib.model.PagureGroup( + group_name=new_group, + group_type='user', + user_id=user_obj.id, + ) + session.add(group_obj) + session.flush() + else: + raise pagure.exceptions.PagureException( + 'No group %s found.' % new_group + ) + + if user_obj not in project.users \ + and user_obj != project.user \ + and not is_admin: raise pagure.exceptions.PagureException( 'You are not allowed to add a group of users to this project' ) diff --git a/pagure/templates/add_group_project.html b/pagure/templates/add_group_project.html index c42bbba..6720977 100644 --- a/pagure/templates/add_group_project.html +++ b/pagure/templates/add_group_project.html @@ -52,7 +52,7 @@ $( document ).ready(function() { labelField: 'group', searchField: 'group', maxItems: 1, - create: false, + create: true, load: function(query, callback) { if (!query.length) return callback(); $.getJSON( diff --git a/pagure/ui/repo.py b/pagure/ui/repo.py index 97a6b5d..f8e9489 100644 --- a/pagure/ui/repo.py +++ b/pagure/ui/repo.py @@ -1607,6 +1607,8 @@ def add_group_project(repo, username=None): SESSION, repo, new_group=form.group.data, user=flask.g.fas_user.username, + create=not pagure.APP.config.get('ENABLE_GROUP_MNGT', False), + is_admin=pagure.is_admin(), ) SESSION.commit() pagure.lib.git.generate_gitolite_acls()