iatoolkit 0.61.0__tar.gz → 0.62.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.
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/PKG-INFO +1 -1
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/pyproject.toml +1 -1
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/common/util.py +0 -6
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/iatoolkit.py +1 -1
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/templates/_company_header.html +8 -2
- iatoolkit-0.62.0/src/iatoolkit/views/home_view.py +69 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit.egg-info/PKG-INFO +1 -1
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit.egg-info/SOURCES.txt +0 -1
- iatoolkit-0.61.0/src/iatoolkit/templates/home.html +0 -80
- iatoolkit-0.61.0/src/iatoolkit/views/home_view.py +0 -43
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/readme.md +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/requirements.txt +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/setup.cfg +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/__init__.py +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/base_company.py +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/cli_commands.py +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/common/__init__.py +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/common/exceptions.py +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/common/routes.py +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/common/session_manager.py +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/company_registry.py +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/infra/__init__.py +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/infra/call_service.py +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/infra/connectors/__init__.py +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/infra/connectors/file_connector.py +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/infra/connectors/file_connector_factory.py +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/infra/connectors/google_cloud_storage_connector.py +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/infra/connectors/google_drive_connector.py +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/infra/connectors/local_file_connector.py +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/infra/connectors/s3_connector.py +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/infra/gemini_adapter.py +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/infra/google_chat_app.py +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/infra/llm_client.py +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/infra/llm_proxy.py +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/infra/llm_response.py +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/infra/mail_app.py +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/infra/openai_adapter.py +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/infra/redis_session_manager.py +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/repositories/__init__.py +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/repositories/database_manager.py +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/repositories/document_repo.py +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/repositories/llm_query_repo.py +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/repositories/models.py +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/repositories/profile_repo.py +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/repositories/tasks_repo.py +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/repositories/vs_repo.py +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/services/__init__.py +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/services/auth_service.py +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/services/benchmark_service.py +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/services/branding_service.py +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/services/dispatcher_service.py +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/services/document_service.py +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/services/excel_service.py +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/services/file_processor_service.py +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/services/history_service.py +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/services/jwt_service.py +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/services/load_documents_service.py +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/services/mail_service.py +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/services/onboarding_service.py +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/services/profile_service.py +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/services/prompt_manager_service.py +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/services/query_service.py +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/services/search_service.py +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/services/sql_service.py +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/services/tasks_service.py +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/services/user_feedback_service.py +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/services/user_session_context_service.py +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/static/images/fernando.jpeg +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/static/js/chat_feedback_button.js +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/static/js/chat_filepond.js +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/static/js/chat_history_button.js +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/static/js/chat_logout_button.js +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/static/js/chat_main.js +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/static/js/chat_onboarding_button.js +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/static/js/chat_prompt_manager.js +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/static/js/chat_reload_button.js +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/static/styles/chat_iatoolkit.css +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/static/styles/chat_info.css +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/static/styles/chat_modal.css +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/static/styles/landing_page.css +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/static/styles/llm_output.css +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/static/styles/onboarding.css +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/system_prompts/format_styles.prompt +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/system_prompts/query_main.prompt +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/system_prompts/sql_rules.prompt +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/templates/about.html +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/templates/base.html +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/templates/change_password.html +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/templates/chat.html +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/templates/chat_modals.html +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/templates/error.html +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/templates/forgot_password.html +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/templates/header.html +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/templates/index.html +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/templates/login_simulation.html +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/templates/onboarding_shell.html +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/templates/signup.html +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/templates/test.html +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/views/__init__.py +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/views/base_login_view.py +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/views/change_password_view.py +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/views/external_login_view.py +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/views/file_store_api_view.py +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/views/forgot_password_view.py +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/views/history_api_view.py +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/views/index_view.py +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/views/init_context_api_view.py +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/views/llmquery_api_view.py +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/views/login_simulation_view.py +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/views/login_view.py +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/views/logout_api_view.py +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/views/prompt_api_view.py +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/views/signup_view.py +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/views/tasks_api_view.py +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/views/tasks_review_api_view.py +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/views/user_feedback_api_view.py +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/views/verify_user_view.py +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit.egg-info/dependency_links.txt +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit.egg-info/requires.txt +0 -0
- {iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit.egg-info/top_level.txt +0 -0
|
@@ -21,10 +21,8 @@ class Utility:
|
|
|
21
21
|
def __init__(self):
|
|
22
22
|
self.encryption_key = os.getenv('FERNET_KEY')
|
|
23
23
|
|
|
24
|
-
|
|
25
24
|
def render_prompt_from_template(self,
|
|
26
25
|
template_pathname: str,
|
|
27
|
-
query: str = None,
|
|
28
26
|
client_data: dict = {},
|
|
29
27
|
**kwargs) -> str:
|
|
30
28
|
|
|
@@ -37,8 +35,6 @@ class Utility:
|
|
|
37
35
|
env = Environment(loader=FileSystemLoader(template_dir))
|
|
38
36
|
template = env.get_template(template_file)
|
|
39
37
|
|
|
40
|
-
kwargs["query"] = query
|
|
41
|
-
|
|
42
38
|
# add all the keys in client_data to kwargs
|
|
43
39
|
kwargs.update(client_data)
|
|
44
40
|
|
|
@@ -53,7 +49,6 @@ class Utility:
|
|
|
53
49
|
def render_prompt_from_string(self,
|
|
54
50
|
template_string: str,
|
|
55
51
|
searchpath: str | list[str] = None,
|
|
56
|
-
query: str = None,
|
|
57
52
|
client_data: dict = {},
|
|
58
53
|
**kwargs) -> str:
|
|
59
54
|
"""
|
|
@@ -76,7 +71,6 @@ class Utility:
|
|
|
76
71
|
env = Environment(loader=loader)
|
|
77
72
|
template = env.from_string(template_string)
|
|
78
73
|
|
|
79
|
-
kwargs["query"] = query
|
|
80
74
|
kwargs.update(client_data)
|
|
81
75
|
|
|
82
76
|
prompt = template.render(**kwargs)
|
|
@@ -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.
|
|
22
|
+
IATOOLKIT_VERSION = "0.62.0"
|
|
23
23
|
|
|
24
24
|
# global variable for the unique instance of IAToolkit
|
|
25
25
|
_iatoolkit_instance: Optional['IAToolkit'] = None
|
|
@@ -1,15 +1,21 @@
|
|
|
1
1
|
<div class="custom-company-header" style="{{ branding.header_style }}">
|
|
2
2
|
|
|
3
3
|
{# Enlace condicional para el nombre de la marca a la izquierda #}
|
|
4
|
+
{% if company_short_name %}
|
|
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 }}
|
|
8
9
|
</a>
|
|
10
|
+
{% else %}
|
|
11
|
+
<span class="brand-name" style="{{ branding.primary_text_style }}">
|
|
12
|
+
{{ branding.name }}
|
|
13
|
+
</span>
|
|
14
|
+
{% endif %}
|
|
9
15
|
|
|
16
|
+
{# Texto "Powered by" con enlace a iatoolkit.com #}
|
|
10
17
|
<span class="powered-by">
|
|
11
|
-
Powered by IAToolkit
|
|
12
|
-
</a>
|
|
18
|
+
Powered by <a href="https://www.iatoolkit.com" target="_blank" rel="noopener noreferrer" class="iatoolkit-link">IAToolkit</a>
|
|
13
19
|
</span>
|
|
14
20
|
|
|
15
21
|
</div>
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# iatoolkit/views/home_view.py
|
|
2
|
+
import logging
|
|
3
|
+
import os
|
|
4
|
+
from flask import render_template, abort, session, render_template_string
|
|
5
|
+
from flask.views import MethodView
|
|
6
|
+
from injector import inject
|
|
7
|
+
from iatoolkit.services.profile_service import ProfileService
|
|
8
|
+
from iatoolkit.services.branding_service import BrandingService
|
|
9
|
+
import logging
|
|
10
|
+
|
|
11
|
+
class HomeView(MethodView):
|
|
12
|
+
"""
|
|
13
|
+
Handles the rendering of the company-specific home page with a login widget.
|
|
14
|
+
If the custom template is not found or fails, it renders an error page.
|
|
15
|
+
"""
|
|
16
|
+
|
|
17
|
+
@inject
|
|
18
|
+
def __init__(self,
|
|
19
|
+
profile_service: ProfileService,
|
|
20
|
+
branding_service: BrandingService):
|
|
21
|
+
self.profile_service = profile_service
|
|
22
|
+
self.branding_service = branding_service
|
|
23
|
+
|
|
24
|
+
def get(self, company_short_name: str):
|
|
25
|
+
company = self.profile_service.get_company_by_short_name(company_short_name)
|
|
26
|
+
|
|
27
|
+
if not company:
|
|
28
|
+
abort(404, description=f"La empresa '{company_short_name}' no fue encontrada.")
|
|
29
|
+
|
|
30
|
+
branding_data = self.branding_service.get_company_branding(company)
|
|
31
|
+
alert_message = session.pop('alert_message', None)
|
|
32
|
+
alert_icon = session.pop('alert_icon', 'error')
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
# 1. Construimos la ruta al archivo de plantilla específico de la empresa.
|
|
36
|
+
company_template_path = os.path.join(os.getcwd(), f'companies/{company_short_name}/templates/home.html')
|
|
37
|
+
|
|
38
|
+
# 2. Verificamos si el archivo de plantilla personalizado no existe.
|
|
39
|
+
if not os.path.exists(company_template_path):
|
|
40
|
+
return render_template(
|
|
41
|
+
"error.html",
|
|
42
|
+
company=company,
|
|
43
|
+
company_short_name=company_short_name,
|
|
44
|
+
branding=branding_data,
|
|
45
|
+
message=f"La plantilla de la página de inicio para la empresa '{company_short_name}' no está configurada."
|
|
46
|
+
), 500
|
|
47
|
+
|
|
48
|
+
# 3. Si el archivo existe, intentamos leerlo y renderizarlo.
|
|
49
|
+
try:
|
|
50
|
+
with open(company_template_path, 'r') as f:
|
|
51
|
+
template_string = f.read()
|
|
52
|
+
|
|
53
|
+
# Usamos render_template_string, que entiende el contexto de Flask.
|
|
54
|
+
return render_template_string(
|
|
55
|
+
template_string,
|
|
56
|
+
company=company,
|
|
57
|
+
company_short_name=company_short_name,
|
|
58
|
+
branding=branding_data,
|
|
59
|
+
alert_message=alert_message,
|
|
60
|
+
alert_icon=alert_icon
|
|
61
|
+
)
|
|
62
|
+
except Exception as e:
|
|
63
|
+
return render_template(
|
|
64
|
+
"error.html",
|
|
65
|
+
company=company,
|
|
66
|
+
company_short_name=company_short_name,
|
|
67
|
+
branding=branding_data,
|
|
68
|
+
message="Ocurrió un error al procesar la plantilla personalizada de la página de inicio."
|
|
69
|
+
), 500
|
|
@@ -89,7 +89,6 @@ src/iatoolkit/templates/chat_modals.html
|
|
|
89
89
|
src/iatoolkit/templates/error.html
|
|
90
90
|
src/iatoolkit/templates/forgot_password.html
|
|
91
91
|
src/iatoolkit/templates/header.html
|
|
92
|
-
src/iatoolkit/templates/home.html
|
|
93
92
|
src/iatoolkit/templates/index.html
|
|
94
93
|
src/iatoolkit/templates/login_simulation.html
|
|
95
94
|
src/iatoolkit/templates/onboarding_shell.html
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
{% extends "base.html" %}
|
|
2
|
-
|
|
3
|
-
{% block title %}{{ branding.name }} - Inicio{% endblock %}
|
|
4
|
-
|
|
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
|
-
|
|
12
|
-
{% block content %}
|
|
13
|
-
{% include '_company_header.html' %}
|
|
14
|
-
|
|
15
|
-
{# Contenido principal con la propuesta de valor y el widget de login #}
|
|
16
|
-
<div class="container my-4 my-md-5">
|
|
17
|
-
<div class="row align-items-center g-5">
|
|
18
|
-
|
|
19
|
-
{# Columna de la propuesta de valor #}
|
|
20
|
-
<div class="col-lg-7">
|
|
21
|
-
<h1 class="branded-headline mb-3">Inteligencia Artificial con nuestros propios datos</h1>
|
|
22
|
-
<p class="lead text-muted">
|
|
23
|
-
Hemos diseñado este asistente de inteligencia artificial, entrenado exclusivamente con el conocimiento y los datos de Sample Company, para ser tu principal punto de apoyo. Olvídate de buscar en múltiples sistemas; ahora puedes obtener respuestas precisas y agilizar tus tareas en un solo lugar.
|
|
24
|
-
</p>
|
|
25
|
-
<ul class="list-unstyled mt-4 fs-5">
|
|
26
|
-
<li class="mb-2"><i class="bi bi-check-circle-fill text-branded-primary me-2"></i>Consulta al instante políticas internas, manuales de procedimientos y la documentación de cualquier proyecto.</li>
|
|
27
|
-
<li class="mb-2"><i class="bi bi-check-circle-fill text-branded-primary me-2"></i>Genera resúmenes de informes, redacta borradores de correos electrónicos o traduce documentos con total seguridad.</li>
|
|
28
|
-
<li class="mb-2"><i class="bi bi-check-circle-fill text-branded-primary me-2"></i>Acelera tus proyectos encontrando rápidamente al experto o equipo correcto para cada consulta.</li> </ul>
|
|
29
|
-
</div>
|
|
30
|
-
|
|
31
|
-
{# Columna del widget de inicio de sesión #}
|
|
32
|
-
<div class="col-lg-5">
|
|
33
|
-
<div class="branded-form-container">
|
|
34
|
-
<h4 class="branded-form-title">Iniciar Sesión</h4>
|
|
35
|
-
|
|
36
|
-
<!-- 1. Encabezado de Marketing -->
|
|
37
|
-
<div class="text-center mb-4">
|
|
38
|
-
<p class="text-muted widget-intro-text">
|
|
39
|
-
Ingresa tus credenciales para acceder a la plataforma de {{ branding.name }}.
|
|
40
|
-
</p>
|
|
41
|
-
</div>
|
|
42
|
-
|
|
43
|
-
<!-- 2. Formulario de Inicio de Sesión -->
|
|
44
|
-
<form id="login-form"
|
|
45
|
-
action="{{ url_for('login', company_short_name=company_short_name) }}"
|
|
46
|
-
method="post">
|
|
47
|
-
<div class="mb-3">
|
|
48
|
-
<label for="email" class="form-label d-block">Correo Electrónico</label>
|
|
49
|
-
<input type="email" id="email" name="email" class="form-control"
|
|
50
|
-
required value="{{ form_data.email if form_data is defined else '' }}">
|
|
51
|
-
</div>
|
|
52
|
-
<div class="mb-3">
|
|
53
|
-
<label for="password" class="form-label d-block">Contraseña</label>
|
|
54
|
-
<input type="password" id="password" name="password"
|
|
55
|
-
class="form-control" required>
|
|
56
|
-
</div>
|
|
57
|
-
<button type="submit" class="btn btn-branded-primary w-100 fw-bold py-2">
|
|
58
|
-
Iniciar Sesión
|
|
59
|
-
</button>
|
|
60
|
-
</form>
|
|
61
|
-
|
|
62
|
-
<!-- 3. Nueva Sección de Registro más Atractiva -->
|
|
63
|
-
<div class="mt-4 pt-3 text-center" style="border-top: 1px solid #e0e0e0;">
|
|
64
|
-
<span class="text-muted small">¿Eres nuevo aquí?</span>
|
|
65
|
-
<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>
|
|
66
|
-
</div>
|
|
67
|
-
|
|
68
|
-
<!-- 4. Enlace de Recuperación de Contraseña (más sutil) -->
|
|
69
|
-
<div class="text-center mt-2">
|
|
70
|
-
<a href="{{ url_for('forgot_password', company_short_name=company_short_name) }}" class="text-decoration-none text-muted" style="font-size: 0.8rem;">
|
|
71
|
-
¿Olvidaste tu contraseña?
|
|
72
|
-
</a>
|
|
73
|
-
</div>
|
|
74
|
-
</div>
|
|
75
|
-
</div>
|
|
76
|
-
|
|
77
|
-
</div>
|
|
78
|
-
</div>
|
|
79
|
-
|
|
80
|
-
{% endblock %}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
# iatoolkit/views/home_view.py
|
|
2
|
-
|
|
3
|
-
from flask import render_template, abort, session
|
|
4
|
-
from flask.views import MethodView
|
|
5
|
-
from injector import inject
|
|
6
|
-
from iatoolkit.services.profile_service import ProfileService
|
|
7
|
-
from iatoolkit.services.branding_service import BrandingService
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
class HomeView(MethodView):
|
|
11
|
-
"""
|
|
12
|
-
Handles the rendering of the company-specific home page with a login widget.
|
|
13
|
-
"""
|
|
14
|
-
|
|
15
|
-
@inject
|
|
16
|
-
def __init__(self,
|
|
17
|
-
profile_service: ProfileService,
|
|
18
|
-
branding_service: BrandingService):
|
|
19
|
-
self.profile_service = profile_service
|
|
20
|
-
self.branding_service = branding_service
|
|
21
|
-
|
|
22
|
-
def get(self, company_short_name: str):
|
|
23
|
-
company = self.profile_service.get_company_by_short_name(company_short_name)
|
|
24
|
-
|
|
25
|
-
if not company:
|
|
26
|
-
abort(404, description=f"La empresa '{company_short_name}' no fue encontrada.")
|
|
27
|
-
|
|
28
|
-
# Obtener los datos de branding para la plantilla
|
|
29
|
-
branding_data = self.branding_service.get_company_branding(company)
|
|
30
|
-
|
|
31
|
-
# Recuperar y limpiar cualquier mensaje de alerta de la sesión
|
|
32
|
-
alert_message = session.pop('alert_message', None)
|
|
33
|
-
alert_icon = session.pop('alert_icon', 'error')
|
|
34
|
-
|
|
35
|
-
# Renderizar la nueva plantilla home.html
|
|
36
|
-
return render_template(
|
|
37
|
-
'home.html',
|
|
38
|
-
company=company,
|
|
39
|
-
company_short_name=company_short_name,
|
|
40
|
-
branding=branding_data,
|
|
41
|
-
alert_message=alert_message,
|
|
42
|
-
alert_icon=alert_icon
|
|
43
|
-
)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/infra/connectors/file_connector_factory.py
RENAMED
|
File without changes
|
|
File without changes
|
{iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/infra/connectors/google_drive_connector.py
RENAMED
|
File without changes
|
{iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/infra/connectors/local_file_connector.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iatoolkit-0.61.0 → iatoolkit-0.62.0}/src/iatoolkit/services/user_session_context_service.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|