import uuid from datetime import datetime as dt, timezone as tz from flask import request, redirect, flash, render_template, Blueprint, session, current_app, jsonify from flask_security import hash_password, roles_required, roles_accepted, current_user from itsdangerous import URLSafeTimedSerializer from sqlalchemy.exc import SQLAlchemyError from common.utils.celery_utils import current_celery from common.utils.view_assistants import prepare_table_for_macro, form_validation_failed from common.utils.nginx_utils import prefixed_url_for from .administration_forms import TriggerActionForm administration_bp = Blueprint('administration_bp', __name__, url_prefix='/administration') @administration_bp.route('/trigger_actions', methods=['GET']) @roles_accepted('Super User') def trigger_actions(): form = TriggerActionForm() return render_template('administration/trigger_actions.html', form=form) @administration_bp.route('/handle_trigger_action', methods=['POST']) @roles_accepted('Super User') def handle_trigger_action(): action = request.form['action'] match action: case 'update_usages': try: # Use send_task to trigger the task since it's part of another component (eveai_entitlements) task = current_celery.send_task('update_usages', queue='entitlements') current_app.logger.info(f"Usage update task triggered: {task.id}") flash('Usage update task has been triggered successfully!', 'success') except Exception as e: current_app.logger.error(f"Failed to trigger usage update task: {str(e)}") flash(f'Failed to trigger usage update: {str(e)}', 'danger') return redirect(prefixed_url_for('administration_bp.trigger_actions'))