1010from fastapi_amis_admin .crud .schema import BaseApiOut
1111from fastapi_amis_admin .models import Field
1212from fastapi_amis_admin .utils .pydantic import ModelField
13+ from fastapi_amis_admin .utils .translation import i18n as _
1314from pydantic import BaseModel
1415from starlette .requests import Request
1516from starlette .responses import RedirectResponse
@@ -39,7 +40,7 @@ def get_admin_select_permission_rows(admin: PageSchemaAdmin) -> List[Dict[str, A
3940 for perm in admin .select_permissions :
4041 rows .append (
4142 {
42- "label" : "仅限数据 -" + perm .label ,
43+ "label" : _ ( "Data only" ) + " -" + perm .label , # 仅限数据
4344 "rol" : f"{ admin .unique_id } #page:select:{ perm .name } #page:select" ,
4445 "reverse" : perm .reverse ,
4546 }
@@ -69,7 +70,7 @@ def get_admin_field_permission_rows(admin: PageSchemaAdmin, action: str) -> List
6970 return []
7071 rows .append (
7172 {
72- "label" : "全部" ,
73+ "label" : _ ( "All" ), # 全部
7374 "rol" : f"{ admin .unique_id } #page:{ action } :*#page:{ action } " ,
7475 }
7576 )
@@ -93,7 +94,7 @@ def __init__(self, admin, **kwargs):
9394 elif self .admin .model .__table__ .name == User .__tablename__ :
9495 self ._subject = "u"
9596 else :
96- raise Exception ("暂不支持的主体模型" )
97+ raise Exception (_ ( "Subject model not supported yet" )) # 暂不支持的主体模型
9798
9899 async def get_subject_by_id (self , item_id : str ) -> str :
99100 # 从数据库获取用户选择的数据列表
@@ -117,23 +118,23 @@ class UpdateSubRolesAction(BaseSubAction):
117118 action = ActionType .Dialog (
118119 name = "update_subject_roles" ,
119120 icon = "fa fa-check" ,
120- tooltip = "设置角色" ,
121+ tooltip = _ ( "Set up roles" ), # 设置角色
121122 dialog = amis .Dialog (),
122123 level = LevelEnum .warning ,
123124 )
124125
125126 class schema (BaseModel ):
126127 role_keys : str = Field (
127128 "" ,
128- title = "角色列表" ,
129+ title = _ ( "role list" ), # 角色列表
129130 amis_form_item = amis .Transfer (
130131 selectMode = "table" ,
131132 resultListModeFollowSelect = True ,
132133 columns = [
133134 # {"name": "key", "label": "角色标识"},
134- {"name" : "name" , "label" : "角色名称" },
135- {"name" : "desc" , "label" : "角色描述" },
136- {"name" : "role_names" , "label" : "子角色" },
135+ {"name" : "name" , "label" : _ ( "Role Name" )}, # 角色名称
136+ {"name" : "desc" , "label" : _ ( "Role description" )}, # 角色描述
137+ {"name" : "role_names" , "label" : _ ( "sub-role" )}, # 子角色
137138 ],
138139 source = "" ,
139140 valueField = "key" ,
@@ -158,18 +159,18 @@ async def get_init_data(self, request: Request, **kwargs) -> BaseApiOut[Any]:
158159 return BaseApiOut (data = self .schema ())
159160 subject = await self .get_subject_by_id (item_id )
160161 if not subject :
161- return BaseApiOut (status = 0 , msg = "暂不支持的模型" )
162+ return BaseApiOut (status = 0 , msg = _ ( "Models not supported yet" )) # 暂不支持的模型
162163 role_keys = await self .site .auth .enforcer .get_roles_for_user (subject )
163164 return BaseApiOut (data = self .schema (role_keys = "," .join (role_keys ).replace ("r:" , "" )))
164165
165166 async def handle (self , request : Request , item_id : List [str ], data : schema , ** kwargs ):
166167 """更新角色Casbin权限"""
167168 subject = await self .get_subject_by_id (item_id [0 ])
168169 if not subject :
169- return BaseApiOut (status = 0 , msg = "暂不支持的模型" )
170+ return BaseApiOut (status = 0 , msg = _ ( "Models not supported yet" )) # 暂不支持的模型
170171 identity = await self .site .auth .get_current_user_identity (request ) or SystemUserEnum .GUEST
171172 if subject == "u:" + identity :
172- return BaseApiOut (status = 0 , msg = "不能修改自己的权限" )
173+ return BaseApiOut (status = 0 , msg = _ ( "Cannot modify own permissions" )) # 不能修改自己的权限
173174 enforcer : AsyncEnforcer = self .site .auth .enforcer
174175 role_keys = [f"r:{ role } " for role in data .role_keys .split ("," ) if role ]
175176 if role_keys and identity not in [SystemUserEnum .ROOT , SystemUserEnum .ADMIN ]:
@@ -190,7 +191,7 @@ class BaseSubPermAction(BaseSubAction):
190191 action = ActionType .Dialog (
191192 name = "view_subject_permissions" ,
192193 icon = "fa fa-check" ,
193- tooltip = "查看权限" ,
194+ tooltip = _ ( "View permissions" ), # 查看权限
194195 dialog = amis .Dialog (),
195196 level = LevelEnum .warning ,
196197 )
@@ -199,7 +200,7 @@ class BaseSubPermAction(BaseSubAction):
199200 class schema (BaseModel ):
200201 permissions : str = Field (
201202 "" ,
202- title = "权限列表" ,
203+ title = _ ( "Permission list" ), # 权限列表
203204 amis_form_item = amis .InputTree (
204205 multiple = True ,
205206 source = "" ,
@@ -236,7 +237,7 @@ class ViewSubPagePermAction(BaseSubPermAction):
236237 action = ActionType .Dialog (
237238 name = "view_subject_page_permissions" ,
238239 icon = "fa fa-check" ,
239- tooltip = "查看页面权限" ,
240+ tooltip = _ ( "View page permissions" ), # 查看页面权限
240241 dialog = amis .Dialog (actions = []),
241242 level = LevelEnum .warning ,
242243 )
@@ -254,13 +255,13 @@ async def get_init_data(self, request: Request, **kwargs) -> BaseApiOut[Any]:
254255 return BaseApiOut (data = self .schema ())
255256 subject = await self .get_subject_by_id (item_id )
256257 if not subject :
257- return BaseApiOut (status = 0 , msg = "暂不支持的模型" )
258+ return BaseApiOut (status = 0 , msg = _ ( "Models not supported yet" )) # 暂不支持的模型
258259 permissions = await get_subject_page_permissions (self .site .auth .enforcer , subject = subject , implicit = self ._implicit )
259260 permissions = [perm .replace ("#allow" , "" ) for perm in permissions if perm .endswith ("#allow" )]
260261 return BaseApiOut (data = self .schema (permissions = "," .join (permissions )))
261262
262263 async def handle (self , request : Request , item_id : List [str ], data : BaseModel , ** kwargs ):
263- return BaseApiOut (status = 1 , msg = " 请通过的【设置权限】更新设置!" )
264+ return BaseApiOut (status = 1 , msg = _ ( "Please update settings through [Setting Permissions]!" )) # 请通过的【设置权限】更新设置!
264265
265266
266267class UpdateSubDataPermAction (BaseSubPermAction ):
@@ -271,18 +272,18 @@ class UpdateSubDataPermAction(BaseSubPermAction):
271272 action = ActionType .Dialog (
272273 name = "update_subject_data_permissions" ,
273274 icon = "fa fa-gavel" ,
274- tooltip = "更新数据权限" ,
275- dialog = amis .Dialog (actions = [amis .Action (actionType = "submit" , label = "保存" , close = False , primary = True )]),
275+ tooltip = _ ( "Update data permissions" ), # 更新数据权限
276+ dialog = amis .Dialog (actions = [amis .Action (actionType = "submit" , label = _ ( "Save" ) , close = False , primary = True )]), # 保存
276277 level = LevelEnum .warning ,
277278 )
278279
279280 # 创建动作表单数据模型
280281 class schema (BaseSubPermAction .schema ):
281282 effect_matrix : list = Field (
282283 [],
283- title = "当前权限" ,
284+ title = _ ( "Current permissions" ), # 当前权限
284285 amis_form_item = amis .MatrixCheckboxes (
285- rowLabel = "权限名称" ,
286+ rowLabel = _ ( "Permission name" ), # 权限名称
286287 multiple = False ,
287288 singleSelectMode = "row" ,
288289 source = "" ,
@@ -291,9 +292,9 @@ class schema(BaseSubPermAction.schema):
291292 )
292293 policy_matrix : list = Field (
293294 [],
294- title = "权限配置" ,
295+ title = _ ( "Rights Profile" ), # 权限配置
295296 amis_form_item = amis .MatrixCheckboxes (
296- rowLabel = "名称" ,
297+ rowLabel = _ ( "Name" ), # 名称
297298 multiple = False ,
298299 singleSelectMode = "row" ,
299300 yCheckAll = True ,
@@ -333,15 +334,15 @@ async def get_admin_action_perm_options(
333334 ):
334335 columns = [
335336 {
336- "label" : "默认" ,
337+ "label" : _ ( "default" ), # 默认
337338 "col" : "default" ,
338339 },
339340 {
340- "label" : "是" ,
341+ "label" : _ ( "allow" ), # 是
341342 "col" : "allow" ,
342343 },
343344 {
344- "label" : "否" ,
345+ "label" : _ ( "deny" ), # 否
345346 "col" : "deny" ,
346347 },
347348 ]
@@ -355,7 +356,7 @@ async def get_admin_action_perm_options(
355356 )
356357 if not permission :
357358 return out
358- unique_id , action , * _ = permission_decode (permission )
359+ unique_id , action , * a = permission_decode (permission )
359360 admin , parent = self .site .get_page_schema_child (unique_id )
360361 if not admin :
361362 return out
@@ -392,7 +393,7 @@ async def handle(self, request: Request, item_id: List[str], data: BaseModel, **
392393 subject = await self .get_subject_by_id (item_id [0 ])
393394 identity = await self .site .auth .get_current_user_identity (request ) or SystemUserEnum .GUEST
394395 if subject == "u:" + identity :
395- return BaseApiOut (status = 0 , msg = "不能修改自己的权限" )
396+ return BaseApiOut (status = 0 , msg = _ ( "Cannot modify own permissions" )) # 不能修改自己的权限
396397 msg = await update_subject_data_permissions (
397398 self .site .auth .enforcer ,
398399 subject = subject ,
@@ -410,7 +411,7 @@ class UpdateSubPagePermsAction(ViewSubPagePermAction):
410411 action = ActionType .Dialog (
411412 name = "update_subject_page_permissions" ,
412413 icon = "fa fa-gavel" ,
413- tooltip = "更新页面权限" ,
414+ tooltip = _ ( "Update page permissions" ), # 更新页面权限
414415 dialog = amis .Dialog (),
415416 level = LevelEnum .warning ,
416417 )
@@ -419,10 +420,10 @@ async def handle(self, request: Request, item_id: List[str], data: BaseModel, **
419420 """更新角色Casbin权限"""
420421 subject = await self .get_subject_by_id (item_id [0 ])
421422 if not subject :
422- return BaseApiOut (status = 0 , msg = "暂不支持的模型" )
423+ return BaseApiOut (status = 0 , msg = _ ( "Models not supported yet" )) # 暂不支持的模型
423424 identity = await self .site .auth .get_current_user_identity (request ) or SystemUserEnum .GUEST
424425 if subject == "u:" + identity :
425- return BaseApiOut (status = 0 , msg = "不能修改自己的权限" )
426+ return BaseApiOut (status = 0 , msg = _ ( "Cannot modify own permissions" )) # 不能修改自己的权限
426427 # 权限列表
427428 permissions = [perm for perm in data .permissions .split ("," ) if perm and perm .endswith ("#page" )] # 分割权限列表,去除空值
428429 enforcer : AsyncEnforcer = self .site .auth .enforcer
@@ -439,20 +440,20 @@ class CopyUserAuthLinkAction(ModelAction):
439440 action = amis .ActionType .Dialog (
440441 name = "copy_user_auth_link" ,
441442 icon = "fa fa-link" ,
442- tooltip = "用户免登录链接" ,
443+ tooltip = _ ( "User login-free link" ), # 用户免登录链接
443444 level = amis .LevelEnum .danger ,
444445 dialog = amis .Dialog (
445446 size = amis .SizeEnum .md ,
446- title = "用户免登录链接" ,
447+ title = _ ( "User login-free link" ), # 用户免登录链接
447448 ),
448449 )
449450 form_init = True
450451 form = amis .Form (static = True , disabled = True ) # type: ignore # 禁用表单
451452
452453 class schema (UsernameMixin , PkMixin ):
453454 auth_url : str = Field (
454- title = "授权链接" ,
455- description = "复制链接到浏览器打开即可免登录" ,
455+ title = _ ( "Authorization link" ), # 授权链接
456+ description = _ ( "Copy the link to your browser and open it without logging in" ), # 复制链接到浏览器打开即可免登录
456457 amis_form_item = amis .Static (
457458 copyable = True ,
458459 ),
@@ -470,7 +471,7 @@ async def get_init_data(self, request: Request, **kwargs) -> BaseApiOut[Any]:
470471 }
471472 token = await auth .backend .token_store .write_token (token_data )
472473 return BaseApiOut (
473- msg = "操作成功" ,
474+ msg = _ ( "Successful operation" ), # 操作成功
474475 data = {** token_data , "auth_url" : f"{ str (request .base_url )[:- 1 ]} { self .site .router_path } /login_by_token?token={ token } " },
475476 )
476477
0 commit comments