mirror of
https://github.com/langgenius/dify.git
synced 2026-04-28 20:17:29 +08:00
fix: get app model without check tenant in trial
This commit is contained in:
parent
7a6bf12453
commit
2096aa61e8
@ -21,6 +21,14 @@ def _load_app_model(app_id: str) -> App | None:
|
|||||||
)
|
)
|
||||||
return app_model
|
return app_model
|
||||||
|
|
||||||
|
def _load_app_model_with_trial(app_id: str) -> App | None:
|
||||||
|
assert isinstance(current_user, Account)
|
||||||
|
app_model = (
|
||||||
|
db.session.query(App)
|
||||||
|
.where(App.id == app_id, App.status == "normal")
|
||||||
|
.first()
|
||||||
|
)
|
||||||
|
return app_model
|
||||||
|
|
||||||
def get_app_model(view: Callable[P, R] | None = None, *, mode: Union[AppMode, list[AppMode], None] = None):
|
def get_app_model(view: Callable[P, R] | None = None, *, mode: Union[AppMode, list[AppMode], None] = None):
|
||||||
def decorator(view_func: Callable[P, R]):
|
def decorator(view_func: Callable[P, R]):
|
||||||
@ -61,3 +69,44 @@ def get_app_model(view: Callable[P, R] | None = None, *, mode: Union[AppMode, li
|
|||||||
return decorator
|
return decorator
|
||||||
else:
|
else:
|
||||||
return decorator(view)
|
return decorator(view)
|
||||||
|
|
||||||
|
|
||||||
|
def get_app_model_with_trial(view: Callable[P, R] | None = None, *, mode: Union[AppMode, list[AppMode], None] = None):
|
||||||
|
def decorator(view_func: Callable[P, R]):
|
||||||
|
@wraps(view_func)
|
||||||
|
def decorated_view(*args: P.args, **kwargs: P.kwargs):
|
||||||
|
if not kwargs.get("app_id"):
|
||||||
|
raise ValueError("missing app_id in path parameters")
|
||||||
|
|
||||||
|
app_id = kwargs.get("app_id")
|
||||||
|
app_id = str(app_id)
|
||||||
|
|
||||||
|
del kwargs["app_id"]
|
||||||
|
|
||||||
|
app_model = _load_app_model_with_trial(app_id)
|
||||||
|
|
||||||
|
if not app_model:
|
||||||
|
raise AppNotFoundError()
|
||||||
|
|
||||||
|
app_mode = AppMode.value_of(app_model.mode)
|
||||||
|
|
||||||
|
if mode is not None:
|
||||||
|
if isinstance(mode, list):
|
||||||
|
modes = mode
|
||||||
|
else:
|
||||||
|
modes = [mode]
|
||||||
|
|
||||||
|
if app_mode not in modes:
|
||||||
|
mode_values = {m.value for m in modes}
|
||||||
|
raise AppNotFoundError(f"App mode is not in the supported list: {mode_values}")
|
||||||
|
|
||||||
|
kwargs["app_model"] = app_model
|
||||||
|
|
||||||
|
return view_func(*args, **kwargs)
|
||||||
|
|
||||||
|
return decorated_view
|
||||||
|
|
||||||
|
if view is None:
|
||||||
|
return decorator
|
||||||
|
else:
|
||||||
|
return decorator(view)
|
||||||
@ -20,7 +20,7 @@ from controllers.console.app.error import (
|
|||||||
ProviderQuotaExceededError,
|
ProviderQuotaExceededError,
|
||||||
UnsupportedAudioTypeError,
|
UnsupportedAudioTypeError,
|
||||||
)
|
)
|
||||||
from controllers.console.app.wraps import get_app_model
|
from controllers.console.app.wraps import get_app_model_with_trial
|
||||||
from controllers.console.explore.error import (
|
from controllers.console.explore.error import (
|
||||||
AppSuggestedQuestionsAfterAnswerDisabledError,
|
AppSuggestedQuestionsAfterAnswerDisabledError,
|
||||||
NotChatAppError,
|
NotChatAppError,
|
||||||
@ -380,7 +380,7 @@ class TrialSitApi(Resource):
|
|||||||
"""Resource for trial app sites."""
|
"""Resource for trial app sites."""
|
||||||
|
|
||||||
@trial_feature_enable
|
@trial_feature_enable
|
||||||
@get_app_model
|
@get_app_model_with_trial
|
||||||
@service_api_ns.marshal_with(build_site_model(service_api_ns))
|
@service_api_ns.marshal_with(build_site_model(service_api_ns))
|
||||||
def get(self, app_model):
|
def get(self, app_model):
|
||||||
"""Retrieve app site info.
|
"""Retrieve app site info.
|
||||||
@ -403,7 +403,7 @@ class TrialAppParameterApi(Resource):
|
|||||||
"""Resource for app variables."""
|
"""Resource for app variables."""
|
||||||
|
|
||||||
@trial_feature_enable
|
@trial_feature_enable
|
||||||
@get_app_model
|
@get_app_model_with_trial
|
||||||
@marshal_with(fields.parameters_fields)
|
@marshal_with(fields.parameters_fields)
|
||||||
def get(self, app_model):
|
def get(self, app_model):
|
||||||
"""Retrieve app parameters."""
|
"""Retrieve app parameters."""
|
||||||
@ -432,7 +432,7 @@ class TrialAppParameterApi(Resource):
|
|||||||
|
|
||||||
class AppApi(Resource):
|
class AppApi(Resource):
|
||||||
@trial_feature_enable
|
@trial_feature_enable
|
||||||
@get_app_model
|
@get_app_model_with_trial
|
||||||
@marshal_with(app_detail_fields_with_site)
|
@marshal_with(app_detail_fields_with_site)
|
||||||
def get(self, app_model):
|
def get(self, app_model):
|
||||||
"""Get app detail"""
|
"""Get app detail"""
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user