iatoolkit 0.9.4__tar.gz → 0.10.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of iatoolkit might be problematic. Click here for more details.

Files changed (116) hide show
  1. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/PKG-INFO +1 -1
  2. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/pyproject.toml +1 -1
  3. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/base_company.py +5 -2
  4. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/iatoolkit.py +3 -0
  5. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/repositories/models.py +2 -2
  6. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/repositories/profile_repo.py +1 -1
  7. iatoolkit-0.10.0/src/iatoolkit/services/branding_service.py +60 -0
  8. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/templates/chat.html +24 -14
  9. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/templates/home.html +0 -2
  10. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/views/chat_view.py +9 -2
  11. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/views/external_chat_login_view.py +10 -3
  12. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit.egg-info/PKG-INFO +1 -1
  13. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit.egg-info/SOURCES.txt +1 -0
  14. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/readme.md +0 -0
  15. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/requirements.txt +0 -0
  16. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/setup.cfg +0 -0
  17. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/__init__.py +0 -0
  18. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/cli_commands.py +0 -0
  19. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/common/__init__.py +0 -0
  20. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/common/auth.py +0 -0
  21. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/common/exceptions.py +0 -0
  22. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/common/routes.py +0 -0
  23. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/common/session_manager.py +0 -0
  24. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/common/util.py +0 -0
  25. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/company_registry.py +0 -0
  26. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/infra/__init__.py +0 -0
  27. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/infra/call_service.py +0 -0
  28. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/infra/connectors/__init__.py +0 -0
  29. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/infra/connectors/file_connector.py +0 -0
  30. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/infra/connectors/file_connector_factory.py +0 -0
  31. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/infra/connectors/google_cloud_storage_connector.py +0 -0
  32. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/infra/connectors/google_drive_connector.py +0 -0
  33. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/infra/connectors/local_file_connector.py +0 -0
  34. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/infra/connectors/s3_connector.py +0 -0
  35. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/infra/gemini_adapter.py +0 -0
  36. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/infra/google_chat_app.py +0 -0
  37. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/infra/llm_client.py +0 -0
  38. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/infra/llm_proxy.py +0 -0
  39. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/infra/llm_response.py +0 -0
  40. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/infra/mail_app.py +0 -0
  41. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/infra/openai_adapter.py +0 -0
  42. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/infra/redis_session_manager.py +0 -0
  43. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/repositories/__init__.py +0 -0
  44. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/repositories/database_manager.py +0 -0
  45. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/repositories/document_repo.py +0 -0
  46. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/repositories/llm_query_repo.py +0 -0
  47. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/repositories/tasks_repo.py +0 -0
  48. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/repositories/vs_repo.py +0 -0
  49. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/services/__init__.py +0 -0
  50. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/services/benchmark_service.py +0 -0
  51. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/services/dispatcher_service.py +0 -0
  52. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/services/document_service.py +0 -0
  53. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/services/excel_service.py +0 -0
  54. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/services/file_processor_service.py +0 -0
  55. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/services/history_service.py +0 -0
  56. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/services/jwt_service.py +0 -0
  57. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/services/load_documents_service.py +0 -0
  58. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/services/mail_service.py +0 -0
  59. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/services/profile_service.py +0 -0
  60. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/services/prompt_manager_service.py +0 -0
  61. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/services/query_service.py +0 -0
  62. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/services/search_service.py +0 -0
  63. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/services/sql_service.py +0 -0
  64. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/services/tasks_service.py +0 -0
  65. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/services/user_feedback_service.py +0 -0
  66. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/services/user_session_context_service.py +0 -0
  67. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/static/images/arrow_up.png +0 -0
  68. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/static/images/diagrama_iatoolkit.jpg +0 -0
  69. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/static/images/logo_clinica.png +0 -0
  70. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/static/images/logo_iatoolkit.png +0 -0
  71. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/static/images/logo_maxxa.png +0 -0
  72. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/static/images/logo_notaria.png +0 -0
  73. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/static/images/logo_tarjeta.png +0 -0
  74. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/static/images/logo_umayor.png +0 -0
  75. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/static/images/upload.png +0 -0
  76. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/static/js/chat_feedback.js +0 -0
  77. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/static/js/chat_filepond.js +0 -0
  78. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/static/js/chat_history.js +0 -0
  79. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/static/js/chat_main.js +0 -0
  80. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/static/styles/chat_iatoolkit.css +0 -0
  81. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/static/styles/chat_info.css +0 -0
  82. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/static/styles/chat_modal.css +0 -0
  83. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/static/styles/llm_output.css +0 -0
  84. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/system_prompts/format_styles.prompt +0 -0
  85. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/system_prompts/query_main.prompt +0 -0
  86. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/system_prompts/sql_rules.prompt +0 -0
  87. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/templates/about.html +0 -0
  88. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/templates/base.html +0 -0
  89. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/templates/change_password.html +0 -0
  90. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/templates/chat_modals.html +0 -0
  91. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/templates/error.html +0 -0
  92. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/templates/forgot_password.html +0 -0
  93. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/templates/header.html +0 -0
  94. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/templates/login.html +0 -0
  95. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/templates/signup.html +0 -0
  96. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/templates/test.html +0 -0
  97. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/views/__init__.py +0 -0
  98. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/views/change_password_view.py +0 -0
  99. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/views/chat_token_request_view.py +0 -0
  100. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/views/download_file_view.py +0 -0
  101. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/views/external_login_view.py +0 -0
  102. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/views/file_store_view.py +0 -0
  103. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/views/forgot_password_view.py +0 -0
  104. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/views/history_view.py +0 -0
  105. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/views/home_view.py +0 -0
  106. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/views/llmquery_view.py +0 -0
  107. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/views/login_view.py +0 -0
  108. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/views/prompt_view.py +0 -0
  109. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/views/signup_view.py +0 -0
  110. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/views/tasks_review_view.py +0 -0
  111. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/views/tasks_view.py +0 -0
  112. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/views/user_feedback_view.py +0 -0
  113. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit/views/verify_user_view.py +0 -0
  114. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit.egg-info/dependency_links.txt +0 -0
  115. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit.egg-info/requires.txt +0 -0
  116. {iatoolkit-0.9.4 → iatoolkit-0.10.0}/src/iatoolkit.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: iatoolkit
