Skip to content

Commit

Permalink
Merge pull request #1141 from longguikeji/release-2.5.2-beta
Browse files Browse the repository at this point in the history
Release 2.5.2 beta
  • Loading branch information
notevery committed Aug 9, 2022
2 parents c400eb1 + 8e3098b commit 54f6c1e
Show file tree
Hide file tree
Showing 53 changed files with 1,746 additions and 690 deletions.
10 changes: 8 additions & 2 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,16 @@ ARG DEBIANSRT=http://mirrors.aliyun.com/debian-security
ARG PIP=https://mirrors.aliyun.com/pypi/simple
WORKDIR /var/arkid

ENV PYTHONUSERBASE=/var/arkid/arkid_extensions PATH=$PATH:/var/arkid/arkid_extensions/bin

ADD . .
RUN sed -i "s@https://mirrors.aliyun.com/pypi/simple@$PIP@g" requirements.txt; \
cat requirements.txt; \
pip install --no-cache-dir -r requirements.txt; \
chmod +x docker-entrypoint.sh
pip install --disable-pip-version-check -r requirements.txt; \
chmod +x docker-entrypoint.sh; \
for i in `tree -f -i extension_root|grep requirements.txt`; \
do sed -i "s@https://mirrors.aliyun.com/pypi/simple@$PIP@g" $i; \
pip install --disable-pip-version-check -r $i; done ; \
mv pip.conf /etc/pip.conf
ENTRYPOINT ["/var/arkid/docker-entrypoint.sh"]
CMD ["tini", "--", "/usr/local/bin/python3.8", "manage.py", "runserver", "0.0.0.0:80"]
2 changes: 1 addition & 1 deletion api/v1/pages/developer_manage/api_docs.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,5 @@
router = FrontRouter(
path=tag,
name=name,
url='/api/v1/tenant/{tenant_}docs/redoc/'
url='/api/v1/tenant/{tenant_id}/docs/redoc/'
)
13 changes: 13 additions & 0 deletions api/v1/pages/permission_manage/grant_manage/group_grant.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,12 @@
page = pages.TreePage(tag=tag,name=name)
group_permission_page = pages.TablePage(name=_("该分组权限"))
update_group_permission_page = pages.TablePage(name=_("更新用户分组权限"),select=True)
show_group_permission_page = pages.TablePage(name=_("查看用户分组最终权限"))

pages.register_front_pages(page)
pages.register_front_pages(group_permission_page)
pages.register_front_pages(update_group_permission_page)
pages.register_front_pages(show_group_permission_page)

page.create_actions(
init_action=actions.DirectAction(
Expand Down Expand Up @@ -43,9 +45,20 @@
'open': actions.OpenAction(
name=("添加用户分组权限"),
page=update_group_permission_page
),
'show': actions.OpenAction(
name=("查看最终权限"),
page=show_group_permission_page
)
}
)
show_group_permission_page.create_actions(
init_action=actions.DirectAction(
path='/api/v1/tenant/{tenant_id}/user_group_last_permissions?usergroup_id={usergroup_id}',
method=actions.FrontActionMethod.GET,
),
)


