Skip to content

Commit

Permalink
Merge pull request #59 from whdalsrnt/master
Browse files Browse the repository at this point in the history
feat: change parameter in widget APIs
  • Loading branch information
whdalsrnt authored Jun 12, 2024
2 parents 47962a2 + f611d33 commit 4890d49
Show file tree
Hide file tree
Showing 9 changed files with 61 additions and 28 deletions.
6 changes: 2 additions & 4 deletions src/spaceone/dashboard/model/private_folder/database.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,9 @@


class PrivateFolder(MongoModel):
folder_id = StringField(
max_length=40, generate_id="private-folder", unique=True
)
folder_id = StringField(max_length=40, generate_id="private-folder", unique=True)
name = StringField(max_length=100)
tags = DictField(default={})
tags = DictField(default=None)
resource_group = StringField(
max_length=40, choices=("DOMAIN", "WORKSPACE", "PROJECT")
)
Expand Down
10 changes: 6 additions & 4 deletions src/spaceone/dashboard/model/private_widget/database.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,13 @@


class PrivateWidget(MongoModel):
widget_id = StringField(
max_length=40, generate_id="private-widget", unique=True
)
widget_id = StringField(max_length=40, generate_id="private-widget", unique=True)
name = StringField(max_length=100)
description = StringField(default=None)
widget_type = StringField(max_length=40, default="NONE")
options = DictField(default=None, null=True)
tags = DictField(default={})
tags = DictField(default=None)
data_table_id = StringField(max_length=40, default=None, null=True)
dashboard_id = StringField(max_length=40)
user_id = StringField(max_length=40)
domain_id = StringField(max_length=40)
Expand All @@ -25,11 +24,13 @@ class PrivateWidget(MongoModel):
"widget_type",
"options",
"tags",
"data_table_id",
],
"minimal_fields": [
"widget_id",
"name",
"widget_type",
"data_table_id",
"dashboard_id",
"user_id",
"domain_id",
Expand All @@ -38,6 +39,7 @@ class PrivateWidget(MongoModel):
"indexes": [
"name",
"widget_type",
"data_table_id",
"dashboard_id",
"user_id",
"domain_id",
Expand Down
2 changes: 1 addition & 1 deletion src/spaceone/dashboard/model/private_widget/request.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ class PrivateWidgetUpdateRequest(BaseModel):
description: Union[str, None] = None
widget_type: Union[str, None] = None
options: Union[dict, None] = None
data_table_id: Union[str, None] = None
tags: Union[dict, None] = None
user_id: str
domain_id: str
Expand All @@ -41,7 +42,6 @@ class PrivateWidgetDeleteRequest(BaseModel):

class PrivateWidgetLoadRequest(BaseModel):
widget_id: str
data_table_id: str
query: dict
vars: Union[dict, None] = None
user_id: str
Expand Down
1 change: 1 addition & 0 deletions src/spaceone/dashboard/model/private_widget/response.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ class PrivateWidgetResponse(BaseModel):
widget_type: Union[str, None] = None
options: Union[dict, None] = None
tags: Union[dict, None] = None
data_table_id: Union[str, None] = None
dashboard_id: Union[str, None] = None
user_id: Union[str, None] = None
domain_id: Union[str, None] = None
Expand Down
10 changes: 6 additions & 4 deletions src/spaceone/dashboard/model/public_widget/database.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,13 @@


class PublicWidget(MongoModel):
widget_id = StringField(
max_length=40, generate_id="public-widget", unique=True
)
widget_id = StringField(max_length=40, generate_id="public-widget", unique=True)
name = StringField(max_length=100)
description = StringField(default=None)
widget_type = StringField(max_length=40, default="NONE")
options = DictField(default=None, null=True)
tags = DictField(default={})
tags = DictField(default=None)
data_table_id = StringField(max_length=40, default=None, null=True)
dashboard_id = StringField(max_length=40)
resource_group = StringField(
max_length=40, choices=("DOMAIN", "WORKSPACE", "PROJECT")
Expand All @@ -29,11 +28,13 @@ class PublicWidget(MongoModel):
"widget_type",
"options",
"tags",
"data_table_id",
],
"minimal_fields": [
"widget_id",
"name",
"widget_type",
"data_table_id",
"dashboard_id",
"resource_group",
"project_id",
Expand All @@ -45,6 +46,7 @@ class PublicWidget(MongoModel):
"indexes": [
"name",
"widget_type",
"data_table_id",
"dashboard_id",
"resource_group",
"project_id",
Expand Down
2 changes: 1 addition & 1 deletion src/spaceone/dashboard/model/public_widget/request.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ class PublicWidgetUpdateRequest(BaseModel):
description: Union[str, None] = None
widget_type: Union[str, None] = None
options: Union[dict, None] = None
data_table_id: Union[str, None] = None
tags: Union[dict, None] = None
workspace_id: Union[str, None] = None
domain_id: str
Expand All @@ -51,7 +52,6 @@ class PublicWidgetGetRequest(BaseModel):

class PublicWidgetLoadRequest(BaseModel):
widget_id: str
data_table_id: str
query: dict
vars: Union[dict, None] = None
workspace_id: Union[str, None] = None
Expand Down
1 change: 1 addition & 0 deletions src/spaceone/dashboard/model/public_widget/response.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ class PublicWidgetResponse(BaseModel):
widget_type: Union[str, None] = None
options: Union[dict, None] = None
tags: Union[dict, None] = None
data_table_id: Union[str, None] = None
dashboard_id: Union[str, None] = None
resource_group: Union[ResourceGroup, None] = None
project_id: Union[str, None] = None
Expand Down
28 changes: 21 additions & 7 deletions src/spaceone/dashboard/service/private_widget_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,7 @@ def update(
'description': 'str',
'widget_type': 'str',
'options': 'dict',
'data_table_id': 'str',
'tags': 'dict',
'user_id': 'str', # injected from auth (required)
'domain_id': 'str' # injected from auth (required)
Expand All @@ -103,6 +104,20 @@ def update(
params.user_id,
)

if params.data_table_id is not None:
pri_data_table_mgr = PrivateDataTableManager()
pri_data_table_vo = pri_data_table_mgr.get_private_data_table(
params.data_table_id,
params.domain_id,
params.user_id,
)

if pri_data_table_vo.widget_id != params.widget_id:
raise ERROR_INVALID_PARAMETER(
key="data_table_id",
reason="Data table is not belong to this widget.",
)

pri_widget_vo = self.pri_widget_mgr.update_private_widget_by_vo(
params.dict(exclude_unset=True), pri_widget_vo
)
Expand Down Expand Up @@ -147,7 +162,6 @@ def load(self, params: PrivateWidgetLoadRequest) -> dict:
Args:
params (dict): {
'widget_id': 'str', # required
'data_table_id': 'str', # required
'query': 'dict (spaceone.api.core.v1.AnalyzeQuery)', # required
'vars': 'dict',
'user_id': 'str', # injected from auth (required)
Expand All @@ -164,18 +178,18 @@ def load(self, params: PrivateWidgetLoadRequest) -> dict:
params.user_id,
)

if pri_widget_vo.data_table_id is None:
raise ERROR_INVALID_PARAMETER(
key="widget_id", reason="Data table is not set."
)

pri_data_table_mgr = PrivateDataTableManager()
pri_data_table_vo = pri_data_table_mgr.get_private_data_table(
params.data_table_id,
pri_widget_vo.data_table_id,
params.domain_id,
params.user_id,
)

if pri_data_table_vo.widget_id != pri_widget_vo.widget_id:
raise ERROR_INVALID_PARAMETER(
key="data_table_id", reason="Data table does not belong to the widget."
)

if pri_data_table_vo.data_type == "ADDED":
ds_mgr = DataSourceManager()
return ds_mgr.load_data_table_from_widget(
Expand Down
29 changes: 22 additions & 7 deletions src/spaceone/dashboard/service/public_widget_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,7 @@ def update(
'description': 'str',
'widget_type': 'str',
'options': 'dict',
'data_table_id': 'str',
'tags': 'dict',
'workspace_id': 'str', # injected from auth
'domain_id': 'str' # injected from auth (required)
Expand All @@ -106,6 +107,21 @@ def update(
params.user_projects,
)

if params.data_table_id is not None:
pub_data_table_mgr = PublicDataTableManager()
pub_data_table_vo = pub_data_table_mgr.get_public_data_table(
params.data_table_id,
params.domain_id,
params.workspace_id,
params.user_projects,
)

if pub_data_table_vo.widget_id != params.widget_id:
raise ERROR_INVALID_PARAMETER(
key="data_table_id",
reason="Data table is not belong to this widget.",
)

pub_widget_vo = self.pub_widget_mgr.update_public_widget_by_vo(
params.dict(exclude_unset=True), pub_widget_vo
)
Expand Down Expand Up @@ -152,7 +168,6 @@ def load(self, params: PublicWidgetLoadRequest) -> dict:
Args:
params (dict): {
'widget_id': 'str', # required
'data_table_id': 'str', # required
'query': 'dict (spaceone.api.core.v1.AnalyzeQuery)', # required
'vars': 'dict',
'workspace_id': 'str', # injected from auth
Expand All @@ -171,19 +186,19 @@ def load(self, params: PublicWidgetLoadRequest) -> dict:
params.user_projects,
)

if pub_widget_vo.data_table_id is None:
raise ERROR_INVALID_PARAMETER(
key="widget_id", reason="Data table is not set."
)

pub_data_table_mgr = PublicDataTableManager()
pub_data_table_vo = pub_data_table_mgr.get_public_data_table(
params.data_table_id,
pub_widget_vo.data_table_id,
params.domain_id,
params.workspace_id,
params.user_projects,
)

if pub_data_table_vo.widget_id != pub_widget_vo.widget_id:
raise ERROR_INVALID_PARAMETER(
key="data_table_id", reason="Data table does not belong to the widget."
)

if pub_data_table_vo.data_type == "ADDED":
ds_mgr = DataSourceManager()
return ds_mgr.load_data_table_from_widget(
Expand Down

0 comments on commit 4890d49

Please sign in to comment.