Skip to content

Commit 5248ae2

Browse files
author
Anya Parry
committed
Merge branch 'main' into 'dev-local'
fix: simplify S3 client configuration by removing redundant checksum settings (langgenius#15474) See merge request weihe/dify!6
2 parents a4e26cc + b541792 commit 5248ae2

File tree

36 files changed

+281
-223
lines changed

36 files changed

+281
-223
lines changed

.github/ISSUE_TEMPLATE/tracker.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name: "👾 Tracker"
22
description: For inner usages, please donot use this template.
33
title: "[Tracker] "
4-
labels:
4+
labels:
55
- tracker
66
body:
77
- type: textarea

api/configs/packaging/__init__.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ class PackagingInfo(BaseSettings):
99

1010
CURRENT_VERSION: str = Field(
1111
description="Dify version",
12-
default="1.0.0",
12+
default="1.0.1",
1313
)
1414

1515
COMMIT_SHA: str = Field(

api/controllers/console/datasets/data_source.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ def get(self):
122122
if dataset.data_source_type != "notion_import":
123123
raise ValueError("Dataset is not notion type.")
124124

125-
documents = session.execute(
125+
documents = session.scalars(
126126
select(Document).filter_by(
127127
dataset_id=dataset_id,
128128
tenant_id=current_user.current_tenant_id,

api/controllers/console/workspace/workspace.py

+6
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
from libs.login import login_required
2727
from models.account import Tenant, TenantStatus
2828
from services.account_service import TenantService
29+
from services.feature_service import FeatureService
2930
from services.file_service import FileService
3031
from services.workspace_service import WorkspaceService
3132

@@ -68,6 +69,11 @@ def get(self):
6869
tenants = TenantService.get_join_tenants(current_user)
6970

7071
for tenant in tenants:
72+
features = FeatureService.get_features(tenant.id)
73+
if features.billing.enabled:
74+
tenant.plan = features.billing.subscription.plan
75+
else:
76+
tenant.plan = "sandbox"
7177
if tenant.id == current_user.current_tenant_id:
7278
tenant.current = True # Set current=True for current tenant
7379
return {"workspaces": marshal(tenants, tenants_fields)}, 200

api/core/entities/provider_configuration.py

+107-93
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
from typing import Optional
88

99
from pydantic import BaseModel, ConfigDict, Field
10-
from sqlalchemy import or_
1110

1211
from constants import HIDDEN_VALUE
1312
from core.entities.model_entities import ModelStatus, ModelWithProviderEntity, SimpleModelProviderEntity
@@ -180,37 +179,35 @@ def get_custom_credentials(self, obfuscated: bool = False) -> dict | None:
180179
else [],
181180
)
182181

183-
def custom_credentials_validate(self, credentials: dict) -> tuple[Provider | None, dict]:
182+
def _get_custom_provider_credentials(self) -> Provider | None:
184183
"""
185-
Validate custom credentials.
186-
:param credentials: provider credentials
187-
:return:
184+
Get custom provider credentials.
188185
"""
189186
# get provider
190187
model_provider_id = ModelProviderID(self.provider.provider)
188+
provider_names = [self.provider.provider]
191189
if model_provider_id.is_langgenius():
192-
provider_record = (
193-
db.session.query(Provider)
194-
.filter(
195-
Provider.tenant_id == self.tenant_id,
196-
Provider.provider_type == ProviderType.CUSTOM.value,
197-
or_(
198-
Provider.provider_name == model_provider_id.provider_name,
199-
Provider.provider_name == self.provider.provider,
200-
),
201-
)
202-
.first()
203-
)
204-
else:
205-
provider_record = (
206-
db.session.query(Provider)
207-
.filter(
208-
Provider.tenant_id == self.tenant_id,
209-
Provider.provider_type == ProviderType.CUSTOM.value,
210-
Provider.provider_name == self.provider.provider,
211-
)
212-
.first()
190+
provider_names.append(model_provider_id.provider_name)
191+
192+
provider_record = (
193+
db.session.query(Provider)
194+
.filter(
195+
Provider.tenant_id == self.tenant_id,
196+
Provider.provider_type == ProviderType.CUSTOM.value,
197+
Provider.provider_name.in_(provider_names),
213198
)
199+
.first()
200+
)
201+
202+
return provider_record
203+
204+
def custom_credentials_validate(self, credentials: dict) -> tuple[Provider | None, dict]:
205+
"""
206+
Validate custom credentials.
207+
:param credentials: provider credentials
208+
:return:
209+
"""
210+
provider_record = self._get_custom_provider_credentials()
214211

215212
# Get provider credential secret variables
216213
provider_credential_secret_variables = self.extract_secret_variables(
@@ -291,18 +288,7 @@ def delete_custom_credentials(self) -> None:
291288
:return:
292289
"""
293290
# get provider
294-
provider_record = (
295-
db.session.query(Provider)
296-
.filter(
297-
Provider.tenant_id == self.tenant_id,
298-
or_(
299-
Provider.provider_name == ModelProviderID(self.provider.provider).plugin_name,
300-
Provider.provider_name == self.provider.provider,
301-
),
302-
Provider.provider_type == ProviderType.CUSTOM.value,
303-
)
304-
.first()
305-
)
291+
provider_record = self._get_custom_provider_credentials()
306292

307293
# delete provider
308294
if provider_record:
@@ -349,29 +335,47 @@ def get_custom_model_credentials(
349335

350336
return None
351337

352-
def custom_model_credentials_validate(
353-
self, model_type: ModelType, model: str, credentials: dict
354-
) -> tuple[ProviderModel | None, dict]:
338+
def _get_custom_model_credentials(
339+
self,
340+
model_type: ModelType,
341+
model: str,
342+
) -> ProviderModel | None:
355343
"""
356-
Validate custom model credentials.
357-
358-
:param model_type: model type
359-
:param model: model name
360-
:param credentials: model credentials
361-
:return:
344+
Get custom model credentials.
362345
"""
363346
# get provider model
347+
model_provider_id = ModelProviderID(self.provider.provider)
348+
provider_names = [self.provider.provider]
349+
if model_provider_id.is_langgenius():
350+
provider_names.append(model_provider_id.provider_name)
351+
364352
provider_model_record = (
365353
db.session.query(ProviderModel)
366354
.filter(
367355
ProviderModel.tenant_id == self.tenant_id,
368-
ProviderModel.provider_name == self.provider.provider,
356+
ProviderModel.provider_name.in_(provider_names),
369357
ProviderModel.model_name == model,
370358
ProviderModel.model_type == model_type.to_origin_model_type(),
371359
)
372360
.first()
373361
)
374362

363+
return provider_model_record
364+
365+
def custom_model_credentials_validate(
366+
self, model_type: ModelType, model: str, credentials: dict
367+
) -> tuple[ProviderModel | None, dict]:
368+
"""
369+
Validate custom model credentials.
370+
371+
:param model_type: model type
372+
:param model: model name
373+
:param credentials: model credentials
374+
:return:
375+
"""
376+
# get provider model
377+
provider_model_record = self._get_custom_model_credentials(model_type, model)
378+
375379
# Get provider credential secret variables
376380
provider_credential_secret_variables = self.extract_secret_variables(
377381
self.provider.model_credential_schema.credential_form_schemas
@@ -451,16 +455,7 @@ def delete_custom_model_credentials(self, model_type: ModelType, model: str) ->
451455
:return:
452456
"""
453457
# get provider model
454-
provider_model_record = (
455-
db.session.query(ProviderModel)
456-
.filter(
457-
ProviderModel.tenant_id == self.tenant_id,
458-
ProviderModel.provider_name == self.provider.provider,
459-
ProviderModel.model_name == model,
460-
ProviderModel.model_type == model_type.to_origin_model_type(),
461-
)
462-
.first()
463-
)
458+
provider_model_record = self._get_custom_model_credentials(model_type, model)
464459

465460
# delete provider model
466461
if provider_model_record:
@@ -475,24 +470,35 @@ def delete_custom_model_credentials(self, model_type: ModelType, model: str) ->
475470

476471
provider_model_credentials_cache.delete()
477472

478-
def enable_model(self, model_type: ModelType, model: str) -> ProviderModelSetting:
473+
def _get_provider_model_setting(self, model_type: ModelType, model: str) -> ProviderModelSetting | None:
479474
"""
480-
Enable model.
481-
:param model_type: model type
482-
:param model: model name
483-
:return:
475+
Get provider model setting.
484476
"""
485-
model_setting = (
477+
model_provider_id = ModelProviderID(self.provider.provider)
478+
provider_names = [self.provider.provider]
479+
if model_provider_id.is_langgenius():
480+
provider_names.append(model_provider_id.provider_name)
481+
482+
return (
486483
db.session.query(ProviderModelSetting)
487484
.filter(
488485
ProviderModelSetting.tenant_id == self.tenant_id,
489-
ProviderModelSetting.provider_name == self.provider.provider,
486+
ProviderModelSetting.provider_name.in_(provider_names),
490487
ProviderModelSetting.model_type == model_type.to_origin_model_type(),
491488
ProviderModelSetting.model_name == model,
492489
)
493490
.first()
494491
)
495492

493+
def enable_model(self, model_type: ModelType, model: str) -> ProviderModelSetting:
494+
"""
495+
Enable model.
496+
:param model_type: model type
497+
:param model: model name
498+
:return:
499+
"""
500+
model_setting = self._get_provider_model_setting(model_type, model)
501+
496502
if model_setting:
497503
model_setting.enabled = True
498504
model_setting.updated_at = datetime.datetime.now(datetime.UTC).replace(tzinfo=None)
@@ -516,16 +522,7 @@ def disable_model(self, model_type: ModelType, model: str) -> ProviderModelSetti
516522
:param model: model name
517523
:return:
518524
"""
519-
model_setting = (
520-
db.session.query(ProviderModelSetting)
521-
.filter(
522-
ProviderModelSetting.tenant_id == self.tenant_id,
523-
ProviderModelSetting.provider_name == self.provider.provider,
524-
ProviderModelSetting.model_type == model_type.to_origin_model_type(),
525-
ProviderModelSetting.model_name == model,
526-
)
527-
.first()
528-
)
525+
model_setting = self._get_provider_model_setting(model_type, model)
529526

530527
if model_setting:
531528
model_setting.enabled = False
@@ -550,13 +547,24 @@ def get_provider_model_setting(self, model_type: ModelType, model: str) -> Optio
550547
:param model: model name
551548
:return:
552549
"""
550+
return self._get_provider_model_setting(model_type, model)
551+
552+
def _get_load_balancing_config(self, model_type: ModelType, model: str) -> Optional[LoadBalancingModelConfig]:
553+
"""
554+
Get load balancing config.
555+
"""
556+
model_provider_id = ModelProviderID(self.provider.provider)
557+
provider_names = [self.provider.provider]
558+
if model_provider_id.is_langgenius():
559+
provider_names.append(model_provider_id.provider_name)
560+
553561
return (
554-
db.session.query(ProviderModelSetting)
562+
db.session.query(LoadBalancingModelConfig)
555563
.filter(
556-
ProviderModelSetting.tenant_id == self.tenant_id,
557-
ProviderModelSetting.provider_name == self.provider.provider,
558-
ProviderModelSetting.model_type == model_type.to_origin_model_type(),
559-
ProviderModelSetting.model_name == model,
564+
LoadBalancingModelConfig.tenant_id == self.tenant_id,
565+
LoadBalancingModelConfig.provider_name.in_(provider_names),
566+
LoadBalancingModelConfig.model_type == model_type.to_origin_model_type(),
567+
LoadBalancingModelConfig.model_name == model,
560568
)
561569
.first()
562570
)
@@ -568,11 +576,16 @@ def enable_model_load_balancing(self, model_type: ModelType, model: str) -> Prov
568576
:param model: model name
569577
:return:
570578
"""
579+
model_provider_id = ModelProviderID(self.provider.provider)
580+
provider_names = [self.provider.provider]
581+
if model_provider_id.is_langgenius():
582+
provider_names.append(model_provider_id.provider_name)
583+
571584
load_balancing_config_count = (
572585
db.session.query(LoadBalancingModelConfig)
573586
.filter(
574587
LoadBalancingModelConfig.tenant_id == self.tenant_id,
575-
LoadBalancingModelConfig.provider_name == self.provider.provider,
588+
LoadBalancingModelConfig.provider_name.in_(provider_names),
576589
LoadBalancingModelConfig.model_type == model_type.to_origin_model_type(),
577590
LoadBalancingModelConfig.model_name == model,
578591
)
@@ -582,16 +595,7 @@ def enable_model_load_balancing(self, model_type: ModelType, model: str) -> Prov
582595
if load_balancing_config_count <= 1:
583596
raise ValueError("Model load balancing configuration must be more than 1.")
584597

585-
model_setting = (
586-
db.session.query(ProviderModelSetting)
587-
.filter(
588-
ProviderModelSetting.tenant_id == self.tenant_id,
589-
ProviderModelSetting.provider_name == self.provider.provider,
590-
ProviderModelSetting.model_type == model_type.to_origin_model_type(),
591-
ProviderModelSetting.model_name == model,
592-
)
593-
.first()
594-
)
598+
model_setting = self._get_provider_model_setting(model_type, model)
595599

596600
if model_setting:
597601
model_setting.load_balancing_enabled = True
@@ -616,11 +620,16 @@ def disable_model_load_balancing(self, model_type: ModelType, model: str) -> Pro
616620
:param model: model name
617621
:return:
618622
"""
623+
model_provider_id = ModelProviderID(self.provider.provider)
624+
provider_names = [self.provider.provider]
625+
if model_provider_id.is_langgenius():
626+
provider_names.append(model_provider_id.provider_name)
627+
619628
model_setting = (
620629
db.session.query(ProviderModelSetting)
621630
.filter(
622631
ProviderModelSetting.tenant_id == self.tenant_id,
623-
ProviderModelSetting.provider_name == self.provider.provider,
632+
ProviderModelSetting.provider_name.in_(provider_names),
624633
ProviderModelSetting.model_type == model_type.to_origin_model_type(),
625634
ProviderModelSetting.model_name == model,
626635
)
@@ -677,11 +686,16 @@ def switch_preferred_provider_type(self, provider_type: ProviderType) -> None:
677686
return
678687

679688
# get preferred provider
689+
model_provider_id = ModelProviderID(self.provider.provider)
690+
provider_names = [self.provider.provider]
691+
if model_provider_id.is_langgenius():
692+
provider_names.append(model_provider_id.provider_name)
693+
680694
preferred_model_provider = (
681695
db.session.query(TenantPreferredModelProvider)
682696
.filter(
683697
TenantPreferredModelProvider.tenant_id == self.tenant_id,
684-
TenantPreferredModelProvider.provider_name == self.provider.provider,
698+
TenantPreferredModelProvider.provider_name.in_(provider_names),
685699
)
686700
.first()
687701
)

0 commit comments

Comments
 (0)