diff --git a/pagure/templates/add_token.html b/pagure/templates/add_token.html new file mode 100644 index 0000000..6c397a0 --- /dev/null +++ b/pagure/templates/add_token.html @@ -0,0 +1,36 @@ +{% extends "master.html" %} +{% from "_formhelper.html" import render_field_in_row %} + +{% block title %}Create token{% endblock %} +{%block tag %}home{% endblock %} + + +{% block content %} + +

Create a new token

+ +
+
+ + + {% for acl in acls %} + + + + + {% endfor %} +
+ + {{ acl.description }}
+

+ + + {{ form.csrf_token }} +

+
+
+ +{% endblock %} diff --git a/pagure/ui/repo.py b/pagure/ui/repo.py index e396789..2900ca1 100644 --- a/pagure/ui/repo.py +++ b/pagure/ui/repo.py @@ -986,3 +986,51 @@ def regenerate_git(repo, username=None): return flask.redirect( flask.url_for('.view_settings', repo=repo.name, username=username) ) + + +@APP.route('//token/new', methods=('GET', 'POST')) +@APP.route('/fork///token/new', methods=('GET', 'POST')) +@cla_required +def add_token(repo, username=None): + """ Add a token to a specified 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') + + acls = pagure.lib.get_acls(SESSION) + form = pagure.forms.NewTokenForm(acls=acls) + + print flask.request.form + if form.validate_on_submit(): + print form.acls.data + try: + msg = pagure.lib.add_token_to_user( + SESSION, + repo, + acls=form.acls.data, + username=flask.g.fas_user.username, + ) + SESSION.commit() + flask.flash(msg) + return flask.redirect( + flask.url_for( + '.view_settings', repo=repo.name, username=username) + ) + except SQLAlchemyError as err: # pragma: no cover + SESSION.rollback() + APP.logger.exception(err) + flask.flash('User could not be added', 'error') + + return flask.render_template( + 'add_token.html', + form=form, + acls=acls, + username=username, + repo=repo, + )