iatoolkit 1.4.2__py3-none-any.whl → 1.9.0__py3-none-any.whl

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.
Files changed (29) hide show
  1. iatoolkit/__init__.py +1 -1
  2. iatoolkit/common/interfaces/database_provider.py +13 -8
  3. iatoolkit/common/routes.py +24 -6
  4. iatoolkit/common/util.py +21 -1
  5. iatoolkit/infra/connectors/file_connector_factory.py +1 -0
  6. iatoolkit/infra/connectors/s3_connector.py +4 -2
  7. iatoolkit/locales/en.yaml +72 -5
  8. iatoolkit/locales/es.yaml +71 -4
  9. iatoolkit/repositories/database_manager.py +27 -47
  10. iatoolkit/repositories/llm_query_repo.py +29 -7
  11. iatoolkit/repositories/models.py +16 -7
  12. iatoolkit/services/company_context_service.py +44 -20
  13. iatoolkit/services/configuration_service.py +227 -71
  14. iatoolkit/services/dispatcher_service.py +0 -3
  15. iatoolkit/services/knowledge_base_service.py +14 -1
  16. iatoolkit/services/load_documents_service.py +10 -3
  17. iatoolkit/services/prompt_service.py +210 -29
  18. iatoolkit/services/sql_service.py +17 -0
  19. iatoolkit/templates/chat.html +2 -1
  20. iatoolkit/views/categories_api_view.py +71 -0
  21. iatoolkit/views/configuration_api_view.py +163 -0
  22. iatoolkit/views/prompt_api_view.py +88 -7
  23. {iatoolkit-1.4.2.dist-info → iatoolkit-1.9.0.dist-info}/METADATA +1 -1
  24. {iatoolkit-1.4.2.dist-info → iatoolkit-1.9.0.dist-info}/RECORD +28 -27
  25. iatoolkit/views/load_company_configuration_api_view.py +0 -49
  26. {iatoolkit-1.4.2.dist-info → iatoolkit-1.9.0.dist-info}/WHEEL +0 -0
  27. {iatoolkit-1.4.2.dist-info → iatoolkit-1.9.0.dist-info}/licenses/LICENSE +0 -0
  28. {iatoolkit-1.4.2.dist-info → iatoolkit-1.9.0.dist-info}/licenses/LICENSE_COMMUNITY.md +0 -0
  29. {iatoolkit-1.4.2.dist-info → iatoolkit-1.9.0.dist-info}/top_level.txt +0 -0
@@ -3,9 +3,11 @@
3
3
  #
4
4
  # IAToolkit is open source software.
5
5
 
6
- from flask import jsonify
6
+ from flask import jsonify, request
7
7
  from flask.views import MethodView
8
8
  from iatoolkit.services.prompt_service import PromptService
9
+ from iatoolkit.services.profile_service import ProfileService
10
+ from iatoolkit.repositories.llm_query_repo import LLMQueryRepo
9
11
  from iatoolkit.services.auth_service import AuthService
10
12
  from injector import inject
11
13
  import logging
@@ -15,23 +17,102 @@ class PromptApiView(MethodView):
15
17
  @inject
16
18
  def __init__(self,
17
19
  auth_service: AuthService,
18
- prompt_service: PromptService ):
20
+ prompt_service: PromptService,
21
+ profile_service: ProfileService,
22
+ llm_query_repo: LLMQueryRepo):
19
23
  self.auth_service = auth_service
20
24
  self.prompt_service = prompt_service
25
+ self.profile_service = profile_service
26
+ self.llm_query_repo = llm_query_repo
21
27
 
22
- def get(self, company_short_name):
28
+ def get(self, company_short_name, prompt_name=None):
29
+ """
30
+ GET /: Lista el árbol de prompts (Categorías > Prompts).
31
+ GET /<name>: Devuelve detalle completo: metadata + contenido texto.
32
+ """
23
33
  try:
24
34
  # get access credentials
25
35
  auth_result = self.auth_service.verify(anonymous=True)
26
36
  if not auth_result.get("success"):
27
37
  return jsonify(auth_result), auth_result.get('status_code')
28
38
 
