Skip to content

Commit 06f834b

Browse files
committed
feat: user manage
1 parent 5481b8a commit 06f834b

File tree

10 files changed

+455
-71
lines changed

10 files changed

+455
-71
lines changed

apps/common/constants/permission_constants.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ class PermissionConstants(Enum):
154154
USER_READ = Permission(group=Group.USER, operate=Operate.READ, role_list=[RoleConstants.ADMIN,
155155
RoleConstants.USER])
156156
USER_CREATE = Permission(group=Group.USER, operate=Operate.CREATE,
157-
role_list=[RoleConstants.ADMIN, RoleConstants.USER])
157+
role_list=[RoleConstants.ADMIN])
158158
USER_EDIT = Permission(group=Group.USER, operate=Operate.EDIT, role_list=[RoleConstants.ADMIN])
159159
USER_DELETE = Permission(group=Group.USER, operate=Operate.DELETE, role_list=[RoleConstants.ADMIN])
160160

apps/models_provider/urls.py

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,14 @@
44

55
app_name = "models_provider"
66
urlpatterns = [
7-
path('provider', views.Provide.as_view(), name='provide'),
8-
path('provider/model_type_list', views.Provide.ModelTypeList.as_view(), name="provider/model_type_list"),
9-
path('provider/model_list', views.Provide.ModelList.as_view(), name="provider/model_name_list"),
10-
path('provider/model_params_form', views.Provide.ModelParamsForm.as_view(),
11-
name="provider/model_params_form"),
12-
path('provider/model_form', views.Provide.ModelForm.as_view(),
13-
name="provider/model_form"),
14-
path('workspace/<str:workspace_id>/model', views.Model.as_view(), name='model'),
15-
path('workspace/<str:workspace_id>/model/<str:model_id>/model_params_form', views.Model.ModelParamsForm.as_view(),
16-
name='model/model_params_form'),
17-
path('workspace/<str:workspace_id>/model/<str:model_id>', views.Model.Operate.as_view(), name='model/operate'),
18-
path('workspace/<str:workspace_id>/model/<str:model_id>/pause_download', views.Model.PauseDownload.as_view(),
19-
name='model/operate'),
20-
path('workspace/<str:workspace_id>/model/<str:model_id>/meta', views.Model.ModelMeta.as_view(),
21-
name='model/operate/meta'),
7+
path('provider', views.Provide.as_view()),
8+
path('provider/model_type_list', views.Provide.ModelTypeList.as_view()),
9+
path('provider/model_list', views.Provide.ModelList.as_view()),
10+
path('provider/model_params_form', views.Provide.ModelParamsForm.as_view()),
11+
path('provider/model_form', views.Provide.ModelForm.as_view()),
12+
path('workspace/<str:workspace_id>/model', views.Model.as_view()),
13+
path('workspace/<str:workspace_id>/model/<str:model_id>/model_params_form', views.Model.ModelParamsForm.as_view()),
14+
path('workspace/<str:workspace_id>/model/<str:model_id>', views.Model.Operate.as_view()),
15+
path('workspace/<str:workspace_id>/model/<str:model_id>/pause_download', views.Model.PauseDownload.as_view()),
16+
path('workspace/<str:workspace_id>/model/<str:model_id>/meta', views.Model.ModelMeta.as_view()),
2217
]

apps/models_provider/views/model.py

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
from common.auth import TokenAuth
1515
from common.auth.authentication import has_permissions
1616
from common.constants.permission_constants import PermissionConstants
17-
from common.result import result, DefaultResultSerializer
17+
from common.result import result
1818
from common.utils.common import query_params_to_single_dict
1919
from models_provider.api.model import ModelCreateAPI, GetModelApi, ModelEditApi, ModelListResponse, DefaultModelResponse
2020
from models_provider.api.provide import ProvideApi
@@ -25,6 +25,7 @@ class Model(APIView):
2525
authentication_classes = [TokenAuth]
2626

2727
@extend_schema(methods=['POST'],
28+
summary=_("Create model"),
2829
description=_("Create model"),
2930
operation_id=_("Create model"),
3031
tags=[_("Model")],
@@ -38,7 +39,7 @@ def post(self, request: Request, workspace_id: str):
3839
with_valid=True))
3940

4041
# @extend_schema(methods=['PUT'],
41-
# description=_('Update model'),
42+
# summary=_('Update model'),
4243
# operation_id=_('Update model'),
4344
# request=ModelEditApi.get_request(),
4445
# responses=ModelCreateApi.get_response(),
@@ -50,6 +51,7 @@ def post(self, request: Request, workspace_id: str):
5051
# with_valid=True))
5152

