Skip to content

Commit 0a043cd

Browse files
authored
Merge pull request #313 from ynput/bugfix/projects-fetching-fixes
Projects: Fix fetching of projects
2 parents 88aa879 + 0fc6519 commit 0a043cd

2 files changed

Lines changed: 38 additions & 16 deletions

File tree

ayon_api/_api_helpers/base.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,11 @@ def get_user(
132132
) -> Optional[dict[str, Any]]:
133133
raise NotImplementedError()
134134

135+
def get_attributes_for_type(
136+
self, entity_type: AttributeScope
137+
) -> set[str]:
138+
raise NotImplementedError()
139+
135140
def get_attributes_fields_for_type(
136141
self, entity_type: AttributeScope
137142
) -> set[str]:

ayon_api/_api_helpers/projects.py

Lines changed: 33 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,9 @@ def get_rest_project(
162162
if response.status != 200:
163163
return None
164164
project = response.data
165+
attrib = project["attrib"]
166+
for attr_name in self.get_attributes_for_type("project"):
167+
attrib.setdefault(attr_name, None)
165168
self._fill_project_entity_data(project)
166169
return project
167170

@@ -291,16 +294,14 @@ def get_projects(
291294
return
292295
projects_by_name = {p["name"]: p for p in projects}
293296

294-
for project in self.get_rest_projects(active, library):
297+
for project in self.get_rest_projects(active=active, library=library):
298+
if own_attributes:
299+
fill_own_attribs(project)
300+
295301
name = project["name"]
296-
graphql_p = projects_by_name.get(name)
297-
if graphql_p:
298-
for key in (
299-
"productTypes",
300-
"usedTags",
301-
):
302-
if key in graphql_p:
303-
project[key] = graphql_p[key]
302+
graphql_project = projects_by_name.get(name)
303+
self._merge_project_graphql_data(project, graphql_project)
304+
304305
yield project
305306

306307
def get_project(
@@ -332,6 +333,7 @@ def get_project(
332333
graphql_project = next(self._get_graphql_projects(
333334
None,
334335
None,
336+
project_name=project_name,
335337
fields=graphql_fields,
336338
own_attributes=own_attributes,
337339
), None)
@@ -341,13 +343,9 @@ def get_project(
341343
project = self.get_rest_project(project_name)
342344
if own_attributes:
343345
fill_own_attribs(project)
344-
if graphql_project:
345-
for key in (
346-
"productTypes",
347-
"usedTags",
348-
):
349-
if key in graphql_project:
350-
project[key] = graphql_project[key]
346+
347+
self._merge_project_graphql_data(project, graphql_project)
348+
351349
return project
352350

353351
def create_project(
@@ -817,6 +815,25 @@ def _get_graphql_projects(
817815
self._fill_project_entity_data(project)
818816
yield project
819817

818+
def _merge_project_graphql_data(
819+
self,
820+
rest_project: dict[str, Any],
821+
graphql_project: Optional[dict[str, Any]],
822+
) -> None:
823+
if not graphql_project:
824+
return
825+
826+
for key, value in graphql_project.items():
827+
if (
828+
key not in rest_project
829+
or key in (
830+
"productBaseTypes",
831+
"productTypes",
832+
"usedTags",
833+
)
834+
):
835+
rest_project[key] = value
836+
820837
def _get_project_roots_values(
821838
self,
822839
project_name: str,

0 commit comments

Comments
 (0)