import datetime import flask from atlas_um import tasks from atlas_um.auth.claims import Role from atlas_um.auth.decorators import claims_required from atlas_um.helpers.csv import dump_data_to_csv from .reports import accounts_states_report accounts_validation = flask.Blueprint("accounts_validation", __name__) @accounts_validation.get("/accounts_states_report") @claims_required([Role(Role.Values.admin), Role(Role.Values.manager)]) def accounts_states_report_view(): file_time = datetime.datetime.now().strftime("%Y-%m-%d_%H-%M-%S") response = flask.make_response(dump_data_to_csv(accounts_states_report())) response.mimetype = "text/csv" response.headers[ "Content-Disposition" ] = f"attachment; filename=accounts_state_UTC{file_time}.csv" return response @accounts_validation.route( "/accounts_validation_task", methods=["GET", "POST"] ) @claims_required([Role(Role.Values.admin)]) def accounts_validation_task_view(): if flask.request.method == "POST": tasks.accounts_validation_task.delay() flask.flash("Pending 'Accounts validation' task...", "positive") return flask.redirect( flask.url_for("accounts_validation.accounts_validation_task_view") ) return flask.render_template( "accounts_validation/accounts_validation_task.html" )