diff --git a/filemgr/filemgr.py b/filemgr/filemgr.py index f55bced..a5077ea 100644 --- a/filemgr/filemgr.py +++ b/filemgr/filemgr.py @@ -22,6 +22,10 @@ def get_dbname(): dbname = f('filemgr') return dbname +class FileMgrResult(DictObject): + def __init__(self, status, message, **kw): + super.__init__(status=status, message=message, **kw) + class FileMgr: def __init__(self, fiid): self.fiid = fiid @@ -61,7 +65,7 @@ class FileMgr: dbname = get_dbname() u = await get_session_userinfo(request) if u is None: - return False + return FileMgrResult('error', 'user need login') db = DBPools() async with db.sqlorContext(dbname) as sor: @@ -70,7 +74,7 @@ class FileMgr: os.unlink(realpath) e = Exception(f'owner mismatch({u.userorgid=})') exception(f'{e=}\n{format_exc()}') - raise + raise e quota, expired_date = await self.get_organization_quota(sor, u.userorgid) if quota is None: @@ -90,7 +94,7 @@ class FileMgr: os.unlink(realpath) e = Exception(f'File exists') exception(f'{e=}\n{format_exc()}') - return False + return FileMgrResult('failed', 'file exists') recs = await sor.R('file',{'hashvalue': hashvalue}) if len(recs) > 0: @@ -112,9 +116,10 @@ class FileMgr: } await sor.C('file', ns) if len(recs) == 0: - await self.file_uploaded(request, ns, u.userid) - return True - return False + ret = await self.file_uploaded(request, ns, u.userid) + return ret + return FileMgrResult('success', 'file added') + return FileMgrResult('error', str(db.e_except)) async def del_folder(self, request, id): db = DBPools() @@ -164,7 +169,9 @@ class FileMgr: rec = await self._del_file(sor, fid, u.userorgid) if rec: delrecs.append(rec) - self.file_deleted(request, delrecs, u.userid) + ret = await self.file_deleted(request, delrecs, u.userid) + return ret + return FileMgrResult('success', 'file deleted') async def _del_file(self, sor, fid, ownerid): recs = await sor.R('file', {'id': fid}) @@ -180,8 +187,6 @@ class FileMgr: os.unlink(delrec.realpath) return delrec return None - # rf = RegisterFunction() - # await rf.exe('filedeleted', delrec) async def has_sub(self, sor, folderid): sql = """select unique a.* from folder a diff --git a/wwwroot/conformed_delete.dspy b/wwwroot/conformed_delete.dspy index c6614cd..00b8adb 100644 --- a/wwwroot/conformed_delete.dspy +++ b/wwwroot/conformed_delete.dspy @@ -4,4 +4,4 @@ async with db.sqlorContext(dbname) as sor: filemgr = Filemgr() await filemgr._del_folder(sor, params_kw.id) return UiMessage(title='delete folder', message='delete success') -return Error(title='delete folder', message='delete failed') +return UiError(title='delete folder', message='delete failed') diff --git a/wwwroot/delete_folder_or_file.dspy b/wwwroot/delete_folder_or_file.dspy index fd53c6c..6bb9394 100644 --- a/wwwroot/delete_folder_or_file.dspy +++ b/wwwroot/delete_folder_or_file.dspy @@ -27,4 +27,4 @@ async with db.sqlorContext(dbname) as sor: else: await filemgr._del_file(sor, params_kw.id) return UiMessage(title='delete file', message='delete success') -return Error(title='delete file', message='delete failed') +return UiError(title='delete file', message='delete failed') diff --git a/wwwroot/upload_file.dspy b/wwwroot/upload_file.dspy index 1e47b37..c6f902b 100644 --- a/wwwroot/upload_file.dspy +++ b/wwwroot/upload_file.dspy @@ -1,5 +1,5 @@ fmgr = FileMgr() stat = await fmgr.add_file(request, params_kw) -if stat: +if stat.status='success': return UiMessage(title='Add file', message='file add success') return UiError(title='Add file', message='file add failed')