3
- Version: 0.9.4
3
+ Version: 0.10.0
4
4
  Summary: IAToolkit
5
5
  Author: Fernando Libedinsky
6
6
  License-Expression: MIT
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "iatoolkit"
7
- version = "0.9.4"
7
+ version = "0.10.0"
8
8
  requires-python = ">=3.11"
9
9
  description = "IAToolkit"
10
10
  readme = "readme.md"
@@ -26,8 +26,10 @@ class BaseCompany(ABC):
26
26
  self.company = self.profile_repo.get_company_by_short_name(short_name)
27
27
  return self.company
28
28
 
29
- def _create_company(self, name: str, short_name: str) -> Company:
30
- company_obj = Company(name=name, short_name=short_name, allow_jwt=True)
29
+ def _create_company(self, short_name: str, name: str, branding: dict | None = None) -> Company:
30
+ company_obj = Company(short_name=short_name,
31
+ name=name,
32
+ branding=branding)
31
33
  self.company = self.profile_repo.create_company(company_obj)
32
34
  return self.company
33
35
 
@@ -67,6 +69,7 @@ class BaseCompany(ABC):
67
69
  **kwargs
68
70
  )
69
71
 
72
+
70
73
  @abstractmethod
71
74
  # initialize all the database tables needed
72
75
  def register_company(self):
@@ -278,6 +278,7 @@ class IAToolkit:
278
278
  from iatoolkit.services.profile_service import ProfileService
279
279
  from iatoolkit.services.jwt_service import JWTService
280
280
  from iatoolkit.services.dispatcher_service import Dispatcher
281
+ from iatoolkit.services.branding_service import BrandingService
281
282
 
282
283
  binder.bind(QueryService, to=QueryService)
283
284
  binder.bind(TaskService, to=TaskService)