29
- response = self.prompt_service.get_user_prompts(company_short_name)
30
- if "error" in response:
31
- return {'error_message': response["error"]}, 402
39
+ company = self.profile_service.get_company_by_short_name(company_short_name)
40
+ if not company:
41
+ return jsonify({"error": "Company not found"}), 404
42
+
43
+ if prompt_name:
44
+ # get the prompt object from database
45
+ prompt_obj = self.llm_query_repo.get_prompt_by_name(company, prompt_name)
46
+ if not prompt_obj:
47
+ return jsonify({"error": "Prompt not found"}), 404
48
+
49
+ # get the prompt content
50
+ content = self.prompt_service.get_prompt_content(company, prompt_name)
51
+
52
+ return jsonify({
53
+ "meta": prompt_obj.to_dict(),
54
+ "content": content
55
+ })
56
+ else:
57
+ # Check for query param to include all prompts (admin view)
58
+ include_all = request.args.get('all', 'false').lower() == 'true'
59
+
60
+ # return prompts based on filter
61
+ return jsonify(self.prompt_service.get_user_prompts(company_short_name, include_all=include_all))
32
62
 
33
- return response, 200
34
63
  except Exception as e:
35
64
  logging.exception(
36
65
  f"unexpected error getting company prompts: {e}")
37
66
  return jsonify({"error_message": str(e)}), 500
67
+
68
+ def put(self, company_short_name, prompt_name):
69
+ try:
70
+ auth_result = self.auth_service.verify()
71
+ if not auth_result.get("success"):
72
+ return jsonify(auth_result), 401
73
+
74
+ data = request.get_json()
75
+
76
+ # The service handles file magic and YAML sync
77
+ self.prompt_service.save_prompt(company_short_name, prompt_name, data)
78
+
79
+ return jsonify({"status": "success"})
80
+ except Exception as e:
81
+ logging.exception(f"Error saving prompt {prompt_name}: {e}")
82
+ return jsonify({"status": "error", "message": str(e)}), 500
83
+
84
+ def post(self, company_short_name, prompt_name=None):
85
+ """Creates a new prompt."""
86
+ try:
87
+ auth_result = self.auth_service.verify()
88
+ if not auth_result.get("success"):
89
+ return jsonify(auth_result), 401
90
+
91
+ data = request.get_json()
92
+ # If prompt_name is not in URL, check body
93
+ target_name = prompt_name if prompt_name else data.get('name')
94
+
95
+ if not target_name:
96
+ return jsonify({"status": "error", "message": "Prompt name is required"}), 400
97
+
98
+ # Reuse save_prompt logic which handles create/update
99
+ self.prompt_service.save_prompt(company_short_name, target_name, data)
100
+
101
+ return jsonify({"status": "success"})
102
+ except Exception as e:
103
+ logging.exception(f"Error creating prompt: {e}")
104
+ return jsonify({"status": "error", "message": str(e)}), 500
105
+
106
+ def delete(self, company_short_name, prompt_name):
107
+ """Deletes a prompt."""
108
+ try:
109
+ auth_result = self.auth_service.verify()
110
+ if not auth_result.get("success"):
111
+ return jsonify(auth_result), 401
112
+
113
+ self.prompt_service.delete_prompt(company_short_name, prompt_name)
114
+
115
+ return jsonify({"status": "success"})
116
+ except Exception as e:
117
+ logging.exception(f"Error deleting prompt {prompt_name}: {e}")
118
+ return jsonify({"status": "error", "message": str(e)}), 500
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: iatoolkit
3
- Version: 1.4.2
3
+ Version: 1.9.0
4
4
  Summary: IAToolkit
5
5
  Author: Fernando Libedinsky
6
6
  License-Expression: MIT
@@ -1,4 +1,4 @@
1
- iatoolkit/__init__.py,sha256=4kPCwhdZff5rt-FhnHfafMCPvD5hDFGEdRwINPm8ATc,1425
1
+ iatoolkit/__init__.py,sha256=j3fke3NyMBK1zCqgOQRTHLbL0kyTL2JwgKWX-ksCVdU,1425
2
2
  iatoolkit/base_company.py,sha256=TzGvdseDpJMi9fl5nbR2pMARgU6pN6ISatFoMJKtNxw,648
