From 51e677c23ab6f1cd29ad34a9e5ea5de09b41711c Mon Sep 17 00:00:00 2001 From: nailo2c Date: Mon, 2 Jun 2025 22:23:55 -0700 Subject: [PATCH 1/2] Add extra fields and hide unnecessary fields for LevelDB --- .../providers/google/leveldb/hooks/leveldb.py | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/providers/google/src/airflow/providers/google/leveldb/hooks/leveldb.py b/providers/google/src/airflow/providers/google/leveldb/hooks/leveldb.py index 7e7e971d2860b..5cad348f504e5 100644 --- a/providers/google/src/airflow/providers/google/leveldb/hooks/leveldb.py +++ b/providers/google/src/airflow/providers/google/leveldb/hooks/leveldb.py @@ -18,6 +18,8 @@ from __future__ import annotations +from typing import Any + from airflow.exceptions import AirflowException, AirflowOptionalProviderFeatureException from airflow.hooks.base import BaseHook @@ -46,6 +48,29 @@ class LevelDBHook(BaseHook): conn_type = "leveldb" hook_name = "LevelDB" + @classmethod + def get_connection_form_widgets(cls) -> dict[str, Any]: + """Return connection widgets to add to Google Ads connection form.""" + from flask_babel import lazy_gettext + from wtforms import BooleanField + + return { + "create_if_missing": BooleanField( + lazy_gettext("Create a database if it does not exist"), default=False + ), + "error_if_exists": BooleanField( + lazy_gettext("Raise an exception if the database already exists"), default=False + ), + } + + @classmethod + def get_ui_field_behaviour(cls) -> dict[str, Any]: + """Return custom UI field behaviour for Google Ads connection.""" + return { + "hidden_fields": ["login", "password", "schema", "port"], + "relabeling": {}, + } + def __init__(self, leveldb_conn_id: str = default_conn_name): super().__init__() self.leveldb_conn_id = leveldb_conn_id From d5649d35eaabf008577446555345f00cb1dd5f5c Mon Sep 17 00:00:00 2001 From: nailo2c Date: Tue, 3 Jun 2025 09:32:27 -0700 Subject: [PATCH 2/2] fix typo --- .../src/airflow/providers/google/leveldb/hooks/leveldb.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/providers/google/src/airflow/providers/google/leveldb/hooks/leveldb.py b/providers/google/src/airflow/providers/google/leveldb/hooks/leveldb.py index 5cad348f504e5..9423a604d6ebd 100644 --- a/providers/google/src/airflow/providers/google/leveldb/hooks/leveldb.py +++ b/providers/google/src/airflow/providers/google/leveldb/hooks/leveldb.py @@ -50,7 +50,7 @@ class LevelDBHook(BaseHook): @classmethod def get_connection_form_widgets(cls) -> dict[str, Any]: - """Return connection widgets to add to Google Ads connection form.""" + """Return connection widgets to add to LevelDB connection form.""" from flask_babel import lazy_gettext from wtforms import BooleanField @@ -65,7 +65,7 @@ def get_connection_form_widgets(cls) -> dict[str, Any]: @classmethod def get_ui_field_behaviour(cls) -> dict[str, Any]: - """Return custom UI field behaviour for Google Ads connection.""" + """Return custom UI field behaviour for LevelDB connection.""" return { "hidden_fields": ["login", "password", "schema", "port"], "relabeling": {},