iatoolkit 0.63.1__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.1 → iatoolkit-0.63.2}/PKG-INFO +1 -1
  2. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/pyproject.toml +1 -1
  3. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/iatoolkit.py +1 -1
  4. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/templates/_company_header.html +6 -2
  5. iatoolkit-0.63.2/src/iatoolkit/templates/_login_widget.html +42 -0
  6. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/templates/change_password.html +9 -11
  7. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/templates/error.html +9 -13
  8. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/views/change_password_view.py +3 -2
  9. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/views/forgot_password_view.py +6 -3
  10. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/views/home_view.py +1 -3
  11. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/views/login_view.py +9 -6
  12. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/views/signup_view.py +8 -4
  13. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/views/verify_user_view.py +0 -1
  14. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit.egg-info/PKG-INFO +1 -1
  15. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit.egg-info/SOURCES.txt +1 -0
  16. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/readme.md +0 -0
  17. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/requirements.txt +0 -0
  18. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/setup.cfg +0 -0
  19. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/__init__.py +0 -0
  20. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/base_company.py +0 -0
  21. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/cli_commands.py +0 -0
  22. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/common/__init__.py +0 -0
  23. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/common/exceptions.py +0 -0
  24. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/common/routes.py +0 -0
  25. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/common/session_manager.py +0 -0
  26. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/common/util.py +0 -0
  27. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/company_registry.py +0 -0
  28. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/infra/__init__.py +0 -0
  29. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/infra/call_service.py +0 -0
  30. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/infra/connectors/__init__.py +0 -0
  31. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/infra/connectors/file_connector.py +0 -0
  32. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/infra/connectors/file_connector_factory.py +0 -0
  33. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/infra/connectors/google_cloud_storage_connector.py +0 -0
  34. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/infra/connectors/google_drive_connector.py +0 -0
  35. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/infra/connectors/local_file_connector.py +0 -0
  36. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/infra/connectors/s3_connector.py +0 -0
  37. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/infra/gemini_adapter.py +0 -0
  38. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/infra/google_chat_app.py +0 -0
  39. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/infra/llm_client.py +0 -0
  40. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/infra/llm_proxy.py +0 -0
  41. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/infra/llm_response.py +0 -0
  42. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/infra/mail_app.py +0 -0
  43. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/infra/openai_adapter.py +0 -0
  44. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/infra/redis_session_manager.py +0 -0
  45. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/repositories/__init__.py +0 -0
  46. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/repositories/database_manager.py +0 -0
  47. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/repositories/document_repo.py +0 -0
  48. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/repositories/llm_query_repo.py +0 -0
  49. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/repositories/models.py +0 -0
  50. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/repositories/profile_repo.py +0 -0
  51. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/repositories/tasks_repo.py +0 -0
  52. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/repositories/vs_repo.py +0 -0
  53. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/services/__init__.py +0 -0
  54. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/services/auth_service.py +0 -0
  55. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/services/benchmark_service.py +0 -0
  56. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/services/branding_service.py +0 -0
  57. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/services/dispatcher_service.py +0 -0
  58. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/services/document_service.py +0 -0
  59. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/services/excel_service.py +0 -0
  60. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/services/file_processor_service.py +0 -0
  61. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/services/history_service.py +0 -0
  62. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/services/jwt_service.py +0 -0
  63. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/services/load_documents_service.py +0 -0
  64. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/services/mail_service.py +0 -0
  65. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/services/onboarding_service.py +0 -0
  66. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/services/profile_service.py +0 -0
  67. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/services/prompt_manager_service.py +0 -0
  68. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/services/query_service.py +0 -0
  69. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/services/search_service.py +0 -0
  70. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/services/sql_service.py +0 -0
  71. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/services/tasks_service.py +0 -0
  72. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/services/user_feedback_service.py +0 -0
  73. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/services/user_session_context_service.py +0 -0
  74. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/static/images/fernando.jpeg +0 -0
  75. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/static/js/chat_feedback_button.js +0 -0
  76. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/static/js/chat_filepond.js +0 -0
  77. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/static/js/chat_history_button.js +0 -0
  78. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/static/js/chat_logout_button.js +0 -0
  79. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/static/js/chat_main.js +0 -0
  80. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/static/js/chat_onboarding_button.js +0 -0
  81. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/static/js/chat_prompt_manager.js +0 -0
  82. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/static/js/chat_reload_button.js +0 -0
  83. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/static/styles/chat_iatoolkit.css +0 -0
  84. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/static/styles/chat_info.css +0 -0
  85. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/static/styles/chat_modal.css +0 -0
  86. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/static/styles/landing_page.css +0 -0
  87. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/static/styles/llm_output.css +0 -0
  88. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/static/styles/onboarding.css +0 -0
  89. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/system_prompts/format_styles.prompt +0 -0
  90. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/system_prompts/query_main.prompt +0 -0
  91. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/system_prompts/sql_rules.prompt +0 -0
  92. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/templates/about.html +0 -0
  93. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/templates/base.html +0 -0
  94. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/templates/chat.html +0 -0
  95. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/templates/chat_modals.html +0 -0
  96. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/templates/forgot_password.html +0 -0
  97. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/templates/header.html +0 -0
  98. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/templates/index.html +0 -0
  99. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/templates/login_simulation.html +0 -0
  100. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/templates/onboarding_shell.html +0 -0
  101. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/templates/signup.html +0 -0
  102. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/templates/test.html +0 -0
  103. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/views/__init__.py +0 -0
  104. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/views/base_login_view.py +0 -0
  105. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/views/external_login_view.py +0 -0
  106. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/views/file_store_api_view.py +0 -0
  107. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/views/history_api_view.py +0 -0
  108. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/views/index_view.py +0 -0
  109. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/views/init_context_api_view.py +0 -0
  110. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/views/llmquery_api_view.py +0 -0
  111. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/views/login_simulation_view.py +0 -0
  112. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/views/logout_api_view.py +0 -0
  113. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/views/prompt_api_view.py +0 -0
  114. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/views/tasks_api_view.py +0 -0
  115. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/views/tasks_review_api_view.py +0 -0
  116. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit/views/user_feedback_api_view.py +0 -0
  117. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit.egg-info/dependency_links.txt +0 -0
  118. {iatoolkit-0.63.1 → iatoolkit-0.63.2}/src/iatoolkit.egg-info/requires.txt +0 -0
  119. {iatoolkit-0.63.1 → 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.1
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.1"
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.1"
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
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,7 +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
101
  branding=branding_data,
101
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,9 @@ 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
39
43
  branding_data = self.branding_service.get_company_branding(company)
40
44
 
41
45
  try:
@@ -64,7 +68,6 @@ 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
72
  branding=branding_data,
70
73
  message=f"Ha ocurrido un error inesperado: {str(e)}"), 500