@@ -290,6 +291,8 @@ class IAToolkit:
290
291
  binder.bind(ProfileService, to=ProfileService)
291
292
  binder.bind(JWTService, to=JWTService)
292
293
  binder.bind(Dispatcher, to=Dispatcher)
294
+ binder.bind(BrandingService, to=BrandingService)
295
+
293
296
 
294
297
  def _bind_infrastructure(self, binder: Binder):
295
298
  from iatoolkit.infra.llm_client import llmClient
@@ -57,10 +57,10 @@ class Company(Base):
57
57
  openai_api_key = Column(String, nullable=True)
58
58
  gemini_api_key = Column(String, nullable=True)
59
59
 
60
- logo_file = Column(String(128), nullable=True, default='')
60
+ branding = Column(JSON, nullable=True)
61
61
  parameters = Column(JSON, nullable=True, default={})
62
62
  created_at = Column(DateTime, default=datetime.now)
63
- allow_jwt = Column(Boolean, default=False, nullable=True)
63
+ allow_jwt = Column(Boolean, default=True, nullable=True)
64
64
 
65
65
  documents = relationship("Document",
66
66
  back_populates="company",
@@ -73,7 +73,7 @@ class ProfileRepo:
73
73
  company = self.session.query(Company).filter_by(name=new_company.name).first()
74
74
  if company:
75
75
  company.parameters = new_company.parameters
76
- company.logo_file = new_company.logo_file
76
+ company.branding = new_company.branding
77
77
  else:
78
78
  self.session.add(new_company)
79
79
  company = new_company
@@ -0,0 +1,60 @@
1
+ # Copyright (c) 2024 Fernando Libedinsky
2
+ # Product: IAToolkit
3
+ #
4
+ # IAToolkit is open source software.
5
+
6
+ from iatoolkit.repositories.models import Company
7
+
8
+
9
+ class BrandingService:
10
+ """
11
+ Servicio centralizado que gestiona la configuración de branding.
12
+ """
13
+
14
+ def __init__(self):
15
+ """
16
+ Define los estilos de branding por defecto para la aplicación.
17
+ """
18
+ self._default_branding = {
19
+ # Colores del contenedor del encabezado
20
+ "header_background_color": "#FFFFFF", # Fondo blanco por defecto
21
+ "header_text_color": "#6C757D", # Color de texto 'muted' de Bootstrap
22
+
23
+ # Estilos para el nombre de la compañía
24
+ "company_name_font_weight": "bold", # Nombre en negrita por defecto
25
+ "company_name_font_size": "1rem", # Tamaño de fuente estándar
26
+ }
27
+
28
+ def get_company_branding(self, company: Company | None) -> dict:
29
+ """
30
+ Retorna los estilos de branding finales para una compañía,
31
+ fusionando los valores por defecto con los personalizados.
32
+
33
+ Args:
34
+ company: El objeto Company, que puede contener un dict de branding.
35
+
36
+ Returns:
37
+ Un diccionario con todos los estilos de branding listos para usar en la plantilla.
38
+ """
39
+ # Empezamos con una copia de los valores por defecto
40
+ final_branding_values = self._default_branding.copy()
41
+
42
+ # Si la compañía existe y tiene branding personalizado, lo fusionamos.
43
+ if company and company.branding:
44
+ final_branding_values.update(company.branding)
45
+
46
+ # Construimos las cadenas de estilo completas
47
+ header_style = (
48
+ f"background-color: {final_branding_values['header_background_color']}; "
49
+ f"color: {final_branding_values['header_text_color']};"
50
+ )
51
+ company_name_style = (
52
+ f"font-weight: {final_branding_values['company_name_font_weight']}; "
53
+ f"font-size: {final_branding_values['company_name_font_size']};"
54
+ )
55
+
56
+ return {
57
+ "name": company.name if company else "IAToolkit",
58
+ "header_style": header_style,
59
+ "company_name_style": company_name_style
60
+ }
@@ -4,39 +4,49 @@
4
4
 
5
5
  {% block content %}
6
6
  <!-- Sección de encabezado con el usuario conectado -->
7
- <div class="company-section d-flex justify-content-between align-items-center">
8
- <!-- Izquierda: Datos del usuario -->
9
- <span class="text-muted small fw-bold">
10
- {{ company_short_name }} - {{ external_user_id or user.email }}
7
+ <div class="company-section d-flex justify-content-between align-items-center px-3 py-2"
8
+ style="{{ branding.header_style }}">
9
+
10
+ <!-- Izquierda: Nombre de la Empresa -->
11
+ <span style="{{ branding.company_name_style }}">
12
+ {{ branding.name }}
11
13
  </span>
12
14
 
13
15
  <!-- Derecha: Grupo de iconos de acción -->
16
+ <!-- Derecha: Grupo de información y acciones del usuario -->
14
17
  <div class="d-flex align-items-center">
15
- <!-- "Powered by" -->
16
- <span class="text-muted" style="font-size: 0.75rem;">
17
- Powered by <strong>IAToolkit</strong>
18
+ <!-- 1. ID de Usuario -->
19
+ <span class="small fw-semibold">
20
+ {{ external_user_id or user.email }}
18
21
  </span>
19
22
 
20
- <!-- Icono de Historial -->
23
+ <!-- 2. Separador Vertical -->
24
+ <div class="vr mx-3"></div>
25
+
26
+ <!-- 3. Iconos de Acción -->
21
27
  <a href="javascript:void(0);" id="history-button"
22
- class="ms-3 action-icon-style" title="Historial con mis consultas">
28
+ class="action-icon-style" title="Historial con mis consultas" style="color: inherit;">
23
29
  <i class="bi bi-clock-history"></i>
24
30
  </a>
25
-
26
- <!-- Icono de Feedback -->
27
31
  <a href="javascript:void(0);" id="send-feedback-button"
28
- class="ms-3 action-icon-style" title="Tu feedback es muy importante">
32
+ class="ms-3 action-icon-style" title="Tu feedback es muy importante" style="color: inherit;">
29
33
  <i class="bi bi-emoji-smile"></i>
30
34
  </a>
31
35
 
32
- <!-- Icono de cerrar sesión -->
36
+ <!-- 4. Powered by (con mayor separación) -->
37
+ <span class="text-muted ms-4" style="font-size: 0.75rem;">
38
+ Powered by <strong>IAToolkit</strong>
39
+ </span>
40
+
41
+ <!-- 5. Icono de cerrar sesión (al final) -->
33
42
  {% if user.email %}
34
43
  <a href="{{ url_for('logout', company_short_name=company_short_name) }}"
35
- class="ms-3 action-icon-style" title="Cerrar sesión">
44
+ class="ms-3 action-icon-style" title="Cerrar sesión" style="color: inherit;">
36
45
  <i class="bi bi-box-arrow-right"></i>
37
46
  </a>
38
47
  {% endif %}
39
48
  </div>
49
+
40
50
  </div>
41
51
 
42
52
  <div id="chat-container"
@@ -95,8 +95,6 @@
95
95
 
96
96
  <script>
97
97
  // Variables pasadas desde Flask (HomeView)
98
- const CHAT_TOKEN_REQUEST_URL = "{{ chat_token_request_url|safe }}";
99
- const PUBLIC_CHAT_URL_TEMPLATE = "{{ public_chat_url_template|safe }}";
100
98
  const API_KEY = "{{ api_key|safe }}";
101
99
 
102
100
  $(document).ready(function () {
@@ -10,6 +10,7 @@ from injector import inject
10
10
  import os
11
11
  from iatoolkit.common.auth import IAuthentication
12
12
  from iatoolkit.services.prompt_manager_service import PromptService
13
+ from iatoolkit.services.branding_service import BrandingService
13
14
 
14
15
 
15
16
  class ChatView(MethodView):
@@ -17,10 +18,13 @@ class ChatView(MethodView):
17
18
  def __init__(self,
18
19
  iauthentication: IAuthentication,
19
20
  prompt_service: PromptService,
20
- profile_service: ProfileService):
21
+ profile_service: ProfileService,
22
+ branding_service: BrandingService
23
+ ):
21
24
  self.iauthentication = iauthentication
22
25
  self.profile_service = profile_service
23
26
  self.prompt_service = prompt_service
27
+ self.branding_service = branding_service
24
28
 
25
29
  def get(self, company_short_name: str):
26
30
  # get access credentials
@@ -40,8 +44,11 @@ class ChatView(MethodView):
40
44
  # 2. get the company prompts
41
45
  prompts = self.prompt_service.get_user_prompts(company_short_name)
42
46
 
47
+ # 3. get the branding data
48
+ branding_data = self.branding_service.get_company_branding(company)
49
+
43
50
  return render_template("chat.html",
44
- company=company,
51
+ branding=branding_data,
45
52
  company_short_name=company_short_name,
46
53
  is_mobile=is_mobile,
47
54
  alert_message=alert_message,
@@ -13,6 +13,7 @@ from iatoolkit.services.profile_service import ProfileService
13
13
  from iatoolkit.services.query_service import QueryService
14
14
  from iatoolkit.services.prompt_manager_service import PromptService
15
15
  from iatoolkit.services.jwt_service import JWTService
16
+ from iatoolkit.services.branding_service import BrandingService
16
17
 
17
18
  class ExternalChatLoginView(MethodView):
18
19
  @inject
@@ -21,13 +22,15 @@ class ExternalChatLoginView(MethodView):
21
22
  query_service: QueryService,
22
23
  prompt_service: PromptService,
23
24
  iauthentication: IAuthentication,
24
- jwt_service: JWTService
25
+ jwt_service: JWTService,
26
+ branding_service: BrandingService
25
27
  ):
26
28
  self.profile_service = profile_service
27
29
  self.query_service = query_service
28
30
  self.prompt_service = prompt_service
29
31
  self.iauthentication = iauthentication
30
32
  self.jwt_service = jwt_service
33
+ self.branding_service = branding_service
31
34
 
32
35
  def post(self, company_short_name: str):
33
36
  data = request.get_json()
@@ -35,6 +38,7 @@ class ExternalChatLoginView(MethodView):
35
38
  return jsonify({"error": "Falta external_user_id"}), 400
36
39
 
37
40
  external_user_id = data['external_user_id']
41
+
38
42
  # 1. get access credentials
39
43
  iaut = self.iauthentication.verify(
40
44
  company_short_name,
@@ -67,13 +71,16 @@ class ExternalChatLoginView(MethodView):
67
71
  # 3. get the prompt list from backend
68
72
  prompts = self.prompt_service.get_user_prompts(company_short_name)
69
73
 
70
- # 4. render the chat page with the company/user information.
74
+ # 4. get the branding data
75
+ branding_data = self.branding_service.get_company_branding(company)
76
+
77
+ # 5. render the chat page with the company/user information.
71
78
  user_agent = request.user_agent
72
79
  is_mobile = user_agent.platform in ["android", "iphone", "ipad"] or "mobile" in user_agent.string.lower()
73
80
 
74
81
  chat_html = render_template("chat.html",
75
- company=company,
76
82
  company_short_name=company_short_name,
83
+ branding=branding_data,
77
84
  external_user_id=external_user_id,
78
85
  is_mobile=is_mobile,
79
86
  auth_method='jwt', # login method is JWT
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: iatoolkit
3
- Version: 0.9.4
3
+ Version: 0.10.0
4
4
  Summary: IAToolkit
5
5
  Author: Fernando Libedinsky
6
6
  License-Expression: MIT
@@ -44,6 +44,7 @@ src/iatoolkit/repositories/tasks_repo.py
44
44
  src/iatoolkit/repositories/vs_repo.py
45
45
  src/iatoolkit/services/__init__.py
46
46
  src/iatoolkit/services/benchmark_service.py
47
+ src/iatoolkit/services/branding_service.py
47
48
  src/iatoolkit/services/dispatcher_service.py
48
49
  src/iatoolkit/services/document_service.py
49
50
  src/iatoolkit/services/excel_service.py
File without changes
File without changes
File without changes