3
3
  iatoolkit/cli_commands.py,sha256=EDky1QpvHnatzXsd1evYW0OQt-k3JIbPGMc13vgDvy4,1814
4
4
  iatoolkit/company_registry.py,sha256=XopFzqIpUxBtQJzdZwu2-c0v98MLT7SP_xLPxn_iENM,4176
@@ -6,12 +6,12 @@ iatoolkit/core.py,sha256=QKqu-QDrNWunDU9uX96a86kFNv3a_aAxonkpxJptzoE,20885
6
6
  iatoolkit/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
7
  iatoolkit/common/exceptions.py,sha256=xmNi5Et13pCvCM1so79z36I-7Kdie8nVUAqW9acGs9k,1202
8
8
  iatoolkit/common/model_registry.py,sha256=HiFr1FtRKGjpp3YurkiF4l6sGuirigDVL-b_3_R-vlM,5561
9
- iatoolkit/common/routes.py,sha256=cJCFLgSqrTXPOC9CraXLQtoOhVCphWXHyFadYiTXQGw,7292
9
+ iatoolkit/common/routes.py,sha256=h4W16qSlQrzwMWuUit_Ikz2OP4c-TyYD88lxYdLF3_Q,8171
10
10
  iatoolkit/common/session_manager.py,sha256=OUYMzT8hN1U-NCUidR5tUAXB1drd8nYTOpo60rUNYeY,532
11
- iatoolkit/common/util.py,sha256=e000sUjUXeY4BJrJ3HtnsVMMhn8guclRZkl0f2Dmfy0,15270
11
+ iatoolkit/common/util.py,sha256=NfSuDbzrGVS59fIgqJETYUlD5otMLwAjyp7OVhaMoo8,16310
12
12
  iatoolkit/common/interfaces/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
13
13
  iatoolkit/common/interfaces/asset_storage.py,sha256=IYXyc73gmwFT7T8RQhC4MymQDW0vGDSEzuKk43w7Ct4,989
14
- iatoolkit/common/interfaces/database_provider.py,sha256=Cf-33SZ7HPxTv2b_ahew1TcqDmFH442OPwIv6YEiubk,1097
14
+ iatoolkit/common/interfaces/database_provider.py,sha256=7ayYuEYRunkm4udoOGumoX9PfdgohBcrj0JDPfyfM00,1156
15
15
  iatoolkit/infra/__init__.py,sha256=5JqK9sZ6jBuK83zDQokUhxQ0wuJJJ9DXB8pYCLkX7X4,102
16
16
  iatoolkit/infra/brevo_mail_app.py,sha256=xvy3KxEEgjFpHlIAogP6SU5KXmg3w7lC16nnNmOYU8Y,5323
17
17
  iatoolkit/infra/call_service.py,sha256=iRk9VxbXaAwlLIl8fUzGDWIAdzwfsbs1MtP84YeENxg,4929
@@ -21,32 +21,32 @@ iatoolkit/infra/llm_response.py,sha256=6hSmI909m0Pdgs7UnJHrv_nokbCZLzHpdwBUED6VN
21
21
  iatoolkit/infra/redis_session_manager.py,sha256=EPr3E_g7LHxn6U4SV5lT_L8WQsAwg8VzA_WIEZ3TwOw,3667
22
22
  iatoolkit/infra/connectors/__init__.py,sha256=5JqK9sZ6jBuK83zDQokUhxQ0wuJJJ9DXB8pYCLkX7X4,102
23
23
  iatoolkit/infra/connectors/file_connector.py,sha256=HOjRTFd-WfDOcFyvHncAhnGNZuFgChIwC-P6osPo9ZM,352
24
- iatoolkit/infra/connectors/file_connector_factory.py,sha256=3qvyfH4ZHKuiMxJFkawOxhW2-TGKKtsBYHgoPpZMuKU,2118
24
+ iatoolkit/infra/connectors/file_connector_factory.py,sha256=iCOhklUaYG3YxtJGBYOrLN8spF5mjKu6vyA6nj71FHI,2167
25
25
  iatoolkit/infra/connectors/google_cloud_storage_connector.py,sha256=IXpL3HTo7Ft4EQsYiQq5wXRRQK854jzOEB7ZdWjLa4U,2050
