@@ -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