diff --git a/ahserver/configuredServer.py b/ahserver/configuredServer.py index c7cd0a7..2e06d06 100644 --- a/ahserver/configuredServer.py +++ b/ahserver/configuredServer.py @@ -26,6 +26,7 @@ class AHApp(web.Application): def __init__(self, *args, **kw): if not kw.get('client_max_size'): kw['client_max_size'] = 1024000000 + debug(f"client_max_size={kw['client_max_size']}") super().__init__(*args, **kw) self.user_data = DictObject() self.middlewares.insert(0, real_ip_middleware()) @@ -51,7 +52,7 @@ class ConfiguredServer: self.config = config initEnv() setupTemplateEngine() - client_max_size = 1024 * 10240 + client_max_size = 1024000000 if config.website.client_max_size: client_max_size = config.website.client_max_size diff --git a/docs/module.md b/docs/module.md index 82a8822..e2a2bc9 100644 --- a/docs/module.md +++ b/docs/module.md @@ -32,13 +32,13 @@ mymodule | | | +--__init__.py #python模块所需 | - +--wwwroot目录 # web服务脚本,文件已.ui和.dspy结束,ui文件支持jinja2模板,前端控件文件,内容为json格式的控件描述文本, dspy是ahserver支持的受限python脚本,可以按照需要设置下级目录 + +--wwwroot目录 # web服务脚本,文件以.ui和.dspy结束,ui文件支持jinja2模板,前端控件文件,内容为json格式的控件描述文本, dspy是ahserver支持的受限python脚本,可以按照需要设置下级目录 | - +--models目录 # xlsx格式的数据库描述文件,用开创建模块所需的数据库表 + +--models目录 # 模块使用的数据表以.xlsx后缀存放在此目录中 | +--json目录 # 存放json文件,定义数据表的CRUD逻辑 | - +--pyproject.toml文件 # pip打包文件 + +--pyproject.toml文件 # pip打包文件, 其中项目名字与mymodule相同 | +--README.md文件 # 模块自说明文件 | @@ -49,3 +49,53 @@ mymodule +--script.py # 初始化脚本 ``` +## 数据表文件说明 +数据表文件也是模块的源码,文件名称放在二级标题上,内容包括: +* 表功能说明 + +* 数据字段列表 + +## 数据表crud的json文件 + +模块中的每个数据表都需要一个json文件,放在模块的json目录下 + +数据表json文件也是模块的源码,文件名称放在二级标题上,内容包括 + +* 树状结构或列表结构 + +* 哪些字段列表不显示 + +* 哪些字段编辑时不编辑 + +* 哪些字段时敏感信息 + +* 本表的主键是哪些表的外键,以{field: subtable_field, subtable: thattable} 形式给出 + + +## 代码分布要求 + +* 模块中的主要逻辑用py源码实现,放在mymodule目录下 + +* 客户端业务功能放在wwwroot目录下,以.ui后缀结束,用jinja2执行服务器端逻辑 + +* 返回客户端数据的功能放在wwwroot目录下,以.dspy后缀结束 + +## ui, dspy可以直接使用的变量 + +### request +aiohttp.Request实例,每个客户端请求有一个独立的Request实例 + +request._run_ns可以获得所有在.ui和.dspy源码中可以使用的变量,通过ahserver.ServerEnv 传递 + +### params_kw +DictObject(dict子类, 支持a.b方式获取属性)实例,接收到客户端传来的数据,如果有文件,文件都保存在服务器指定的位置,params_kw中属性名保存的是其相对路径,可用FileStorage().realPath(params_kw.myfile)来获得文件在服务器中的实际路径。 + +### get_user() +来自rbac模块,协程函数,获得当前登录用户,如果用户没有登录,返回None + +### get_userorgid() +来自rbac模块,协程函数,获得当前登录用户的机构id,如果用户没有登录,返回None + +### pyproject.toml和README.md +编写完成的pyproject.toml文件和README.md文件 +