Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 0 additions & 17 deletions airflow/api_fastapi/auth/managers/utils/__init__.py

This file was deleted.

52 changes: 0 additions & 52 deletions airflow/api_fastapi/auth/managers/utils/fab.py

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -41,10 +41,6 @@
PoolDetails,
VariableDetails,
)
from airflow.api_fastapi.auth.managers.utils.fab import (
get_fab_action_from_method_map,
get_method_from_fab_action_map,
)
from airflow.cli.cli_config import (
DefaultHelpParser,
GroupCommand,
Expand Down Expand Up @@ -89,6 +85,7 @@
RESOURCE_WEBSITE,
RESOURCE_XCOM,
)
from airflow.providers.fab.www.utils import get_fab_action_from_method_map, get_method_from_fab_action_map
from airflow.utils.session import NEW_SESSION, create_session, provide_session
from airflow.utils.yaml import safe_load

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,7 @@
from flask_limiter.util import get_remote_address

from airflow.api_fastapi.app import get_auth_manager
from airflow.api_fastapi.auth.managers.utils.fab import (
get_method_from_fab_action_map,
)
from airflow.providers.fab.www.utils import CustomSQLAInterface
from airflow.providers.fab.www.utils import CustomSQLAInterface, get_method_from_fab_action_map
from airflow.utils.log.logging_mixin import LoggingMixin

EXISTING_ROLES = {
Expand Down
29 changes: 29 additions & 0 deletions providers/fab/src/airflow/providers/fab/www/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,13 +28,30 @@
from sqlalchemy.ext.associationproxy import AssociationProxy

from airflow.api_fastapi.app import get_auth_manager
from airflow.providers.fab.www.security.permissions import (
ACTION_CAN_ACCESS_MENU,
ACTION_CAN_CREATE,
ACTION_CAN_DELETE,
ACTION_CAN_EDIT,
ACTION_CAN_READ,
)
from airflow.utils import timezone

if TYPE_CHECKING:
from sqlalchemy.orm.session import Session

from airflow.api_fastapi.auth.managers.base_auth_manager import ResourceMethod
from airflow.providers.fab.auth_manager.fab_auth_manager import FabAuthManager

# Convert methods to FAB action name
_MAP_METHOD_NAME_TO_FAB_ACTION_NAME: dict[ResourceMethod, str] = {
"POST": ACTION_CAN_CREATE,
"GET": ACTION_CAN_READ,
"PUT": ACTION_CAN_EDIT,
"DELETE": ACTION_CAN_DELETE,
"MENU": ACTION_CAN_ACCESS_MENU,
}


def get_fab_auth_manager() -> FabAuthManager:
from airflow.providers.fab.auth_manager.fab_auth_manager import FabAuthManager
Expand All @@ -47,6 +64,18 @@ def get_fab_auth_manager() -> FabAuthManager:
return auth_manager


def get_fab_action_from_method_map():
"""Return the map associating a method to a FAB action."""
return _MAP_METHOD_NAME_TO_FAB_ACTION_NAME


def get_method_from_fab_action_map():
"""Return the map associating a FAB action to a method."""
return {
**{v: k for k, v in _MAP_METHOD_NAME_TO_FAB_ACTION_NAME.items()},
}


class UtcAwareFilterMixin:
"""Mixin for filter for UTC time."""

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@

from airflow import settings
from airflow.providers.fab.www import app as application
from airflow.security import permissions
from airflow.providers.fab.www.security import permissions
from unit.fab.auth_manager.api_endpoints.api_connexion_utils import (
create_user,
delete_role,
Expand Down