Skip to content

Commit eae45fa

Browse files
authored
Merge pull request #183 from stat-kwon/master
Add project_group_id field to dashboard models and services
2 parents 312426d + e3e7008 commit eae45fa

18 files changed

+74
-2
lines changed

Diff for: src/spaceone/dashboard/manager/identity_manager.py

+5
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,11 @@ def check_workspace(self, workspace_id: str, domain_id: str) -> None:
1919
token=system_token,
2020
)
2121

22+
def check_project_group(self, project_group_id: str) -> None:
23+
self.identity_conn.dispatch(
24+
"ProjectGroup.get", {"project_group_id": project_group_id}
25+
)
26+
2227
def get_project(self, project_id: str) -> dict:
2328
return self.identity_conn.dispatch("Project.get", {"project_id": project_id})
2429

Diff for: src/spaceone/dashboard/manager/public_folder_manager.py

+4
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ def get_public_folder(
5151
workspace_id: str = None,
5252
user_projects=None,
5353
resource_group=None,
54+
project_group_id=None,
5455
) -> PublicFolder:
5556
conditions = {
5657
"folder_id": folder_id,
@@ -66,6 +67,9 @@ def get_public_folder(
6667
if resource_group:
6768
conditions["resource_group"] = resource_group
6869

70+
if project_group_id:
71+
conditions["project_group_id"] = project_group_id
72+
6973
return self.folder_model.get(**conditions)
7074

7175
def filter_public_folders(self, **conditions) -> QuerySet:

Diff for: src/spaceone/dashboard/model/private_dashboard/database.py

+3
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ class PrivateDashboard(MongoModel):
1818
tags = DictField(default=None)
1919
folder_id = StringField(max_length=40, default=None, null=True)
2020
user_id = StringField(max_length=40)
21+
project_group_id = StringField(max_length=40)
2122
workspace_id = StringField(max_length=40, default=None, null=True)
2223
domain_id = StringField(max_length=40)
2324
created_at = DateTimeField(auto_now_add=True)
@@ -42,13 +43,15 @@ class PrivateDashboard(MongoModel):
4243
"name",
4344
"version",
4445
"user_id",
46+
"project_group_id",
4547
"workspace_id",
4648
"domain_id",
4749
],
4850
"ordering": ["name"],
4951
"indexes": [
5052
"name",
5153
"user_id",
54+
"project_group_id",
5255
"workspace_id",
5356
"domain_id",
5457
],

Diff for: src/spaceone/dashboard/model/private_dashboard/request.py

+2
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ class PrivateDashboardCreateRequest(BaseModel):
2525
tags: Union[dict, None] = None
2626
folder_id: Union[str, None] = None
2727
user_id: str
28+
project_group_id: Union[str, None] = None
2829
workspace_id: Union[str, None] = None
2930
domain_id: str
3031

@@ -72,6 +73,7 @@ class PrivateDashboardSearchQueryRequest(BaseModel):
7273
folder_id: Union[str, None] = None
7374
workspace_id: Union[str, None] = None
7475
user_id: str
76+
project_group_id: Union[str, None] = None
7577
domain_id: str
7678

7779

Diff for: src/spaceone/dashboard/model/private_dashboard/response.py

+1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ class PrivateDashboardResponse(BaseModel):
2121
tags: Union[dict, None] = None
2222
folder_id: Union[str, None] = None
2323
user_id: Union[str, None] = None
24+
project_group_id: Union[str, None] = None
2425
workspace_id: Union[str, None] = None
2526
domain_id: Union[str, None] = None
2627
created_at: Union[datetime, None] = None

Diff for: src/spaceone/dashboard/model/private_folder/database.py

+3
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ class PrivateFolder(MongoModel):
1111
max_length=40, choices=("DOMAIN", "WORKSPACE", "PROJECT")
1212
)
1313
user_id = StringField(max_length=40)
14+
project_group_id = StringField(max_length=40)
1415
workspace_id = StringField(max_length=40, default=None, null=True)
1516
domain_id = StringField(max_length=40)
1617
created_at = DateTimeField(auto_now_add=True)
@@ -25,13 +26,15 @@ class PrivateFolder(MongoModel):
2526
"folder_id",
2627
"name",
2728
"user_id",
29+
"project_group_id",
2830
"workspace_id",
2931
"domain_id",
3032
],
3133
"ordering": ["name"],
3234
"indexes": [
3335
"name",
3436
"user_id",
37+
"project_group_id",
3538
"workspace_id",
3639
"domain_id",
3740
],

