io4it 3.0.5__tar.gz → 3.0.5.991__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.
Files changed (101) hide show
  1. io4it-3.0.5.991/PKG-INFO +37 -0
  2. io4it-3.0.5.991/io4it.egg-info/PKG-INFO +37 -0
  3. {io4it-3.0.5 → io4it-3.0.5.991}/io4it.egg-info/SOURCES.txt +1 -0
  4. io4it-3.0.5.991/io4it.egg-info/requires.txt +25 -0
  5. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/toolViews/key_manager_ui.py +267 -267
  6. io4it-3.0.5.991/orangecontrib/IO4IT/utils/audio.py +284 -0
  7. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/utils/keys_manager.py +1204 -1207
  8. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/utils/mail.py +26 -5
  9. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/utils/utils_md.py +0 -19
  10. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/widgets/OWExportMarkdown.py +13 -1
  11. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/widgets/OWInboxMailMonitoring.py +0 -4
  12. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/widgets/OWMD2HTML.py +3 -0
  13. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/widgets/OWMarkdownizer.py +8 -44
  14. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/widgets/OWParserHTML.py +120 -74
  15. io4it-3.0.5.991/orangecontrib/IO4IT/widgets/OWSpeechToText.py +200 -0
  16. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/widgets/designer/ow_json_to_data_table.ui +17 -4
  17. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/widgets/designer/owspeechtotext.ui +62 -56
  18. {io4it-3.0.5 → io4it-3.0.5.991}/setup.py +9 -10
  19. io4it-3.0.5/PKG-INFO +0 -7
  20. io4it-3.0.5/io4it.egg-info/PKG-INFO +0 -7
  21. io4it-3.0.5/io4it.egg-info/requires.txt +0 -26
  22. io4it-3.0.5/orangecontrib/IO4IT/widgets/OWSpeechToText.py +0 -367
  23. {io4it-3.0.5 → io4it-3.0.5.991}/io4it.egg-info/dependency_links.txt +0 -0
  24. {io4it-3.0.5 → io4it-3.0.5.991}/io4it.egg-info/entry_points.txt +0 -0
  25. {io4it-3.0.5 → io4it-3.0.5.991}/io4it.egg-info/namespace_packages.txt +0 -0
  26. {io4it-3.0.5 → io4it-3.0.5.991}/io4it.egg-info/top_level.txt +0 -0
  27. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/__init__.py +0 -0
  28. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/ocr_function/__init__.py +0 -0
  29. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/ocr_function/word_converter.py +0 -0
  30. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/toolViews/designer/key_manager_ui.ui +0 -0
  31. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/utils/__init__.py +0 -0
  32. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/utils/pool_exec_utils.py +0 -0
  33. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/utils/secret_manager.py +0 -0
  34. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/widgets/OWChatGpt.py +0 -0
  35. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/widgets/OWDeep_Search.py +0 -0
  36. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/widgets/OWDoclingASR.py +0 -0
  37. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/widgets/OWDoclingToMarkdown.py +0 -0
  38. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/widgets/OWExtractTablesDocxToXlsx.py +0 -0
  39. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/widgets/OWJsonToDataTable.py +0 -0
  40. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/widgets/OWMarkdownLoader.py +0 -0
  41. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/widgets/OWOfficeNormalizer.py +0 -0
  42. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/widgets/OWPdfType.py +0 -0
  43. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/widgets/OWProcessPoolExecutor.py +0 -0
  44. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/widgets/OWS3Uploader.py +0 -0
  45. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/widgets/OWS3downloader.py +0 -0
  46. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/widgets/OWS3list.py +0 -0
  47. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/widgets/OWWebSearch.py +0 -0
  48. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/widgets/OWmailLoader.py +0 -0
  49. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/widgets/OWmailSender.py +0 -0
  50. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/widgets/OWwordpdf2docx.py +0 -0
  51. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/widgets/__init__.py +0 -0
  52. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/widgets/designer/__init__.py +0 -0
  53. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/widgets/designer/nogui.ui +0 -0
  54. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/widgets/designer/ow_extract_tables_docx_to_xlsx.ui +0 -0
  55. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/widgets/designer/ow_file_ext_selector.ui +0 -0
  56. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/widgets/designer/owchatgpt.ui +0 -0
  57. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/widgets/designer/owdeepsearch.ui +0 -0
  58. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/widgets/designer/owdoclingasr.ui +0 -0
  59. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/widgets/designer/owdoclingtomarkdown.ui +0 -0
  60. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/widgets/designer/owexportmarkdown.ui +0 -0
  61. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/widgets/designer/owinboxmailmonitoring.ui +0 -0
  62. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/widgets/designer/owmailloader.ui +0 -0
  63. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/widgets/designer/owmailsender.ui +0 -0
  64. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/widgets/designer/owmarkdownizer.ui +0 -0
  65. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/widgets/designer/owmarkdownloader.ui +0 -0
  66. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/widgets/designer/owmd2html.ui +0 -0
  67. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/widgets/designer/owofficenormalizer.ui +0 -0
  68. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/widgets/designer/owparserhtml.ui +0 -0
  69. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/widgets/designer/owpdftype.ui +0 -0
  70. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/widgets/designer/owprocesspoolexecutor.ui +0 -0
  71. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/widgets/designer/owvisualizationer.ui +0 -0
  72. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/widgets/designer/owwebsearch.ui +0 -0
  73. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/widgets/designer/wordpdf2docx.ui +0 -0
  74. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/widgets/icons/__init__.py +0 -0
  75. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/widgets/icons/chatgpt.png +0 -0
  76. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/widgets/icons/check_pdf.png +0 -0
  77. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/widgets/icons/deepsearch.svg +0 -0
  78. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/widgets/icons/dep_md_old.png +0 -0
  79. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/widgets/icons/download.png +0 -0
  80. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/widgets/icons/export_md.png +0 -0
  81. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/widgets/icons/extract_table.png +0 -0
  82. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/widgets/icons/file_extensor.png +0 -0
  83. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/widgets/icons/html.png +0 -0
  84. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/widgets/icons/json-file.png +0 -0
  85. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/widgets/icons/list_aws.png +0 -0
  86. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/widgets/icons/load_md.png +0 -0
  87. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/widgets/icons/mail_loader.png +0 -0
  88. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/widgets/icons/mail_writer.png +0 -0
  89. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/widgets/icons/md.png +0 -0
  90. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/widgets/icons/monitor-email.svg +0 -0
  91. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/widgets/icons/office_normalizer.png +0 -0
  92. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/widgets/icons/owmd2html.svg +0 -0
  93. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/widgets/icons/process_pool_executor.png +0 -0
  94. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/widgets/icons/speech_to_text.png +0 -0
  95. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/widgets/icons/upload.png +0 -0
  96. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/widgets/icons/visualizationer.png +0 -0
  97. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/widgets/icons/websearch.png +0 -0
  98. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/widgets/icons/wordpdf2docx.png +0 -0
  99. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/IO4IT/widgets/icons_dev/__init__.py +0 -0
  100. {io4it-3.0.5 → io4it-3.0.5.991}/orangecontrib/__init__.py +0 -0
  101. {io4it-3.0.5 → io4it-3.0.5.991}/setup.cfg +0 -0
