- Added EveAI Client to project

- Improvements to EntitlementsDomain & Services
- Prechecks in Document domain
- Add audit information to LicenseUsage
This commit is contained in:
Josako
2025-05-17 15:56:14 +02:00
parent b4f7b210e0
commit 5c982fcc2c
260 changed files with 48683 additions and 43 deletions

View File

@@ -18,7 +18,7 @@ from common.utils.document_utils import create_document_stack, start_embedding_t
edit_document, \
edit_document_version, refresh_document, clean_url
from common.utils.eveai_exceptions import EveAIInvalidLanguageException, EveAIUnsupportedFileType, \
EveAIDoubleURLException
EveAIDoubleURLException, EveAIException
from config.type_defs.processor_types import PROCESSOR_TYPES
from .document_forms import AddDocumentForm, AddURLForm, EditDocumentForm, EditDocumentVersionForm, \
CatalogForm, EditCatalogForm, RetrieverForm, EditRetrieverForm, ProcessorForm, EditProcessorForm
@@ -421,7 +421,7 @@ def add_document():
'success')
return redirect(prefixed_url_for('document_bp.documents'))
except (EveAIInvalidLanguageException, EveAIUnsupportedFileType) as e:
except EveAIException as e:
flash(str(e), 'error')
current_app.logger.error(f"Error adding document: {str(e)}")
except Exception as e:
@@ -479,9 +479,8 @@ def add_url():
'success')
return redirect(prefixed_url_for('document_bp.documents'))
except EveAIDoubleURLException:
flash(f'A document with url {url} already exists. No new document created.', 'info')
except (EveAIInvalidLanguageException, EveAIUnsupportedFileType) as e:
except EveAIException as e:
current_app.logger.error(f"Error adding document: {str(e)}")
flash(str(e), 'error')
except Exception as e:
current_app.logger.error(f'Error adding document: {str(e)}')

View File

@@ -55,9 +55,9 @@ class LicenseForm(FlaskForm):
validators=[InputRequired(), NumberRange(min=0)])
additional_storage_bucket = IntegerField('Additional Storage Bucket Size (MiB)',
validators=[DataRequired(), NumberRange(min=1)])
additional_embedding_allowed = BooleanField('Additional Embedding Allowed', default=True)
included_embedding_mb = IntegerField('Included Embedding Tokens (MiB)',
validators=[DataRequired(), NumberRange(min=1)])
additional_embedding_allowed = BooleanField('Additional Embedding Allowed', default=True)
additional_embedding_price = FloatField('Additional Embedding Token Fee',
validators=[InputRequired(), NumberRange(min=0)])
additional_embedding_bucket = IntegerField('Additional Embedding Bucket Size (MiB)',

View File

@@ -1,4 +1,4 @@
from datetime import datetime as dt, timezone as tz
from datetime import datetime as dt, timezone as tz, timedelta
from flask import request, redirect, flash, render_template, Blueprint, session, current_app
from flask_security import roles_accepted, current_user
from sqlalchemy.exc import SQLAlchemyError
@@ -8,9 +8,9 @@ import ast
from common.models.entitlements import License, LicenseTier, LicenseUsage, LicensePeriod, PeriodStatus
from common.extensions import db, cache_manager
from common.services.entitlements.license_tier_services import LicenseTierServices
from common.services.user.partner_services import PartnerServices
from common.services.user.user_services import UserServices
from common.services.entitlements import LicenseTierServices
from common.services.user import PartnerServices
from common.services.user import UserServices
from common.utils.eveai_exceptions import EveAIException
from common.utils.security_utils import current_user_has_role
from .entitlements_forms import LicenseTierForm, LicenseForm
@@ -150,6 +150,7 @@ def create_license(license_tier_id):
tenant_id = session.get('tenant').get('id')
currency = session.get('tenant').get('currency')
readonly_fields = []
if current_user_has_role("Partner Admin"): # The Partner Admin can only set start & end dates, and allowed fields
readonly_fields = [field.name for field in form if (field.name != 'nr_of_periods' and field.name != 'start_date'
and not field.name.endswith('allowed'))]
@@ -337,6 +338,8 @@ def handle_license_selection():
return redirect(prefixed_url_for('entitlements_bp.edit_license', license_id=license_id))
case 'view_periods':
return redirect(prefixed_url_for('entitlements_bp.view_license_periods', license_id=license_id))
case _:
return redirect(prefixed_url_for('entitlements_bp.view_licenses'))
@entitlements_bp.route('/license/<int:license_id>/periods')

View File

@@ -6,7 +6,7 @@ from wtforms.validators import DataRequired, Length, Email, NumberRange, Optiona
import pytz
from flask_security import current_user
from common.services.user.user_services import UserServices
from common.services.user import UserServices
from config.type_defs.service_types import SERVICE_TYPES

View File

@@ -17,8 +17,8 @@ from common.utils.simple_encryption import generate_api_key
from common.utils.nginx_utils import prefixed_url_for
from common.utils.eveai_exceptions import EveAIException
from common.utils.document_utils import set_logging_information, update_logging_information
from common.services.user.tenant_services import TenantServices
from common.services.user.user_services import UserServices
from common.services.user import TenantServices
from common.services.user import UserServices
from common.utils.mail_utils import send_email
user_bp = Blueprint('user_bp', __name__, url_prefix='/user')