feat/datasource
jyong 11 months ago
parent 1b07e612d2
commit ef0e41de07

@ -8,7 +8,7 @@ from werkzeug.exceptions import Forbidden
from configs import dify_config from configs import dify_config
from controllers.console import api from controllers.console import api
from core.plugin.impl.datasource import PluginDatasourceManager from core.plugin.impl.oauth import OAuthHandler
from libs.login import login_required from libs.login import login_required
from libs.oauth_data_source import NotionOAuth from libs.oauth_data_source import NotionOAuth
@ -118,18 +118,17 @@ class DatasourcePluginOauthApi(Resource):
# Check user role first # Check user role first
if not current_user.is_editor: if not current_user.is_editor:
raise Forbidden() raise Forbidden()
# get all builtin providers # get all builtin providers
manager = PluginDatasourceManager() oauth_handler = OAuthHandler()
# Fix: use correct method name or implement the missing method providers = oauth_handler.get_authorization_url(
try: current_user.current_tenant.id,
providers = manager.get_providers() # or whatever the correct method is current_user.id,
# Filter by datasource_type and datasource_name if needed datasource_type,
oauth_config = {} # Build appropriate OAuth URL response datasource_name,
return oauth_config system_credentials={}
except AttributeError: )
# Method doesn't exist, return empty response or implement return providers
return {"oauth_url": None, "supported": False}
api.add_resource(OAuthDataSource, "/oauth/data-source/<string:provider>") api.add_resource(OAuthDataSource, "/oauth/data-source/<string:provider>")

@ -22,13 +22,13 @@ from core.app.apps.pipeline.pipeline_queue_manager import PipelineQueueManager
from core.app.apps.pipeline.pipeline_runner import PipelineRunner from core.app.apps.pipeline.pipeline_runner import PipelineRunner
from core.app.apps.workflow.app_config_manager import WorkflowAppConfigManager from core.app.apps.workflow.app_config_manager import WorkflowAppConfigManager
from core.app.apps.workflow.generate_response_converter import WorkflowAppGenerateResponseConverter from core.app.apps.workflow.generate_response_converter import WorkflowAppGenerateResponseConverter
from core.app.apps.workflow.generate_task_pipeline import WorkflowAppGenerateTaskPipeline
from core.app.entities.app_invoke_entities import InvokeFrom, RagPipelineGenerateEntity, WorkflowAppGenerateEntity from core.app.entities.app_invoke_entities import InvokeFrom, RagPipelineGenerateEntity, WorkflowAppGenerateEntity
from core.app.entities.task_entities import WorkflowAppBlockingResponse, WorkflowAppStreamResponse from core.app.entities.task_entities import WorkflowAppBlockingResponse, WorkflowAppStreamResponse
from core.model_runtime.errors.invoke import InvokeAuthorizationError from core.model_runtime.errors.invoke import InvokeAuthorizationError
from core.rag.index_processor.constant.built_in_field import BuiltInField from core.rag.index_processor.constant.built_in_field import BuiltInField
from core.repositories import SQLAlchemyWorkflowNodeExecutionRepository from core.repositories import SQLAlchemyWorkflowNodeExecutionRepository
from core.workflow.repository.workflow_node_execution_repository import WorkflowNodeExecutionRepository from core.workflow.repository.workflow_node_execution_repository import WorkflowNodeExecutionRepository
from core.workflow.workflow_app_generate_task_pipeline import WorkflowAppGenerateTaskPipeline
from extensions.ext_database import db from extensions.ext_database import db
from models import Account, App, EndUser, Workflow, WorkflowNodeExecutionTriggeredFrom from models import Account, App, EndUser, Workflow, WorkflowNodeExecutionTriggeredFrom
from models.dataset import Document, Pipeline from models.dataset import Document, Pipeline
@ -108,16 +108,17 @@ class PipelineGenerator(BaseAppGenerator):
for datasource_info in datasource_info_list: for datasource_info in datasource_info_list:
workflow_run_id = str(uuid.uuid4()) workflow_run_id = str(uuid.uuid4())
document_id = None document_id = None
# Add null check for dataset # Add null check for dataset
if not pipeline.dataset: dataset = pipeline.dataset
if not dataset:
raise ValueError("Pipeline dataset is required") raise ValueError("Pipeline dataset is required")
if invoke_from == InvokeFrom.PUBLISHED: if invoke_from == InvokeFrom.PUBLISHED:
position = DocumentService.get_documents_position(pipeline.dataset_id) position = DocumentService.get_documents_position(dataset.id)
document = self._build_document( document = self._build_document(
tenant_id=pipeline.tenant_id, tenant_id=pipeline.tenant_id,
dataset_id=pipeline.dataset_id, dataset_id=dataset.id,
built_in_field_enabled=pipeline.dataset.built_in_field_enabled, built_in_field_enabled=pipeline.dataset.built_in_field_enabled,
datasource_type=datasource_type, datasource_type=datasource_type,
datasource_info=datasource_info, datasource_info=datasource_info,

Loading…
Cancel
Save