def group_lists(): ''' List all the groups associated with all the projects. ''' if not pagure.APP.config.get('ENABLE_USER_MNGT', True): flask.abort(404) group_type = 'user' if pagure.is_admin(): group_type = None groups = pagure.lib.search_groups(pagure.SESSION, group_type=group_type) group_types = ['user'] if pagure.is_admin(): group_types = [ grp.group_type for grp in pagure.lib.get_group_types(pagure.SESSION) ] # Make sure the admin type is always the last one group_types.remove('admin') group_types.append('admin') form = pagure.forms.NewGroupForm(group_types=group_types) return flask.render_template( 'group_list.html', groups=groups, form=form, )
def view_group(group): ''' Displays information about this group. ''' if flask.request.method == 'POST' and \ not pagure.APP.config.get('ENABLE_USER_MNGT', True): flask.abort(404) group_type = 'user' if pagure.is_admin(): group_type = None group = pagure.lib.search_groups( pagure.SESSION, group_name=group, group_type=group_type) if not group: flask.abort(404, 'Group not found') # Add new user to the group if asked form = pagure.forms.AddUserForm() if pagure.authenticated() and form.validate_on_submit() \ and pagure.APP.config.get('ENABLE_GROUP_MNGT', False): username = form.user.data try: msg = pagure.lib.add_user_to_group( pagure.SESSION, username=username, group=group, user=flask.g.fas_user.username, is_admin=pagure.is_admin(), ) pagure.SESSION.commit() pagure.lib.git.generate_gitolite_acls() flask.flash(msg) except pagure.exceptions.PagureException as err: pagure.SESSION.rollback() flask.flash(err.message, 'error') return flask.redirect( flask.url_for('.view_group', group=group.group_name)) except SQLAlchemyError as err: # pragma: no cover pagure.SESSION.rollback() flask.flash( 'Could not add user `%s` to group `%s`.' % ( username, group.group_name), 'error') pagure.APP.logger.debug( 'Could not add user `%s` to group `%s`.' % ( username, group.group_name)) pagure.APP.logger.exception(err) member = False if pagure.authenticated(): member = pagure.lib.is_group_member( pagure.SESSION, flask.g.fas_user.username, group.group_name) return flask.render_template( 'group_info.html', group=group, form=form, member=member, )
def add_group(): """ Endpoint to create groups """ if not pagure.APP.config.get('ENABLE_USER_MNGT', True): flask.abort(404) if not pagure.APP.config.get('ENABLE_GROUP_MNGT', False): flask.abort(404) user = pagure.lib.search_user( pagure.SESSION, username=flask.g.fas_user.username) if not user: # pragma: no cover return flask.abort(403) group_types = ['user'] if pagure.is_admin(): group_types = [ grp.group_type for grp in pagure.lib.get_group_types(pagure.SESSION) ] # Make sure the admin type is always the last one group_types.remove('admin') group_types.append('admin') form = pagure.forms.NewGroupForm(group_types=group_types) if not pagure.is_admin(): form.group_type.data = 'user' if form.validate_on_submit(): try: group_name = form.group_name.data msg = pagure.lib.add_group( session=pagure.SESSION, group_name=group_name, group_type=form.group_type.data, user=flask.g.fas_user.username, is_admin=pagure.is_admin(), blacklist=pagure.APP.config['BLACKLISTED_GROUPS'], ) pagure.SESSION.commit() flask.flash('Group `%s` created.' % group_name) flask.flash(msg) return flask.redirect(flask.url_for('.group_lists')) except pagure.exceptions.PagureException as err: pagure.SESSION.rollback() flask.flash(err.message, 'error') except SQLAlchemyError as err: # pragma: no cover pagure.SESSION.rollback() flask.flash('Could not create group.') pagure.APP.logger.debug('Could not create group.') pagure.APP.logger.exception(err) return flask.render_template( 'add_group.html', form=form, )
def add_group(): """ Endpoint to create groups """ if not pagure.APP.config.get('ENABLE_USER_MNGT', True): flask.abort(404) user = pagure.lib.search_user(pagure.SESSION, username=flask.g.fas_user.username) if not user: # pragma: no cover return flask.abort(403) group_types = ['user'] if pagure.is_admin(): group_types = [ grp.group_type for grp in pagure.lib.get_group_types(pagure.SESSION) ] # Make sure the admin type is always the last one group_types.remove('admin') group_types.append('admin') form = pagure.forms.NewGroupForm(group_types=group_types) if not pagure.is_admin(): form.group_type.data = 'user' if form.validate_on_submit(): try: group_name = form.group_name.data msg = pagure.lib.add_group( session=pagure.SESSION, group_name=group_name, group_type=form.group_type.data, user=flask.g.fas_user.username, is_admin=pagure.is_admin(), blacklist=pagure.APP.config['BLACKLISTED_GROUPS'], ) pagure.SESSION.commit() flask.flash('Group `%s` created.' % group_name) flask.flash(msg) return flask.redirect(flask.url_for('.group_lists')) except pagure.exceptions.PagureException as err: pagure.SESSION.rollback() flask.flash(err.message, 'error') except SQLAlchemyError as err: # pragma: no cover pagure.SESSION.rollback() flask.flash('Could not create group.') pagure.APP.logger.debug('Could not create group.') pagure.APP.logger.exception(err) return flask.render_template( 'add_group.html', form=form, )
def group_user_delete(user, group): """ Delete an user from a certain group """ if not pagure.APP.config.get('ENABLE_USER_MNGT', True): flask.abort(404) form = pagure.forms.ConfirmationForm() if form.validate_on_submit(): try: pagure.lib.delete_user_of_group(pagure.SESSION, username=user, groupname=group, user=flask.g.fas_user.username, is_admin=pagure.is_admin()) pagure.SESSION.commit() pagure.lib.git.generate_gitolite_acls() flask.flash('User `%s` removed from the group `%s`' % (user, group)) except pagure.exceptions.PagureException as err: pagure.SESSION.rollback() flask.flash(err.message, 'error') return flask.redirect(flask.url_for('.view_group', group=group)) except SQLAlchemyError as err: # pragma: no cover pagure.SESSION.rollback() flask.flash( 'Could not remove user `%s` from the group `%s`.' % (user.user, group), 'error') pagure.APP.logger.debug( 'Could not remove user `%s` from the group `%s`.' % (user.user, group)) pagure.APP.logger.exception(err) return flask.redirect(flask.url_for('.view_group', group=group))
def group_user_delete(user, group): """ Delete an user from a certain group """ form = pagure.forms.ConfirmationForm() if form.validate_on_submit(): try: pagure.lib.delete_user_of_group( pagure.SESSION, username=user, groupname=group, user=flask.g.fas_user.username, is_admin=pagure.is_admin(), ) pagure.SESSION.commit() pagure.generate_gitolite_acls() flask.flash("User `%s` removed from the group `%s`" % (user, group)) except pagure.exceptions.PagureException, err: pagure.SESSION.rollback() flask.flash(err.message, "error") return flask.redirect(flask.url_for(".view_group", group=group)) except SQLAlchemyError as err: # pragma: no cover pagure.SESSION.rollback() flask.flash("Could not remove user `%s` from the group `%s`." % (user.user, group), "error") pagure.APP.logger.debug("Could not remove user `%s` from the group `%s`." % (user.user, group)) pagure.APP.logger.exception(err)
def group_lists(): """ List all the groups associated with all the projects. """ group_type = "user" if pagure.is_admin(): group_type = None groups = pagure.lib.search_groups(pagure.SESSION, group_type=group_type) group_types = ["user"] if pagure.is_admin(): group_types = [grp.group_type for grp in pagure.lib.get_group_types(pagure.SESSION)] # Make sure the admin type is always the last one group_types.remove("admin") group_types.append("admin") form = pagure.forms.NewGroupForm(group_types=group_types) return flask.render_template("group_list.html", groups=groups, form=form)
def decorated_function(*args, **kwargs): """ Decorated function, actually does the work. """ if admin_session_timedout(): return flask.redirect( flask.url_for('auth_login', next=flask.request.url)) elif not is_admin(): flask.flash('Access restricted', 'error') return flask.redirect(flask.url_for('.index')) return function(*args, **kwargs)
def view_group(group): ''' Displays information about this group. ''' group_type = 'user' if pagure.is_admin(): group_type = None group = pagure.lib.search_groups(pagure.SESSION, group_name=group, group_type=group_type) if not group: flask.abort(404, 'Group not found') # Add new user to the group if asked form = pagure.forms.AddUserForm() if pagure.authenticated() and form.validate_on_submit(): username = form.user.data try: msg = pagure.lib.add_user_to_group( pagure.SESSION, username=username, group=group, user=flask.g.fas_user.username, is_admin=pagure.is_admin(), ) pagure.SESSION.commit() pagure.generate_gitolite_acls() flask.flash(msg) except pagure.exceptions.PagureException, err: pagure.SESSION.rollback() flask.flash(err.message, 'error') return flask.redirect( flask.url_for('.view_group', group=group.group_name)) except SQLAlchemyError as err: # pragma: no cover pagure.SESSION.rollback() flask.flash( 'Could not add user `%s` to group `%s`.' % (username, group.group_name), 'error') pagure.APP.logger.debug('Could not add user `%s` to group `%s`.' % (username, group.group_name)) pagure.APP.logger.exception(err)
def add_group(): """ Endpoint to create groups """ user = pagure.lib.search_user(pagure.SESSION, username=flask.g.fas_user.username) if not user: # pragma: no cover return flask.abort(403) group_types = ["user"] if pagure.is_admin(): group_types = [grp.group_type for grp in pagure.lib.get_group_types(pagure.SESSION)] # Make sure the admin type is always the last one group_types.remove("admin") group_types.append("admin") form = pagure.forms.NewGroupForm(group_types=group_types) if not pagure.is_admin(): form.group_type.data = "user" if form.validate_on_submit(): try: group_name = form.group_name.data msg = pagure.lib.add_group( session=pagure.SESSION, group_name=group_name, group_type=form.group_type.data, user=flask.g.fas_user.username, is_admin=pagure.is_admin(), ) pagure.SESSION.commit() flask.flash("Group `%s` created." % group_name) flask.flash(msg) return flask.redirect(flask.url_for(".group_lists")) except pagure.exceptions.PagureException, err: pagure.SESSION.rollback() flask.flash(err.message, "error") except SQLAlchemyError as err: # pragma: no cover pagure.SESSION.rollback() flask.flash("Could not create group.") pagure.APP.logger.debug("Could not create group.") pagure.APP.logger.exception(err)
def edit_group(group): ''' Allows editing the information about this group. ''' if not pagure.APP.config.get('ENABLE_USER_MNGT', True): flask.abort(404) group_type = 'user' is_admin = pagure.is_admin() if is_admin: group_type = None group = pagure.lib.search_groups( pagure.SESSION, group_name=group, group_type=group_type) if not group: flask.abort(404, 'Group not found') # Edit group info form = pagure.forms.EditGroupForm() if form.validate_on_submit(): try: msg = pagure.lib.edit_group_info( pagure.SESSION, group=group, display_name=form.display_name.data, description=form.description.data, user=flask.g.fas_user.username, is_admin=is_admin, ) pagure.SESSION.commit() flask.flash(msg) return flask.redirect( flask.url_for('.view_group', group=group.group_name)) except pagure.exceptions.PagureException as err: pagure.SESSION.rollback() flask.flash(err.message, 'error') return flask.redirect( flask.url_for('.view_group', group=group.group_name)) except SQLAlchemyError as err: # pragma: no cover pagure.SESSION.rollback() flask.flash( 'Could not edit group `%s`.' % (group.group_name), 'error') pagure.APP.logger.debug( 'Could not edit group `%s`.' % (group.group_name)) pagure.APP.logger.exception(err) elif flask.request.method == 'GET': form.display_name.data = group.display_name form.description.data = group.description return flask.render_template( 'edit_group.html', group=group, form=form, )
def view_group(group): """ Displays information about this group. """ group_type = "user" if pagure.is_admin(): group_type = None group = pagure.lib.search_groups(pagure.SESSION, group_name=group, group_type=group_type) if not group: flask.abort(404, "Group not found") # Add new user to the group if asked form = pagure.forms.AddUserForm() if pagure.authenticated() and form.validate_on_submit(): username = form.user.data try: msg = pagure.lib.add_user_to_group( pagure.SESSION, username=username, group=group, user=flask.g.fas_user.username, is_admin=pagure.is_admin(), ) pagure.SESSION.commit() pagure.generate_gitolite_acls() flask.flash(msg) except pagure.exceptions.PagureException, err: pagure.SESSION.rollback() flask.flash(err.message, "error") return flask.redirect(flask.url_for(".view_group", group=group.group_name)) except SQLAlchemyError as err: # pragma: no cover pagure.SESSION.rollback() flask.flash("Could not add user `%s` to group `%s`." % (username, group.group_name), "error") pagure.APP.logger.debug("Could not add user `%s` to group `%s`." % (username, group.group_name)) pagure.APP.logger.exception(err)
def group_user_delete(user, group): """ Delete an user from a certain group """ if not pagure.APP.config.get('ENABLE_USER_MNGT', True): flask.abort(404) if not pagure.APP.config.get('ENABLE_GROUP_MNGT', False): flask.abort(404) form = pagure.forms.ConfirmationForm() if form.validate_on_submit(): try: pagure.lib.delete_user_of_group( pagure.SESSION, username=user, groupname=group, user=flask.g.fas_user.username, is_admin=pagure.is_admin() ) pagure.SESSION.commit() pagure.lib.git.generate_gitolite_acls() flask.flash( 'User `%s` removed from the group `%s`' % (user, group)) except pagure.exceptions.PagureException as err: pagure.SESSION.rollback() flask.flash(err.message, 'error') return flask.redirect( flask.url_for('.view_group', group=group)) except SQLAlchemyError as err: # pragma: no cover pagure.SESSION.rollback() flask.flash( 'Could not remove user `%s` from the group `%s`.' % ( user.user, group), 'error') pagure.APP.logger.debug( 'Could not remove user `%s` from the group `%s`.' % ( user.user, group)) pagure.APP.logger.exception(err) return flask.redirect(flask.url_for('.view_group', group=group))