26
26
  iatoolkit/infra/connectors/google_drive_connector.py,sha256=WR1AlO5-Bl3W89opdja0kKgHTJzVOjTsy3H4SlIvwVg,2537
27
27
  iatoolkit/infra/connectors/local_file_connector.py,sha256=hrzIgpMJOTuwTqzlQeTIU_50ZbZ6yl8lcWPv6hMnoqI,1739
28
- iatoolkit/infra/connectors/s3_connector.py,sha256=Nj4_YaLobjfcnbZewJf21_K2EXohgcc3mJll1Pzn4zg,1123
28
+ iatoolkit/infra/connectors/s3_connector.py,sha256=r8bgye8ydMzayAAg5RS22oakpKd-vNw-cSrOCvlwG9g,1209
29
29
  iatoolkit/infra/llm_providers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
30
30
  iatoolkit/infra/llm_providers/deepseek_adapter.py,sha256=ui4V05xplUvLWHu7y_dUMKpP4Af-BkZi5tvdgZY16dU,10719
31
31
  iatoolkit/infra/llm_providers/gemini_adapter.py,sha256=xjYAMgS4bh7qfpCEv6n92tzpKdjnNBVFfr8GkSrcatM,14555
32
32
  iatoolkit/infra/llm_providers/openai_adapter.py,sha256=9SuHYtPJcadWSV_GHfx8DDj9BqkUS3RvLSyDd_ZVB2M,4848
33
- iatoolkit/locales/en.yaml,sha256=cKPJQB2sV_AuFd80eOK4r-Y08cKlmG9eG7b34iuBqNo,12210
34
- iatoolkit/locales/es.yaml,sha256=1LT81MPQAW0mhHOVxWtgiOTxYs6B9Jyc6wgQGz04xGo,13027
33
+ iatoolkit/locales/en.yaml,sha256=f5BEwaOGTiOx00YOLxT5BmOuhLXSKvhhNSz0uM7HqAI,14642
34
+ iatoolkit/locales/es.yaml,sha256=Y5IVLMMoExGRbTN670ajjQeah2xjtdnum9cxtJQPcBE,15593
35
35
  iatoolkit/repositories/__init__.py,sha256=5JqK9sZ6jBuK83zDQokUhxQ0wuJJJ9DXB8pYCLkX7X4,102
36
- iatoolkit/repositories/database_manager.py,sha256=JAi-A_siEZlyQeV7xk1NIYFZjfBCCo12RVSV_pLYYhI,6631
36
+ iatoolkit/repositories/database_manager.py,sha256=F6oYrmNp29SrYHJeoe7UIzQuXdZ6fVyRMgdWhGo6oCs,5905
37
37
  iatoolkit/repositories/document_repo.py,sha256=5oCrq8pjcyOCBrOc4XYeUvza9nUd0VJ4eNL0g1MQb68,1441
38
38
  iatoolkit/repositories/filesystem_asset_repository.py,sha256=ZFr_FpHQD5nszZnJSki6nc-W3PKvmhTxKmVZMd2DUbM,1825
39
- iatoolkit/repositories/llm_query_repo.py,sha256=8rGSVx7WZlGbUfeVw_uGygTUuJXRK5vGfFHj1znc1ss,3981
40
- iatoolkit/repositories/models.py,sha256=PH8HiMxKDzZ7khDl9dod2XbRrkWlWCThOrRF9BeChPE,13460
39
+ iatoolkit/repositories/llm_query_repo.py,sha256=sccgM-vYLzasUEf6vuG9WeRNwMHsET4P5F-GQa2tUGg,4951
40
+ iatoolkit/repositories/models.py,sha256=ySnnbN1T2ozE-iYp6KwE42sSbc9FDQP-y7929ZXN7hQ,13721
41
41
  iatoolkit/repositories/profile_repo.py,sha256=zhjTTizhkTaCZvWMCZtTzTTTmx0fsjtao2fKurwP1xE,5838
42
42
  iatoolkit/repositories/vs_repo.py,sha256=CzT77B7_kWN5p3QhXgdf5X3JkS_02CwFVhxmp0K3rrc,6140
