Beispiel #1
0
    def uri_is_valid(cls, v):
        if isinstance(v, AnyUrl):
            return v

        if settings.MONGO_HOST in ("localhost", "127.0.0.1"):
            try:
                return AnyUrl.build(
                    scheme=settings.MONGO_SCHEME,
                    host=settings.MONGO_HOST,
                    port=settings.MONGO_PORT,
                    user=settings.MONGO_USER,
                    password=settings.MONGO_PASSWORD,
                    path=f"/{settings.MONGO_DB}",
                    query="retryWrites=true&w=majority",
                )
            except Exception as e:
                raise AttributeError(v) from e
        try:
            return AnyUrl.build(
                scheme=settings.MONGO_SCHEME,
                host=settings.MONGO_HOST,
                user=settings.MONGO_USER,
                password=settings.MONGO_PASSWORD,
                path=f"/{settings.MONGO_DB}",
                query="retryWrites=true&w=majority",
            )
        except Exception as exc:
            logger.error(exc)
            raise AttributeError(v) from exc
Beispiel #2
0
 def _assemble_db_connection(cls, v: Optional[str],
                             values: Dict[str, str]) -> str:
     if isinstance(v, str):
         return v
     return AnyUrl.build(
         scheme="postgres",
         user=values.get("POSTGRES_USER"),
         password=values.get("POSTGRES_PASSWORD"),
         host=values.get("POSTGRES_SERVER") or "localhost",
         port=values.get("POSTGRES_PORT"),
         path=f"/{values.get('POSTGRES_DB')}",
     )
Beispiel #3
0
    def assemble_celery_dsn(cls, v: Optional[str], values: Dict[str,
                                                                Any]) -> Any:
        if isinstance(v, str):
            return v

        return AnyUrl.build(
            scheme="amqp",
            user=values.get("CELERY_USER"),
            password=values.get("CELERY_PASSWORD"),
            host=values.get("CELERY_SERVER"),
            path=f"/{values.get('CELERY_VHOST')}",
        )
Beispiel #4
0
def build_dsn(
    driver: str,
    host: str,
    port: int,
    db: Optional[str] = None,
    user: Optional[str] = None,
    password: Optional[str] = None,
    **params: Any,
):
    if params:
        params = urlencode(params)

    return AnyUrl.build(
        scheme=driver,
        host=host,
        port=str(port),
        path=f"/{db}",
        user=user,
        password=password,
        query=params,
    )