diff --git a/profiles/views.py b/profiles/views.py index 72e9cf1c3feeb787519537300eec7125821f0a5f..ac761c5566a8a18539b3e01c42b768d190fb4f35 100644 --- a/profiles/views.py +++ b/profiles/views.py @@ -228,7 +228,7 @@ class ProfileListView(PermissionsMixin, PaginationMixin, ListView): context.update({ 'subject_areas': SCIPOST_SUBJECT_AREAS, 'searchform': SearchTextForm(initial={'text': self.request.GET.get('text')}), - 'nr_contributors_w_duplicate_email': contributors_w_duplicate_email.count(), + 'nr_contributors_w_duplicate_emails': contributors_w_duplicate_email.count(), 'nr_contributors_w_duplicate_names': contributors_w_duplicate_names.count(), 'nr_contributors_wo_profile': contributors_wo_profile.count(), 'nr_potential_duplicate_profiles': nr_potential_duplicate_profiles, diff --git a/scipost/managers.py b/scipost/managers.py index 9037134c7b44dc6249cc28f4e8559799d9a2cee9..affd24618f5f2049250628f0c1afd0798e3b4568 100644 --- a/scipost/managers.py +++ b/scipost/managers.py @@ -58,20 +58,20 @@ class ContributorQuerySet(models.QuerySet): ).exclude(user__is_superuser=True).exclude(user__is_staff=True ).annotate(full_name=Concat('user__last_name', 'user__first_name')) duplicates = contribs.values('full_name').annotate( - nr_count=Count('full_name')).filter(nr_count__gt=1) - return contribs.filter(full_name__in=[item['full_name'] for item in duplicates] - ).order_by('user__last_name', 'user__first_name', '-id') + nr_count=Count('full_name')).filter(nr_count__gt=1).values_list('full_name', flat=True) + return contribs.filter( + full_name__in=duplicates).order_by('user__last_name', 'user__first_name', '-id') def with_duplicate_email(self): """ Return Contributors having duplicate emails. """ - duplicates = self.exclude(status=DOUBLE_ACCOUNT - ).exclude(user__is_superuser=True).exclude(user__is_staff=True - ).values(lower_email=Lower('user__email')).annotate( - Count('id')).order_by('user__last_name').filter(id__count__gt=1) - return self.annotate(lower_email=Lower('user__email') - ).filter(lower_email__in=[dup['lower_email'] for dup in duplicates]) + qs = self.exclude(status=DOUBLE_ACCOUNT + ).exclude(user__is_superuser=True).exclude( + user__is_staff=True).annotate(lower_email=Lower('user__email')) + duplicates = qs.values('lower_email').annotate( + Count('id')).filter(id__count__gt=1).values_list('lower_email', flat=True) + return qs.filter(user__email__in=duplicates) class UnavailabilityPeriodManager(models.Manager):