- eveai_app adapted to handle removal of complex rewrite rules in nginx.conf, which cannot be achieved in Ingress

This commit is contained in:
Josako
2025-09-06 16:53:51 +02:00
parent b812aedb81
commit 5c20e6c1f9
28 changed files with 341 additions and 336 deletions

View File

@@ -77,12 +77,12 @@ def handle_chat_session_selection():
match action:
case 'view_chat_session':
return redirect(prefixed_url_for('interaction_bp.view_chat_session', chat_session_id=cs_id))
return redirect(prefixed_url_for('interaction_bp.view_chat_session', chat_session_id=cs_id, for_redirect=True))
case 'chat_session_interactions':
return redirect(prefixed_url_for('interaction_bp.session_interactions', chat_session_id=cs_id))
return redirect(prefixed_url_for('interaction_bp.session_interactions', chat_session_id=cs_id, for_redirect=True))
# Add more conditions for other actions
return redirect(prefixed_url_for('interaction_bp.chat_sessions'))
return redirect(prefixed_url_for('interaction_bp.chat_sessions', for_redirect=True))
@interaction_bp.route('/view_chat_session/<int:chat_session_id>', methods=['GET'])
@@ -184,7 +184,7 @@ def specialist():
# Initialize the newly create specialist
SpecialistServices.initialize_specialist(new_specialist.id, new_specialist.type, new_specialist.type_version)
return redirect(prefixed_url_for('interaction_bp.edit_specialist', specialist_id=new_specialist.id))
return redirect(prefixed_url_for('interaction_bp.edit_specialist', specialist_id=new_specialist.id, for_redirect=True))
except Exception as e:
db.session.rollback()
@@ -257,7 +257,7 @@ def edit_specialist(specialist_id):
db.session.commit()
flash('Specialist updated successfully!', 'success')
current_app.logger.info(f'Specialist {specialist.id} updated successfully')
return redirect(prefixed_url_for('interaction_bp.specialists'))
return redirect(prefixed_url_for('interaction_bp.specialists', for_redirect=True))
except SQLAlchemyError as e:
db.session.rollback()
flash(f'Failed to update specialist. Error: {str(e)}', 'danger')
@@ -297,17 +297,17 @@ def specialists():
def handle_specialist_selection():
action = request.form.get('action')
if action == 'create_specialist':
return redirect(prefixed_url_for('interaction_bp.specialist'))
return redirect(prefixed_url_for('interaction_bp.specialist', for_redirect=True))
specialist_identification = request.form.get('selected_row')
specialist_id = ast.literal_eval(specialist_identification).get('value')
if action == "edit_specialist":
return redirect(prefixed_url_for('interaction_bp.edit_specialist', specialist_id=specialist_id))
return redirect(prefixed_url_for('interaction_bp.edit_specialist', specialist_id=specialist_id, for_redirect=True))
elif action == "execute_specialist":
return redirect(prefixed_url_for('interaction_bp.execute_specialist', specialist_id=specialist_id))
return redirect(prefixed_url_for('interaction_bp.execute_specialist', specialist_id=specialist_id, for_redirect=True))
return redirect(prefixed_url_for('interaction_bp.specialists'))
return redirect(prefixed_url_for('interaction_bp.specialists', for_redirect=True))
# Routes for Agent management ---------------------------------------------------------------------
@@ -442,9 +442,9 @@ def handle_agent_selection():
action = request.form.get('action')
if action == "edit_agent":
return redirect(prefixed_url_for('interaction_bp.edit_agent', agent_id=agent_id))
return redirect(prefixed_url_for('interaction_bp.edit_agent', agent_id=agent_id, for_redirect=True))
return redirect(prefixed_url_for('interaction_bp.edit_specialist'))
return redirect(prefixed_url_for('interaction_bp.edit_specialist', for_redirect=True))
@interaction_bp.route('/handle_task_selection', methods=['POST'])
@@ -455,9 +455,9 @@ def handle_task_selection():
action = request.form.get('action')
if action == "edit_task":
return redirect(prefixed_url_for('interaction_bp.edit_task', task_id=task_id))
return redirect(prefixed_url_for('interaction_bp.edit_task', task_id=task_id, for_redirect=True))
return redirect(prefixed_url_for('interaction_bp.edit_specialist'))
return redirect(prefixed_url_for('interaction_bp.edit_specialist', for_redirect=True))
@interaction_bp.route('/handle_tool_selection', methods=['POST'])
@@ -468,9 +468,9 @@ def handle_tool_selection():
action = request.form.get('action')
if action == "edit_tool":
return redirect(prefixed_url_for('interaction_bp.edit_tool', tool_id=tool_id))
return redirect(prefixed_url_for('interaction_bp.edit_tool', tool_id=tool_id, for_redirect=True))
return redirect(prefixed_url_for('interaction_bp.edit_specialist'))
return redirect(prefixed_url_for('interaction_bp.edit_specialist', for_redirect=True))
# Specialist Execution ----------------------------------------------------------------------------
@@ -481,7 +481,7 @@ def execute_specialist(specialist_id):
if specialist_config.get('chat', True):
flash("Only specialists that don't require interactions can be executed this way!", 'error')
return redirect(prefixed_url_for('interaction_bp.specialists'))
return redirect(prefixed_url_for('interaction_bp.specialists', for_redirect=True))
form = ExecuteSpecialistForm(request.form, obj=specialist)
if 'arguments' in specialist_config:
@@ -498,7 +498,7 @@ def execute_specialist(specialist_id):
session_id=session_id,
user_timezone=session.get('tenant').get('timezone')
)
return redirect(prefixed_url_for('interaction_bp.session_interactions_by_session_id', session_id=session_id))
return redirect(prefixed_url_for('interaction_bp.session_interactions_by_session_id', session_id=session_id, for_redirect=True))
return render_template('interaction/execute_specialist.html', form=form)
@@ -564,7 +564,7 @@ def session_interactions_by_session_id(session_id):
waiting='true'))
# If we've already shown a waiting message and still don't have a session, go back to the specialists page
return redirect(prefixed_url_for('interaction_bp.specialists'))
return redirect(prefixed_url_for('interaction_bp.specialists', for_redirect=True))
@interaction_bp.route('/session_interactions/<chat_session_id>', methods=['GET'])
@@ -619,7 +619,7 @@ def specialist_magic_link():
f'tenant {tenant_id}!')
return redirect(prefixed_url_for('interaction_bp.edit_specialist_magic_link',
specialist_magic_link_id=new_specialist_magic_link.id))
specialist_magic_link_id=new_specialist_magic_link.id, for_redirect=True))
except Exception as e:
db.session.rollback()
@@ -666,7 +666,7 @@ def edit_specialist_magic_link(specialist_magic_link_id):
db.session.commit()
flash('Specialist Magic Link updated successfully!', 'success')
current_app.logger.info(f'Specialist Magic Link {specialist_ml.id} updated successfully')
return redirect(prefixed_url_for('interaction_bp.specialist_magic_links'))
return redirect(prefixed_url_for('interaction_bp.specialist_magic_links', for_redirect=True))
except SQLAlchemyError as e:
db.session.rollback()
flash(f'Failed to update specialist Magic Link. Error: {str(e)}', 'danger')
@@ -745,19 +745,19 @@ def specialist_magic_links():
def handle_specialist_magic_link_selection():
action = request.form.get('action')
if action == 'create_specialist_magic_link':
return redirect(prefixed_url_for('interaction_bp.specialist_magic_link'))
return redirect(prefixed_url_for('interaction_bp.specialist_magic_link', for_redirect=True))
specialist_ml_identification = request.form.get('selected_row')
specialist_ml_id = ast.literal_eval(specialist_ml_identification).get('value')
if action == "edit_specialist_magic_link":
return redirect(prefixed_url_for('interaction_bp.edit_specialist_magic_link',
specialist_magic_link_id=specialist_ml_id))
specialist_magic_link_id=specialist_ml_id, for_redirect=True))
if action == "view_specialist_magic_link_urls":
return redirect(prefixed_url_for('interaction_bp.view_specialist_magic_link_urls',
specialist_magic_link_id=specialist_ml_id))
specialist_magic_link_id=specialist_ml_id, for_redirect=True))
return redirect(prefixed_url_for('interaction_bp.specialists'))
return redirect(prefixed_url_for('interaction_bp.specialists', for_redirect=True))
# Routes for Asset Management ---------------------------------------------------------------------
@@ -788,13 +788,13 @@ def handle_data_capsule_selection():
match action:
case 'view_data_capsule':
# For now, we'll just redirect to view_data_capsule
return redirect(prefixed_url_for('interaction_bp.view_data_capsule', data_capsule_id=capsule_id))
return redirect(prefixed_url_for('interaction_bp.view_data_capsule', data_capsule_id=capsule_id, for_redirect=True))
case 'view_chat_session':
# Redirect to the chat session
return redirect(prefixed_url_for('interaction_bp.view_chat_session', chat_session_id=data_capsule.chat_session_id))
return redirect(prefixed_url_for('interaction_bp.view_chat_session', chat_session_id=data_capsule.chat_session_id, for_redirect=True))
# Default redirect back to the data capsules list
return redirect(prefixed_url_for('interaction_bp.eveai_data_capsules'))
return redirect(prefixed_url_for('interaction_bp.eveai_data_capsules', for_redirect=True))
@interaction_bp.route('/handle_asset_selection', methods=['POST'])
@@ -804,9 +804,9 @@ def handle_asset_selection():
asset_id = ast.literal_eval(asset_identification).get('value')
if action == 'edit_asset':
return redirect(prefixed_url_for('interaction_bp.edit_asset', asset_id=asset_id))
return redirect(prefixed_url_for('interaction_bp.edit_asset', asset_id=asset_id, for_redirect=True))
return redirect(prefixed_url_for('interaction_bp.assets'))
return redirect(prefixed_url_for('interaction_bp.assets', for_redirect=True))
@interaction_bp.route('/view_data_capsule/<int:data_capsule_id>', methods=['GET'])
@@ -830,14 +830,14 @@ def edit_asset(asset_id):
if not tenant_id:
flash('Geen tenant geselecteerd', 'error')
return redirect(url_for('interaction_bp.assets'))
return redirect(url_for('interaction_bp.assets', for_redirect=True))
# Controleer of het bestandstype wordt ondersteund
if asset.file_type != 'json':
flash(
f'Bestandstype "{asset.file_type}" wordt momenteel niet ondersteund voor bewerking. Alleen JSON-bestanden kunnen worden bewerkt.',
'warning')
return redirect(url_for('interaction_bp.assets'))
return redirect(url_for('interaction_bp.assets', for_redirect=True))
if request.method == 'GET':
try:
@@ -861,11 +861,11 @@ def edit_asset(asset_id):
except json.JSONDecodeError:
flash('Fout bij het laden van het JSON-bestand: ongeldig JSON-formaat', 'error')
return redirect(prefixed_url_for('interaction_bp.assets'))
return redirect(prefixed_url_for('interaction_bp.assets', for_redirect=True))
except Exception as e:
current_app.logger.error(f"Error loading asset {asset_id}: {str(e)}")
flash(f'Fout bij het laden van het asset: {str(e)}', 'error')
return redirect(prefixed_url_for('interaction_bp.assets'))
return redirect(prefixed_url_for('interaction_bp.assets', for_redirect=True))
elif request.method == 'POST':
try:
@@ -877,14 +877,14 @@ def edit_asset(asset_id):
if not json_data:
current_app.logger.error(f"No JSON data received for asset {asset_id}")
flash('Geen JSON data ontvangen', 'error')
return redirect(prefixed_url_for('interaction_bp.edit_asset', asset_id=asset_id))
return redirect(prefixed_url_for('interaction_bp.edit_asset', asset_id=asset_id, for_redirect=True))
# Valideer JSON formaat
try:
parsed_json = json.loads(json_data)
except json.JSONDecodeError as e:
flash(f'Ongeldig JSON-formaat: {str(e)}', 'error')
return redirect(prefixed_url_for('interaction_bp.edit_asset', asset_id=asset_id))
return redirect(prefixed_url_for('interaction_bp.edit_asset', asset_id=asset_id, for_redirect=True))
# Upload de bijgewerkte JSON naar MinIO
bucket_name, object_name, file_size = minio_client.upload_asset_file(
@@ -904,10 +904,10 @@ def edit_asset(asset_id):
db.session.commit()
flash('Asset succesvol bijgewerkt', 'success')
return redirect(prefixed_url_for('interaction_bp.assets'))
return redirect(prefixed_url_for('interaction_bp.assets', for_redirect=True))
except Exception as e:
db.session.rollback()
current_app.logger.error(f"Error saving asset {asset_id}: {str(e)}")
flash(f'Fout bij het opslaan van het asset: {str(e)}', 'error')
return redirect(prefixed_url_for('interaction_bp.edit_asset', asset_id=asset_id))
return redirect(prefixed_url_for('interaction_bp.edit_asset', asset_id=asset_id, for_redirect=True))