iatoolkit 0.63.0__tar.gz → 0.63.2__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 (119) hide show
  1. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/PKG-INFO +1 -1
  2. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/pyproject.toml +1 -1
  3. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/iatoolkit.py +1 -1
  4. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/templates/_company_header.html +7 -3
  5. iatoolkit-0.63.2/src/iatoolkit/templates/_login_widget.html +42 -0
  6. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/templates/change_password.html +9 -11
  7. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/templates/error.html +9 -13
  8. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/views/change_password_view.py +5 -3
  9. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/views/forgot_password_view.py +9 -5
  10. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/views/home_view.py +2 -4
  11. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/views/login_view.py +14 -8
  12. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/views/signup_view.py +9 -5
  13. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/views/verify_user_view.py +0 -1
  14. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit.egg-info/PKG-INFO +1 -1
  15. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit.egg-info/SOURCES.txt +1 -0
  16. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/readme.md +0 -0
  17. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/requirements.txt +0 -0
  18. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/setup.cfg +0 -0
  19. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/__init__.py +0 -0
  20. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/base_company.py +0 -0
  21. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/cli_commands.py +0 -0
  22. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/common/__init__.py +0 -0
  23. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/common/exceptions.py +0 -0
  24. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/common/routes.py +0 -0
  25. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/common/session_manager.py +0 -0
  26. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/common/util.py +0 -0
  27. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/company_registry.py +0 -0
  28. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/infra/__init__.py +0 -0
  29. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/infra/call_service.py +0 -0
  30. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/infra/connectors/__init__.py +0 -0
  31. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/infra/connectors/file_connector.py +0 -0
  32. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/infra/connectors/file_connector_factory.py +0 -0
  33. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/infra/connectors/google_cloud_storage_connector.py +0 -0
  34. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/infra/connectors/google_drive_connector.py +0 -0
  35. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/infra/connectors/local_file_connector.py +0 -0
  36. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/infra/connectors/s3_connector.py +0 -0
  37. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/infra/gemini_adapter.py +0 -0
  38. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/infra/google_chat_app.py +0 -0
  39. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/infra/llm_client.py +0 -0
  40. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/infra/llm_proxy.py +0 -0
  41. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/infra/llm_response.py +0 -0
  42. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/infra/mail_app.py +0 -0
  43. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/infra/openai_adapter.py +0 -0
  44. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/infra/redis_session_manager.py +0 -0
  45. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/repositories/__init__.py +0 -0
  46. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/repositories/database_manager.py +0 -0
  47. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/repositories/document_repo.py +0 -0
  48. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/repositories/llm_query_repo.py +0 -0
  49. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/repositories/models.py +0 -0
  50. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/repositories/profile_repo.py +0 -0
  51. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/repositories/tasks_repo.py +0 -0
  52. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/repositories/vs_repo.py +0 -0
  53. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/services/__init__.py +0 -0
  54. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/services/auth_service.py +0 -0
  55. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/services/benchmark_service.py +0 -0
  56. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/services/branding_service.py +0 -0
  57. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/services/dispatcher_service.py +0 -0
  58. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/services/document_service.py +0 -0
  59. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/services/excel_service.py +0 -0
  60. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/services/file_processor_service.py +0 -0
  61. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/services/history_service.py +0 -0
  62. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/services/jwt_service.py +0 -0
  63. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/services/load_documents_service.py +0 -0
  64. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/services/mail_service.py +0 -0
  65. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/services/onboarding_service.py +0 -0
  66. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/services/profile_service.py +0 -0
  67. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/services/prompt_manager_service.py +0 -0
  68. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/services/query_service.py +0 -0
  69. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/services/search_service.py +0 -0
  70. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/services/sql_service.py +0 -0
  71. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/services/tasks_service.py +0 -0
  72. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/services/user_feedback_service.py +0 -0
  73. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/services/user_session_context_service.py +0 -0
  74. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/static/images/fernando.jpeg +0 -0
  75. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/static/js/chat_feedback_button.js +0 -0
  76. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/static/js/chat_filepond.js +0 -0
  77. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/static/js/chat_history_button.js +0 -0
  78. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/static/js/chat_logout_button.js +0 -0
  79. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/static/js/chat_main.js +0 -0
  80. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/static/js/chat_onboarding_button.js +0 -0
  81. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/static/js/chat_prompt_manager.js +0 -0
  82. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/static/js/chat_reload_button.js +0 -0
  83. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/static/styles/chat_iatoolkit.css +0 -0
  84. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/static/styles/chat_info.css +0 -0
  85. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/static/styles/chat_modal.css +0 -0
  86. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/static/styles/landing_page.css +0 -0
  87. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/static/styles/llm_output.css +0 -0
  88. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/static/styles/onboarding.css +0 -0
  89. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/system_prompts/format_styles.prompt +0 -0
  90. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/system_prompts/query_main.prompt +0 -0
  91. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/system_prompts/sql_rules.prompt +0 -0
  92. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/templates/about.html +0 -0
  93. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/templates/base.html +0 -0
  94. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/templates/chat.html +0 -0
  95. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/templates/chat_modals.html +0 -0
  96. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/templates/forgot_password.html +0 -0
  97. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/templates/header.html +0 -0
  98. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/templates/index.html +0 -0
  99. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/templates/login_simulation.html +0 -0
  100. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/templates/onboarding_shell.html +0 -0
  101. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/templates/signup.html +0 -0
  102. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/templates/test.html +0 -0
  103. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/views/__init__.py +0 -0
  104. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/views/base_login_view.py +0 -0
  105. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/views/external_login_view.py +0 -0
  106. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/views/file_store_api_view.py +0 -0
  107. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/views/history_api_view.py +0 -0
  108. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/views/index_view.py +0 -0
  109. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/views/init_context_api_view.py +0 -0
  110. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/views/llmquery_api_view.py +0 -0
  111. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/views/login_simulation_view.py +0 -0
  112. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/views/logout_api_view.py +0 -0
  113. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/views/prompt_api_view.py +0 -0
  114. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/views/tasks_api_view.py +0 -0
  115. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/views/tasks_review_api_view.py +0 -0
  116. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit/views/user_feedback_api_view.py +0 -0
  117. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit.egg-info/dependency_links.txt +0 -0
  118. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/src/iatoolkit.egg-info/requires.txt +0 -0
  119. {iatoolkit-0.63.0 → iatoolkit-0.63.2}/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.63.0
