feat: 提供根据应用查询模型列表接口

This commit is contained in:
shaohuzhang1 2024-03-05 17:03:45 +08:00
parent c01ddfdcef
commit 01c0f62b4a
3 changed files with 34 additions and 1 deletions

View File

@ -33,6 +33,7 @@ from dataset.serializers.common_serializers import list_paragraph
from setting.models import AuthOperate
from setting.models.model_management import Model
from setting.models_provider.constants.model_provider_constants import ModelProvideConstants
from setting.serializers.provider_serializers import ModelSerializer
from smartdoc.conf import PROJECT_DIR
from smartdoc.settings import JWT_AUTH
@ -329,6 +330,14 @@ class ApplicationSerializer(serializers.Serializer):
if not QuerySet(Application).filter(id=self.data.get('application_id')).exists():
raise AppApiException(500, '不存在的应用id')
def list_model(self, with_valid=True):
if with_valid:
self.is_valid()
application = QuerySet(Application).filter(id=self.data.get("application_id")).first()
return ModelSerializer.Query(
data={'user_id': application.user_id}).list(
with_valid=True)
def delete(self, with_valid=True):
if with_valid:
self.is_valid()
@ -366,7 +375,11 @@ class ApplicationSerializer(serializers.Serializer):
application = QuerySet(Application).get(id=application_id)
model = QuerySet(Model).get(id=instance.get('model_id') if 'model_id' in instance else application.model_id)
model = QuerySet(Model).filter(
id=instance.get('model_id') if 'model_id' in instance else application.model_id,
user_id=application.user_id).first()
if model is None:
raise AppApiException(500, "模型不存在")
update_keys = ['name', 'desc', 'model_id', 'multiple_rounds_dialogue', 'prologue', 'status',
'dataset_setting', 'model_setting', 'problem_optimization',

View File

@ -7,6 +7,7 @@ urlpatterns = [
path('application', views.Application.as_view(), name="application"),
path('application/profile', views.Application.Profile.as_view()),
path('application/authentication', views.Application.Authentication.as_view()),
path('application/<str:application_id>/model', views.Application.Model.as_view()),
path('application/<str:application_id>/hit_test', views.Application.HitTest.as_view()),
path('application/<str:application_id>/api_key', views.Application.ApplicationKey.as_view()),
path("application/<str:application_id>/api_key/<str:api_key_id>",

View File

@ -27,6 +27,25 @@ from dataset.serializers.dataset_serializers import DataSetSerializers
class Application(APIView):
authentication_classes = [TokenAuth]
class Model(APIView):
authentication_classes = [TokenAuth]
@action(methods=["GET"], detail=False)
@swagger_auto_schema(operation_summary="获取模型列表",
operation_id="获取模型列表",
tags=["应用"],
manual_parameters=ApplicationApi.ApiKey.get_request_params_api())
@has_permissions(ViewPermission(
[RoleConstants.ADMIN, RoleConstants.USER],
[lambda r, keywords: Permission(group=Group.APPLICATION, operate=Operate.USE,
dynamic_tag=keywords.get('application_id'))],
compare=CompareConstants.AND))
def get(self, request: Request, application_id: str):
return result.success(
ApplicationSerializer.Operate(
data={'application_id': application_id,
'user_id': request.user.id}).list_model())
class Profile(APIView):
authentication_classes = [TokenAuth]