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
Example #3
0
 def set_names(self, create, extracted):
     parsed = impute_names_model(self.fullname)
     for key, value in parsed.items():
         setattr(self, key, value)
Example #4
0
 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()