Du kannst nicht mehr als 25 Themen auswählen Themen müssen mit entweder einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

wraps.py 1.3KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  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.account import Account
  8. from models.dataset import Pipeline
  9. def get_rag_pipeline(
  10. view: Optional[Callable] = None,
  11. ):
  12. def decorator(view_func):
  13. @wraps(view_func)
  14. def decorated_view(*args, **kwargs):
  15. if not kwargs.get("pipeline_id"):
  16. raise ValueError("missing pipeline_id in path parameters")
  17. if not isinstance(current_user, Account):
  18. raise ValueError("current_user is not an account")
  19. pipeline_id = kwargs.get("pipeline_id")
  20. pipeline_id = str(pipeline_id)
  21. del kwargs["pipeline_id"]
  22. pipeline = (
  23. db.session.query(Pipeline)
  24. .filter(Pipeline.id == pipeline_id, Pipeline.tenant_id == current_user.current_tenant_id)
  25. .first()
  26. )
  27. if not pipeline:
  28. raise PipelineNotFoundError()
  29. kwargs["pipeline"] = pipeline
  30. return view_func(*args, **kwargs)
  31. return decorated_view
  32. if view is None:
  33. return decorator
  34. else:
  35. return decorator(view)