43
43
  iatoolkit/services/__init__.py,sha256=5JqK9sZ6jBuK83zDQokUhxQ0wuJJJ9DXB8pYCLkX7X4,102
44
44
  iatoolkit/services/auth_service.py,sha256=B0gTUHDf56WiTnA5viBEvbmf2A6y_6bkAoFlMvu0IWY,7756
45
45
  iatoolkit/services/benchmark_service.py,sha256=CdbFYyS3FHFhNzWQEa9ZNjUlmON10DT1nKNbZQ1EUi8,5880
46
46
  iatoolkit/services/branding_service.py,sha256=Fsjcos7hGLx2qhoZ9hTaFCgb7x5eYHMDGvXg4mXx8D0,8120
47
- iatoolkit/services/company_context_service.py,sha256=MV07jvef_9u_55n92yHCDwThBykn5rQT1tKg51Ebxoo,9339
48
- iatoolkit/services/configuration_service.py,sha256=bYjhR5cZcJunFr1OtX2ReOJaHbYrxBlxizEdoo52zaw,17933
49
- iatoolkit/services/dispatcher_service.py,sha256=f3aPbKU9UkNS61dNVZjT-J9hg3x-H2Nb_n-cZRnZ9aI,5247
47
+ iatoolkit/services/company_context_service.py,sha256=Oqldfdo8MSGv_KB8-4EztUVcqycoabrVLSbfky2n5s4,10435
48
+ iatoolkit/services/configuration_service.py,sha256=ChUWbOnHYOXKAjvdGn7yQIbhKzi8-xtwOoJm_HLbGGY,25098
49
+ iatoolkit/services/dispatcher_service.py,sha256=LPCnDjL6Mp6XfaO2qoSgBXf-_fD53wheniK1CqLx2F0,5146
50
50
  iatoolkit/services/document_service.py,sha256=XrAwbNPyhmP94bGdDwHy76Mg_PCg6O2QyZwii1T6kZ8,6469
51
51
  iatoolkit/services/embedding_service.py,sha256=ngRnFXEpko-rqpicqbJbVdr91IjSe1jXSYVWprOVlE0,6296
52
52
  iatoolkit/services/excel_service.py,sha256=de4fj3klWFWSTdgej8yk0FBuNr1lunyy9cuOyZwl0rI,6221
@@ -54,16 +54,16 @@ iatoolkit/services/file_processor_service.py,sha256=5xS7zrdL_kpCFXQ5seqNl9tiseI7
54
54
  iatoolkit/services/history_manager_service.py,sha256=nq1hk39WDbyHG6s8irpIdCS98EBDagF0djH6JHq9WuY,8734
55
55
  iatoolkit/services/i18n_service.py,sha256=mR4pS0z56NgZLeSnEvDXiMvVBeOCl5CkUWdYBTVEhyM,3941
56
56
  iatoolkit/services/jwt_service.py,sha256=pVoH1rzRwWixpvT3AhFdiE1BDmdbo4KQMyOF0P7tz-Y,2939
57
- iatoolkit/services/knowledge_base_service.py,sha256=kjVI04WjOf5q_fYEDNkg-lRN1hqbQrS0URzUGy3dkuo,16500
57
+ iatoolkit/services/knowledge_base_service.py,sha256=UuFWdjobFqwsBuLwAqi4FRNaVuYabSIjSj4vPKxZzLk,17098
58
58
  iatoolkit/services/language_service.py,sha256=ktNzj0hrCPm_VMIpWTxFEpEHKQ1lOHOfuhzCbZud2Dc,3428
59
59
  iatoolkit/services/license_service.py,sha256=pdl9szSEPbIu2ISl6g-WIR1p4HQu2gSGdAjViKxY6Hg,2751
60
60
  iatoolkit/services/llm_client_service.py,sha256=YSvoNKeBQRGL3znMDIyLH2PGZt4ImmYKD_aBlBeS91k,19024
