bugfix
This commit is contained in:
parent
037724c760
commit
c11ca2d793
64
json/folder.json
Normal file
64
json/folder.json
Normal file
@ -0,0 +1,64 @@
|
||||
{
|
||||
"tblname": "folder",
|
||||
"uitype":"tree",
|
||||
"title":"目录",
|
||||
"params":{
|
||||
"idField":"id",
|
||||
"textField":"name",
|
||||
"typeField":"filetype",
|
||||
"sortby":"name",
|
||||
"editable":true,
|
||||
"browserfields":{
|
||||
"alter":{}
|
||||
},
|
||||
"node_typeicons":{
|
||||
"pdf": "{{entire_url('/bricks/imgs/pdf.svg')}}",
|
||||
"txt":"{{entire_url('/bricks/imgs/txt.svg')}}",
|
||||
"docx":"{{entire_url('/bricks/imgs/docx.svg')}}",
|
||||
"doc":"{{entire_url('/bricks/imgs/docx.svg')}}",
|
||||
"pptx":"{{entire_url('/bricks/imgs/pptx.svg')}}",
|
||||
"ppt":"{{entire_url('/bricks/imgs/pptx.svg')}}",
|
||||
"xlsx":"{{entire_url('/bricks/imgs/xlsx.svg')}}",
|
||||
"xls":"{{entire_url('/bricks/imgs/xlsx.svg')}}",
|
||||
"epub":"{{entire_url('/bricks/imgs/epub.svg')}}",
|
||||
"csv":"{{entire_url('/bricks/imgs/csv.svg')}}"
|
||||
},
|
||||
"edit_exclouded_fields":["id", "fiid" ],
|
||||
"get_data_url":"{{entire_url('/rag/get_folder_subs.dspy')}}",
|
||||
"delete_data_url": "{{entire_url('/rag/delete_folder_or_file.dspy')}}",
|
||||
"params":{
|
||||
"id":"{{params_kw.id or '' }}"
|
||||
},
|
||||
"newdata_params":{
|
||||
"fiid":"{{params_kw.id or ''}}"
|
||||
},
|
||||
"parentField":"parentid",
|
||||
"toolbar":{
|
||||
"tools":[
|
||||
{
|
||||
"name":"upload",
|
||||
"label":"上传文件",
|
||||
"selected_data": true,
|
||||
"icon":"{{entire_url('/bricks/imgs/upload.svg')}}"
|
||||
}
|
||||
]
|
||||
},
|
||||
"binds":[
|
||||
{
|
||||
"wid":"self",
|
||||
"event":"upload",
|
||||
"actiontype":"urlwidget",
|
||||
"target":"PopupWindow",
|
||||
"popup_options":{
|
||||
"width":"75%",
|
||||
"height":"75%",
|
||||
"icon":"{{entire_url('/bricks/imgs/app.png')}}",
|
||||
"title":"上传文件"
|
||||
},
|
||||
"options":{
|
||||
"url":"{{entire_url('/rag/upload_file.ui')}}"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@ -32,7 +32,7 @@
|
||||
"title":"文件管理"
|
||||
},
|
||||
"options":{
|
||||
"url":"{{entire_url('/filemgr/folder')}}"
|
||||
"url":"{{entire_url('/rag/folder')}}"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
12
json/ragquota.json
Normal file
12
json/ragquota.json
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
"tblname": "ragquota",
|
||||
"title":"知识库限额",
|
||||
"params":{
|
||||
"logined_userorgid":"orgid",
|
||||
"browserfields":{
|
||||
"exclouded":["id", "orgid"],
|
||||
"alters":{}
|
||||
},
|
||||
"edit_exclouded_fields":["id", "orgid" ]
|
||||
}
|
||||
}
|
||||
@ -1,16 +0,0 @@
|
||||
{
|
||||
"tblname": "ragservices",
|
||||
"title":"知识库服务集",
|
||||
"params":{
|
||||
"logined_userorgid":"orgid",
|
||||
"sortby":"name",
|
||||
"browserfields":{
|
||||
"alters":{}
|
||||
},
|
||||
"edit_exclouded_fields":[],
|
||||
"toolbar":{
|
||||
},
|
||||
"binds":[
|
||||
]
|
||||
}
|
||||
}
|
||||
BIN
models/ragquota.xlsx
Normal file
BIN
models/ragquota.xlsx
Normal file
Binary file not shown.
38
rag/folderinfo.py
Normal file
38
rag/folderinfo.py
Normal file
@ -0,0 +1,38 @@
|
||||
from appPublic.timeUtils import curDateString
|
||||
form filemgr.filemgr import FileMgr
|
||||
|
||||
class RagFileMgr(FileMgr):
|
||||
async def get_folder_ownerid(self, sor):
|
||||
fiid = self.fiid
|
||||
recs = await sor.R('kdb', {'id': self.fiid})
|
||||
if len(recs) > 0:
|
||||
return recs[0].orgid
|
||||
return None
|
||||
|
||||
async def get_organization_quota(self, sor, orgid):
|
||||
sql = """select a.* from ragquota a, kdb b
|
||||
where a.orgid = b.orgid
|
||||
and b.id = ${id}$
|
||||
and ${today}$ >= a.enabled_date
|
||||
and ${today}$ < a.expired_date
|
||||
"""
|
||||
recs = await sor.sqlExe(sql, {
|
||||
'id': self.id,
|
||||
'today': curDateTime()
|
||||
})
|
||||
if len(recs) > 0:
|
||||
r = recs[0]
|
||||
return r.quota, r.expired_date
|
||||
|
||||
|
||||
async def file_uploaded(self, request, ns, userid):
|
||||
pass
|
||||
|
||||
async def file_deleted(self, request, recs, userid):
|
||||
pass
|
||||
|
||||
## usage
|
||||
# mgr = RagFileMgr(fiid)
|
||||
# await mgr.add_file(request, params_kw)
|
||||
# await mgr.delete_file(request, file_id)
|
||||
##
|
||||
@ -4,7 +4,9 @@ import aiohttp
|
||||
from aiohttp import ClientSession, ClientTimeout
|
||||
import json
|
||||
from .file import file_uploaded, file_deleted
|
||||
from .folderinfo import RagFileMgr
|
||||
from appPublic.registerfunction import RegisterFunction
|
||||
from filemgr.filemgr import use_module_patches
|
||||
|
||||
async def _make_connection_request(action: str, params: dict = None) -> dict:
|
||||
"""
|
||||
@ -152,4 +154,6 @@ def load_rag():
|
||||
env.fused_search = fused_search
|
||||
env.list_user_files = list_user_files
|
||||
env.list_all_knowledge_bases = list_all_knowledge_bases
|
||||
env.docs = docs
|
||||
env.docs = docs
|
||||
env.RagFileMgr = RagFileMgr
|
||||
|
||||
|
||||
@ -1 +0,0 @@
|
||||
/d/ymq/js/bricks/dist
|
||||
6
wwwroot/conformed_delete.dspy
Normal file
6
wwwroot/conformed_delete.dspy
Normal file
@ -0,0 +1,6 @@
|
||||
try:
|
||||
filemgr = RagFilemgr()
|
||||
await filemgr.del_folder(request, params_kw.id)
|
||||
return UiMessage(title='delete folder', message='delete success')
|
||||
except Exception as e:
|
||||
return Error(title='delete folder', message='delete failed({e})')
|
||||
29
wwwroot/delete_folder_or_file.dspy
Normal file
29
wwwroot/delete_folder_or_file.dspy
Normal file
@ -0,0 +1,29 @@
|
||||
orgid = await get_userorgid()
|
||||
dbname = get_module_dbname('filemgr')
|
||||
db = DBPools()
|
||||
async with db.sqlorContext(dbname) as sor:
|
||||
filemgr = RagFileMgr()
|
||||
if params_kw.filetype == 'folder':
|
||||
has_sub = await filemgr.has_sub(sor, params_kw.id)
|
||||
if has_sub:
|
||||
return UiComform(title='Delete Conform',
|
||||
message='This folder has subitem, are you sure to delete it?', binds=[
|
||||
{
|
||||
"wid":"self",
|
||||
"event":"conformed",
|
||||
"actiontype":"urlwidget",
|
||||
"target":"self",
|
||||
"options":{
|
||||
"params":{
|
||||
"id":params_kw.id,
|
||||
"filetype": params_kw.filetype
|
||||
},
|
||||
url: entire_url('conformed_delete.dspy')
|
||||
}
|
||||
}
|
||||
])
|
||||
await filemgr._del_folder(sor, params_kw.id, ownerid)
|
||||
else:
|
||||
await filemgr._del_file(sor, params_kw.id, ownerid)
|
||||
return UiMessage(title='delete file', message='delete success')
|
||||
return Error(title='delete file', message='delete failed')
|
||||
5
wwwroot/get_folder_subs.dspy
Normal file
5
wwwroot/get_folder_subs.dspy
Normal file
@ -0,0 +1,5 @@
|
||||
#
|
||||
debug(f'{params_kw=}')
|
||||
filemgr = RagFileMgr()
|
||||
f = await filemgr.get_subs( params_kw.id)
|
||||
return f
|
||||
9
wwwroot/getallfiles.dspy
Normal file
9
wwwroot/getallfiles.dspy
Normal file
@ -0,0 +1,9 @@
|
||||
kdbid=params_kw.id
|
||||
filemgr = FileMgr
|
||||
ret = []
|
||||
async for f in filemgr.get_subfiles(request, params_kw):
|
||||
ret.append({
|
||||
"id":f.id,
|
||||
"filename":f.realpath
|
||||
})
|
||||
return ret
|
||||
6
wwwroot/upload_file.dspy
Normal file
6
wwwroot/upload_file.dspy
Normal file
@ -0,0 +1,6 @@
|
||||
fmgr = RagFileMgr()
|
||||
try:
|
||||
stat = await fmgr.add_file(request, params_kw)
|
||||
return UiMessage(title='Add file', message='file add success')
|
||||
except Exception as e:
|
||||
return UiError(title='Add file', message=f'file add failed({e})')
|
||||
33
wwwroot/upload_file.ui
Normal file
33
wwwroot/upload_file.ui
Normal file
@ -0,0 +1,33 @@
|
||||
{
|
||||
"widgettype":"Form",
|
||||
"options":{
|
||||
"fields":[
|
||||
{
|
||||
"name":"folderid",
|
||||
"uitype":"hide",
|
||||
"value":"{{params_kw.id}}"
|
||||
},
|
||||
{
|
||||
"name":"fiid",
|
||||
"uitype":"hide",
|
||||
"value":"{{params_kw.fiid}}"
|
||||
},
|
||||
{
|
||||
"name":"upfile",
|
||||
"uitype":"file",
|
||||
"label":"上传文件"
|
||||
}
|
||||
]
|
||||
},
|
||||
"binds":[
|
||||
{
|
||||
"wid":"self",
|
||||
"event":"submit",
|
||||
"actiontype":"urlwidget",
|
||||
"target":"self",
|
||||
"options":{
|
||||
"url":"{{entire_url('./upload_file.dspy')}}"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user