@@ -0,0 +1,37 @@
1
+ Metadata-Version: 2.1
2
+ Name: io4it
3
+ Version: 3.0.5.991
4
+ Summary: UNKNOWN
5
+ Home-page:
6
+ Author:
7
+ Author-email:
8
+ License: UNKNOWN
9
+ Keywords: orange3 add-on
10
+ Platform: UNKNOWN
11
+ Requires-Dist: torchvision
12
+ Requires-Dist: torchaudio
13
+ Requires-Dist: torch
14
+ Requires-Dist: pylatexenc
15
+ Requires-Dist: docopt
16
+ Requires-Dist: boto3
17
+ Requires-Dist: opencv-python-headless
18
+ Requires-Dist: docling
19
+ Requires-Dist: docling-core
20
+ Requires-Dist: speechbrain
21
+ Requires-Dist: whisper
22
+ Requires-Dist: whisper-openai
23
+ Requires-Dist: pyannote.audio
24
+ Requires-Dist: pyannote-core
25
+ Requires-Dist: pypandoc
26
+ Requires-Dist: pypandoc-binary
27
+ Requires-Dist: scikit-learn
28
+ Requires-Dist: openai
29
+ Requires-Dist: pip-system-certs
30
+ Requires-Dist: docx2pdf
31
+ Requires-Dist: msal
32
+ Requires-Dist: exchangelib
33
+ Requires-Dist: html2text
34
+ Requires-Dist: ddgs
35
+ Requires-Dist: CATEGORIT
36
+
37
+ UNKNOWN
@@ -0,0 +1,37 @@
1
+ Metadata-Version: 2.1
2
+ Name: io4it
3
+ Version: 3.0.5.991
4
+ Summary: UNKNOWN
5
+ Home-page:
6
+ Author:
7
+ Author-email:
8
+ License: UNKNOWN
9
+ Keywords: orange3 add-on
10
+ Platform: UNKNOWN
11
+ Requires-Dist: torchvision
12
+ Requires-Dist: torchaudio
13
+ Requires-Dist: torch
14
+ Requires-Dist: pylatexenc
15
+ Requires-Dist: docopt
16
+ Requires-Dist: boto3
17
+ Requires-Dist: opencv-python-headless
18
+ Requires-Dist: docling
19
+ Requires-Dist: docling-core
20
+ Requires-Dist: speechbrain
21
+ Requires-Dist: whisper
22
+ Requires-Dist: whisper-openai
23
+ Requires-Dist: pyannote.audio
24
+ Requires-Dist: pyannote-core
25
+ Requires-Dist: pypandoc
26
+ Requires-Dist: pypandoc-binary
27
+ Requires-Dist: scikit-learn
28
+ Requires-Dist: openai
29
+ Requires-Dist: pip-system-certs
30
+ Requires-Dist: docx2pdf
31
+ Requires-Dist: msal
32
+ Requires-Dist: exchangelib
33
+ Requires-Dist: html2text
34
+ Requires-Dist: ddgs
35
+ Requires-Dist: CATEGORIT
36
+
37
+ UNKNOWN
@@ -11,6 +11,7 @@ orangecontrib/IO4IT/__init__.py
11
11
  orangecontrib/IO4IT/ocr_function/__init__.py