update_group_permission_page.create_actions(
init_action=actions.DirectAction(
Expand Down
28 changes: 28 additions & 0 deletions api/v1/pages/permission_manage/grant_manage/user_grant.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,14 @@
page = pages.TreePage(tag=tag,name=name)
user_permission_page = pages.TablePage(name=_("该用户权限"))
update_user_permission_page = pages.TablePage(name=_("更新用户权限"),select=True)
show_user_permission_page = pages.TreePage(name=_("查看用户最终权限"))
user_app_permission_page = pages.TablePage(name=_("该用户的应用权限"))

pages.register_front_pages(page)
pages.register_front_pages(user_permission_page)
pages.register_front_pages(update_user_permission_page)
pages.register_front_pages(show_user_permission_page)
pages.register_front_pages(user_app_permission_page)

page.create_actions(
init_action=actions.DirectAction(
Expand Down Expand Up @@ -39,10 +43,34 @@
'open': actions.OpenAction(
name=("添加用户权限"),
page=update_user_permission_page
),
'show': actions.OpenAction(
name=("查看最终权限"),
page=show_user_permission_page
)
}
)

# 查看最终权限
show_user_permission_page.create_actions(
init_action=actions.DirectAction(
path='/api/v1/tenant/{tenant_id}/all_apps_in_arkid/',
method=actions.FrontActionMethod.GET,
),
node_actions=[
actions.CascadeAction(
page=user_app_permission_page
)
]
)
user_app_permission_page.create_actions(
init_action=actions.DirectAction(
path='/api/v1/tenant/{tenant_id}/user_app_last_permissions?user_id={user_id}&app_id={app_id}',
method=actions.FrontActionMethod.GET
),
)


update_user_permission_page.create_actions(
init_action=actions.DirectAction(
path='/api/v1/tenant/{tenant_id}/permissions',
Expand Down
20 changes: 20 additions & 0 deletions api/v1/pages/platform_admin/extension_admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
trial_page = pages.FormPage(name=_('Trial', '试用'))
bind_agent_page = pages.FormPage(name=_('Bind Agent', '绑定代理商'))
purchased_page = pages.CardsPage(name='已购买')
history_page = pages.TablePage(name='插件历史版本')
markdown_page = pages.FormPage(name=_("文档"))
profile_page = pages.FormPage(name='插件配置')
price_page = pages.CardsPage(name='选择价格')
Expand All @@ -29,6 +30,7 @@
pages.register_front_pages(trial_page)
pages.register_front_pages(bind_agent_page)
pages.register_front_pages(purchased_page)
pages.register_front_pages(history_page)
pages.register_front_pages(markdown_page)
pages.register_front_pages(profile_page)
pages.register_front_pages(price_page)
Expand Down Expand Up @@ -108,6 +110,10 @@
name='文档',
page=arkstore_markdown_page
),
"history": actions.OpenAction(
name='历史版本',
page=history_page
),
"install": actions.DirectAction(
name='安装',
path='/api/v1/tenant/{tenant_id}/arkstore/install/{uuid}/',
Expand All @@ -130,6 +136,20 @@
)
)

history_page.create_actions(
init_action=actions.DirectAction(
path='/api/v1/tenant/{tenant_id}/arkstore/extensions/{package}/history/',
method=actions.FrontActionMethod.GET,
),
local_actions={
"install": actions.DirectAction(
name='安装',
path='/api/v1/tenant/{tenant_id}/arkstore/install/{uuid}/',
method=actions.FrontActionMethod.POST,
),
}
)

order_page.add_pages([
price_page,
copies_page,
Expand Down
2 changes: 1 addition & 1 deletion api/v1/pages/tenant_manage/front_theme.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@

page.create_actions(
init_action=actions.DirectAction(
path='/api/v1/tenant/{tenant_id}/front_theme/',
path='/api/v1/tenant/{tenant_id}/front_theme_list/',
method=actions.FrontActionMethod.GET,
),
global_actions={
Expand Down
4 changes: 2 additions & 2 deletions api/v1/schema/approve_action.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#!/usr/bin/env python3

from typing import List
from typing import List, Optional
from pydantic import Field
from ninja import Schema, ModelSchema
from arkid.core.translation import gettext_default as _
Expand Down Expand Up @@ -64,7 +64,7 @@ class ApproveActionExtensionIn(Schema):

class ApproveActionSchema(Schema):
name: str = Field(title=_('Name', '名称'), default='')
description: str = Field(title=_('Description', '备注'), default='')
description: Optional[str] = Field(title=_('Description', '备注'), default='')
path: str = Field(
title=_('Path', '请求路径'),
type="string",
Expand Down
16 changes: 12 additions & 4 deletions api/v1/schema/mine.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,22 @@ class MineAppsOut(ResponseSchema):
data:Optional[List[MineAppItem]]


class ProfileTenantOut(Schema):

class ProfileSchemaOut(ModelSchema):
class Config:
model = User
model_fields = ['id', 'username', 'avatar']
id:UUID = Field(title='ID', hidden=True)

slug:str = Field(title='slug', hidden=True)

name:str = Field(title='name', hidden=True)

is_platform_tenant:bool = Field(title=_("是否是平台租户"),hidden=True,default=False,readonly=True)

class ProfileSchemaOut(Schema):

id:UUID = Field(title='ID', hidden=True)
username:str = Field(title='用户名',readonly=True)
avatar:Optional[str] = Field(title=_('头像'))
tenant:ProfileTenantOut = Field(title=_("租户"),hidden=True)


class ProfileSchemaIn(ModelSchema):
Expand Down
10 changes: 9 additions & 1 deletion api/v1/schema/platform_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,16 @@
class PlatformConfigIn(ModelSchema):
class Config:
model = Platform
model_fields = ['is_saas', 'is_need_rent']
model_fields = ['is_saas', 'is_need_rent', 'frontend_url']


class PlatformConfigOut(ResponseSchema):
data: PlatformConfigIn


class FrontendUrlSchema(Schema):
url:str = Field(title=_("ArkId访问地址"))


class FrontendUrlOut(ResponseSchema):
data: FrontendUrlSchema
28 changes: 21 additions & 7 deletions api/v1/views/app_protocol.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
from arkid.core.extension.app_protocol import AppProtocolExtension
from arkid.config import get_app_config


@api.get("/tenant/{tenant_id}/app_protocols/",response=List[AppProtocolListItemOut],tags=["应用协议"])
@operation(AppProtocolListOut, roles=[TENANT_ADMIN, PLATFORM_ADMIN])
@paginate(CustomPagination)
Expand All @@ -18,12 +17,27 @@ def get_app_protocols(request, tenant_id: str):
"""
rs = []
host = get_app_config().get_frontend_host()
# 拿到默认的系统插件
qs = Extension.valid_objects.all()
packages = []
for item in qs:
ext_dir = item.ext_dir
package = item.package
if 'extension_root' in ext_dir and package not in packages:
packages.append(package)
# 插件筛选
for k,v in AppProtocolExtension.composite_schema_map.items():
for p_k,p_v in v.items():
rs.append({
"name": k,
"doc_url": f"{host}/arkid/%20系统插件/{p_k.replace('.','_')}/",
"package": p_k
})

if p_k in packages:
rs.append({
"name": k,
"doc_url": f"{host}/docs/%20%20系统插件/{p_k.replace('.','_')}/",
"package": p_k
})
else:
rs.append({
"name": k,
"doc_url": f"{host}/docs/%20其它插件/{p_k.replace('.','_')}/",
"package": p_k
})
return rs
19 changes: 18 additions & 1 deletion api/v1/views/arkstore.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
# change_arkstore_agent,
# unbind_arkstore_agent,
get_arkstore_extension_markdown,
get_arkstore_extension_history_by_package,
)
from arkid.common.bind_saas import get_bind_info
from arkid.core.api import api, operation
Expand Down Expand Up @@ -497,10 +498,26 @@ class ExtensionMarkDownOut(ResponseSchema):

@api.get("/tenant/{tenant_id}/arkstore/extensions/{uuid}/markdown/", tags=['方舟商店'],
response=ExtensionMarkDownOut)
@operation(roles=[TENANT_ADMIN, PLATFORM_ADMIN])
@operation(roles=[NORMAL_USER, TENANT_ADMIN, PLATFORM_ADMIN])
def get_markdown_arkstore_extension(request, tenant_id: str, uuid: str):
token = request.user.auth_token
tenant = Tenant.objects.get(id=tenant_id)
access_token = get_arkstore_access_token(tenant, token)
resp = get_arkstore_extension_markdown(access_token, uuid)
return resp


class ArkstoreItemHisotryOut(Schema):
uuid: str = Field(hidden=True)
version: str = Field(readonly=True, title=_('Version', '版本'))


@api.get("/tenant/{tenant_id}/arkstore/extensions/{package}/history/", tags=['方舟商店'], response=List[ArkstoreItemHisotryOut])
@operation(List[ArkstoreItemHisotryOut], roles=[TENANT_ADMIN, PLATFORM_ADMIN])
@paginate(CustomPagination)
def get_arkstore_extension_history(request, tenant_id: str, package: str):
token = request.user.auth_token
tenant = Tenant.objects.get(id=tenant_id)
access_token = get_arkstore_access_token(tenant, token)
resp = get_arkstore_extension_history_by_package(access_token, package)
return resp['items']
15 changes: 12 additions & 3 deletions api/v1/views/extension.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,14 @@
from typing_extensions import Annotated
from pydantic import Field
from django.conf import settings
from arkid.core.constants import PLATFORM_ADMIN, TENANT_ADMIN
from arkid.core.constants import NORMAL_USER, PLATFORM_ADMIN, TENANT_ADMIN
from arkid.core.extension import Extension
from arkid.core.schema import ResponseSchema
from arkid.extension.utils import import_extension
from arkid.extension.models import TenantExtensionConfig, Extension as ExtensionModel
from arkid.core.error import ErrorCode, ErrorDict
from ninja.pagination import paginate
from oauth2_provider.models import Application
from arkid.core.pagenation import CustomPagination
from arkid.core.models import Tenant
from arkid.core.translation import gettext_default as _
Expand Down Expand Up @@ -140,8 +141,16 @@ def list_extensions(request, status: str = None):
if settings.IS_CENTRAL_ARKID:
return qs

token = request.user.auth_token
# 如果未绑定中心arkid, 直接返回
tenant = Tenant.platform_tenant()
bind = Application.objects.filter(
uuid = tenant.id,
name = 'arkid_saas',
).exists()
if not bind:
return qs

token = request.user.auth_token
access_token = get_arkstore_access_token(tenant, token)
# resp = get_arkstore_extensions_purchased(access_token)
resp = get_arkstore_list(request, True, 'extension', all=True)
Expand Down Expand Up @@ -205,7 +214,7 @@ class ExtensionMarkDownOut(ResponseSchema):
data:dict = Field(format='markdown',readonly=True)

@api.get("/extensions/{id}/markdown/",tags=['平台插件'], response=ExtensionMarkDownOut)
@operation(roles=[TENANT_ADMIN, PLATFORM_ADMIN])
@operation(roles=[NORMAL_USER, TENANT_ADMIN, PLATFORM_ADMIN])
def get_extension_markdown(request, id: str):
""" 获取平台插件的markdown文档"""

Expand Down
Loading

0 comments on commit 54f6c1e

Please sign in to comment.