Diff for: src/spaceone/dashboard/model/private_folder/request.py

+2
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ class PrivateFolderCreateRequest(BaseModel):
1616
tags: Union[dict, None] = None
1717
dashboards: Union[list, None] = None
1818
user_id: str
19+
project_group_id: Union[str, None] = None
1920
workspace_id: Union[str, None] = None
2021
domain_id: str
2122

@@ -45,6 +46,7 @@ class PrivateFolderSearchQueryRequest(BaseModel):
4546
folder_id: Union[str, None] = None
4647
name: Union[str, None] = None
4748
user_id: str
49+
project_group_id: Union[str, None] = None
4850
workspace_id: Union[str, None] = None
4951
domain_id: str
5052

Diff for: src/spaceone/dashboard/model/private_folder/response.py

+1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ class PrivateFolderResponse(BaseModel):
1111
name: Union[str, None] = None
1212
tags: Union[dict, None] = None
1313
user_id: Union[str, None] = None
14+
project_group_id: Union[str, None] = None
1415
workspace_id: Union[str, None] = None
1516
domain_id: Union[str, None] = None
1617
created_at: Union[datetime, None] = None

Diff for: src/spaceone/dashboard/model/public_dashboard/database.py

+4
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ class PublicDashboard(MongoModel):
2323
)
2424
folder_id = StringField(max_length=40, default=None, null=True)
2525
project_id = StringField(max_length=40)
26+
project_group_id = StringField(max_length=40)
2627
workspace_id = StringField(max_length=40)
2728
domain_id = StringField(max_length=40)
2829
created_at = DateTimeField(auto_now_add=True)
@@ -44,6 +45,7 @@ class PublicDashboard(MongoModel):
4445
"scope",
4546
"folder_id",
4647
"project_id",
48+
"project_group_id",
4749
"workspace_id",
4850
],
4951
"minimal_fields": [
@@ -53,6 +55,7 @@ class PublicDashboard(MongoModel):
5355
"shared",
5456
"resource_group",
5557
"project_id",
58+
"project_group_id",
5659
"workspace_id",
5760
"domain_id",
5861
],
@@ -64,6 +67,7 @@ class PublicDashboard(MongoModel):
6467
"scope",
6568
"resource_group",
6669
"project_id",
70+
"project_group_id",
6771
"workspace_id",
6872
"domain_id",
6973
],

Diff for: src/spaceone/dashboard/model/public_dashboard/request.py

+2
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ class PublicDashboardCreateRequest(BaseModel):
3232
folder_id: Union[str, None] = None
3333
resource_group: ResourceGroup
3434
project_id: Union[str, None] = None
35+
project_group_id: Union[str, None] = None
3536
workspace_id: Union[str, None] = None
3637
domain_id: str
3738
user_projects: Union[list, None] = None
@@ -101,6 +102,7 @@ class PublicDashboardSearchQueryRequest(BaseModel):
101102
scope: Union[Scope, None] = None
102103
folder_id: Union[str, None] = None
103104
project_id: Union[str, None] = None
105+
project_group_id: Union[str, None] = None
104106
workspace_id: Union[str, list, None] = None
105107
domain_id: str
106108
user_projects: Union[list, None] = None

Diff for: src/spaceone/dashboard/model/public_dashboard/response.py

+1
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ class PublicDashboardResponse(BaseModel):
2626
folder_id: Union[str, None] = None
2727
resource_group: Union[ResourceGroup, None] = None
2828
project_id: Union[str, None] = None
29+
project_group_id: Union[str, None] = None
2930
workspace_id: Union[str, None] = None
3031
domain_id: Union[str, None] = None
3132
created_at: Union[datetime, None] = None

Diff for: src/spaceone/dashboard/model/public_folder/database.py

