- Allowed_languages and default_language now part of Tenant Make iso Tenant - Introduction of Translation into Traicie Selection Specialist
50 lines
1.8 KiB
Python
50 lines
1.8 KiB
Python
from flask import session, current_app
|
|
from sqlalchemy import and_
|
|
|
|
from common.models.user import Tenant, Partner
|
|
from common.models.entitlements import License
|
|
from common.utils.database import Database
|
|
from common.utils.eveai_exceptions import EveAITenantNotFound, EveAITenantInvalid, EveAINoActiveLicense
|
|
from datetime import datetime as dt, timezone as tz
|
|
|
|
|
|
# Definition of Trigger Handlers
|
|
def set_tenant_session_data(sender, user, **kwargs):
|
|
tenant = Tenant.query.filter_by(id=user.tenant_id).first()
|
|
session['tenant'] = tenant.to_dict()
|
|
partner = Partner.query.filter_by(tenant_id=user.tenant_id).first()
|
|
if partner:
|
|
session['partner'] = partner.to_dict()
|
|
else:
|
|
# Remove partner from session if it exists
|
|
session.pop('partner', None)
|
|
|
|
|
|
def clear_tenant_session_data(sender, user, **kwargs):
|
|
session.pop('tenant', None)
|
|
session.pop('default_language', None)
|
|
session.pop('default_llm_model', None)
|
|
session.pop('partner', None)
|
|
|
|
|
|
def is_valid_tenant(tenant_id):
|
|
if tenant_id == 1: # The 'root' tenant, is always valid
|
|
return True
|
|
tenant = Tenant.query.get(tenant_id)
|
|
Database(tenant).switch_schema()
|
|
if tenant is None:
|
|
raise EveAITenantNotFound()
|
|
elif tenant.type == 'Inactive':
|
|
raise EveAITenantInvalid(tenant_id)
|
|
else:
|
|
current_date = dt.now(tz=tz.utc).date()
|
|
# TODO -> Check vervangen door Active License Period!
|
|
# active_license = (License.query.filter_by(tenant_id=tenant_id)
|
|
# .filter(and_(License.start_date <= current_date,
|
|
# License.end_date >= current_date))
|
|
# .one_or_none())
|
|
# if not active_license:
|
|
# raise EveAINoActiveLicense(tenant_id)
|
|
|
|
return True
|