From 46a366e013ab987a8cf3268c53475bb7adfb130e Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Apr 26 2015 08:12:07 +0000 Subject: Move the group logic code from the login controller into the admin controller --- diff --git a/pagure/ui/admin.py b/pagure/ui/admin.py index beaba6d..c161927 100644 --- a/pagure/ui/admin.py +++ b/pagure/ui/admin.py @@ -83,3 +83,152 @@ def admin_generate_hook_token(): pagure.lib.generate_hook_token(SESSION) flask.flash('Hook token all re-generated') return flask.redirect(flask.url_for('admin_index')) + + + +@APP.route('/admin/groups', methods=['GET', 'POST']) +@admin_required +def admin_groups(): + """ List of the groups present in the system + """ + # Add new group if asked + grp_types = [ + grp.grp_type + for grp in pagure.lib.get_group_types(SESSION) + ] + # Make sure the admin type is always the last one + grp_types.remove('admin') + grp_types.append('admin') + form = forms.NewGroupForm(grp_types=grp_types) + user = pagure.lib.search_user(SESSION, username=flask.g.fas_user.username) + if not user: + return flask.abort(403) + + if form.validate_on_submit(): + grp = model.PagureGroup() + form.populate_obj(obj=grp) + grp.user_id = user.id + SESSION.add(grp) + try: + SESSION.flush() + flask.flash('Group `%s` created.' % grp.group_name) + except SQLAlchemyError as err: + SESSION.rollback() + flask.flash('Could not create group.') + APP.logger.debug('Could not create group.') + APP.logger.exception(err) + + SESSION.commit() + + groups = pagure.lib.login.get_groups(SESSION) + + return flask.render_template( + 'login/admin_groups.html', + groups=groups, + form=form, + conf_form=forms.ConfirmationForm(), + ) + + +@APP.route('/admin/group/', methods=['GET', 'POST']) +@admin_required +def admin_group(group): + """ List of the users in a certain group + """ + group_obj = pagure.lib.login.get_group(SESSION, group) + + if not group_obj: + flask.flash('No group `%s` found' % group, 'error') + return flask.redirect(flask.url_for('.admin_groups')) + + # Add new user to the group if asked + form = forms.LostPasswordForm() + if form.validate_on_submit(): + user = pagure.lib.search_user(SESSION, username=form.username.data) + if not user: + flask.flash('No user `%s` found' % form.username.data, 'error') + return flask.redirect(flask.url_for('.admin_group', group=group)) + + grp = model.PagureUserGroup( + group_id=group_obj.id, + user_id=user.id + ) + SESSION.add(grp) + try: + SESSION.flush() + except SQLAlchemyError as err: + SESSION.rollback() + flask.flash( + 'Could not add user `%s` to group `%s`.' % ( + user.user, group_obj.group), + 'error') + APP.logger.debug( + 'Could not add user `%s` to group `%s`.' % ( + user.user, group_obj.group)) + APP.logger.exception(err) + + flask.flash('User `%s` added.' % user.user) + SESSION.commit() + + users = pagure.lib.login.get_users_by_group(SESSION, group) + + return flask.render_template( + 'login/admin_users.html', + form=form, + conf_form=forms.ConfirmationForm(), + group=group_obj, + users=users, + ) + + +@APP.route('/admin/group///delete', methods=['POST']) +@admin_required +def admin_group_user_delete(user, group): + """ Delete an user from a certain group + """ + # Add new user to the group if asked + form = forms.ConfirmationForm() + if form.validate_on_submit(): + group_obj = pagure.lib.login.get_group(SESSION, group) + + if not group_obj: + flask.flash('No group `%s` found' % group, 'error') + return flask.redirect(flask.url_for('.admin_groups')) + + user = pagure.lib.search_user(SESSION, username=user) + if not user: + flask.flash('No user `%s` found' % user, 'error') + return flask.redirect(flask.url_for('.admin_groups')) + + user_grp = pagure.lib.login.get_user_group( + SESSION, user.id, group_obj.id) + SESSION.delete(user_grp) + + SESSION.commit() + flask.flash( + 'User `%s` removed from the group `%s`' % (user.user, group)) + + return flask.redirect(flask.url_for('.admin_group', group=group)) + + +@APP.route('/admin/group//delete', methods=['POST']) +@admin_required +def admin_group_delete(group): + """ Delete a certain group + """ + # Add new user to the group if asked + form = forms.ConfirmationForm() + if form.validate_on_submit(): + group_obj = pagure.lib.login.get_group(SESSION, group) + + if not group_obj: + flask.flash('No group `%s` found' % group, 'error') + return flask.redirect(flask.url_for('.admin_groups')) + + SESSION.delete(group_obj) + + SESSION.commit() + flask.flash( + 'Group `%s` has been deleted' % (group)) + + return flask.redirect(flask.url_for('.admin_groups')) diff --git a/pagure/ui/login.py b/pagure/ui/login.py index 7cfaa48..69036f9 100644 --- a/pagure/ui/login.py +++ b/pagure/ui/login.py @@ -253,155 +253,6 @@ def reset_password(token): # -# Admin endpoint specific to local login -# - - -@APP.route('/admin/groups', methods=['GET', 'POST']) -@admin_required -def admin_groups(): - """ List of the groups present in the system - """ - # Add new group if asked - grp_types = [ - grp.grp_type - for grp in pagure.lib.get_group_types(SESSION) - ] - # Make sure the admin type is always the last one - grp_types.remove('admin') - grp_types.append('admin') - form = forms.NewGroupForm(grp_types=grp_types) - - if form.validate_on_submit(): - grp = model.PagureGroup() - form.populate_obj(obj=grp) - SESSION.add(grp) - try: - SESSION.flush() - flask.flash('Group `%s` created.' % grp.group_name) - except SQLAlchemyError as err: - SESSION.rollback() - flask.flash('Could not create group.') - APP.logger.debug('Could not create group.') - APP.logger.exception(err) - - SESSION.commit() - - groups = pagure.lib.login.get_groups(SESSION) - - return flask.render_template( - 'login/admin_groups.html', - groups=groups, - form=form, - conf_form=forms.ConfirmationForm(), - ) - - -@APP.route('/admin/group/', methods=['GET', 'POST']) -@admin_required -def admin_group(group): - """ List of the users in a certain group - """ - group_obj = pagure.lib.login.get_group(SESSION, group) - - if not group_obj: - flask.flash('No group `%s` found' % group, 'error') - return flask.redirect(flask.url_for('.admin_groups')) - - # Add new user to the group if asked - form = forms.LostPasswordForm() - if form.validate_on_submit(): - user = pagure.lib.search_user(SESSION, username=form.username.data) - if not user: - flask.flash('No user `%s` found' % form.username.data, 'error') - return flask.redirect(flask.url_for('.admin_group', group=group)) - - grp = model.PagureUserGroup( - group_id=group_obj.id, - user_id=user.id - ) - SESSION.add(grp) - try: - SESSION.flush() - except SQLAlchemyError as err: - SESSION.rollback() - flask.flash( - 'Could not add user `%s` to group `%s`.' % ( - user.user, group_obj.group), - 'error') - APP.logger.debug( - 'Could not add user `%s` to group `%s`.' % ( - user.user, group_obj.group)) - APP.logger.exception(err) - - flask.flash('User `%s` added.' % user.user) - SESSION.commit() - - users = pagure.lib.login.get_users_by_group(SESSION, group) - - return flask.render_template( - 'login/admin_users.html', - form=form, - conf_form=forms.ConfirmationForm(), - group=group_obj, - users=users, - ) - - -@APP.route('/admin/group///delete', methods=['POST']) -@admin_required -def admin_group_user_delete(user, group): - """ Delete an user from a certain group - """ - # Add new user to the group if asked - form = forms.ConfirmationForm() - if form.validate_on_submit(): - group_obj = pagure.lib.login.get_group(SESSION, group) - - if not group_obj: - flask.flash('No group `%s` found' % group, 'error') - return flask.redirect(flask.url_for('.admin_groups')) - - user = pagure.lib.search_user(SESSION, username=user) - if not user: - flask.flash('No user `%s` found' % user, 'error') - return flask.redirect(flask.url_for('.admin_groups')) - - user_grp = pagure.lib.login.get_user_group( - SESSION, user.id, group_obj.id) - SESSION.delete(user_grp) - - SESSION.commit() - flask.flash( - 'User `%s` removed from the group `%s`' % (user.user, group)) - - return flask.redirect(flask.url_for('.admin_group', group=group)) - - -@APP.route('/admin/group//delete', methods=['POST']) -@admin_required -def admin_group_delete(group): - """ Delete a certain group - """ - # Add new user to the group if asked - form = forms.ConfirmationForm() - if form.validate_on_submit(): - group_obj = pagure.lib.login.get_group(SESSION, group) - - if not group_obj: - flask.flash('No group `%s` found' % group, 'error') - return flask.redirect(flask.url_for('.admin_groups')) - - SESSION.delete(group_obj) - - SESSION.commit() - flask.flash( - 'Group `%s` has been deleted' % (group)) - - return flask.redirect(flask.url_for('.admin_groups')) - - -# # Methods specific to local login. #