+4
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ class PublicFolder(MongoModel):
1313
max_length=40, choices=("DOMAIN", "WORKSPACE", "PROJECT")
1414
)
1515
project_id = StringField(max_length=40)
16+
project_group_id = StringField(max_length=40)
1617
workspace_id = StringField(max_length=40)
1718
domain_id = StringField(max_length=40)
1819
created_at = DateTimeField(auto_now_add=True)
@@ -25,13 +26,15 @@ class PublicFolder(MongoModel):
2526
"shared",
2627
"scope",
2728
"project_id",
29+
"project_group_id",
2830
"workspace_id",
2931
],
3032
"minimal_fields": [
3133
"folder_id",
3234
"name",
3335
"resource_group",
3436
"project_id",
37+
"project_group_id",
3538
"workspace_id",
3639
"domain_id",
3740
],
@@ -43,6 +46,7 @@ class PublicFolder(MongoModel):
4346
"scope",
4447
"resource_group",
4548
"project_id",
49+
"project_group_id",
4650
"workspace_id",
4751
"domain_id",
4852
],

Diff for: src/spaceone/dashboard/model/public_folder/request.py

+2
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ class PublicFolderCreateRequest(BaseModel):
2323
dashboards: Union[list, None] = None
2424
resource_group: ResourceGroup
2525
project_id: Union[str, None] = None
26+
project_group_id: Union[str, None] = None
2627
workspace_id: Union[str, None] = None
2728
domain_id: str
2829

@@ -72,6 +73,7 @@ class PublicFolderSearchQueryRequest(BaseModel):
7273
shared: Union[bool, None] = None
7374
scope: Union[Scope, None] = None
7475
project_id: Union[str, None] = None
76+
project_group_id: Union[str, None] = None
7577
workspace_id: Union[str, list, None] = None
7678
domain_id: str
7779
user_projects: Union[list, None] = None

Diff for: src/spaceone/dashboard/model/public_folder/response.py

+1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ class PublicFolderResponse(BaseModel):
1616
scope: Union[str, None] = None
1717
resource_group: Union[ResourceGroup, None] = None
1818
project_id: Union[str, None] = None
19+
project_group_id: Union[str, None] = None
1920
workspace_id: Union[str, None] = None
2021
domain_id: Union[str, None] = None
2122
created_at: Union[datetime, None] = None

Diff for: src/spaceone/dashboard/service/private_dashboard_service.py

+15-1
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ def create(
5050
'tags': 'dict',
5151
'folder_id': 'str',
5252
'workspace_id': 'str',
53+
'project_group_id': 'str',
5354
'user_id': 'str', # injected from auth (required)
5455
'domain_id': 'str' # injected from auth (required)
5556
}
@@ -66,6 +67,7 @@ def create_dashboard(self, params_dict: dict) -> dict:
6667
domain_id = params_dict["domain_id"]
6768
user_id = params_dict["user_id"]
6869
workspace_id = params_dict.get("workspace_id")
70+
project_group_id = params_dict.get("project_group_id")
6971

7072
layouts = params_dict.get("layouts")
7173
if layouts:
@@ -78,6 +80,9 @@ def create_dashboard(self, params_dict: dict) -> dict:
7880
if workspace_id:
7981
self.identity_mgr.check_workspace(workspace_id, domain_id)
8082

83+
if project_group_id:
84+
self.identity_mgr.check_project_group(project_group_id)
85+
8186
pri_dashboard_vo = self.pri_dashboard_mgr.create_private_dashboard(params_dict)
8287

8388
if layouts:
@@ -252,7 +257,15 @@ def get(
252257
role_types=["USER"],
253258
)
254259
@append_query_filter(
255-
["dashboard_id", "name", "domain_id", "workspace_id", "user_id", "folder_id"]
260+
[
261+
"dashboard_id",
262+
"name",
263+
"domain_id",
264+
"workspace_id",
265+
"user_id",
266+
"project_group_id",
267+
"folder_id",
268+
]
256269
)
257270
@append_keyword_filter(["dashboard_id", "name"])
258271
@convert_model
@@ -268,6 +281,7 @@ def list(
268281
'name': 'str',
269282
'folder_id': 'str',
270283
'user_id': 'str', # injected from auth (required)
284+
'project_group_id': 'str',
271285
'workspace_id': 'str',
272286
'domain_id': 'str', # injected from auth (required)
273287
}

Diff for: src/spaceone/dashboard/service/private_folder_service.py

