aopstudio commited on
Commit
11f4a85
·
1 Parent(s): 04d3b7e

Add API for moving files (#1016)

Browse files

### What problem does this PR solve?

Add backend API support for moving files into other directory

### Type of change
- [x] New Feature (non-breaking change which adds functionality)

api/apps/file_app.py CHANGED
@@ -343,5 +343,27 @@ def get(file_id):
343
  'application/%s' %
344
  ext.group(1))
345
  return response
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
346
  except Exception as e:
347
  return server_error_response(e)
 
343
  'application/%s' %
344
  ext.group(1))
345
  return response
346
+ except Exception as e:
347
+ return server_error_response(e)
348
+
349
+ @manager.route('/mv', methods=['POST'])
350
+ @login_required
351
+ @validate_request("src_file_ids", "dest_file_id")
352
+ def move():
353
+ req = request.json
354
+ try:
355
+ file_ids = req["src_file_ids"]
356
+ parent_id = req["dest_file_id"]
357
+ for file_id in file_ids:
358
+ e, file = FileService.get_by_id(file_id)
359
+ if not e:
360
+ return get_data_error_result(retmsg="File or Folder not found!")
361
+ if not file.tenant_id:
362
+ return get_data_error_result(retmsg="Tenant not found!")
363
+ fe, _ = FileService.get_by_id(parent_id)
364
+ if not fe:
365
+ return get_data_error_result(retmsg="Parent Folder not found!")
366
+ FileService.move_file(file_ids, parent_id)
367
+ return get_json_result(data=True)
368
  except Exception as e:
369
  return server_error_response(e)
api/db/services/file_service.py CHANGED
@@ -304,4 +304,13 @@ class FileService(CommonService):
304
  "source_type": FileSource.KNOWLEDGEBASE
305
  }
306
  cls.save(**file)
307
- File2DocumentService.save(**{"id": get_uuid(), "file_id": file["id"], "document_id": doc["id"]})
 
 
 
 
 
 
 
 
 
 
304
  "source_type": FileSource.KNOWLEDGEBASE
305
  }
306
  cls.save(**file)
307
+ File2DocumentService.save(**{"id": get_uuid(), "file_id": file["id"], "document_id": doc["id"]})
308
+
309
+ @classmethod
310
+ @DB.connection_context()
311
+ def move_file(cls, file_ids, folder_id):
312
+ try:
313
+ cls.filter_update((cls.model.id << file_ids, ), { 'parent_id': folder_id })
314
+ except Exception as e:
315
+ print(e)
316
+ raise RuntimeError("Database error (File move)!")