@@ -291,16 +291,14 @@ def get_projects(
291291 return
292292 projects_by_name = {p ["name" ]: p for p in projects }
293293
294- for project in self .get_rest_projects (active , library ):
294+ for project in self .get_rest_projects (active = active , library = library ):
295+ if own_attributes :
296+ fill_own_attribs (project )
297+
295298 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 ]
299+ graphql_project = projects_by_name .get (name )
300+ self ._merge_project_graphql_data (project , graphql_project )
301+
304302 yield project
305303
306304 def get_project (
@@ -342,13 +340,9 @@ def get_project(
342340 project = self .get_rest_project (project_name )
343341 if own_attributes :
344342 fill_own_attribs (project )
345- if graphql_project :
346- for key in (
347- "productTypes" ,
348- "usedTags" ,
349- ):
350- if key in graphql_project :
351- project [key ] = graphql_project [key ]
343+
344+ self ._merge_project_graphql_data (project , graphql_project )
345+
352346 return project
353347
354348 def create_project (
@@ -818,6 +812,25 @@ def _get_graphql_projects(
818812 self ._fill_project_entity_data (project )
819813 yield project
820814
815+ def _merge_project_graphql_data (
816+ self ,
817+ rest_project : dict [str , Any ],
818+ graphql_project : Optional [dict [str , Any ]],
819+ ) -> None :
820+ if not graphql_project :
821+ return
822+
823+ for key , value in graphql_project .items ():
824+ if (
825+ key not in rest_project
826+ or key in (
827+ "productBaseTypes" ,
828+ "productTypes" ,
829+ "usedTags" ,
830+ )
831+ ):
832+ rest_project [key ] = value
833+
821834 def _get_project_roots_values (
822835 self ,
823836 project_name : str ,
0 commit comments