+12-1
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ def create(
4040
'tags': 'dict',
4141
'dashboards': 'list',
4242
'workspace_id': 'str',
43+
'project_group_id': 'str',
4344
'user_id': 'str', # injected from auth (required)
4445
'domain_id': 'str' # injected from auth (required)
4546
}
@@ -148,7 +149,16 @@ def get(
148149
permission="dashboard:PrivateFolder.read",
149150
role_types=["USER"],
150151
)
151-
@append_query_filter(["folder_id", "name", "domain_id", "workspace_id", "user_id"])
152+
@append_query_filter(
153+
[
154+
"folder_id",
155+
"name",
156+
"domain_id",
157+
"workspace_id",
158+
"project_group_id",
159+
"user_id",
160+
]
161+
)
152162
@append_keyword_filter(["folder_id", "name"])
153163
@convert_model
154164
def list(
@@ -162,6 +172,7 @@ def list(
162172
'folder_id': 'str',
163173
'name': 'str',
164174
'user_id': 'str', # injected from auth (required)
175+
'project_group_id': 'str',
165176
'workspace_id': 'str',
166177
'domain_id': 'str', # injected from auth (required)
167178
}

Diff for: src/spaceone/dashboard/service/public_dashboard_service.py

+9
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ def create(
5353
'folder_id': 'str',
5454
'resource_group': 'str', # required
5555
'project_id': 'str',
56+
'project_group_id': 'str',
5657
'workspace_id': 'str', # injected from auth
5758
'domain_id': 'str' # injected from auth (required)
5859
}
@@ -70,6 +71,7 @@ def create_dashboard(self, params_dict: dict) -> dict:
7071
domain_id = params_dict["domain_id"]
7172
workspace_id = params_dict.get("workspace_id")
7273
user_projects = params_dict.get("user_projects")
74+
project_group_id = params_dict.get("project_group_id")
7375

7476
layouts = params_dict.get("layouts")
7577
if layouts:
@@ -88,6 +90,10 @@ def create_dashboard(self, params_dict: dict) -> dict:
8890
params_dict["project_id"] = "*"
8991
else:
9092
raise ERROR_REQUIRED_PARAMETER(key="workspace_id")
93+
94+
if project_group_id:
95+
self.identity_mgr.check_project_group(project_group_id)
96+
params_dict["project_group_id"] = project_group_id
9197
else:
9298
params_dict["workspace_id"] = "-"
9399
params_dict["project_id"] = "-"
@@ -100,6 +106,7 @@ def create_dashboard(self, params_dict: dict) -> dict:
100106
workspace_id,
101107
user_projects,
102108
resource_group,
109+
project_group_id,
103110
)
104111

105112
pub_dashboard_vo = self.pub_dashboard_mgr.create_public_dashboard(params_dict)
@@ -533,6 +540,7 @@ def get(
533540
"domain_id",
534541
"workspace_id",
535542
"project_id",
543+
"project_group_id",
536544
"folder_id",
537545
"user_projects",
538546
]
@@ -551,6 +559,7 @@ def list(
551559
'name': 'str',
552560
'folder_id': 'str',
553561
'project_id': 'str',
562+
'project_group_id': 'str',
554563
'workspace_id': 'str', # injected from auth
555564
'domain_id': 'str', # injected from auth (required)
556565
'user_projects': 'list', # injected from auth

Diff for: src/spaceone/dashboard/service/public_folder_service.py

+3
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ def create(
4343
'dashboards': 'list',
4444
'resource_group': 'str', # required
4545
'project_id': 'str',
46+
'project_group_id': 'str',
4647
'workspace_id': 'str', # injected from auth
4748
'domain_id': 'str' # injected from auth (required)
4849
}
@@ -324,6 +325,7 @@ def get(self, params: PublicFolderGetRequest) -> Union[PublicFolderResponse, dic
324325
"domain_id",
325326
"workspace_id",
326327
"project_id",
328+
"project_group_id",
327329
"user_projects",
328330
]
329331
)
@@ -340,6 +342,7 @@ def list(
340342
'folder_id': 'str',
341343
'name': 'str',
342344
'project_id': 'str',
345+
'project_group_id': 'str',
343346
'workspace_id': 'str', # injected from auth
344347
'domain_id': 'str', # injected from auth (required)
345348
'user_projects': 'list', # injected from auth

0 commit comments

Comments
 (0)