def get_contributors(self, obj): contributor_info = [] if is_anonymized(self.context['request']): return contributor_info contributor_data = obj.get('contributors', None) params_node = obj.get('node', None) if contributor_data: contributor_ids = [each for each in contributor_data if isinstance(each, basestring)] # Very old logs may contain contributror data with dictionaries for non-registered contributors, # e.g. {'nr_email': '*****@*****.**', 'nr_name': 'Foo Bar'} non_registered_contributor_data = [each for each in contributor_data if isinstance(each, dict)] users = ( OSFUser.objects.filter(guids___id__in=contributor_ids) .only( 'fullname', 'given_name', 'middle_names', 'family_name', 'unclaimed_records', 'is_active', ) .order_by('fullname') ) for user in users: unregistered_name = None if user.unclaimed_records.get(params_node): unregistered_name = user.unclaimed_records[params_node].get('name', None) contributor_info.append({ 'id': user._id, 'full_name': user.fullname, 'given_name': user.given_name, 'middle_names': user.middle_names, 'family_name': user.family_name, 'unregistered_name': unregistered_name, 'active': user.is_active, }) # Add unregistered contributor data for nr_contrib in non_registered_contributor_data: full_name = nr_contrib.get('nr_name', '') guessed_names = impute_names_model(full_name) contributor_info.append({ 'id': None, 'full_name': full_name, 'unregistered_name': full_name, 'given_name': guessed_names['given_name'], 'middle_names': guessed_names['middle_names'], 'family_name': guessed_names['family_name'], 'active': False, }) return contributor_info
def get_contributors(self, obj): contributor_info = [] if is_anonymized(self.context['request']): return contributor_info contributor_data = obj.get('contributors', None) params_node = obj.get('node', None) if contributor_data: contributor_ids = [each for each in contributor_data if isinstance(each, basestring)] # Very old logs may contain contributror data with dictionaries for non-registered contributors, # e.g. {'nr_email': '*****@*****.**', 'nr_name': 'Foo Bar'} non_registered_contributor_data = [each for each in contributor_data if isinstance(each, dict)] users = ( OSFUser.objects.filter(guids___id__in=contributor_ids) .only( 'fullname', 'given_name', 'middle_names', 'family_name', 'unclaimed_records', 'is_active', ) .order_by('fullname') ) for user in users: unregistered_name = None if user.unclaimed_records.get(params_node): unregistered_name = user.unclaimed_records[params_node].get('name', None) contributor_info.append({ 'id': user._id, 'full_name': user.fullname, 'given_name': user.given_name, 'middle_names': user.middle_names, 'family_name': user.family_name, 'unregistered_name': unregistered_name, 'active': user.is_active, }) # Add unregistered contributor data for nr_contrib in non_registered_contributor_data: full_name = nr_contrib.get('nr_name', '') guessed_names = impute_names_model(full_name) contributor_info.append({ 'id': None, 'full_name': full_name, 'unregistered_name': full_name, 'given_name': guessed_names['given_name'], 'middle_names': guessed_names['middle_names'], 'family_name': guessed_names['family_name'], 'active': False, }) return contributor_info
def set_names(self, create, extracted): parsed = impute_names_model(self.fullname) for key, value in parsed.items(): setattr(self, key, value)
def set_names(self, create, extracted): parsed = impute_names_model(self.fullname) for key, value in parsed.items(): setattr(self, key, value) if create: self.save()