diff --git a/apps/dataset/views/dataset.py b/apps/dataset/views/dataset.py index fc3f8a8a5..4bd9e1f74 100644 --- a/apps/dataset/views/dataset.py +++ b/apps/dataset/views/dataset.py @@ -235,7 +235,6 @@ class Dataset(APIView): dynamic_tag=keywords.get('dataset_id'))], compare=CompareConstants.AND)) def get(self, request: Request, dataset_id: str): - print(dataset_id) return result.success( ModelSerializer.Query( data={'user_id': request.user.id, 'model_type': 'LLM'}).list( diff --git a/apps/setting/serializers/provider_serializers.py b/apps/setting/serializers/provider_serializers.py index 0a7146809..5b926ec0b 100644 --- a/apps/setting/serializers/provider_serializers.py +++ b/apps/setting/serializers/provider_serializers.py @@ -75,12 +75,26 @@ class ModelSerializer(serializers.Serializer): provider = serializers.CharField(required=False, error_messages=ErrMessage.char("供应商")) + permission_type = serializers.CharField(required=False, error_messages=ErrMessage.char("权限")) + + create_user = serializers.CharField(required=False, error_messages=ErrMessage.char("创建者")) + + def list(self, with_valid): if with_valid: self.is_valid(raise_exception=True) user_id = self.data.get('user_id') name = self.data.get('name') - model_query_set = QuerySet(Model).filter((Q(user_id=user_id) | Q(permission_type='PUBLIC'))) + create_user = self.data.get('create_user') + if create_user is not None: + # 当前用户能查看自己的模型,包括公开和私有的 + if create_user == user_id: + model_query_set = QuerySet(Model).filter(Q(user_id=create_user)) + # 当前用户能查看其他人的模型,只能查看公开的 + else: + model_query_set = QuerySet(Model).filter((Q(user_id=self.data.get('create_user')) & Q(permission_type='PUBLIC'))) + else: + model_query_set = QuerySet(Model).filter((Q(user_id=user_id) | Q(permission_type='PUBLIC'))) query_params = {} if name is not None: query_params['name__contains'] = name @@ -90,6 +104,9 @@ class ModelSerializer(serializers.Serializer): query_params['model_name'] = self.data.get('model_name') if self.data.get('provider') is not None: query_params['provider'] = self.data.get('provider') + if self.data.get('permission_type') is not None: + query_params['permission_type'] = self.data.get('permission_type') + return [ {'id': str(model.id), 'provider': model.provider, 'name': model.name, 'model_type': model.model_type, diff --git a/ui/src/views/template/index.vue b/ui/src/views/template/index.vue index 54eb03700..a9217bb04 100644 --- a/ui/src/views/template/index.vue +++ b/ui/src/views/template/index.vue @@ -41,14 +41,42 @@

{{ active_provider?.name }}

添加模型 - +
+ + + + + + + + + + + + + + + + + + + + + +
@@ -114,7 +142,14 @@ const allObj = { const loading = ref(false) const active_provider = ref() -const model_search_form = ref<{ name: string }>({ name: '' }) +const search_type = ref('name') +const model_search_form = ref<{ name: string, create_user: string, permission_type: string, model_type: string }>({ + name: '', + create_user: '', + permission_type: '', + model_type: '' +}) +const user_options = ref([]) const list_model_loading = ref(false) const provider_list = ref>([]) @@ -150,9 +185,20 @@ const list_model = () => { const params = active_provider.value?.provider ? { provider: active_provider.value.provider } : {} ModelApi.getModel({ ...model_search_form.value, ...params }, list_model_loading).then((ok) => { model_list.value = ok.data + const v = model_list.value.map((m) => ({ id: m.user_id, username: m.username })) + if (user_options.value.length === 0){ + user_options.value = Array.from( + new Map(v.map(item => [item.id, item])).values() + ) + } }) } +const search_type_change = () => { + model_search_form.value = { name: '', create_user: '', permission_type: '', model_type: '' } +} + + onMounted(() => { ModelApi.getProvider(loading).then((ok) => { active_provider.value = allObj @@ -173,6 +219,7 @@ onMounted(() => { .model-list-height { height: calc(var(--create-dataset-height) - 70px); } + .model-list-height-left { height: calc(var(--create-dataset-height)); }