@@ -26,18 +26,22 @@ class EditorialBoardMember(CommonControlField, ClusterableModel, Orderable):
2626 Journal , related_name = "editorial_board_member_journal" , null = True
2727 )
2828 researcher = models .ForeignKey (
29- NewResearcher , null = True , blank = True , related_name = "+" , on_delete = models .SET_NULL
29+ NewResearcher ,
30+ null = True ,
31+ blank = True ,
32+ related_name = "+" ,
33+ on_delete = models .SET_NULL ,
3034 )
3135 image = models .ForeignKey (
32- "wagtailimages.Image" ,
36+ "wagtailimages.Image" ,
3337 null = True ,
3438 blank = True ,
3539 on_delete = models .SET_NULL ,
3640 related_name = "+" ,
3741 help_text = _ ("Upload a profile photo of the editorial board member." ),
3842 )
3943 area = models .TextField (null = True , blank = True )
40-
44+
4145 # Manual input fields for creating/updating researcher data
4246 manual_given_names = models .CharField (
4347 _ ("Given names" ),
@@ -116,7 +120,7 @@ class EditorialBoardMember(CommonControlField, ClusterableModel, Orderable):
116120 null = True ,
117121 help_text = _ ("Enter email address" ),
118122 )
119-
123+
120124 class Meta :
121125 unique_together = [("journal" , "researcher" )]
122126 indexes = [
@@ -165,21 +169,30 @@ def __str__(self):
165169 if self .researcher :
166170 return f"{ self .researcher .fullname } { ', ' .join (self .role_names )} "
167171 elif self .manual_given_names or self .manual_last_name :
168- name = f"{ self .manual_given_names or '' } { self .manual_last_name or '' } " .strip ()
169- return f"{ name } { ', ' .join (self .role_names )} " if name else "Editorial Board Member"
172+ name = (
173+ f"{ self .manual_given_names or '' } { self .manual_last_name or '' } " .strip ()
174+ )
175+ return (
176+ f"{ name } { ', ' .join (self .role_names )} "
177+ if name
178+ else "Editorial Board Member"
179+ )
170180 return "Editorial Board Member"
171181
172182 @property
173183 def role_names (self ):
174184 return [
175185 role .role_name
176- for role in self .role_editorial_board .filter (role__role__isnull = False )
186+ for role in self .role_editorial_board .all ()
187+ if role .role_id is not None
177188 ]
178189
179190 @staticmethod
180191 def autocomplete_custom_queryset_filter (search_term ):
181- return EditorialBoardMember .objects .filter (researcher__fullname__icontains = search_term ).prefetch_related ("researcher" )
182-
192+ return EditorialBoardMember .objects .filter (
193+ researcher__fullname__icontains = search_term
194+ ).prefetch_related ("researcher" )
195+
183196 def autocomplete_label (self ):
184197 return str (self )
185198
@@ -194,8 +207,10 @@ def _get(
194207 researcher = researcher ,
195208 )
196209 if researcher and journal :
197- return cls .objects .get (** params )
198- raise ValueError ("EditorialBoardMember._get requires journal and researcher and role" )
210+ return cls .objects .get (** params )
211+ raise ValueError (
212+ "EditorialBoardMember._get requires journal and researcher and role"
213+ )
199214
200215 @classmethod
201216 def _create (
@@ -214,21 +229,25 @@ def _create(
214229 return obj
215230 except IntegrityError :
216231 return cls ._get (journal , researcher )
217- raise ValueError ("EditorialBoardMember._create requires journal and researcher and role" )
232+ raise ValueError (
233+ "EditorialBoardMember._create requires journal and researcher and role"
234+ )
218235
219236 @classmethod
220237 def _create_or_update (
221238 cls ,
222239 user ,
223240 journal ,
224- researcher ,
241+ researcher ,
225242 ):
226243 if researcher and journal :
227244 try :
228245 return cls ._get (journal , researcher )
229246 except cls .DoesNotExist :
230247 return cls ._create (user , journal , researcher )
231- raise ValueError ("EditorialBoardMember._create requires journal and researcher and journal" )
248+ raise ValueError (
249+ "EditorialBoardMember._create requires journal and researcher and journal"
250+ )
232251
233252 @classmethod
234253 def create_or_update (
@@ -241,7 +260,7 @@ def create_or_update(
241260 editorial_board_initial_year = None ,
242261 editorial_board_final_year = None ,
243262 ):
244-
263+
245264 role = None
246265 if std_role or declared_role :
247266 role = RoleModel .create_or_update (
@@ -275,18 +294,21 @@ def _get_journal(journal_title):
275294 @classmethod
276295 def get_editorial_board_with_role (cls , journal ):
277296 editorial_board_by_latest_role = {}
278- editorial_board_members = cls .objects .filter (journal = journal ) \
279- .prefetch_related (
280- "role_editorial_board" ,
281- "researcher__orcid" ,
282- "researcher__affiliation__location"
283- )
297+ editorial_board_members = cls .objects .filter (journal = journal ).prefetch_related (
298+ "role_editorial_board" ,
299+ "researcher__orcid" ,
300+ "researcher__affiliation__location" ,
301+ )
284302 for member in editorial_board_members :
285- member_role = member .role_editorial_board .filter (
286- role__role__std_role__isnull = False
287- ).order_by ("-initial_year" ).first ()
303+ member_role = (
304+ member .role_editorial_board .filter (role__std_role__isnull = False )
305+ .order_by ("-initial_year" )
306+ .first ()
307+ )
288308 researcher = member .researcher
289- editorial_board_by_latest_role [member_role .role_name ].append (researcher .data )
309+ editorial_board_by_latest_role [member_role .role_name ].append (
310+ researcher .data
311+ )
290312 return editorial_board_by_latest_role
291313
292314
@@ -323,7 +345,7 @@ def get(
323345 role ,
324346 initial_year ,
325347 final_year ,
326- ):
348+ ):
327349 params = dict (
328350 editorial_board = editorial_board_member ,
329351 role = role ,
@@ -332,16 +354,18 @@ def get(
332354 )
333355 if editorial_board_member and role :
334356 return cls .objects .get (** params )
335- raise ValueError ("RoleEditorialBoard.get requires editorial_board_member and role" )
336-
357+ raise ValueError (
358+ "RoleEditorialBoard.get requires editorial_board_member and role"
359+ )
360+
337361 @classmethod
338362 def create (
339363 cls ,
340364 editorial_board_member ,
341365 role ,
342366 initial_year ,
343367 final_year ,
344- ):
368+ ):
345369 obj = cls ()
346370 obj .editorial_board = editorial_board_member
347371 obj .role = role
@@ -357,7 +381,7 @@ def create_or_update(
357381 role ,
358382 initial_year ,
359383 final_year ,
360- ):
384+ ):
361385 try :
362386 return cls .get (editorial_board_member , role , initial_year , final_year )
363387 except cls .DoesNotExist :
@@ -469,7 +493,7 @@ def _create(
469493 obj .std_role = std_role
470494 obj .save ()
471495 return obj
472- except IntegrityError as e :
496+ except IntegrityError :
473497 return cls .objects .get (declared_role = declared_role , std_role = std_role )
474498
475499 raise ValueError ("RoleModel.create requires declared_role or std_role" )
0 commit comments