61
- iatoolkit/services/load_documents_service.py,sha256=zK1mXsj9aLDDKoV9WKgNuFlg02ROnlf9umcTm_Y4OIs,6761
61
+ iatoolkit/services/load_documents_service.py,sha256=WEaPMRxginbsxOXopofPj6FeH-iIrSTlipFFRV20t4I,7069
62
62
  iatoolkit/services/mail_service.py,sha256=6Kx1CIbXzAr_ucoqwqTlhhwE6y2Jw64eNDjXysaZP-c,8297
63
63
  iatoolkit/services/profile_service.py,sha256=mUXW5dwFF4SBH04adQuoSj-E0FmuLDt_VcPo9oxdr1M,23680
64
- iatoolkit/services/prompt_service.py,sha256=mr3szmOThNi6MtqCbh4rwJJOlk-Be35bkIJXqh7_hvM,12898
64
+ iatoolkit/services/prompt_service.py,sha256=nA_juwwlrKoonpl3_NJ3kWJ-p5wbw5fiY60Zwk2Oa5g,22125
65
65
  iatoolkit/services/query_service.py,sha256=aS2-NtEMdu-QViw58d-g9iZI1j3KZIJb0xrN8N_c__U,20406
66
- iatoolkit/services/sql_service.py,sha256=kgLEE7iiw9WjnyvOBfm4VJ60-F6JAg26cAKF6LlF-zU,7087
66
+ iatoolkit/services/sql_service.py,sha256=nafxpDdv1AbOYMeHzoiD6G8V64TPMniUlLhrJ0J_KOU,7802
67
67
  iatoolkit/services/tool_service.py,sha256=FQuplPsgs1AdyOk2pxUBkPIvAvUqJU1ElOpOWz5wkr8,10002
68
68
  iatoolkit/services/user_feedback_service.py,sha256=KbjMjl0CDF7WpPHioJ3sqQVwocjfq_cisrpeqYUqtas,5361
69
69
  iatoolkit/services/user_session_context_service.py,sha256=RSv_NxOSTVPA6nFLiZKSIuUWa59cmZWBwiN_TWSljBo,9074
@@ -95,7 +95,7 @@ iatoolkit/templates/_company_header.html,sha256=L1QtrMpqYXALqtinCa3WhG4CrgHKLObl
95
95
  iatoolkit/templates/_login_widget.html,sha256=qziV70-n7SwC11rL4cU1LenJM83jYvuyw2xSz6OORJA,2063
96
96
  iatoolkit/templates/base.html,sha256=sRHUnHaKIycLRKZ_PQOTb88kSBC6kigzxlm60vpXj1I,3434
97
97
  iatoolkit/templates/change_password.html,sha256=p0GWZ9gldluYQM8OPSz2Q4CYhU8UJmb-72iz_Sl_6Ho,3485
98
- iatoolkit/templates/chat.html,sha256=HtmTBbbBPvVHscEymSWqAFjCnxE4hlMckzRgdi-1MXs,15642
98
+ iatoolkit/templates/chat.html,sha256=8tLQlpCS7Nd1-07kefIZzv4S5Hcd1UIhQmC5P_Z760s,15685
99
99
  iatoolkit/templates/chat_modals.html,sha256=x0Do7I7X9cfgZFHSAwWreIN55nYPCpZK7PTBxGXjrYY,8501
100
100
  iatoolkit/templates/error.html,sha256=4aT6cIYQUILciekAceHEiUuZxcAqkmNPUMnB9CD4BNA,1778
101
101
  iatoolkit/templates/forgot_password.html,sha256=XLVMmLJK5SAXmPqIH_OyTlSbu5QTAdekO6ggzfcNup0,2376
@@ -103,8 +103,10 @@ iatoolkit/templates/onboarding_shell.html,sha256=GODHz4JrNyZyf9sPq7GNKMoRrLmKn6k
103
103
  iatoolkit/templates/signup.html,sha256=kvV9B8M99zMDj4y9up-K5ChzOznSxzZTX4jPShGRBvI,4316
104
104
  iatoolkit/views/__init__.py,sha256=5JqK9sZ6jBuK83zDQokUhxQ0wuJJJ9DXB8pYCLkX7X4,102
105
105
  iatoolkit/views/base_login_view.py,sha256=l45msQUrLGxxxZrSb5l7tnTLLQyIoPTu4TgbkHBvVlc,3981
