8
8
from submodules .model .business_objects import organization
9
9
10
10
from controller .transfer import manager as upload_manager
11
- from controller .upload_task import manager as task_manager
11
+ from controller .upload_task import manager as upload_task_manager
12
12
from controller .auth import manager as auth_manager
13
13
from controller .transfer import manager as transfer_manager
14
+ from controller .transfer import association_transfer_manager
14
15
from controller .auth import manager as auth
15
16
16
- from submodules .model import enums
17
+ from submodules .model import enums , exceptions
17
18
from util .notification import create_notification
18
19
from submodules .model .enums import NotificationType
19
20
from submodules .model .models import UploadTask
@@ -43,7 +44,7 @@ async def post(self, request) -> PlainTextResponse:
43
44
if org_id == "archive" :
44
45
return PlainTextResponse ("OK" )
45
46
46
- task = task_manager .get_upload_task_secure (
47
+ task = upload_task_manager .get_upload_task_secure (
47
48
upload_task_id = upload_task_id ,
48
49
project_id = project_id ,
49
50
file_name = file_name ,
@@ -62,7 +63,14 @@ def get(self, request) -> JSONResponse:
62
63
project_id = request .path_params ["project_id" ]
63
64
user_id = request .query_params ["user_id" ]
64
65
num_samples = request .query_params .get ("num_samples" )
65
- auth_manager .check_project_access_from_user_id (user_id , project_id )
66
+ try :
67
+ auth_manager .check_project_access_from_user_id (
68
+ user_id , project_id , from_api = True
69
+ )
70
+ except exceptions .EntityNotFoundException :
71
+ return JSONResponse ({"error" : "Could not find project" }, status_code = 404 )
72
+ except exceptions .AccessDeniedException :
73
+ return JSONResponse ({"error" : "Access denied" }, status_code = 403 )
66
74
result = transfer_manager .export_records (project_id , num_samples )
67
75
return JSONResponse (result )
68
76
@@ -72,23 +80,37 @@ def get(self, request) -> JSONResponse:
72
80
project_id = request .path_params ["project_id" ]
73
81
list_id = request .path_params ["knowledge_base_id" ]
74
82
user_id = request .query_params ["user_id" ]
75
- auth_manager .check_project_access_from_user_id (user_id , project_id )
83
+ try :
84
+ auth_manager .check_project_access_from_user_id (
85
+ user_id , project_id , from_api = True
86
+ )
87
+ except exceptions .EntityNotFoundException :
88
+ return JSONResponse ({"error" : "Could not find project" }, status_code = 404 )
89
+ except exceptions .AccessDeniedException :
90
+ return JSONResponse ({"error" : "Access denied" }, status_code = 403 )
76
91
result = transfer_manager .export_knowledge_base (project_id , list_id )
77
92
return JSONResponse (result )
78
93
79
94
80
- class PrepareImport (HTTPEndpoint ):
95
+ class PrepareFileImport (HTTPEndpoint ):
81
96
async def post (self , request ) -> JSONResponse :
82
97
auth .check_is_demo_without_info ()
83
98
project_id = request .path_params ["project_id" ]
84
99
request_body = await request .json ()
85
100
86
101
user_id = request_body ["user_id" ]
87
- auth_manager .check_project_access_from_user_id (user_id , project_id )
102
+ try :
103
+ auth_manager .check_project_access_from_user_id (
104
+ user_id , project_id , from_api = True
105
+ )
106
+ except exceptions .EntityNotFoundException :
107
+ return JSONResponse ({"error" : "Could not find project" }, status_code = 404 )
108
+ except exceptions .AccessDeniedException :
109
+ return JSONResponse ({"error" : "Access denied" }, status_code = 403 )
88
110
file_name = request_body ["file_name" ]
89
111
file_type = request_body ["file_type" ]
90
112
file_import_options = request_body .get ("file_import_options" )
91
- task = task_manager .create_upload_task (
113
+ task = upload_task_manager .create_upload_task (
92
114
user_id , project_id , file_name , file_type , file_import_options
93
115
)
94
116
org_id = organization .get_id_by_project_id (project_id )
@@ -98,14 +120,63 @@ async def post(self, request) -> JSONResponse:
98
120
return JSONResponse (credentials_and_id )
99
121
100
122
123
+ class JSONImport (HTTPEndpoint ):
124
+ async def post (self , request ) -> JSONResponse :
125
+ auth .check_is_demo_without_info ()
126
+ project_id = request .path_params ["project_id" ]
127
+ request_body = await request .json ()
128
+ user_id = request_body ["user_id" ]
129
+ auth_manager .check_project_access_from_user_id (user_id , project_id )
130
+ transfer_manager .import_records_from_json (
131
+ project_id ,
132
+ user_id ,
133
+ request_body ["records" ],
134
+ request_body ["request_uuid" ],
135
+ request_body ["is_last" ],
136
+ )
137
+ return JSONResponse ({"success" : True })
138
+
139
+
140
+ class AssociationsImport (HTTPEndpoint ):
141
+ async def post (self , request ) -> JSONResponse :
142
+ project_id = request .path_params ["project_id" ]
143
+ request_body = await request .json ()
144
+ user_id = request_body ["user_id" ]
145
+ try :
146
+ auth_manager .check_project_access_from_user_id (
147
+ user_id , project_id , from_api = True
148
+ )
149
+ except exceptions .EntityNotFoundException :
150
+ return JSONResponse ({"error" : "Could not find project" }, status_code = 404 )
151
+ except exceptions .AccessDeniedException :
152
+ return JSONResponse ({"error" : "Access denied" }, status_code = 403 )
153
+ new_associations_added = association_transfer_manager .import_associations (
154
+ project_id ,
155
+ user_id ,
156
+ request_body ["name" ],
157
+ request_body ["label_task_name" ],
158
+ request_body ["associations" ],
159
+ request_body ["indices" ],
160
+ request_body ["source_type" ],
161
+ )
162
+ return JSONResponse (new_associations_added )
163
+
164
+
101
165
class UploadTask (HTTPEndpoint ):
102
166
def get (self , request ) -> JSONResponse :
103
167
auth .check_is_demo_without_info ()
104
168
project_id = request .path_params ["project_id" ]
105
169
task_id = request .path_params ["task_id" ]
106
170
user_id = request .query_params ["user_id" ]
107
- auth_manager .check_project_access_from_user_id (user_id , project_id )
108
- task = task_manager .get_upload_task (project_id , task_id )
171
+ try :
172
+ auth_manager .check_project_access_from_user_id (
173
+ user_id , project_id , from_api = True
174
+ )
175
+ except exceptions .EntityNotFoundException :
176
+ return JSONResponse ({"error" : "Could not find project" }, status_code = 404 )
177
+ except exceptions .AccessDeniedException :
178
+ return JSONResponse ({"error" : "Access denied" }, status_code = 403 )
179
+ task = upload_task_manager .get_upload_task (project_id , task_id )
109
180
task_dict = {
110
181
"id" : str (task .id ),
111
182
"file_name" : str (task .file_name ),
@@ -119,7 +190,7 @@ def get(self, request) -> JSONResponse:
119
190
120
191
def init_file_import (task : UploadTask , project_id : str , is_global_update : bool ) -> None :
121
192
if "records" in task .file_type :
122
- upload_manager .import_records (project_id , task )
193
+ upload_manager .import_records_from_file (project_id , task )
123
194
elif "project" in task .file_type :
124
195
upload_manager .import_project (project_id , task )
125
196
elif "knowledge_base" in task .file_type :
@@ -145,7 +216,7 @@ def file_import_error_handling(
145
216
task .file_type ,
146
217
)
147
218
logger .error (
148
- task_manager .get_upload_task_message (
219
+ upload_task_manager .get_upload_task_message (
149
220
task ,
150
221
)
151
222
)
0 commit comments