add dbadm
This commit is contained in:
parent
038e3cccdf
commit
77d8ca3288
61
ahserver/dbadmin.py
Normal file
61
ahserver/dbadmin.py
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
import os
|
||||||
|
import re
|
||||||
|
import traceback
|
||||||
|
|
||||||
|
from aiohttp.web_urldispatcher import StaticResource, _WebHandler, PathLike
|
||||||
|
from aiohttp.web_urldispatcher import Optional, _ExpectHandler
|
||||||
|
from aiohttp.web_urldispatcher import Path
|
||||||
|
from aiohttp.web_response import Response, StreamResponse
|
||||||
|
from aiohttp.web_exceptions import (
|
||||||
|
HTTPException,
|
||||||
|
HTTPExpectationFailed,
|
||||||
|
HTTPForbidden,
|
||||||
|
HTTPMethodNotAllowed,
|
||||||
|
HTTPNotFound,
|
||||||
|
)
|
||||||
|
from aiohttp import web
|
||||||
|
from aiohttp.web_fileresponse import FileResponse
|
||||||
|
from aiohttp.web_request import Request
|
||||||
|
from aiohttp.web_response import Response, StreamResponse
|
||||||
|
from aiohttp.web_routedef import AbstractRouteDef
|
||||||
|
from aiohttp.web import json_response
|
||||||
|
|
||||||
|
|
||||||
|
from sqlor.crud import CRUD
|
||||||
|
|
||||||
|
from appPublic.dictObject import multiDict2Dict
|
||||||
|
from appPublic.jsonConfig import getConfig
|
||||||
|
|
||||||
|
from .error import Error,Success
|
||||||
|
actions = [
|
||||||
|
"browse",
|
||||||
|
"add",
|
||||||
|
"update",
|
||||||
|
"filter"
|
||||||
|
]
|
||||||
|
|
||||||
|
class DBAdmin:
|
||||||
|
def __init__(self, request,dbname,tablename, action):
|
||||||
|
self.dbname = dbname
|
||||||
|
self.tablename = tablename
|
||||||
|
self.request = request
|
||||||
|
self.action = action
|
||||||
|
if action not in actions:
|
||||||
|
print('action not defined',action)
|
||||||
|
raise HTTPNotFound
|
||||||
|
try:
|
||||||
|
self.crud = CRUD(dbname,tablename)
|
||||||
|
except Exception as e:
|
||||||
|
print('e=',e)
|
||||||
|
traceback.print_exc()
|
||||||
|
raise HTTPNotFound
|
||||||
|
|
||||||
|
async def render(self) -> Response:
|
||||||
|
try:
|
||||||
|
d = await self.crud.I()
|
||||||
|
return json_response(Success(d))
|
||||||
|
except Exception as e:
|
||||||
|
print(e)
|
||||||
|
traceback.print_exc()
|
||||||
|
return json_response(Error(errno='metaerror',msg='get metadata error'))
|
||||||
|
|
@ -29,6 +29,7 @@ from .serverenv import ServerEnv
|
|||||||
from .url2file import Url2File
|
from .url2file import Url2File
|
||||||
from .filestorage import FileStorage
|
from .filestorage import FileStorage
|
||||||
from .restful import DBCrud
|
from .restful import DBCrud
|
||||||
|
from .dbadmin import DBAdmin
|
||||||
from .filedownload import file_download, path_decode
|
from .filedownload import file_download, path_decode
|
||||||
|
|
||||||
def getHeaderLang(request):
|
def getHeaderLang(request):
|
||||||
@ -172,6 +173,15 @@ class ProcessorResource(StaticResource,Url2File):
|
|||||||
self.y_env.gethost = gethost
|
self.y_env.gethost = gethost
|
||||||
path = request.path
|
path = request.path
|
||||||
config = getConfig()
|
config = getConfig()
|
||||||
|
if config.website.dbadm and path.startswith(config.website.dbadm):
|
||||||
|
pp = path.split('/')[2:]
|
||||||
|
if len(pp)<3:
|
||||||
|
raise HTTPNotFound
|
||||||
|
dbname = pp[0]
|
||||||
|
tablename = pp[1]
|
||||||
|
action = pp[2]
|
||||||
|
adm = DBAdmin(request,dbname,tablename,action)
|
||||||
|
return await adm.render()
|
||||||
if config.website.dbrest and path.startswith(config.website.dbrest):
|
if config.website.dbrest and path.startswith(config.website.dbrest):
|
||||||
pp = path.split('/')[2:]
|
pp = path.split('/')[2:]
|
||||||
if len(pp)<2:
|
if len(pp)<2:
|
||||||
@ -206,7 +216,7 @@ class ProcessorResource(StaticResource,Url2File):
|
|||||||
if self.isFolder(path):
|
if self.isFolder(path):
|
||||||
config = getConfig()
|
config = getConfig()
|
||||||
if not config.website.allowListFolder:
|
if not config.website.allowListFolder:
|
||||||
Raise HTTPNotFound
|
raise HTTPNotFound
|
||||||
return await super()._handle(request)
|
return await super()._handle(request)
|
||||||
|
|
||||||
def absUrl(self,request,url):
|
def absUrl(self,request,url):
|
||||||
|
Loading…
Reference in New Issue
Block a user