- Introducing translation service prompts

- Ensure Traicie Role Definition Specialist complies to latest technical requirements
- Ensure that empty historical messages do not cause a crash in eveai_client
- take into account empty customisation options
- make was not processed in the system dynamic attribute tenant_make
- ensure only relevant makes are shown when creating magic links
- refresh partner info when editing or adding Partner Services$
This commit is contained in:
Josako
2025-06-24 14:15:36 +02:00
parent 043cea45f2
commit f5c9542a49
15 changed files with 147 additions and 32 deletions

View File

@@ -312,7 +312,7 @@ class DynamicFormBase(FlaskForm):
field_class = SelectField
tenant_id = session.get('tenant').get('id')
makes = TenantMake.query.filter_by(tenant_id=tenant_id).all()
choices = [(make.name, make.name) for make in makes]
choices = [(make.id, make.name) for make in makes]
extra_classes = ''
field_kwargs = {'choices': choices}
@@ -581,7 +581,10 @@ class DynamicFormBase(FlaskForm):
except Exception as e:
current_app.logger.error(f"Error converting initial data to patterns: {e}")
elif isinstance(field, DateField):
data[original_field_name] = field.data.isoformat()
if field.data:
data[original_field_name] = field.data.isoformat()
else:
data[original_field_name] = None
else:
data[original_field_name] = field.data
return data

View File

@@ -1,3 +1,4 @@
from flask import session
from flask_wtf import FlaskForm
from wtforms import (StringField, BooleanField, SelectField, TextAreaField)
from wtforms.fields.datetime import DateField
@@ -181,7 +182,8 @@ class EditSpecialistMagicLinkForm(DynamicFormBase):
self.specialist_name.data = ''
# Dynamically populate the tenant_make field with None as first option
tenant_makes = TenantMake.query.all()
tenant_id = session.get('tenant').get('id')
tenant_makes = TenantMake.query.filter_by(tenant_id=tenant_id).all()
self.tenant_make_id.choices = [(0, 'None')] + [(make.id, make.name) for make in tenant_makes]

View File

@@ -702,12 +702,13 @@ def specialist_magic_link():
new_spec_ml_tenant.tenant_id = tenant_id
# Define the make valid for this magic link
make_id = SpecialistServices.get_specialist_system_field(new_specialist_magic_link.specialist_id,
"make", "tenant_make")
specialist = Specialist.query.get(new_specialist_magic_link.specialist_id)
make_id = specialist.configuration.get('make', None)
current_app.logger.debug(f"make_id defined in specialist: {make_id}")
if make_id:
new_spec_ml_tenant.tenant_make_id = make_id
new_specialist_magic_link.tenant_make_id = make_id
elif session.get('tenant').get('default_tenant_make_id'):
new_spec_ml_tenant.tenant_make_id = session.get('tenant').get('default_tenant_make_id')
new_specialist_magic_link.tenant_make_id = session.get('tenant').get('default_tenant_make_id')
db.session.add(new_specialist_magic_link)
db.session.add(new_spec_ml_tenant)

View File

@@ -62,6 +62,7 @@ def edit_partner(partner_id):
update_logging_information(partner, dt.now(tz.utc))
db.session.commit()
flash('Partner updated successfully.', 'success')
refresh_session_partner(partner.id)
return redirect(
prefixed_url_for('partner_bp.edit_partner',
partner_id=partner.id)) # Assuming there's a user profile view to redirect to
@@ -197,6 +198,7 @@ def edit_partner_service(partner_service_id):
db.session.commit()
flash('Partner Service updated successfully.', 'success')
current_app.logger.info(f"Partner Service {partner_service.name} updated successfully! ")
refresh_session_partner(partner_id)
except SQLAlchemyError as e:
db.session.rollback()
flash(f'Failed to update Partner Service: {str(e)}', 'danger')
@@ -339,4 +341,7 @@ def add_partner_service_for_tenant(partner_service_id):
return redirect(prefixed_url_for('partner_bp.partner_services'))
def refresh_session_partner(partner_id):
if session.get('partner', None):
if partner_id == session['partner']['id']:
session['partner'] = Partner.query.get_or_404(partner_id).to_dict()