Skip to content
This repository has been archived by the owner on Jan 19, 2021. It is now read-only.

Bug 1030673 - [groups] Group page should list common skills among group members #1043

Closed
wants to merge 18 commits into from
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 14 additions & 4 deletions mozillians/groups/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
from django.conf import settings
from django.contrib import messages
from django.core.paginator import EmptyPage, Paginator, PageNotAnInteger
from django.db.models import Q
from django.db.models import Count, Q
from django.http import HttpResponse, HttpResponseBadRequest, Http404
from django.shortcuts import get_object_or_404, redirect, render
from django.views.decorators.cache import cache_control, never_cache
Expand Down Expand Up @@ -143,9 +143,19 @@ def show(request, url, alias_model, template):

# Get the most globally popular skills that appear in the group
# Sort them with most members first.
skills = (Skill.objects
.filter(members__in=memberships.values_list('userprofile', flat=True))
.order_by('-member_count'))
# Bug 1030673:To get common skills, first group by skill_name and then
# order by skill_count and then skill_name.
# Get the UserProfile Id list.
skills = None
userprofile_id_list = UserProfile.objects.filter(groupmembership__in=memberships)
# Getting common skills_id among group and count of each skill_id across group
shared_skill_ids = userprofile_id_list.values_list('skills', flat=True).\
annotate(skill_count=Count('skills')).\
order_by('-skill_count', 'skills__name')
# If group doesn not have any skills then list will [None]
if shared_skill_ids and shared_skill_ids[0]:
# Create Skill object list from skill_id list
skills = [Skill.objects.get(id=skill_id) for skill_id in shared_skill_ids]
data.update(skills=skills, membership_filter_form=membership_filter_form)

page = request.GET.get('page', 1)
Expand Down