diff --git a/app/dao/users_dao.py b/app/dao/users_dao.py index d7291b35c..e541f4052 100644 --- a/app/dao/users_dao.py +++ b/app/dao/users_dao.py @@ -4,7 +4,7 @@ from secrets import randbelow import sqlalchemy from flask import current_app -from sqlalchemy import func +from sqlalchemy import func, text from sqlalchemy.orm import joinedload from app import db @@ -244,3 +244,15 @@ def user_can_be_archived(user): return False return True + + +def dao_report_users(): + sql = """ + select users.name, users.email_address, users.mobile_number, services.name as service_name + from users + inner join user_to_service on users.id=user_to_service.user_id + inner join services on services.id=user_to_service.service_id + where services.name not like '_archived%' + order by services.name asc, users.name asc + """ + return db.session.execute(text(sql)) diff --git a/app/user/rest.py b/app/user/rest.py index 049549f2c..dd714ce57 100644 --- a/app/user/rest.py +++ b/app/user/rest.py @@ -18,6 +18,7 @@ from app.dao.users_dao import ( create_secret_code, create_user_code, dao_archive_user, + dao_report_users, get_login_gov_user, get_user_and_accounts, get_user_by_email, @@ -667,6 +668,12 @@ def update_password(user_id): return jsonify(data=user.serialize()), 200 +@user_blueprint.route("/report-all-users", methods=["GET"]) +def report_all_users(): + users = dao_report_users() + return jsonify(data=users.serialize()), 200 + + @user_blueprint.route("//organizations-and-services", methods=["GET"]) def get_organizations_and_services_for_user(user_id): user = get_user_and_accounts(user_id)