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
2 changes: 1 addition & 1 deletion gooddata-sdk/gooddata_sdk/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
from gooddata_sdk.catalog.data_source.validation.data_source import DataSourceValidator
from gooddata_sdk.catalog.entity import BasicCredentials, TokenCredentialsFromFile
from gooddata_sdk.catalog.organization.service import CatalogOrganizationService
from gooddata_sdk.catalog.permissions.declarative_model.permission import CatalogDeclarativeWorkspacePermissions
from gooddata_sdk.catalog.permission.declarative_model.permission import CatalogDeclarativeWorkspacePermissions
from gooddata_sdk.catalog.workspace.declarative_model.workspace.workspace import (
CatalogDeclarativeWorkspaceDataFilters,
CatalogDeclarativeWorkspaceModel,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
from gooddata_sdk.catalog.base import Base
from gooddata_sdk.catalog.data_source.declarative_model.physical_model.pdm import CatalogDeclarativeTables
from gooddata_sdk.catalog.entity import TokenCredentialsFromFile
from gooddata_sdk.catalog.permissions.declarative_model.permission import CatalogDeclarativeDataSourcePermission
from gooddata_sdk.catalog.permission.declarative_model.permission import CatalogDeclarativeDataSourcePermission
from gooddata_sdk.utils import create_directory, read_layout_from_file, write_layout_to_file

BIGQUERY_TYPE = "BIGQUERY"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# (C) 2022 GoodData Corporation
from gooddata_sdk import GoodDataApiClient
from gooddata_sdk.catalog.catalog_service_base import CatalogServiceBase
from gooddata_sdk.catalog.permissions.declarative_model.permission import CatalogDeclarativeWorkspacePermissions
from gooddata_sdk.catalog.permission.declarative_model.permission import CatalogDeclarativeWorkspacePermissions


class CatalogPermissionService(CatalogServiceBase):
Expand All @@ -11,7 +11,7 @@ def __init__(self, api_client: GoodDataApiClient) -> None:
def get_declarative_permissions(self, workspace_id: str) -> CatalogDeclarativeWorkspacePermissions:
return CatalogDeclarativeWorkspacePermissions.from_api(self._layout_api.get_workspace_permissions(workspace_id))

def set_declarative_permissions(
def put_declarative_permissions(
self, workspace_id: str, declarative_workspace_permissions: CatalogDeclarativeWorkspacePermissions
) -> None:
self._layout_api.set_workspace_permissions(
Expand Down
14 changes: 10 additions & 4 deletions gooddata-sdk/gooddata_sdk/catalog/user/entity_model/user.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,10 @@ def client_class() -> Type[JsonApiUserInDocument]:
return JsonApiUserInDocument

@classmethod
def create_user(
def init(
cls, user_id: str, authentication_id: Optional[str] = None, user_group_ids: Optional[List[str]] = None
) -> CatalogUserDocument:
attributes = CatalogUserAttributes(authentication_id=authentication_id)
relationships = CatalogUserRelationships.create_user_relationships(user_group_ids=user_group_ids)
user = CatalogUser(id=user_id, attributes=attributes, relationships=relationships)
user = CatalogUser.init(user_id=user_id, authentication_id=authentication_id, user_group_ids=user_group_ids)
return cls(data=user)

def update_user(self, authentication_id: Optional[str] = None, user_group_ids: Optional[List[str]] = None) -> None:
Expand All @@ -45,6 +43,14 @@ class CatalogUser(Base):
def client_class() -> Type[JsonApiUserIn]:
return JsonApiUserIn

@classmethod
def init(
cls, user_id: str, authentication_id: Optional[str] = None, user_group_ids: Optional[List[str]] = None
) -> CatalogUser:
attributes = CatalogUserAttributes(authentication_id=authentication_id)
relationships = CatalogUserRelationships.create_user_relationships(user_group_ids=user_group_ids)
return cls(id=user_id, attributes=attributes, relationships=relationships)

@property
def get_user_groups(self) -> List[str]:
return self.relationships.get_user_groups if self.relationships is not None else []
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,8 @@ def client_class() -> Type[JsonApiUserGroupInDocument]:
return JsonApiUserGroupInDocument

@classmethod
def create_user_group(
cls, user_group_id: str, user_group_parents_id: Optional[List[str]] = None
) -> CatalogUserGroupDocument:
relationships = CatalogUserGroupRelationships.create_user_group_relationships(user_group_parents_id)
return cls(data=CatalogUserGroup(id=user_group_id, relationships=relationships))
def init(cls, user_group_id: str, user_group_parent_ids: Optional[List[str]] = None) -> CatalogUserGroupDocument:
return cls(data=CatalogUserGroup.init(user_group_id=user_group_id, user_group_parent_ids=user_group_parent_ids))

def update_user_group(self, user_group_parents_id: Optional[List[str]] = None) -> None:
relationships = CatalogUserGroupRelationships.create_user_group_relationships(user_group_parents_id)
Expand All @@ -39,6 +36,11 @@ class CatalogUserGroup(Base):
def client_class() -> Type[JsonApiUserGroupIn]:
return JsonApiUserGroupIn

@classmethod
def init(cls, user_group_id: str, user_group_parent_ids: Optional[List[str]] = None) -> CatalogUserGroup:
relationships = CatalogUserGroupRelationships.create_user_group_relationships(user_group_parent_ids)
return cls(id=user_group_id, relationships=relationships)

@property
def get_parents(self) -> List[str]:
return self.relationships.get_parents if self.relationships is not None else []
Expand All @@ -50,12 +52,12 @@ class CatalogUserGroupRelationships(Base):

@classmethod
def create_user_group_relationships(
cls, user_group_parents_id: Optional[List[str]]
cls, user_group_parent_ids: Optional[List[str]]
) -> CatalogUserGroupRelationships:
parents = None
if user_group_parents_id is not None:
if user_group_parent_ids is not None:
parents = CatalogUserGroupParents(
data=[CatalogUserGroup(id=user_group_parent_id) for user_group_parent_id in user_group_parents_id]
data=[CatalogUserGroup(id=user_group_parent_id) for user_group_parent_id in user_group_parent_ids]
)
return cls(parents=parents)

Expand Down
27 changes: 11 additions & 16 deletions gooddata-sdk/gooddata_sdk/catalog/user/service.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

import functools
from pathlib import Path
from typing import List, Optional
from typing import List

from gooddata_metadata_client.exceptions import NotFoundException
from gooddata_sdk.catalog.catalog_service_base import CatalogServiceBase
Expand Down Expand Up @@ -39,16 +39,13 @@ def get_user(self, user_id: str) -> CatalogUser:
)
return CatalogUser.from_dict(user_dict, camel_case=False)

def create_or_update_user(
self, user_id: str, authentication_id: Optional[str] = None, user_groups: Optional[list[str]] = None
) -> None:
def create_or_update_user(self, user: CatalogUser) -> None:
try:
user = self.get_user(user_id=user_id)
self.get_user(user_id=user.id)
user_document = CatalogUserDocument(data=user)
user_document.update_user(authentication_id=authentication_id, user_group_ids=user_groups)
self._entities_api.update_entity_users(id=user_id, json_api_user_in_document=user_document.to_api())
self._entities_api.update_entity_users(id=user.id, json_api_user_in_document=user_document.to_api())
except NotFoundException:
user_document = CatalogUserDocument.create_user(user_id, authentication_id, user_groups)
user_document = CatalogUserDocument(data=user)
self._entities_api.create_entity_users(json_api_user_in_document=user_document.to_api())

def delete_user(self, user_id: str) -> None:
Expand All @@ -60,19 +57,17 @@ def get_user_group(self, user_group_id: str) -> CatalogUserGroup:
)
return CatalogUserGroup.from_dict(user_group, camel_case=False)

def create_or_update_user_group(
self, user_group_id: str, user_group_parents_id: Optional[List[str]] = None
) -> None:
def create_or_update_user_group(self, user_group: CatalogUserGroup) -> None:
try:
user_group = self.get_user_group(user_group_id=user_group_id)
self.get_user_group(user_group_id=user_group.id)
user_group_document = CatalogUserGroupDocument(data=user_group)
user_group_document.update_user_group(user_group_parents_id=user_group_parents_id)
user_group_document.update_user_group(user_group_parents_id=user_group.get_parents)
self._entities_api.update_entity_user_groups(
id=user_group_id, json_api_user_group_in_document=user_group_document.to_api()
id=user_group.id, json_api_user_group_in_document=user_group_document.to_api()
)
except NotFoundException:
user_group_document = CatalogUserGroupDocument.create_user_group(
user_group_id=user_group_id, user_group_parents_id=user_group_parents_id
user_group_document = CatalogUserGroupDocument.init(
user_group_id=user_group.id, user_group_parent_ids=user_group.get_parents
)
self._entities_api.create_entity_user_groups(user_group_document.to_api())

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
from gooddata_metadata_client.model.declarative_workspaces import DeclarativeWorkspaces
from gooddata_sdk.catalog.base import Base
from gooddata_sdk.catalog.identifier import CatalogWorkspaceIdentifier
from gooddata_sdk.catalog.permissions.declarative_model.permission import (
from gooddata_sdk.catalog.permission.declarative_model.permission import (
CatalogDeclarativeSingleWorkspacePermission,
CatalogDeclarativeWorkspaceHierarchyPermission,
)
Expand Down
2 changes: 1 addition & 1 deletion gooddata-sdk/gooddata_sdk/sdk.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

from gooddata_sdk.catalog.data_source.service import CatalogDataSourceService
from gooddata_sdk.catalog.organization.service import CatalogOrganizationService
from gooddata_sdk.catalog.permissions.service import CatalogPermissionService
from gooddata_sdk.catalog.permission.service import CatalogPermissionService
from gooddata_sdk.catalog.user.service import CatalogUserService
from gooddata_sdk.catalog.workspace.service import CatalogWorkspaceContentService, CatalogWorkspaceService
from gooddata_sdk.client import GoodDataApiClient
Expand Down
Loading