106
+ iatoolkit/views/categories_api_view.py,sha256=xjQfemyW5lx0f1sCg_7XbHlN2L1f8bpFiO4VLJEmhEs,3006
106
107
  iatoolkit/views/change_password_view.py,sha256=TXFvvtNrR37yrNAHYzcMSSIkV4-MIzmIpwbPffaJJyE,4957
107
108
  iatoolkit/views/chat_view.py,sha256=QNlC0n1hxjWbI3wyLhV6D-U2kJZkIqClNg94iQP4PrA,3534
109
+ iatoolkit/views/configuration_api_view.py,sha256=RNbgbet15ceFqEvyeORW6AILUN_1GDDdmHR_WYl-NLU,6322
108
110
  iatoolkit/views/embedding_api_view.py,sha256=9n5utihq8zHiG0V2sVCOYQ72wOKa4denqE951gqaJWo,2371
109
111
  iatoolkit/views/forgot_password_view.py,sha256=C4eJe9GmGrl6M3bTt_anwuPQib9ouXZtKYp6kB2xBeU,3380
110
112
  iatoolkit/views/help_content_api_view.py,sha256=8EUw2iSE6X-Lm2dGlYZxSp-29HzaAGwD3CpL4Otqp5k,2011
@@ -112,12 +114,11 @@ iatoolkit/views/history_api_view.py,sha256=oNYfo-fZbz4sY6VpE_goaCFQyH2k9IX85VhPo
112
114
  iatoolkit/views/home_view.py,sha256=GaU2-qyTnE8jE1ejdNjHW3azo72X_Awhp1y1Zx9BXRg,2662
113
115
  iatoolkit/views/init_context_api_view.py,sha256=axfNno8E1v4dCNuXNkdV1XpDZtypICj48hW3cRyl_eA,2961
114
116
  iatoolkit/views/llmquery_api_view.py,sha256=ohlYmFcvhvZL2BTMeCzd7ZPeTBzIPcIZbC9CRWqQM70,2290
115
- iatoolkit/views/load_company_configuration_api_view.py,sha256=ufX_jrSO7NTUsgNJNrAXxFKmyp2JyNYoplMUm4biULs,1902
116
117
  iatoolkit/views/load_document_api_view.py,sha256=RaO4KRz19uSOv3LL7Fn8FJSLzHtRkPAIYRPU-yT1nxQ,2485
117
118
  iatoolkit/views/login_view.py,sha256=NKPjR9cCOsw7FhOfXCM32m6veKxRdLhsc0H7DLc5_ug,7517
118
119
  iatoolkit/views/logout_api_view.py,sha256=7c0rL5sLTuoRPqQs73wlH_7eb3--S6GLcr7Yu4hNOYU,2035
119
120
  iatoolkit/views/profile_api_view.py,sha256=qhlmhyygIs5h-OyNDwq1uGUS8S-GxB2zOYY51Hs5prY,1645
120
- iatoolkit/views/prompt_api_view.py,sha256=WAv4I6WmGfT1TTZ-lml9LaR2wDsSx9mshYcxFAV_wtk,1255
121
+ iatoolkit/views/prompt_api_view.py,sha256=U6N7kwf9oI8t0iAnA0XWZUkTKXX9hPtfj-0MFpX13xg,4725
121
122
  iatoolkit/views/rag_api_view.py,sha256=zsEdsSMoxBrX3jGFoKWB7oUm_Sp1x6lh2tAy-g_CUiI,8389
122
123
  iatoolkit/views/root_redirect_view.py,sha256=t7tqiyJAPffzIuQVwnfgIw3Bo51qkegyMmBTfChsrJk,833
123
124
  iatoolkit/views/signup_view.py,sha256=83jgbAuOAETID88TC8h-wCszkkEaFygCH6tTj7XyZYI,4261
@@ -125,9 +126,9 @@ iatoolkit/views/static_page_view.py,sha256=V0oTybQ5lFo3hp5xOKau-yMO8vK8NCM6zWiwV
125
126
  iatoolkit/views/user_feedback_api_view.py,sha256=QOTBtpNqYAmewXDgVAoaIprnVjvf1xM0ExWxSFp3ICI,2098