12
12
  orangecontrib/IO4IT/ocr_function/word_converter.py
13
13
  orangecontrib/IO4IT/utils/__init__.py
14
+ orangecontrib/IO4IT/utils/audio.py
14
15
  orangecontrib/IO4IT/utils/keys_manager.py
15
16
  orangecontrib/IO4IT/utils/mail.py
16
17
  orangecontrib/IO4IT/utils/pool_exec_utils.py
@@ -0,0 +1,25 @@
1
+ torchvision
2
+ torchaudio
3
+ torch
4
+ pylatexenc
5
+ docopt
6
+ boto3
7
+ opencv-python-headless
8
+ docling
9
+ docling-core
10
+ speechbrain
11
+ whisper
12
+ whisper-openai
13
+ pyannote.audio
14
+ pyannote-core
15
+ pypandoc
16
+ pypandoc-binary
17
+ scikit-learn
18
+ openai
19
+ pip-system-certs
20
+ docx2pdf
21
+ msal
22
+ exchangelib
23
+ html2text
24
+ ddgs
25
+ CATEGORIT
@@ -1,267 +1,267 @@
1
- import sys
2
- from AnyQt import QtWidgets
3
- import os
4
-
5
-
6
- if "site-packages/Orange/widgets" in os.path.dirname(os.path.abspath(__file__)).replace("\\", "/"):
7
- from Orange.widgets.orangecontrib.AAIT.utils.import_uic import uic
8
- from Orange.widgets.orangecontrib.IO4IT.utils import keys_manager
9
- from Orange.widgets.orangecontrib.AAIT.utils.SimpleDialogQt import BoxError,BoxInfo
10
- else:
11
- from orangecontrib.AAIT.utils.import_uic import uic
12
- from orangecontrib.IO4IT.utils import keys_manager
13
- from orangecontrib.AAIT.utils.SimpleDialogQt import BoxError,BoxInfo
14
- FUNCTION_NAMES = [
15
- "Create / overwrite api key",
16
- "Create / overwrite imap4_ssl configuration",
17
- "Create / overwrite nxp configuration",
18
- "Create / overwrite owa configuration",
19
- "Create / overwrite oauth2 configuration",
20
- "Read api key",
21
- "Read imap4_ssl configuration",
22
- "Read nxp configuration",
23
- "Read owa configuration",
24
- "Read oauth2 configuration",
25
- ]
26
-
27
-
28
- class KeyManagerUI(QtWidgets.QDialog):
29
- def __init__(self, parent=None):
30
- super().__init__(parent)
31
- the_gui = os.path.join(os.path.dirname(os.path.abspath(__file__)), "designer/key_manager_ui.ui")
32
- the_gui=the_gui.replace("\\","/")
33
- uic.loadUi(the_gui, self)
34
-
35
- # Remplir la combo
36
- self.comboActions.addItems(FUNCTION_NAMES)
37
-
38
- # signaux OK / Cancel
39
-
40
- self.comboActions.currentTextChanged.connect(self.on_current_text_changed)
41
- self.pushButton_read.clicked.connect(self.populate_textDetails)
42
- self.pushButton_delete.clicked.connect(self.handle_delete_clicked)
43
- self.pushButton_write.clicked.connect(self.handle_write_clicked)
44
- self.pushButton_sync.clicked.connect(self.handle_pushButton_sync_clicked)
45
- self.adjustSize()
46
- self.setFixedSize(self.size())
47
- self.comboMode.setVisible(False)
48
- self.labelMode.setVisible(False)
49
- self.pushButton_read.setVisible(False)
50
- self.pushButton_delete.setVisible(False)
51
- self.set_stdtextDetails("Create / overwrite api key")
52
-
53
-
54
- def handle_write_clicked(self):
55
- current_str=str(self.textDetails.toPlainText())
56
-
57
- if current_str=="":
58
- return
59
-
60
- func_name = str(self.comboActions.currentText())
61
- if func_name in ["Create / overwrite api key", "Read api key" ]:
62
- try:
63
- keys_manager.parse_json_and_save_api(current_str)
64
- except Exception as e:
65
- print(e)
66
- BoxError(str(e))
67
- return
68
- elif func_name in ["Create / overwrite imap4_ssl configuration", "Read imap4_ssl configuration"]:
69
- try:
70
- keys_manager.parse_json_and_save_ssl(current_str)
71
- except Exception as e:
72
- print(e)
73
- BoxError(str(e))
74
- return
75
- elif func_name in ["Create / overwrite nxp configuration", "Read nxp configuration"]:
76
- try:
77
- keys_manager.parse_json_and_save_nxp(current_str)
78
- except Exception as e:
79
- print(e)
80
- BoxError(str(e))
81
- return
82
- elif func_name in ["Create / overwrite owa configuration", "Read owa configuration"]:
83
- try:
84
- keys_manager.parse_json_and_save_owa(current_str)
85
- except Exception as e:
86
- print(e)
87
- BoxError(str(e))
88
- return
89
- elif func_name in ["Create / overwrite oauth2 configuration", "Read oauth2 configuration"]:
90
- try:
91
- keys_manager.parse_json_and_save_oauth2(current_str)
92
- except Exception as e:
93
- print(e)
94
- BoxError(str(e))
95
- return
96
- BoxInfo("Done")
97
-
98
-
99
-
100
- def handle_delete_clicked(self):
101
- if str(self.comboMode.currentText())=="":
102
- return
103
- func_name = str(self.comboActions.currentText())
104
- if func_name in ["Create / overwrite api key", "Read api key"]:
105
- try:
106
- keys_manager.delete_secret("API",str(self.comboMode.currentText()))
107
- except Exception as e:
108
- print(e)
109
- BoxError(str(e))
110
- return
111
- elif func_name in ["Create / overwrite imap4_ssl configuration", "Read imap4_ssl configuration"]:
112
- try:
113
- keys_manager.delete_secret("IMAP4_SSL",str(self.comboMode.currentText()))
114
- except Exception as e:
115
- print(e)
116
- BoxError(str(e))
117
- return
118
- elif func_name in ["Create / overwrite nxp configuration", "Read nxp configuration"]:
119
- try:
120
- keys_manager.delete_secret("NXP",str(self.comboMode.currentText()))
121
- except Exception as e:
122
- print(e)
123
- BoxError(str(e))
124
- return
125
- elif func_name in ["Create / overwrite owa configuration", "Read owa configuration"]:
126
- try:
127
- keys_manager.delete_secret("MICROSOFT_EXCHANGE_OWA",str(self.comboMode.currentText()))
128
- except Exception as e:
129
- print(e)
130
- BoxError(str(e))
131
- return
132
- elif func_name in ["Create / overwrite oauth2 configuration", "Read oauth2 configuration"]:
133
- try:
134
- keys_manager.delete_secret("MICROSOFT_EXCHANGE_OAUTH2",str(self.comboMode.currentText()) )
135
- except Exception as e:
136
- print(e)
137
- BoxError(str(e))
138
- return
139
- else:
140
- BoxError("Invalid function")
141
- return
142
- if func_name == "Read api key":
143
- self.populate_combo_mode_from_folder(keys_manager.get_keys_dir("API"))
144
- elif func_name == "Read imap4_ssl configuration":
145
- self.populate_combo_mode_from_folder(keys_manager.get_keys_dir("IMAP4_SSL"))
146
- elif func_name == "Read owa configuration":
147
- self.populate_combo_mode_from_folder(keys_manager.get_keys_dir("MICROSOFT_EXCHANGE_OWA"))
148
- elif func_name == "Read nxp configuration":
149
- self.populate_combo_mode_from_folder(keys_manager.get_keys_dir("NXP"))
150
- elif func_name == "Read oauth2 configuration":
151
- self.populate_combo_mode_from_folder(keys_manager.get_keys_dir("MICROSOFT_EXCHANGE_OAUTH2"))
152
- BoxInfo("Done")
153
-
154
- def set_stdtextDetails(self,func_name):
155
- if func_name=="Create / overwrite api key":
156
- self.textDetails.setText("{\n'service': 'service_name',\n'api_key': 'api_key',\n'description': 'this_is_a_description'\n}")
157
- elif func_name=="Create / overwrite imap4_ssl configuration":
158
- self.textDetails.setText("{\n'agent': 'service_name',\n'alias': 'alias_name',\n'domain': '@domain.com',\n'interval_second': 1,\n'password': 'password'\n}")
159
- elif func_name=="Create / overwrite nxp configuration":
160
- self.textDetails.setText("{\n'dossier_node_id': 'bode_key',\n'serveur': 'servor_adress',\n'username': 'my_username',\n'password': 'password',\n'description': 'this is a description'\n}")
161
- elif func_name=="Create / overwrite owa configuration":
162
- self.textDetails.setText("{\n'alias': 'nom2@domain2.com',\n'interval_second': 1,\n'mail': 'nom@domain.com',\n'password_encrypted': 'password',\n'server': 'toto.titi.tata',\n'username': 'domaine\\username'\n}")
163
- elif func_name=="Create / overwrite oauth2 configuration":
164
- self.textDetails.setText("{\n'client_id': 'my_client_id',\n'client_secret':\n'my_client_secret',\n'tenant_id': 'my_guid_azure',\n'user_email': 'mail@domain.com'\n}")
165
- else:
166
- self.textDetails.setText("")
167
- def populate_combo_mode_from_folder(self, folder_path):
168
- # Nettoyer avant tout
169
- self.comboMode.clear()
170
- # Vérification du dossier
171
- if not folder_path or not os.path.isdir(folder_path):
172
- return # dossier invalide → combo purgé, masqué
173
- # Recherche des fichiers .sec
174
- sec_files = [
175
- f for f in os.listdir(folder_path)
176
- if f.lower().endswith(".sec") and os.path.isfile(os.path.join(folder_path, f))
177
- ]
178
- # Si aucun fichier trouvé → juste retour (combo reste masqué)
179
- if not sec_files:
180
- return
181
-
182
- # Peupler le combo
183
- for filename in sec_files:
184
- basename = filename[:-4] # retire ".sec"
185
- # stocker le vrai nom en data interne Qt
186
- self.comboMode.addItem(basename, filename)
187
- self.comboMode.setCurrentIndex(0)
188
-
189
- def populate_textDetails(self):
190
- self.textDetails.setText("")
191
- func_name = str(self.comboActions.currentText())
192
- if func_name=="":
193
- return
194
- key_name =str(self.comboMode.currentText())
195
- if key_name=="":
196
- return
197
- if func_name == "Read api key":
198
- self.textDetails.setText(str(keys_manager.lire_config_api(key_name)))
199
- if func_name == "Read imap4_ssl configuration":
200
- self.textDetails.setText(str(keys_manager.lire_config_imap4_ssl_dict_sec(key_name)))
201
- if func_name == "Read owa configuration":
202
- self.textDetails.setText(str(keys_manager.lire_config_owa_dict_sec(key_name)))
203
- if func_name == "Read nxp configuration":
204
- self.textDetails.setText(str(keys_manager.lire_config_nxp(key_name)))
205
- if func_name == "Read oauth2 configuration":
206
- self.textDetails.setText(str(keys_manager.lire_config_oauth2_dict_sec(key_name)))
207
-
208
-
209
-
210
- def on_current_text_changed(self):
211
- self.textDetails.setText("")
212
- func_name = str(self.comboActions.currentText())
213
- self.comboMode.clear()
214
- self.pushButton_read.setVisible(False)
215
- self.pushButton_delete.setVisible(False)
216
- if func_name in (
217
- "Read api key",
218
- "Read imap4_ssl configuration",
219
- "Read owa configuration",
220
- "Read nxp configuration",
221
- "Read oauth2 configuration"
222
- ):
223
- self.textDetails.setVisible(True)
224
- self.pushButton_read.setVisible(True)
225
- self.pushButton_delete.setVisible(True)
226
- self.comboMode.setVisible(True)
227
- self.labelMode.setVisible(True)
228
- if func_name=="Read api key":
229
- self.populate_combo_mode_from_folder(keys_manager.get_keys_dir("API"))
230
- elif func_name=="Read imap4_ssl configuration":
231
- self.populate_combo_mode_from_folder(keys_manager.get_keys_dir("IMAP4_SSL"))
232
- elif func_name=="Read owa configuration":
233
- self.populate_combo_mode_from_folder(keys_manager.get_keys_dir("MICROSOFT_EXCHANGE_OWA"))
234
- elif func_name=="Read nxp configuration":
235
- self.populate_combo_mode_from_folder(keys_manager.get_keys_dir("NXP"))
236
- elif func_name=="Read oauth2 configuration":
237
- self.populate_combo_mode_from_folder(keys_manager.get_keys_dir("MICROSOFT_EXCHANGE_OAUTH2"))
238
-
239
-
240
-
241
- self.textDetails.setVisible(True)
242
- else:
243
- self.set_stdtextDetails(func_name)
244
- self.comboMode.setVisible(False)
245
- self.labelMode.setVisible(False)
246
-
247
-
248
- def handle_pushButton_sync_clicked(self):
249
- keys_manager.recreate_all_sec_file()
250
- BoxInfo("Done")
251
-
252
-
253
-
254
- def main():
255
- app = QtWidgets.QApplication(sys.argv)
256
- dlg = KeyManagerUI()
257
- dlg.show()
258
- if hasattr(app, "exec"):
259
- app.exec()
260
- else:
261
- app.exec_()
262
-
263
-
264
-
265
-
266
- if __name__ == "__main__":
267
- main()
1
+ import sys
2
+ from AnyQt import QtWidgets
3
+ import os
4
+
5
+
6
+ if "site-packages/Orange/widgets" in os.path.dirname(os.path.abspath(__file__)).replace("\\", "/"):
7
+ from Orange.widgets.orangecontrib.AAIT.utils.import_uic import uic
8
+ from Orange.widgets.orangecontrib.IO4IT.utils import keys_manager
9
+ from Orange.widgets.orangecontrib.AAIT.utils.SimpleDialogQt import BoxError,BoxInfo
10
+ else:
11
+ from orangecontrib.AAIT.utils.import_uic import uic
12
+ from orangecontrib.IO4IT.utils import keys_manager
13
+ from orangecontrib.AAIT.utils.SimpleDialogQt import BoxError,BoxInfo
14
+ FUNCTION_NAMES = [
15
+ "Create / overwrite api key",
16
+ "Create / overwrite imap4_ssl configuration",
17
+ "Create / overwrite nxp configuration",
18
+ "Create / overwrite owa configuration",
19
+ "Create / overwrite oauth2 configuration",
20
+ "Read api key",
21
+ "Read imap4_ssl configuration",
22
+ "Read nxp configuration",
23
+ "Read owa configuration",
24
+ "Read oauth2 configuration",
25
+ ]
26
+
27
+
28
+ class KeyManagerUI(QtWidgets.QDialog):
29
+ def __init__(self, parent=None):
30
+ super().__init__(parent)
31
+ the_gui = os.path.join(os.path.dirname(os.path.abspath(__file__)), "designer/key_manager_ui.ui")
32
+ the_gui=the_gui.replace("\\","/")
33
+ uic.loadUi(the_gui, self)
34
+
35
+ # Remplir la combo
36
+ self.comboActions.addItems(FUNCTION_NAMES)
37
+
38
+ # signaux OK / Cancel
39
+
40
+ self.comboActions.currentTextChanged.connect(self.on_current_text_changed)
41
+ self.pushButton_read.clicked.connect(self.populate_textDetails)
42
+ self.pushButton_delete.clicked.connect(self.handle_delete_clicked)
43
+ self.pushButton_write.clicked.connect(self.handle_write_clicked)
44
+ self.pushButton_sync.clicked.connect(self.handle_pushButton_sync_clicked)
45
+ self.adjustSize()
46
+ self.setFixedSize(self.size())
47
+ self.comboMode.setVisible(False)
48
+ self.labelMode.setVisible(False)
49
+ self.pushButton_read.setVisible(False)
50
+ self.pushButton_delete.setVisible(False)
51
+ self.set_stdtextDetails("Create / overwrite api key")
52
+
53
+
54
+ def handle_write_clicked(self):
55
+ current_str=str(self.textDetails.toPlainText())
56
+
57
+ if current_str=="":
58
+ return
59
+
60
+ func_name = str(self.comboActions.currentText())
61
+ if func_name in ["Create / overwrite api key", "Read api key" ]:
62
+ try:
63
+ keys_manager.parse_json_and_save_api(current_str)
64
+ except Exception as e:
65
+ print(e)
66
+ BoxError(str(e))
67
+ return
68
+ elif func_name in ["Create / overwrite imap4_ssl configuration", "Read imap4_ssl configuration"]:
69
+ try:
70
+ keys_manager.parse_json_and_save_ssl(current_str)
71
+ except Exception as e:
72
+ print(e)
73
+ BoxError(str(e))
74
+ return
75
+ elif func_name in ["Create / overwrite nxp configuration", "Read nxp configuration"]:
76
+ try:
77
+ keys_manager.parse_json_and_save_nxp(current_str)
78
+ except Exception as e:
79
+ print(e)
80
+ BoxError(str(e))
81
+ return
82
+ elif func_name in ["Create / overwrite owa configuration", "Read owa configuration"]:
83
+ try:
84
+ keys_manager.parse_json_and_save_owa(current_str)
85
+ except Exception as e:
86
+ print(e)
87
+ BoxError(str(e))
88
+ return
89
+ elif func_name in ["Create / overwrite oauth2 configuration", "Read oauth2 configuration"]:
90
+ try:
91
+ keys_manager.parse_json_and_save_oauth2(current_str)
92
+ except Exception as e:
93
+ print(e)
94
+ BoxError(str(e))
95
+ return
96
+ BoxInfo("Done")
97
+
98
+
99
+
100
+ def handle_delete_clicked(self):
101
+ if str(self.comboMode.currentText())=="":
102
+ return
103
+ func_name = str(self.comboActions.currentText())
104
+ if func_name in ["Create / overwrite api key", "Read api key"]:
105
+ try:
106
+ keys_manager.delete_secret("API",str(self.comboMode.currentText()))
107
+ except Exception as e:
108
+ print(e)
109
+ BoxError(str(e))
110
+ return
111
+ elif func_name in ["Create / overwrite imap4_ssl configuration", "Read imap4_ssl configuration"]:
112
+ try:
113
+ keys_manager.delete_secret("IMAP4_SSL",str(self.comboMode.currentText()))
114
+ except Exception as e:
115
+ print(e)
116
+ BoxError(str(e))
117
+ return
118
+ elif func_name in ["Create / overwrite nxp configuration", "Read nxp configuration"]:
119
+ try:
120
+ keys_manager.delete_secret("NXP",str(self.comboMode.currentText()))
121
+ except Exception as e:
122
+ print(e)
123
+ BoxError(str(e))
124
+ return
125
+ elif func_name in ["Create / overwrite owa configuration", "Read owa configuration"]:
126
+ try:
127
+ keys_manager.delete_secret("MICROSOFT_EXCHANGE_OWA",str(self.comboMode.currentText()))
128
+ except Exception as e:
129
+ print(e)
130
+ BoxError(str(e))
131
+ return
132
+ elif func_name in ["Create / overwrite oauth2 configuration", "Read oauth2 configuration"]:
133
+ try:
134
+ keys_manager.delete_secret("MICROSOFT_EXCHANGE_OAUTH2",str(self.comboMode.currentText()) )
135
+ except Exception as e:
136
+ print(e)
137
+ BoxError(str(e))
138
+ return
139
+ else:
140
+ BoxError("Invalid function")
141
+ return
142
+ if func_name == "Read api key":
143
+ self.populate_combo_mode_from_folder(keys_manager.get_keys_dir("API"))
144
+ elif func_name == "Read imap4_ssl configuration":
145
+ self.populate_combo_mode_from_folder(keys_manager.get_keys_dir("IMAP4_SSL"))
146
+ elif func_name == "Read owa configuration":
147
+ self.populate_combo_mode_from_folder(keys_manager.get_keys_dir("MICROSOFT_EXCHANGE_OWA"))
148
+ elif func_name == "Read nxp configuration":
149
+ self.populate_combo_mode_from_folder(keys_manager.get_keys_dir("NXP"))
150
+ elif func_name == "Read oauth2 configuration":
151
+ self.populate_combo_mode_from_folder(keys_manager.get_keys_dir("MICROSOFT_EXCHANGE_OAUTH2"))
152
+ BoxInfo("Done")
153
+
154
+ def set_stdtextDetails(self,func_name):
155
+ if func_name=="Create / overwrite api key":
156
+ self.textDetails.setText("{\n'service': 'service_name',\n'api_key': 'api_key',\n'description': 'this_is_a_description'\n}")
157
+ elif func_name=="Create / overwrite imap4_ssl configuration":
158
+ self.textDetails.setText("{\n'agent': 'service_name',\n'alias': 'alias_name',\n'domain': '@domain.com',\n'interval_second': 1,\n'password': 'password'\n}")
159
+ elif func_name=="Create / overwrite nxp configuration":
160
+ self.textDetails.setText("{\n'dossier_node_id': 'bode_key',\n'serveur': 'servor_adress',\n'username': 'my_username',\n'password': 'password',\n'description': 'this is a description'\n}")
161
+ elif func_name=="Create / overwrite owa configuration":
162
+ self.textDetails.setText("{\n'alias': 'nom2@domain2.com',\n'interval_second': 1,\n'mail': 'nom@domain.com',\n'password_encrypted': 'password',\n'server': 'toto.titi.tata',\n'username': 'domaine\\username'\n}")
163
+ elif func_name=="Create / overwrite oauth2 configuration":
164
+ self.textDetails.setText("{\n'client_id': 'my_client_id',\n'client_secret':\n'my_client_secret',\n'tenant_id': 'my_guid_azure',\n'user_email': 'mail@domain.com'\n}")
165
+ else:
166
+ self.textDetails.setText("")
167
+ def populate_combo_mode_from_folder(self, folder_path):
168
+ # Nettoyer avant tout
169
+ self.comboMode.clear()
170
+ # Vérification du dossier
171
+ if not folder_path or not os.path.isdir(folder_path):
172
+ return # dossier invalide → combo purgé, masqué
173
+ # Recherche des fichiers .sec
174
+ sec_files = [
175
+ f for f in os.listdir(folder_path)
176
+ if f.lower().endswith(".sec") and os.path.isfile(os.path.join(folder_path, f))
177
+ ]
178
+ # Si aucun fichier trouvé → juste retour (combo reste masqué)
179
+ if not sec_files:
180
+ return
181
+
182
+ # Peupler le combo
183
+ for filename in sec_files:
184
+ basename = filename[:-4] # retire ".sec"
185
+ # stocker le vrai nom en data interne Qt
186
+ self.comboMode.addItem(basename, filename)
187
+ self.comboMode.setCurrentIndex(0)
188
+
189
+ def populate_textDetails(self):
190
+ self.textDetails.setText("")
191
+ func_name = str(self.comboActions.currentText())
192
+ if func_name=="":
193
+ return
194
+ key_name =str(self.comboMode.currentText())
195
+ if key_name=="":
196
+ return
197
+ if func_name == "Read api key":
198
+ self.textDetails.setText(str(keys_manager.lire_config_api(key_name)).replace('\\\\','\\'))
199
+ if func_name == "Read imap4_ssl configuration":
200
+ self.textDetails.setText(str(keys_manager.lire_config_imap4_ssl_dict_sec(key_name)).replace('\\\\','\\'))
201
+ if func_name == "Read owa configuration":
202
+ self.textDetails.setText(str(keys_manager.lire_config_owa_dict_sec(key_name)).replace('\\\\','\\'))
203
+ if func_name == "Read nxp configuration":
204
+ self.textDetails.setText(str(keys_manager.lire_config_nxp(key_name)).replace('\\\\','\\'))
205
+ if func_name == "Read oauth2 configuration":
206
+ self.textDetails.setText(str(keys_manager.lire_config_oauth2_dict_sec(key_name)).replace('\\\\','\\'))
207
+
208
+
209
+
210
+ def on_current_text_changed(self):
211
+ self.textDetails.setText("")
212
+ func_name = str(self.comboActions.currentText())
213
+ self.comboMode.clear()
214
+ self.pushButton_read.setVisible(False)
215
+ self.pushButton_delete.setVisible(False)
216
+ if func_name in (
217
+ "Read api key",
218
+ "Read imap4_ssl configuration",
219
+ "Read owa configuration",
220
+ "Read nxp configuration",
221
+ "Read oauth2 configuration"
222
+ ):
223
+ self.textDetails.setVisible(True)
224
+ self.pushButton_read.setVisible(True)
225
+ self.pushButton_delete.setVisible(True)
226
+ self.comboMode.setVisible(True)
227
+ self.labelMode.setVisible(True)
228
+ if func_name=="Read api key":
229
+ self.populate_combo_mode_from_folder(keys_manager.get_keys_dir("API"))
230
+ elif func_name=="Read imap4_ssl configuration":
231
+ self.populate_combo_mode_from_folder(keys_manager.get_keys_dir("IMAP4_SSL"))
232
+ elif func_name=="Read owa configuration":
233
+ self.populate_combo_mode_from_folder(keys_manager.get_keys_dir("MICROSOFT_EXCHANGE_OWA"))
234
+ elif func_name=="Read nxp configuration":
235
+ self.populate_combo_mode_from_folder(keys_manager.get_keys_dir("NXP"))
236
+ elif func_name=="Read oauth2 configuration":
237
+ self.populate_combo_mode_from_folder(keys_manager.get_keys_dir("MICROSOFT_EXCHANGE_OAUTH2"))
238
+
239
+
240
+
241
+ self.textDetails.setVisible(True)
242
+ else:
243
+ self.set_stdtextDetails(func_name)
244
+ self.comboMode.setVisible(False)
245
+ self.labelMode.setVisible(False)
246
+
247
+
248
+ def handle_pushButton_sync_clicked(self):
249
+ keys_manager.recreate_all_sec_file()
250
+ BoxInfo("Done")
251
+
252
+
253
+
254
+ def main():
255
+ app = QtWidgets.QApplication(sys.argv)
256
+ dlg = KeyManagerUI()
257
+ dlg.show()
258
+ if hasattr(app, "exec"):
259
+ app.exec()
260
+ else:
261
+ app.exec_()
262
+
263
+
264
+
265
+
266
+ if __name__ == "__main__":
267
+ main()