8000 Adding project permissions handling for databases, tables and virtual connections by TrimPeachu · Pull Request #1482 · tableau/server-client-python · GitHub
[go: up one dir, main page]

Skip to content

Adding project permissions handling for databases, tables and virtua 8000 l connections #1482

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Oct 10, 2024
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
44 changes: 30 additions & 14 deletions tableauserverclient/models/project_item.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@


class ProjectItem:
ERROR_MSG = "Project item must be populated with permissions first."

class ContentPermissions:
LockedToProject: str = "LockedToProject"
ManagedByOwner: str = "ManagedByOwner"
Expand Down Expand Up @@ -43,6 +45,9 @@ def __init__(
self._default_lens_permissions = None
self._default_datarole_permissions = None
self._default_metric_permissions = None
self._default_virtualconnection_permissions = None
self._default_database_permissions = None
self._default_table_permissions = None

@property
def content_permissions(self):
Expand All @@ -56,52 +61,63 @@ def content_permissions(self, value: Optional[str]) -> None:
@property
def permissions(self):
if self._permissions is None:
error = "Project item must be populated with permissions first."
raise UnpopulatedPropertyError(error)
raise UnpopulatedPropertyError(self.ERROR_MSG)
return self._permissions()

@property
def default_datasource_permissions(self):
if self._default_datasource_permissions is None:
error = "Project item must be populated with permissions first."
raise UnpopulatedPropertyError(error)
raise UnpopulatedPropertyError(self.ERROR_MSG)
return self._default_datasource_permissions()

@property
def default_workbook_permissions(self):
if self._default_workbook_permissions is None:
error = "Project item must be populated with permissions first."
raise UnpopulatedPropertyError(error)
raise UnpopulatedPropertyError(self.ERROR_MSG)
return self._default_workbook_permissions()

@property
def default_flow_permissions(self):
if self._default_flow_permissions is None:
error = "Project item must be populated with permissions first."
raise UnpopulatedPropertyError(error)
raise UnpopulatedPropertyError(self.ERROR_MSG)
return self._default_flow_permissions()

@property
def default_lens_permissions(self):
if self._default_lens_permissions is None:
error = "Project item must be populated with permissions first."
raise UnpopulatedPropertyError(error)
raise UnpopulatedPropertyError(self.ERROR_MSG)
return self._default_lens_permissions()

@property
def default_datarole_permissions(self):
if self._default_datarole_permissions is None:
error = "Project item must be populated with permissions first."
raise UnpopulatedPropertyError(error)
raise UnpopulatedPropertyError(self.ERROR_MSG)
return self._default_datarole_permissions()

@property
def default_metric_permissions(self):
if self._default_metric_permissions is None:
error = "Project item must be populated with permissions first."
raise UnpopulatedPropertyError(error)
raise UnpopulatedPropertyError(self.ERROR_MSG)
return self._default_metric_permissions()

@property
def default_virtualconnection_permissions(self):
if self._default_virtualconnection_permissions is None:
raise UnpopulatedPropertyError(self.ERROR_MSG)
return self._default_virtualconnection_permissions()

@property
def default_database_permissions(self):
if self._default_database_permissions is None:
raise UnpopulatedPropertyError(self.ERROR_MSG)
return self._default_database_permissions()

@property
def default_table_permissions(self):
if self._default_table_permissions is None:
raise UnpopulatedPropertyError(self.ERROR_MSG)
return self._default_table_permissions()

@property
def id(self) -> Optional[str]:
return self._id
Expand Down
36 changes: 36 additions & 0 deletions tableauserverclient/server/endpoint/projects_endpoint.py
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,18 @@ def populate_flow_default_permissions(self, item):
def populate_lens_default_permissions(self, item):
self._default_permissions.populate_default_permissions(item, Resource.Lens)

@api(version="3.23")
def populate_virtualconnection_default_permissions(self, item):
self._default_permissions.populate_default_permissions(item, Resource.VirtualConnection)

@api(version="3.23")
def populate_database_default_permissions(self, item):
self._default_permissions.populate_default_permissions(item, Resource.Database)

@api(version="3.23")
def populate_table_default_permissions(self, item):
self._default_permissions.populate_default_permissions(item, Resource.Table)

@api(version="2.1")
def update_workbook_default_permissions(self, item, rules):
return self._default_permissions.update_default_permissions(item, rules, Resource.Workbook)
Expand All @@ -133,6 +145,18 @@ def update_flow_default_permissions(self, item, rules):
def update_lens_default_permissions(self, item, rules):
return self._default_permissions.update_default_permissions(item, rules, Resource.Lens)

@api(version="3.23")
def update_virtualconnection_default_permissions(self, item, rules):
return self._default_permissions.update_default_permissions(item, rules, Resource.VirtualConnection)

@api(version="3.23")
def update_database_default_permissions(self, item, rules):
return self._default_permissions.update_default_permissions(item, rules, Resource.Database)

@api(version="3.23")
def update_table_default_permissions(self, item, rules):
return self._default_permissions.update_default_permissions(item, rules, Resource.Table)

@api(version="2.1")
def delete_workbook_default_permissions(self, item, rule):
self._default_permissions.delete_default_permission(item, rule, Resource.Workbook)
Expand All @@ -157,6 +181,18 @@ def delete_flow_default_permissions(self, item, rule):
def delete_lens_default_permissions(self, item, rule):
self._default_permissions.delete_default_permission(item, rule, Resource.Lens)

@api(version="3.23")
def delete_virtualconnection_default_permissions(self, item, rule):
self._default_permissions.delete_default_permission(item, rule, Resource.VirtualConnection)

@api(version="3.23")
def delete_database_default_permissions(self, item, rule):
self._default_permissions.delete_default_permission(item, rule, Resource.Database)

@api(version="3.23")
def delete_table_default_permissions(self, item, rule):
self._default_permissions.delete_default_permission(item, rule, Resource.Table)

def filter(self, *invalid, page_size: Optional[int] = None, **kwargs) -> QuerySet[ProjectItem]:
"""
Queries the Tableau Server for items using the specified filters. Page
Expand Down
Loading
0