This commit is contained in:
jyong
2025-05-26 14:49:59 +08:00
parent ec1c4efca9
commit 665ffbdc10
11 changed files with 143 additions and 94 deletions

View File

@ -8,6 +8,7 @@ from werkzeug.exceptions import Forbidden
from configs import dify_config
from controllers.console import api
from core.plugin.impl.datasource import PluginDatasourceManager
from libs.login import login_required
from libs.oauth_data_source import NotionOAuth
@ -109,7 +110,30 @@ class OAuthDataSourceSync(Resource):
return {"result": "success"}, 200
class DatasourcePluginOauthApi(Resource):
@setup_required
@login_required
@account_initialization_required
def get(self, datasource_type, datasource_name):
# Check user role first
if not current_user.is_editor:
raise Forbidden()
# get all builtin providers
manager = PluginDatasourceManager()
# Fix: use correct method name or implement the missing method
try:
providers = manager.get_providers() # or whatever the correct method is
# Filter by datasource_type and datasource_name if needed
oauth_config = {} # Build appropriate OAuth URL response
return oauth_config
except AttributeError:
# Method doesn't exist, return empty response or implement
return {"oauth_url": None, "supported": False}
api.add_resource(OAuthDataSource, "/oauth/data-source/<string:provider>")
api.add_resource(OAuthDataSourceCallback, "/oauth/data-source/callback/<string:provider>")
api.add_resource(OAuthDataSourceBinding, "/oauth/data-source/binding/<string:provider>")
api.add_resource(OAuthDataSourceSync, "/oauth/data-source/<string:provider>/<uuid:binding_id>/sync")
api.add_resource(DatasourcePluginOauthApi, "/oauth/plugin/datasource/<string:datasoruce_type>/<string:datasource_name>")

View File

@ -280,6 +280,8 @@ class PublishedRagPipelineRunApi(Resource):
parser.add_argument("inputs", type=dict, required=True, nullable=False, location="json")
parser.add_argument("datasource_type", type=str, required=True, location="json")
parser.add_argument("datasource_info", type=list, required=True, location="json")
parser.add_argument("start_node_id", type=str, required=True, location="json")
parser.add_argument("is_preview", type=bool, required=True, location="json", default=False)
args = parser.parse_args()
try:
@ -287,7 +289,7 @@ class PublishedRagPipelineRunApi(Resource):
pipeline=pipeline,
user=current_user,
args=args,
invoke_from=InvokeFrom.PUBLISHED,
invoke_from=InvokeFrom.DEBUGGER if args.get("is_preview") else InvokeFrom.PUBLISHED,
streaming=True,
)
@ -469,6 +471,7 @@ class PublishedRagPipelineApi(Resource):
rag_pipeline_service = RagPipelineService()
with Session(db.engine) as session:
pipeline = session.merge(pipeline)
workflow = rag_pipeline_service.publish_workflow(
session=session,
pipeline=pipeline,
@ -478,6 +481,7 @@ class PublishedRagPipelineApi(Resource):
)
pipeline.is_published = True
pipeline.workflow_id = workflow.id
session.add(pipeline)
workflow_created_at = TimestampField().format(workflow.created_at)
session.commit()
@ -797,6 +801,10 @@ api.add_resource(
DraftRagPipelineRunApi,
"/rag/pipelines/<uuid:pipeline_id>/workflows/draft/run",
)
api.add_resource(
PublishedRagPipelineRunApi,
"/rag/pipelines/<uuid:pipeline_id>/workflows/published/run",
)
api.add_resource(
RagPipelineTaskStopApi,
"/rag/pipelines/<uuid:pipeline_id>/workflow-runs/tasks/<string:task_id>/stop",