@@ -88,6 +88,8 @@ def project_metadata(self) -> dict:
8888 start_dates = []
8989 end_dates = []
9090 team_members_dict = {}
91+ project_officer_dict = {}
92+ alternate_project_officer_dict = {}
9193 division_directors_set = set ()
9294
9395 for agreement in self .agreements :
@@ -101,7 +103,7 @@ def project_metadata(self) -> dict:
101103 team_members_dict [team_member .id ] = team_member
102104
103105 # Collect division directors
104- for director in agreement .division_directors :
106+ for director in agreement .division_director_user_list :
105107 division_directors_set .add (director )
106108
107109 # Collect all services_component dates
@@ -110,13 +112,37 @@ def project_metadata(self) -> dict:
110112 start_dates .append (sc .period_start )
111113 if sc .period_end is not None :
112114 end_dates .append (sc .period_end )
115+ # Collect all project officers
116+ if agreement .project_officer is not None :
117+ project_officer_dict [agreement .project_officer .id ] = (
118+ agreement .project_officer .full_name
119+ if agreement .project_officer .full_name
120+ else agreement .project_officer .email
121+ )
122+ # Collect all alternate project officers
123+ if agreement .alternate_project_officer is not None :
124+ alternate_project_officer_dict [agreement .alternate_project_officer .id ] = (
125+ agreement .alternate_project_officer .full_name
126+ if agreement .alternate_project_officer .full_name
127+ else agreement .alternate_project_officer .email
128+ )
113129 return {
114130 "special_topics" : sorted (list (special_topics_set )),
115131 "research_methodologies" : sorted (list (research_methodologies_set )),
116132 "project_start" : min (start_dates ) if start_dates else None ,
117133 "project_end" : max (end_dates ) if end_dates else None ,
118134 "team_members" : sorted (team_members_dict .values (), key = lambda x : x .full_name if x .full_name else x .email ),
119- "division_directors" : sorted (list (division_directors_set )),
135+ "division_directors" : sorted (
136+ [{"id" : d .id , "name" : d .full_name if d .full_name else d .email } for d in division_directors_set ],
137+ key = lambda x : x ["name" ],
138+ ),
139+ "project_officers" : sorted (
140+ [{"id" : user_id , "name" : name } for user_id , name in project_officer_dict .items ()], key = lambda x : x ["name" ]
141+ ),
142+ "alternate_project_officers" : sorted (
143+ [{"id" : user_id , "name" : name } for user_id , name in alternate_project_officer_dict .items ()],
144+ key = lambda x : x ["name" ],
145+ ),
120146 }
121147
122148 @property
0 commit comments