3
+ Version: 0.63.2
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.63.0"
7
+ version = "0.63.2"
8
8
  requires-python = ">=3.12"
9
9
  description = "IAToolkit"
10
10
  readme = "readme.md"
@@ -19,7 +19,7 @@ from werkzeug.middleware.proxy_fix import ProxyFix
19
19
  from injector import Binder, Injector, singleton
20
20
  from importlib.metadata import version as _pkg_version, PackageNotFoundError
21
21
 
22
- IATOOLKIT_VERSION = "0.63.0"
22
+ IATOOLKIT_VERSION = "0.63.2"
23
23
 
24
24
  # global variable for the unique instance of IAToolkit
25
25
  _iatoolkit_instance: Optional['IAToolkit'] = None
@@ -1,16 +1,20 @@
1
1
  {# El div principal ahora es un contenedor y tiene los estilos y clases de alineación #}
2
2
  <div class="custom-company-header container d-flex justify-content-between align-items-center">
3
3
 
4
+ {% if company_short_name and branding %}
4
5
  <a href="{{ url_for('home', company_short_name=company_short_name) }}"
5
6
  class="brand-name"
6
7
  style="{{ branding.primary_text_style }}">
7
- {{ branding.name }}
8
+ {{ branding.name }} IA
8
9
  </a>
9
-
10
+ {% else %}
11
+ <span class="brand-name">
12
+ IAToolkit
13
+ </span>
14
+ {% endif %}
10
15
 
11
16
  {# Texto "Powered by" con enlace a iatoolkit.com #}
12
17
  <span class="powered-by">
13
18
  Powered by <a href="{{ url_for('index') }}" rel="noopener noreferrer" class="iatoolkit-link">IAToolkit</a>
14
19
  </span>
15
-
16
20
  </div>
@@ -0,0 +1,42 @@
1
+ <div class="branded-form-container">
2
+ <h4 class="branded-form-title">Iniciar Sesión</h4>
3
+
4
+ <!-- 1. Encabezado de Marketing -->
5
+ <div class="text-center mb-4">
6
+ <p class="text-muted widget-intro-text">
7
+ Ingresa tus credenciales para acceder a la plataforma de {{ branding.name }}.
8
+ </p>
9
+ </div>
10
+
11
+ <!-- 2. Formulario de Inicio de Sesión -->
12
+ <form id="login-form"
13
+ action="{{ url_for('login', company_short_name=company_short_name) }}"
14
+ method="post">
15
+ <div class="mb-3">
16
+ <label for="email" class="form-label d-block">Correo Electrónico</label>
17
+ <input type="email" id="email" name="email" class="form-control"
18
+ required value="{{ form_data.email if form_data is defined else '' }}">
19
+ </div>
20
+ <div class="mb-3">
21
+ <label for="password" class="form-label d-block">Contraseña</label>
22
+ <input type="password" id="password" name="password"
23
+ class="form-control" required>
24
+ </div>
25
+ <button type="submit" class="btn btn-branded-primary w-100 fw-bold py-2">
26
+ Iniciar Sesión
27
+ </button>
28
+ </form>
29
+
30
+ <!-- 3. Nueva Sección de Registro más Atractiva -->
31
+ <div class="mt-4 pt-3 text-center" style="border-top: 1px solid #e0e0e0;">
32
+ <span class="text-muted small">¿Eres nuevo aquí?</span>
33
+ <a href="{{ url_for('signup', company_short_name=company_short_name) }}" id="signup-link" class="fw-bold ms-1 text-decoration-none" style="color: var(--brand-primary-color);">Crea una cuenta gratis</a>
34
+ </div>
35
+
36
+ <!-- 4. Enlace de Recuperación de Contraseña (más sutil) -->
37
+ <div class="text-center mt-2">
38
+ <a href="{{ url_for('forgot_password', company_short_name=company_short_name) }}" class="text-decoration-none text-muted" style="font-size: 0.8rem;">
39
+ ¿Olvidaste tu contraseña?
40
+ </a>
41
+ </div>
42
+ </div>
@@ -2,31 +2,29 @@
2
2
 
3
3
  {% block title %}Cambiar Contraseña - {{ company.name }}{% endblock %}
4
4
 
5
- {% block content %}
6
- <!-- 1. Incluimos los estilos de branding reutilizables -->
7
- {% include '_branding_styles.html' %}
8
-
9
- <!-- Enlazamos la hoja de estilos de la landing page para reutilizar estilos -->
10
- <link rel="stylesheet" href="{{ iatoolkit_base_url }}/static/styles/landing_page.css">
5
+ {% block styles %}
6
+ {# Carga las variables de CSS personalizadas de la empresa #}
7
+ <style>
8
+ {{ branding.css_variables | safe }}
9
+ </style>
10
+ {% endblock %}
11
11
 
12
- <!-- 2. Incluimos la barra de navegación reutilizable -->
13
- {% include '_navbar.html' %}
12
+ {% block content %}
13
+ {% include '_company_header.html' %}
14
14
 
15
- <!-- 3. Sección contenedora para centrar el contenido -->
15
+ <!-- Sección contenedora para centrar el contenido -->
16
16
  <section class="hero-section">
17
17
  <div class="container">
18
18
  <div class="row justify-content-center">
19
19
  <div class="col-lg-6 col-md-8">
20
20
  <div class="branded-form-container">
21
21
  <h4 class="branded-form-title">Crear Nueva Contraseña</h4>
22
-
23
22
  <p class="text-muted text-center mb-4">
24
23
  Estás cambiando la contraseña para <strong>{{ email }}</strong>.
25
24
  </p>
26
25
 
27
26
  <form action="{{ url_for('change_password', company_short_name=company_short_name, token=token) }}" method="post">
28
27
 
29
- <!-- CAMPO RESTAURADO: Código Temporal -->
30
28
  <div class="mb-3">
31
29
  <label for="temp_code" class="form-label text-secondary">Código Temporal</label>
32
30
  <input type="text" id="temp_code" name="temp_code" class="form-control"
@@ -1,23 +1,22 @@
1
1
  {% extends "base.html" %}
2
2
 
3
- {% block title %}Error - {{ company.name }}{% endblock %}
3
+ {% block title %}Error {% endblock %}
4
4
 
5
5
  {% block styles %}
6
- {# Carga las variables de CSS y los estilos principales de la marca #}
6
+ {# Carga las variables de CSS personalizadas de la empresa #}
7
+ {% if branding %}
7
8
  <style>
8
9
  {{ branding.css_variables | safe }}
9
10
  </style>
10
- <link rel="stylesheet" href="{{ url_for('static', filename='styles/chat_iatoolkit.css') }}">
11
+ {% endif %}
11
12
  {# Enlace a los iconos de Bootstrap para el icono de error #}
12
13
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css">
13
14
  {% endblock %}
14
15
 
15
16
  {% block content %}
16
-
17
- {# 1. Incluimos el encabezado reutilizable de la empresa #}
18
17
  {% include '_company_header.html' %}
19
18
 
20
- {# 2. Contenedor principal para el mensaje de error #}
19
+ {# Contenedor principal para el mensaje de error #}
21
20
  <div class="container mt-5">
22
21
  <div class="row justify-content-center">
23
22
  <div class="col-md-8 col-lg-6">
@@ -29,22 +28,19 @@
29
28
  {# Icono de error grande y visible #}
30
29
  <i class="bi bi-exclamation-triangle-fill text-danger" style="font-size: 4rem;"></i>
31
30
 
32
- <h2 class="card-title mt-4">Ha Ocurrido un Error</h2>
31
+ <h4 class="card-title mt-4">Ha Ocurrido un Error</h4>
33
32
 
34
33
  {# El mensaje de error dinámico que se pasa desde la vista #}
35
34
  <p class="text-muted mt-3 mb-4">
36
35
  {{ message | default('Lo sentimos, algo salió mal. Por favor, inténtalo de nuevo más tarde.') }}
37
36
  </p>
38
37
 
39
- {# Botón para volver a la página de inicio de la empresa #}
40
- <a href="{{ url_for('home', company_short_name=company_short_name) }}"
41
- class="btn btn-branded-primary px-4">
42
- Volver al Inicio
38
+ <a href="javascript:history.back()"
39
+ class="btn btn-branded-primary px-4">
40
+ Volver
43
41
  </a>
44
-
45
42
  </div>
46
43
  </div>
47
-
48
44
  </div>
49
45
  </div>
50
46
  </div>
@@ -50,7 +50,9 @@ class ChangePasswordView(MethodView):
50
50
  # get company info
51
51
  company = self.profile_service.get_company_by_short_name(company_short_name)
52
52
  if not company:
53
- return render_template('error.html', message=f"Empresa no encontrada: {company_short_name}"), 404
53
+ return render_template('error.html',
54
+ company_short_name=company_short_name,
55
+ message=f"Empresa no encontrada: {company_short_name}"), 404
54
56
 
55
57
  branding_data = self.branding_service.get_company_branding(company)
56
58
  try:
@@ -95,6 +97,6 @@ class ChangePasswordView(MethodView):
95
97
 
96
98
  except Exception as e:
97
99
  return render_template("error.html",
98
- company=company,
99
100
  company_short_name=company_short_name,
100
- message="Ha ocurrido un error inesperado."), 500
101
+ branding=branding_data,
102
+ message=f"Ha ocurrido un error inesperado: {str(e)}"), 500
@@ -23,7 +23,9 @@ class ForgotPasswordView(MethodView):
23
23
  # get company info
24
24
  company = self.profile_service.get_company_by_short_name(company_short_name)
25
25
  if not company:
26
- return render_template('error.html', message="Empresa no encontrada"), 404
26
+ return render_template('error.html',
27
+ company_short_name=company_short_name,
28
+ message="Empresa no encontrada"), 404
27
29
 
28
30
  branding_data = self.branding_service.get_company_branding(company)
29
31
  return render_template('forgot_password.html',
@@ -35,7 +37,10 @@ class ForgotPasswordView(MethodView):
35
37
  def post(self, company_short_name: str):
36
38
  company = self.profile_service.get_company_by_short_name(company_short_name)
37
39
  if not company:
38
- return render_template('error.html', message="Empresa no encontrada"), 404
40
+ return render_template('error.html',
41
+ company_short_name=company_short_name,
42
+ message="Empresa no encontrada"), 404
43
+ branding_data = self.branding_service.get_company_branding(company)
39
44
 
40
45
  try:
41
46
  email = request.form.get('email')
@@ -48,7 +53,6 @@ class ForgotPasswordView(MethodView):
48
53
 
49
54
  response = self.profile_service.forgot_password(email=email, reset_url=reset_url)
50
55
  if "error" in response:
51
- branding_data = self.branding_service.get_company_branding(company)
52
56
  return render_template(
53
57
  'forgot_password.html',
54
58
  company=company,
@@ -64,7 +68,7 @@ class ForgotPasswordView(MethodView):
64
68
 
65
69
  except Exception as e:
66
70
  return render_template("error.html",
67
- company=company,
68
71
  company_short_name=company_short_name,
69
- message="Ha ocurrido un error inesperado."), 500
72
+ branding=branding_data,
73
+ message=f"Ha ocurrido un error inesperado: {str(e)}"), 500
70
74
 
@@ -25,7 +25,7 @@ class HomeView(MethodView):
25
25
  company = self.profile_service.get_company_by_short_name(company_short_name)
26
26
 
27
27
  if not company:
28
- abort(404, description=f"La empresa '{company_short_name}' no fue encontrada.")
28
+ return render_template('error.html', message="Empresa no encontrada"), 404
29
29
 
30
30
  branding_data = self.branding_service.get_company_branding(company)
31
31
  alert_message = session.pop('alert_message', None)
@@ -39,7 +39,6 @@ class HomeView(MethodView):
39
39
  if not os.path.exists(company_template_path):
40
40
  return render_template(
41
41
  "error.html",
42
- company=company,
43
42
  company_short_name=company_short_name,
44
43
  branding=branding_data,
45
44
  message=f"La plantilla de la página de inicio para la empresa '{company_short_name}' no está configurada."
@@ -62,8 +61,7 @@ class HomeView(MethodView):
62
61
  except Exception as e:
63
62
  return render_template(
64
63
  "error.html",
65
- company=company,
66
64
  company_short_name=company_short_name,
67
65
  branding=branding_data,
68
- message="Ocurrió un error al procesar la plantilla personalizada de la página de inicio."
66
+ message=f"Ocurrió un error al procesar la plantilla personalizada de la página de inicio: {str(e)}"
69
67
  ), 500
@@ -25,8 +25,11 @@ class LoginView(BaseLoginView):
25
25
  def post(self, company_short_name: str):
26
26
  company = self.profile_service.get_company_by_short_name(company_short_name)
27
27
  if not company:
28
- return render_template('error.html', message="Empresa no encontrada"), 404
28
+ return render_template('error.html',
29
+ company_short_name=company_short_name,
30
+ message="Empresa no encontrada"), 404
29
31
 
32
+ branding_data = self.branding_service.get_company_branding(company)
30
33
  email = request.form.get('email')
31
34
  password = request.form.get('password')
32
35
 
@@ -38,10 +41,9 @@ class LoginView(BaseLoginView):
38
41
  )
39
42
 
40
43
  if not auth_response['success']:
41
- branding_data = self.branding_service.get_company_branding(company)
42
44
 
43
45
  return render_template(
44
- 'index.html',
46
+ 'home.html',
45
47
  company_short_name=company_short_name,
46
48
  company=company,
47
49
  branding=branding_data,
@@ -60,8 +62,10 @@ class LoginView(BaseLoginView):
60
62
  try:
61
63
  return self._handle_login_path(company, user_identifier, target_url)
62
64
  except Exception as e:
63
- return render_template("error.html", company=company, company_short_name=company_short_name,
64
- message=f"Error processing login path: {str(e)}"), 500
65
+ return render_template("error.html",
66
+ company_short_name=company_short_name,
67
+ branding=branding_data,
68
+ message=f"Error processing login path: {str(e)}"), 500
65
69
 
66
70
 
67
71
  class FinalizeContextView(MethodView):
@@ -106,7 +110,10 @@ class FinalizeContextView(MethodView):
106
110
 
107
111
  company = self.profile_service.get_company_by_short_name(company_short_name)
108
112
  if not company:
109
- return render_template('error.html', message="Empresa no encontrada"), 404
113
+ return render_template('error.html',
114
+ company_short_name=company_short_name,
115
+ message="Empresa no encontrada"), 404
116
+ branding_data = self.branding_service.get_company_branding(company)
110
117
 
111
118
  try:
112
119
  # 2. Finalize the context rebuild (the heavy task).
@@ -117,7 +124,6 @@ class FinalizeContextView(MethodView):
117
124
 
118
125
  # 3. render the chat page.
119
126
  prompts = self.prompt_service.get_user_prompts(company_short_name)
120
- branding_data = self.branding_service.get_company_branding(company)
121
127
  onboarding_cards = self.onboarding_service.get_onboarding_cards(company)
122
128
 
123
129
  return render_template(
@@ -132,7 +138,7 @@ class FinalizeContextView(MethodView):
132
138
 
133
139
  except Exception as e:
134
140
  return render_template("error.html",
135
- company=company,
136
141
  company_short_name=company_short_name,
142
+ branding=branding_data,
137
143
  message=f"An unexpected error occurred during context loading: {str(e)}"), 500
138
144
 
@@ -25,7 +25,9 @@ class SignupView(MethodView):
25
25
  # get company info
26
26
  company = self.profile_service.get_company_by_short_name(company_short_name)
27
27
  if not company:
28
- return render_template('error.html', message="Empresa no encontrada"), 404
28
+ return render_template('error.html',
29
+ company_short_name=company_short_name,
30
+ message="Empresa no encontrada"), 404
29
31
 
30
32
  # Obtener los datos de branding
31
33
  branding_data = self.branding_service.get_company_branding(company)
@@ -39,8 +41,11 @@ class SignupView(MethodView):
39
41
  # get company info
40
42
  company = self.profile_service.get_company_by_short_name(company_short_name)
41
43
  if not company:
42
- return render_template('error.html', message="Empresa no encontrada"), 404
44
+ return render_template('error.html',
45
+ company_short_name=company_short_name,
46
+ message="Empresa no encontrada"), 404
43
47
 
48
+ branding_data = self.branding_service.get_company_branding(company)
44
49
  try:
45
50
  first_name = request.form.get('first_name')
46
51
  last_name = request.form.get('last_name')
@@ -62,7 +67,6 @@ class SignupView(MethodView):
62
67
  verification_url=verification_url)
63
68
 
64
69
  if "error" in response:
65
- branding_data = self.branding_service.get_company_branding(company)
66
70
  return render_template(
67
71
  'signup.html',
68
72
  company=company,
@@ -86,7 +90,7 @@ class SignupView(MethodView):
86
90
 
87
91
  except Exception as e:
88
92
  return render_template("error.html",
89
- company=company,
90
93
  company_short_name=company_short_name,
91
- message="Ha ocurrido un error inesperado."), 500
94
+ branding=branding_data,
95
+ message=f"Ha ocurrido un error inesperado: {str(e)}"), 500
92
96
 
@@ -55,7 +55,6 @@ class VerifyAccountView(MethodView):
55
55
 
56
56
  except Exception as e:
57
57
  return render_template("error.html",
58
- company=company,
59
58
  company_short_name=company_short_name,
60
59
  branding=branding_data,
61
60
  message="Ha ocurrido un error inesperado."), 500
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: iatoolkit
3
- Version: 0.63.0
3
+ Version: 0.63.2
4
4
  Summary: IAToolkit
5
5
  Author: Fernando Libedinsky
6
6
  License-Expression: MIT
@@ -81,6 +81,7 @@ src/iatoolkit/system_prompts/format_styles.prompt
81
81
  src/iatoolkit/system_prompts/query_main.prompt
82
82
  src/iatoolkit/system_prompts/sql_rules.prompt
83
83
  src/iatoolkit/templates/_company_header.html
84
+ src/iatoolkit/templates/_login_widget.html
84
85
  src/iatoolkit/templates/about.html
85
86
  src/iatoolkit/templates/base.html
86
87
  src/iatoolkit/templates/change_password.html
File without changes
File without changes
File without changes