@@ -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,7 +61,6 @@ 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
66
  message=f"Ocurrió un error al procesar la plantilla personalizada de la página de inicio: {str(e)}"
@@ -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,
@@ -61,8 +63,8 @@ class LoginView(BaseLoginView):
61
63
  return self._handle_login_path(company, user_identifier, target_url)
62
64
  except Exception as e:
63
65
  return render_template("error.html",
64
- company=company,
65
66
  company_short_name=company_short_name,
67
+ branding=branding_data,
66
68
  message=f"Error processing login path: {str(e)}"), 500
67
69
 
68
70
 
@@ -108,7 +110,9 @@ class FinalizeContextView(MethodView):
108
110
 
109
111
  company = self.profile_service.get_company_by_short_name(company_short_name)
110
112
  if not company:
111
- 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
112
116
  branding_data = self.branding_service.get_company_branding(company)
113
117
 
114
118
  try:
@@ -134,7 +138,6 @@ class FinalizeContextView(MethodView):
134
138
 
135
139
  except Exception as e:
136
140
  return render_template("error.html",
137
- company=company,
138
141
  company_short_name=company_short_name,
139
142
  branding=branding_data,
140
143
  message=f"An unexpected error occurred during context loading: {str(e)}"), 500
@@ -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,
94
+ branding=branding_data,
91
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.1
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