Skip to content
Draft
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
66 changes: 64 additions & 2 deletions src/preset_cli/api/clients/superset.py
Original file line number Diff line number Diff line change
Expand Up @@ -431,7 +431,12 @@ def get_resource(self, resource_name: str, resource_id: int) -> Any:

return resource

def get_resources(self, resource_name: str, **kwargs: Any) -> List[Any]:
def get_resources(
self,
resource_name: str,
order_column: str = "changed_on_delta_humanized",
**kwargs: Any,
) -> List[Any]:
"""
Return one or more of a resource, possibly filtered.
"""
Expand All @@ -449,7 +454,7 @@ def get_resources(self, resource_name: str, **kwargs: Any) -> List[Any]:
dict(col=col, opr=value.operator, value=value.value)
for col, value in operations.items()
],
"order_column": "changed_on_delta_humanized",
"order_column": order_column,
"order_direction": "desc",
"page": page,
"page_size": MAX_PAGE_SIZE,
Expand Down Expand Up @@ -507,6 +512,15 @@ def update_resource(

return resource

def delete_resource(self, resource_name: str, resource_id: int):
"""
Delete a resource.
"""
url = self.baseurl / "api/v1" / resource_name / str(resource_id)

response = self.session.delete(url)
validate_response(response)

def get_resource_endpoint_info(self, resource_name: str, **kwargs: Any) -> Any:
"""
Get resource endpoint info (such as available columns) possibly filtered.
Expand Down Expand Up @@ -679,6 +693,18 @@ def get_charts(self, **kwargs: str) -> List[Any]:
"""
return self.get_resources("chart", **kwargs)

def update_chart(self, chart_id: int, **kwargs: Any) -> Any:
"""
Update a chart.
"""
return self.update_resource("chart", chart_id, **kwargs)

def delete_chart(self, chart_id):
"""
delete a chart.
"""
self.delete_resource("chart", chart_id)

def get_dashboard(self, dashboard_id: int) -> Any:
"""
Return a single dashboard.
Expand All @@ -703,6 +729,42 @@ def update_dashboard(self, dashboard_id: int, **kwargs: Any) -> Any:
"""
return self.update_resource("dashboard", dashboard_id, **kwargs)

def delete_dashboard(self, dashboard_id: int) -> Any:
"""
Delete a dashboard.
"""
self.delete_resource("dashboard", dashboard_id)

def get_users(self, **kwargs: str) -> List[Any]:
"""
Return users, possibly filtered.
"""
return self.get_resources("security/users", "id", **kwargs)

def get_report(self, report_id: int) -> Any:
"""
Return a single report.
"""
return self.get_resource("report", report_id)

def get_reports(self, **kwargs: str) -> List[Any]:
"""
Return reports, possibly filtered.
"""
return self.get_resources("report", **kwargs)

def create_report(self, **kwargs: Any) -> Any:
"""
Create a report.
"""
return self.create_resource("report", **kwargs)

def update_report(self, report_id: int, **kwargs: Any) -> Any:
"""
Update a report.
"""
return self.update_resource("report", report_id, **kwargs)

def export_zip(self, resource_name: str, ids: List[int]) -> BytesIO:
"""
Export one or more of a resource.
Expand Down