You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

6 月之前
6 月之前
12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. from collections.abc import Callable
  2. from functools import wraps
  3. from typing import Optional
  4. from controllers.console.datasets.error import PipelineNotFoundError
  5. from extensions.ext_database import db
  6. from libs.login import current_user
  7. from models.dataset import Pipeline
  8. def get_rag_pipeline(
  9. view: Optional[Callable] = None,
  10. ):
  11. def decorator(view_func):
  12. @wraps(view_func)
  13. def decorated_view(*args, **kwargs):
  14. if not kwargs.get("pipeline_id"):
  15. raise ValueError("missing pipeline_id in path parameters")
  16. pipeline_id = kwargs.get("pipeline_id")
  17. pipeline_id = str(pipeline_id)
  18. del kwargs["pipeline_id"]
  19. pipeline = (
  20. db.session.query(Pipeline)
  21. .filter(Pipeline.id == pipeline_id, Pipeline.tenant_id == current_user.current_tenant_id)
  22. .first()
  23. )
  24. if not pipeline:
  25. raise PipelineNotFoundError()
  26. kwargs["pipeline"] = pipeline
  27. return view_func(*args, **kwargs)
  28. return decorated_view
  29. if view is None:
  30. return decorator
  31. else:
  32. return decorator(view)