126
127
  iatoolkit/views/users_api_view.py,sha256=hVR6rxLNyhGiXhCIHvttUeSinH071Pyk-2_Fcm-v2TM,1139
127
128
  iatoolkit/views/verify_user_view.py,sha256=Uc9P2wiRjZ7pMRTjWUn8Y-p0DFqw_AwNYQsdbAwhbg8,2659
128
- iatoolkit-1.4.2.dist-info/licenses/LICENSE,sha256=5tOLQdjoCvSXEx_7Lr4bSab3ha4NSwzamvua0fwCXi8,1075
129
- iatoolkit-1.4.2.dist-info/licenses/LICENSE_COMMUNITY.md,sha256=9lVNcggPNUnleMF3_h3zu9PbNTeaRqB1tHAbiBLQJZU,566
130
- iatoolkit-1.4.2.dist-info/METADATA,sha256=j6HullcLZAkwHSYnpcXew6VVsL6nzFkyoXwpuSBDy1E,8395
131
- iatoolkit-1.4.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
132
- iatoolkit-1.4.2.dist-info/top_level.txt,sha256=V_w4QvDx0b1RXiy8zTCrD1Bp7AZkFe3_O0-9fMiwogg,10
133
- iatoolkit-1.4.2.dist-info/RECORD,,
129
+ iatoolkit-1.9.0.dist-info/licenses/LICENSE,sha256=5tOLQdjoCvSXEx_7Lr4bSab3ha4NSwzamvua0fwCXi8,1075
130
+ iatoolkit-1.9.0.dist-info/licenses/LICENSE_COMMUNITY.md,sha256=9lVNcggPNUnleMF3_h3zu9PbNTeaRqB1tHAbiBLQJZU,566
131
+ iatoolkit-1.9.0.dist-info/METADATA,sha256=yQmAabZkjlzXWzkNTCJz_mZr0CT4whp5fJ7Cztpkn3E,8395
132
+ iatoolkit-1.9.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
133
+ iatoolkit-1.9.0.dist-info/top_level.txt,sha256=V_w4QvDx0b1RXiy8zTCrD1Bp7AZkFe3_O0-9fMiwogg,10
134
+ iatoolkit-1.9.0.dist-info/RECORD,,
@@ -1,49 +0,0 @@
1
- # Copyright (c) 2024 Fernando Libedinsky
2
- # Product: IAToolkit
3
- #
4
- # IAToolkit is open source software.
5
-
6
- from flask.views import MethodView
7
- from flask import redirect, url_for, jsonify, request, g
8
- from injector import inject
9
- from iatoolkit.services.auth_service import AuthService
10
- from iatoolkit.services.profile_service import ProfileService
11
- from iatoolkit.services.configuration_service import ConfigurationService
12
- import logging
13
-
14
- class LoadCompanyConfigurationApiView(MethodView):
15
- @inject
16
- def __init__(self,
17
- configuration_service: ConfigurationService,
18
- profile_service: ProfileService,
19
- auth_service: AuthService):
20
- self.configuration_service = configuration_service
21
- self.profile_service = profile_service
22
- self.auth_service = auth_service
23
-
24
- def get(self, company_short_name: str = None):
25
- try:
26
- # 1. Get the authenticated user's
27
- auth_result = self.auth_service.verify(anonymous=True)
28
- if not auth_result.get("success"):
29
- return jsonify(auth_result), auth_result.get("status_code", 401)
30
-
31
- company = self.profile_service.get_company_by_short_name(company_short_name)
32
- if not company:
33
- return jsonify({"error": "company not found."}), 404
34
-
35
- config, errors = self.configuration_service.load_configuration(company_short_name)
36
- if config:
37
- self.configuration_service.register_data_sources(company_short_name)
38
-
39
- # this is fo avoid serialization issues
40
- if 'company' in config:
41
- config.pop('company')
42
-
43
- status_code = 200 if not errors else 400
44
- return {'config': config, 'errors': [errors]}, status_code
45
- except Exception as e:
46
- logging.exception(f"Unexpected error: {e}")
47
- return {'status': 'error'}, 500
48
-
49
-