5253
@extend_schema(methods=['GET'],
54+
summary=_('Query model list'),
5355
description=_('Query model list'),
5456
operation_id=_('Query model list'),
5557
parameters=ModelCreateAPI.get_query_params_api(),
@@ -66,6 +68,7 @@ class Operate(APIView):
6668
authentication_classes = [TokenAuth]
6769

6870
@extend_schema(methods=['PUT'],
71+
summary=_('Update model'),
6972
description=_('Update model'),
7073
operation_id=_('Update model'),
7174
request=ModelEditApi.get_request(),
@@ -79,6 +82,7 @@ def put(self, request: Request, workspace_id, model_id: str):
7982
str(request.user.id)))
8083

8184
@extend_schema(methods=['DELETE'],
85+
summary=_('Delete model'),
8286
description=_('Delete model'),
8387
operation_id=_('Delete model'),
8488
parameters=GetModelApi.get_query_params_api(),
@@ -90,6 +94,7 @@ def delete(self, request: Request, workspace_id: str, model_id: str):
9094
ModelSerializer.Operate(data={'id': model_id, 'user_id': request.user.id}).delete())
9195

9296
@extend_schema(methods=['GET'],
97+
summary=_('Query model details'),
9398
description=_('Query model details'),
9499
operation_id=_('Query model details'),
95100
parameters=GetModelApi.get_query_params_api(),
@@ -104,6 +109,7 @@ class ModelParamsForm(APIView):
104109
authentication_classes = [TokenAuth]
105110

106111
@extend_schema(methods=['GET'],
112+
summary=_('Get model parameter form'),
107113
description=_('Get model parameter form'),
108114
operation_id=_('Get model parameter form'),
109115
parameters=GetModelApi.get_query_params_api(),
@@ -115,6 +121,7 @@ def get(self, request: Request, workspace_id: str, model_id: str):
115121
ModelSerializer.ModelParams(data={'id': model_id}).get_model_params())
116122

117123
@extend_schema(methods=['PUT'],
124+
summary=_('Save model parameter form'),
118125
description=_('Save model parameter form'),
119126
operation_id=_('Save model parameter form'),
120127
parameters=GetModelApi.get_query_params_api(),
@@ -130,6 +137,8 @@ class ModelMeta(APIView):
130137
authentication_classes = [TokenAuth]
131138

132139
@extend_schema(methods=['GET'],
140+
summary=_(
141+
'Query model meta information, this interface does not carry authentication information'),
133142
description=_(
134143
'Query model meta information, this interface does not carry authentication information'),
135144
operation_id=_(
@@ -146,6 +155,7 @@ class PauseDownload(APIView):
146155
authentication_classes = [TokenAuth]
147156

148157
@extend_schema(methods=['PUT'],
158+
summary=_('Pause model download'),
149159
description=_('Pause model download'),
150160
operation_id=_('Pause model download'),
151161
parameters=GetModelApi.get_query_params_api(),

apps/models_provider/views/provide.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ class Provide(APIView):
1818
authentication_classes = [TokenAuth]
1919

2020
@extend_schema(methods=['GET'],
21+
summary=_('Get a list of model suppliers'),
2122
description=_('Get a list of model suppliers'),
2223
operation_id=_('Get a list of model suppliers'),
2324
responses=ProvideApi.get_response(),
@@ -40,6 +41,7 @@ class ModelTypeList(APIView):
4041
authentication_classes = [TokenAuth]
4142

4243
@extend_schema(methods=['GET'],
44+
summary=_('Get a list of model types'),
4345
description=_('Get a list of model types'),
4446
operation_id=_('Get a list of model types'),
4547
parameters=ProvideApi.ModelTypeList.get_query_params_api(),
@@ -54,6 +56,7 @@ class ModelList(APIView):
5456
authentication_classes = [TokenAuth]
5557

5658
@extend_schema(methods=['GET'],
59+
summary=_('Example of obtaining model list'),
5760
description=_('Example of obtaining model list'),
5861
operation_id=_('Example of obtaining model list'),
5962
parameters=ProvideApi.ModelList.get_query_params_api(),
@@ -72,6 +75,7 @@ class ModelParamsForm(APIView):
7275
authentication_classes = [TokenAuth]
7376

7477
@extend_schema(methods=['GET'],
78+
summary=_('Get model default parameters'),
7579
description=_('Get model default parameters'),
7680
operation_id=_('Get model default parameters'),
7781
parameters=ProvideApi.ModelParamsForm.get_query_params_api(),
@@ -89,6 +93,7 @@ class ModelForm(APIView):
8993
authentication_classes = [TokenAuth]
9094

9195
@extend_schema(methods=['GET'],
96+
summary=_('Get the model creation form'),
9297
description=_('Get the model creation form'),
9398
operation_id=_('Get the model creation form'),
9499
parameters=ProvideApi.ModelParamsForm.get_query_params_api(),

apps/users/api/user.py

Lines changed: 85 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,10 @@
1111

1212
from common.mixins.api_mixin import APIMixin
1313
from common.result import ResultSerializer
14-
from users.serializers.user import UserProfileResponse, CreateUserSerializer
14+
from users.serializers.user import UserProfileResponse, CreateUserSerializer, UserManageSerializer, \
15+
UserInstanceSerializer
16+
from django.utils.translation import gettext_lazy as _
17+
from rest_framework import serializers
1518

1619

1720
class ApiUserProfileResponse(ResultSerializer):
@@ -29,6 +32,87 @@ def get_response():
2932
def get_request():
3033
return CreateUserSerializer
3134

35+
@staticmethod
36+
def get_parameters():
37+
return [OpenApiParameter(
38+
name="user_id",
39+
description=_('User ID'),
40+
type=OpenApiTypes.STR,
41+
location=OpenApiParameter.PATH,
42+
required=True,
43+
)]
44+
45+
46+
class EditUserApi(APIMixin):
47+
@staticmethod
48+
def get_parameters():
49+
return [OpenApiParameter(
50+
name="user_id",
51+
description=_('User ID'),
52+
type=OpenApiTypes.STR,
53+
location=OpenApiParameter.PATH,
54+
required=True,
55+
)]
56+
57+
@staticmethod
58+
def get_request():
59+
return UserManageSerializer.UserEditInstance
60+
61+
62+
class DeleteUserApi(APIMixin):
63+
@staticmethod
64+
def get_parameters():
65+
return [OpenApiParameter(
66+
name="user_id",
67+
description=_('User ID'),
68+
type=OpenApiTypes.STR,
69+
location=OpenApiParameter.PATH,
70+
required=True,
71+
)]
72+
73+
74+
class ChangeUserPasswordApi(APIMixin):
75+
@staticmethod
76+
def get_request():
77+
return UserManageSerializer.RePasswordInstance
78+
79+
80+
class UserListResponse(ResultSerializer):
81+
def get_data(self):
82+
return serializers.ListSerializer(child=UserInstanceSerializer())
83+
84+
85+
class UserPageApi(APIMixin):
86+
@staticmethod
87+
def get_parameters():
88+
return [OpenApiParameter(
89+
name="email_or_username",
90+
description=_('Email or Username'),
91+
type=OpenApiTypes.STR,
92+
location=OpenApiParameter.QUERY,
93+
required=False,
94+
)]
95+
96+
@staticmethod
97+
def get_response():
98+
return UserListResponse
99+
100+
101+
class UserListApi(APIMixin):
102+
@staticmethod
103+
def get_parameters():
104+
return [OpenApiParameter(
105+
name="workspace_id",
106+
description=_('Workspace ID'),
107+
type=OpenApiTypes.STR,
108+
location=OpenApiParameter.PATH,
109+
required=False,
110+
)]
111+
112+
@staticmethod
113+
def get_response():
114+
return UserListResponse
115+
32116

33117
class TestWorkspacePermissionUserApi(APIMixin):
34118
@staticmethod

apps/users/migrations/0001_initial.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,15 @@
55

66
from common.constants.permission_constants import RoleConstants
77
from common.utils.common import password_encrypt
8+
from maxkb.const import CONFIG
89

10+
default_password = CONFIG.get('default_password', 'MaxKB@123..')
911

1012
def insert_default_data(apps, schema_editor):
1113
UserModel = apps.get_model('users', 'User')
1214
UserModel.objects.create(id='f0dd8f71-e4ee-11ee-8c84-a8a1595801ab', email='', username='admin',
1315
nick_name="系统管理员",
14-
password=password_encrypt('MaxKB@123..'),
16+
password=password_encrypt(default_password),
1517
role=RoleConstants.ADMIN.name,
1618
is_active=True)
1719

0 commit comments

Comments
 (0)