2019-05-22 11:38:47 +01:00
|
|
|
from flask import flash, redirect, render_template, request, url_for
|
2019-05-22 14:05:19 +01:00
|
|
|
from flask_login import current_user, login_required
|
2018-07-06 11:10:14 +01:00
|
|
|
|
2018-07-06 16:16:21 +01:00
|
|
|
from app import user_api_client
|
2019-05-22 14:05:19 +01:00
|
|
|
from app.event_handlers import create_archive_user_event
|
2018-07-06 11:10:14 +01:00
|
|
|
from app.main import main
|
2018-07-10 16:33:13 +01:00
|
|
|
from app.main.forms import SearchUsersByEmailForm
|
2019-05-23 15:27:35 +01:00
|
|
|
from app.models.user import User
|
2018-07-10 17:24:20 +01:00
|
|
|
from app.utils import user_is_platform_admin
|
2018-07-06 11:10:14 +01:00
|
|
|
|
|
|
|
|
|
2018-07-06 16:16:21 +01:00
|
|
|
@main.route("/find-users-by-email", methods=['GET', 'POST'])
|
2018-07-06 11:10:14 +01:00
|
|
|
@login_required
|
|
|
|
|
@user_is_platform_admin
|
|
|
|
|
def find_users_by_email():
|
2018-07-10 16:33:13 +01:00
|
|
|
form = SearchUsersByEmailForm()
|
2018-07-06 16:16:21 +01:00
|
|
|
users_found = None
|
2018-07-10 16:33:13 +01:00
|
|
|
status = 200
|
2018-07-06 16:16:21 +01:00
|
|
|
if form.validate_on_submit():
|
|
|
|
|
users_found = user_api_client.find_users_by_full_or_partial_email(form.search.data)['data']
|
2018-07-10 16:33:13 +01:00
|
|
|
elif request.method == 'POST':
|
|
|
|
|
status = 400
|
2018-07-06 11:10:14 +01:00
|
|
|
return render_template(
|
|
|
|
|
'views/find-users/find-users-by-email.html',
|
2018-07-06 16:16:21 +01:00
|
|
|
form=form,
|
|
|
|
|
users_found=users_found
|
2018-07-10 16:33:13 +01:00
|
|
|
), status
|
2018-07-10 17:24:20 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
@main.route("/users/<user_id>", methods=['GET'])
|
|
|
|
|
@login_required
|
|
|
|
|
@user_is_platform_admin
|
|
|
|
|
def user_information(user_id):
|
2019-05-23 15:27:35 +01:00
|
|
|
user = User.from_id(user_id)
|
2018-07-19 15:08:02 +01:00
|
|
|
services = user_api_client.get_services_for_user(user)
|
2018-07-10 17:24:20 +01:00
|
|
|
return render_template(
|
|
|
|
|
'views/find-users/user-information.html',
|
2018-07-16 16:34:10 +01:00
|
|
|
user=user,
|
2018-07-19 15:08:02 +01:00
|
|
|
services=services,
|
2018-07-10 17:24:20 +01:00
|
|
|
)
|
2019-05-22 11:38:47 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
@main.route("/users/<uuid:user_id>/archive", methods=['GET', 'POST'])
|
|
|
|
|
@login_required
|
|
|
|
|
@user_is_platform_admin
|
|
|
|
|
def archive_user(user_id):
|
|
|
|
|
if request.method == 'POST':
|
|
|
|
|
user_api_client.archive_user(user_id)
|
2019-05-22 14:05:19 +01:00
|
|
|
create_archive_user_event(str(user_id), current_user.id)
|
|
|
|
|
|
2019-05-22 11:38:47 +01:00
|
|
|
return redirect(url_for('.user_information', user_id=user_id))
|
|
|
|
|
else:
|
|
|
|
|
flash('There\'s no way to reverse this! Are you sure you want to archive this user?', 'delete')
|
|
|
|
|
return user_information(user_id)
|