From 2e56e5aefd6c599d5c8c358db1d2f8c2d6903dad Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Apr 26 2015 08:25:31 +0000 Subject: Add endpoint in the repo controller to add a group to a project --- diff --git a/pagure/templates/add_group.html b/pagure/templates/add_group.html new file mode 100644 index 0000000..1ef1fd2 --- /dev/null +++ b/pagure/templates/add_group.html @@ -0,0 +1,49 @@ +{% extends "repo_master.html" %} +{% from "_formhelper.html" import render_field_in_row %} + +{% block title %}Add user - {{ repo.name }}{% endblock %} +{%block tag %}home{% endblock %} + + +{% block repo %} + +

Add group

+ +
+
+ + + {{ render_field_in_row(form.group) }} +
+

+ + + {{ form.csrf_token }} +

+
+
+ +{% endblock %} + +{% block jscripts %} +{{ super() }} + +{% endblock %} diff --git a/pagure/ui/repo.py b/pagure/ui/repo.py index d5df7ab..585af9f 100644 --- a/pagure/ui/repo.py +++ b/pagure/ui/repo.py @@ -879,6 +879,58 @@ def add_user(repo, username=None): ) +@APP.route('//addgroup', methods=('GET', 'POST')) +@APP.route('/fork///addgroup', methods=('GET', 'POST')) +@cla_required +def add_group(repo, username=None): + """ Add the specified group from the project. + """ + if admin_session_timedout(): + return flask.redirect( + flask.url_for('auth_login', next=flask.request.url)) + + repo = pagure.lib.get_project(SESSION, repo, user=username) + + if not repo: + flask.abort(404, 'Project not found') + + if not is_repo_admin(repo): + flask.abort( + 403, + 'You are not allowed to add groups to this project') + + form = pagure.forms.AddGroupForm() + + if form.validate_on_submit(): + try: + msg = pagure.lib.add_group_to_project( + SESSION, repo, + new_group=form.group.data, + user=flask.g.fas_user.username, + ) + SESSION.commit() + pagure.generate_gitolite_acls() + flask.flash(msg) + return flask.redirect( + flask.url_for( + '.view_settings', repo=repo.name, username=username) + ) + except pagure.exceptions.PagureException as msg: + SESSION.rollback() + flask.flash(msg, 'error') + except SQLAlchemyError as err: # pragma: no cover + SESSION.rollback() + APP.logger.exception(err) + flask.flash('Group could not be added', 'error') + + return flask.render_template( + 'add_group.html', + form=form, + username=username, + repo=repo, + ) + + @APP.route('//regenerate', methods=['POST']) @APP.route('/fork///regenerate', methods=['POST']) @cla_required