Ejemplo n.º 1
0
def searchmentee(request):
	# currently restricted to be used only by only used by coordinators or mentors
	# ASSUMPTION all mentees that are looking for projects is searchable (since mentees are not necessariy vouched and have not necessarily joined a group yet)
	
	role = findUserRole(request.user.email)	
	if role == "":
		return redirect('/entrance/register/', context_instance=RequestContext(request))
	if role == "mentee":
		return redirect('/matchmaker/myprojects', context_instance=RequestContext(request))

	project =""
	if request.method == 'POST':
		project = request.POST['project']
		
	if request.method == 'POST' and 'searchterm' in request.POST:
		searched = 1;
		form = SearchMenteeForm(request.POST)
		if form.is_valid():
			project = form.cleaned_data['project']
			searchterm = form.cleaned_data['searchterm']
			resultmenteeslist = Mentee.objects.filter(user_id__email__icontains=searchterm, is_looking=True)
			
			# advanced option: show mentees whose skills matches the projects' needs (warning, if user have not entered skills in mozillian, user will not be included in this search)
			if form.cleaned_data['matchskills']:
				projectskills = Project.objects.filter(pk=project)[0].skills_required
				
				#check each mentee to see if they have a single skill that matches one of the project's
				for mentee in resultmenteeslist:
					numskillsmatched = 0

					try:
						for skill in getMozillianSkillsByUser(mentee.user_id.email):
							print skill
							if projectskills.lower().find(skill.lower()) != -1:
								numskillsmatched = numskillsmatched + 1

						if numskillsmatched < 1:
							resultmenteeslist = resultmenteeslist.exclude(pk=mentee.pk)
					except Exception as e:
						error = "Skills from Mozillian currently not available. Showing search results not filtered by skills."
						return render_to_response('matchmaker/templates/menteefinder.html', {'resultmenteeslist': resultmenteeslist, 'form': form, 'searched': searched, 'error': error, 'project': project}, context_instance=RequestContext(request))		
			
			
			return render_to_response('matchmaker/templates/menteefinder.html', {'resultmenteeslist': resultmenteeslist, 'form': form, 'searched': searched, 'project': project}, context_instance=RequestContext(request))		
			
	if request.method =='POST' and 'selectedmentee' in request.POST:
		p = Project.objects.get(pk=request.POST['project'])
		m = Mentee.objects.get(user_id__email=request.POST['selectedmentee'])
		p.mentee_id = m
		p.save()
		return render_to_response('matchmaker/templates/menteefindersuccess.html', {'mentee': request.POST['selectedmentee'], 'project_name': p.project_name}, context_instance=RequestContext(request))		
	
	searched = 0;
	form = SearchMenteeForm(initial={'project': project})
	resultmenteeslist = Mentee.objects.filter(is_looking=True)
	return render_to_response('matchmaker/templates/menteefinder.html', {'resultmenteeslist': resultmenteeslist, 'form': form, 'searched': searched, 'project': project}, context_instance=RequestContext(request))
Ejemplo n.º 2
0
def searchmentee(request):
	# currently restricted to be used only by only used by coordinators or mentors
	# ASSUMPTION all mentees that are looking for projects is searchable (since mentees are not necessariy vouched and have not necessarily joined a group yet)
	
	role = findUserRole(request.user.email)	
	if role == "":
		return redirect('/entrance/register/', context_instance=RequestContext(request))
	if role == "mentee":
		return redirect('/matchmaker/myprojects', context_instance=RequestContext(request))

	project =""
	if request.method == 'POST':
		project = request.POST['project']
		
	if request.method == 'POST' and 'searchterm' in request.POST:
		searched = 1;
		form = SearchMenteeForm(request.POST)
		if form.is_valid():
			project = form.cleaned_data['project']
			searchterm = form.cleaned_data['searchterm']
			resultmenteeslist = Mentee.objects.filter(user_id__email__icontains=searchterm, is_looking=True)
			
			# advanced option: show mentees whose skills matches the projects' needs (warning, if user have not entered skills in mozillian, user will not be included in this search)
			if form.cleaned_data['matchskills']:
				projectskills = Project.objects.filter(pk=project)[0].skills_required
				
				#check each mentee to see if they have a single skill that matches one of the project's
				for mentee in resultmenteeslist:
					numskillsmatched = 0

					try:
						for skill in getMozillianSkillsByUser(mentee.user_id.email):
							print skill
							if projectskills.lower().find(skill.lower()) != -1:
								numskillsmatched = numskillsmatched + 1

						if numskillsmatched < 1:
							resultmenteeslist = resultmenteeslist.exclude(pk=mentee.pk)
					except Exception as e:
						error = "Skills from Mozillian currently not available. Showing search results not filtered by skills."
						return render_to_response('matchmaker/templates/menteefinder.html', {'resultmenteeslist': resultmenteeslist, 'form': form, 'searched': searched, 'error': error, 'project': project}, context_instance=RequestContext(request))		
			
			
			return render_to_response('matchmaker/templates/menteefinder.html', {'resultmenteeslist': resultmenteeslist, 'form': form, 'searched': searched, 'project': project}, context_instance=RequestContext(request))		
			
	if request.method =='POST' and 'selectedmentee' in request.POST:
		p = Project.objects.get(pk=request.POST['project'])
		m = Mentee.objects.get(user_id__email=request.POST['selectedmentee'])
		p.mentee_id = m
		p.save()
		return render_to_response('matchmaker/templates/menteefindersuccess.html', {'mentee': request.POST['selectedmentee'], 'project_name': p.project_name}, context_instance=RequestContext(request))		
	
	searched = 0;
	form = SearchMenteeForm(initial={'project': project})
	resultmenteeslist = Mentee.objects.filter(is_looking=True)
	return render_to_response('matchmaker/templates/menteefinder.html', {'resultmenteeslist': resultmenteeslist, 'form': form, 'searched': searched, 'project': project}, context_instance=RequestContext(request))
Ejemplo n.º 3
0
def searchproject(request):
    # ASSUMPTION: By default, everyone can search and see everyone else's project (unless advanced search options/filters are used)

    role = findUserRole(request.user.email)
    if role == "":
        return redirect('/entrance/register/',
                        context_instance=RequestContext(request))

    if request.method == 'POST':
        searched = 1
        form = SearchForm(request.POST)
        if form.is_valid():
            searchterm = form.cleaned_data['searchterm']

            if searchterm == '':
                resultprojectslist = Project.objects.all()
            else:
                resultprojectslist = Project.objects.filter(
                    Q(division_id__division_name__icontains=searchterm)
                    | Q(project_name__icontains=searchterm)
                    | Q(project_description__icontains=searchterm)
                    | Q(skills_required__icontains=searchterm)
                    | Q(parent_project_id__project_name__icontains=searchterm))

            divisionerror = ""
            skillserror = ""
            # advanced option: refine by if only in user's group (warning: if user is not in group, will return no results)
            if form.cleaned_data['mozilliangroups']:
                if role == 'coordinator':
                    division = findDivisionsCorrespondingCoordinator(
                        request.user.email)[0]
                    resultprojectslist = resultprojectslist.filter(
                        division_id=division.pk)
                else:
                    try:
                        userdivision = findDivisionsCorrespondingMentorMentee(
                            request.user.email)
                        resultprojectslist = resultprojectslist.filter(
                            division_id__in=[item.pk for item in userdivision])
                    except Exception as e:
                        divisionerror = "<li>Search result does not filter by divisions related to your Mozillian groups</li>"

            # advanced option: refine by showing non completed projects (default checked)
            if form.cleaned_data['noncompleted']:
                resultprojectslist = resultprojectslist.exclude(
                    project_status_id__status="completed")

            # advanced option: only matching user's skills (warning, if user have not entered skills in mozillian, will return no results)
            if form.cleaned_data['matchskills']:
                try:
                    filter = Q()
                    for skill in getMozillianSkillsByUser(request.user.email):
                        filter = filter | Q(skills_required__icontains=skill)

                    resultprojectslist = resultprojectslist.filter(filter)
                except Exception as e:
                    skillserror = "<li>Search result does not filter by your skills.</li>"

            print skillserror

            if divisionerror != "" or skillserror != "":
                error = "Mozillian is currently not available:<ul>"
                if divisionerror:
                    error = error + divisionerror
                if skillserror:
                    error = error + skillserror
                error = error + "</ul>"
                return render_to_response(
                    'matchmaker/templates/searchproject.html', {
                        'resultprojectslist': resultprojectslist,
                        'role': role,
                        'form': form,
                        'error': error,
                        'searched': searched
                    },
                    context_instance=RequestContext(request))

            return render_to_response(
                'matchmaker/templates/searchproject.html', {
                    'resultprojectslist': resultprojectslist,
                    'role': role,
                    'form': form,
                    'searched': searched
                },
                context_instance=RequestContext(request))

    searched = 0
    form = SearchForm()

    return render_to_response('matchmaker/templates/searchproject.html', {
        'form': form,
        'role': role,
        'searched': searched
    },
                              context_instance=RequestContext(request))
Ejemplo n.º 4
0
def searchmentor(request):
    # currently restricted to be used only by only used by coordinators
    role = findUserRole(request.user.email)
    if role == "":
        return redirect('/entrance/register/',
                        context_instance=RequestContext(request))
    if role != "coordinator":
        return redirect('/matchmaker/myprojects',
                        context_instance=RequestContext(request))

    project = ""
    searched = 0
    form = SearchMentorForm()
    resultmentorslist = Mentor.objects.none
    divisionmentorlist = Mentor.objects.none

    divisionslist = findDivisionsCorrespondingCoordinator(request.user.email)

    for division in divisionslist:
        try:
            divisionmentorlist = getVouchedMembersofDivision(division.pk)
        except Exception as e:
            error = "Unable to return list of mentors in the group relating to your division. Check if Mozillian is up."
            return render_to_response(
                'matchmaker/templates/mentorfinder.html', {
                    'resultmentorslist': resultmentorslist,
                    'form': form,
                    'error': error,
                    'searched': searched,
                    'project': project
                },
                context_instance=RequestContext(request))

    if request.method == 'POST':
        project = request.POST['project']

    if request.method == 'POST' and 'searchterm' in request.POST:
        searched = 1
        form = SearchMentorForm(request.POST)
        if form.is_valid():
            project = form.cleaned_data['project']
            searchterm = form.cleaned_data['searchterm']
            searchedmentorslist = Mentor.objects.filter(
                user_id__email__icontains=searchterm)

            # further filter based on only mentors that are in the coordinator's division
            resultmentorslist = searchedmentorslist.filter(
                pk__in=[item.pk for item in divisionmentorlist])

            # advanced option: show mentors whose skills matches the projects' needs (warning, if user have not entered skills in mozillian, user will not be included in this search)
            if form.cleaned_data['matchskills']:
                projectskills = Project.objects.filter(
                    pk=project)[0].skills_required

                #check each mentor to see if they have a single skill that matches one of the project's
                for mentor in resultmentorslist:
                    numskillsmatched = 0

                    mentorskills = getMozillianSkillsByUser(
                        mentor.user_id.email)
                    print mentorskills

                    try:
                        for skill in mentorskills:
                            if projectskills.lower().find(skill.lower()) != -1:
                                numskillsmatched = numskillsmatched + 1

                        if numskillsmatched < 1:
                            resultmentorslist = resultmentorslist.exclude(
                                pk=mentor.pk)
                    except Exception as e:
                        error = "Skills from Mozillian currently not available. Showing search results not filtered by skills."
                        return render_to_response(
                            'matchmaker/templates/mentorfinder.html', {
                                'resultmentorslist': resultmentorslist,
                                'form': form,
                                'searched': searched,
                                'error': error,
                                'project': project
                            },
                            context_instance=RequestContext(request))

            return render_to_response(
                'matchmaker/templates/mentorfinder.html', {
                    'resultmentorslist': resultmentorslist,
                    'form': form,
                    'searched': searched,
                    'project': project
                },
                context_instance=RequestContext(request))

    if request.method == 'POST' and 'selectedmentor' in request.POST:
        p = Project.objects.get(pk=request.POST['project'])
        m = Mentor.objects.get(user_id__email=request.POST['selectedmentor'])
        p.mentor_id = m
        p.save()
        return render_to_response(
            'matchmaker/templates/mentorfindersuccess.html', {
                'mentor': request.POST['selectedmentor'],
                'project_name': p.project_name
            },
            context_instance=RequestContext(request))

    searched = 0
    form = SearchMentorForm(initial={'project': project})

    resultmentorslist = divisionmentorlist

    return render_to_response('matchmaker/templates/mentorfinder.html', {
        'resultmentorslist': resultmentorslist,
        'form': form,
        'searched': searched,
        'project': project
    },
                              context_instance=RequestContext(request))
Ejemplo n.º 5
0
def searchproject(request):
	# ASSUMPTION: By default, everyone can search and see everyone else's project (unless advanced search options/filters are used)
	
	role = findUserRole(request.user.email)
	if role == "":
		return redirect('/entrance/register/', context_instance=RequestContext(request))

	
	if request.method == 'POST':
		searched = 1;
		form = SearchForm(request.POST)
		if form.is_valid():
			searchterm = form.cleaned_data['searchterm']

			if searchterm == '':
				resultprojectslist = Project.objects.all()		
			else:
				resultprojectslist = Project.objects.filter(Q(division_id__division_name__icontains=searchterm) | Q(project_name__icontains=searchterm) | Q(project_description__icontains=searchterm) | Q(skills_required__icontains=searchterm) | Q(parent_project_id__project_name__icontains=searchterm))
			
			divisionerror = "";
			skillserror = "";
			# advanced option: refine by if only in user's group (warning: if user is not in group, will return no results)
			if form.cleaned_data['mozilliangroups']:
				if role == 'coordinator':
					division = findDivisionsCorrespondingCoordinator(request.user.email)[0]
					resultprojectslist = resultprojectslist.filter(division_id = division.pk)
				else:
					try:
						userdivision = findDivisionsCorrespondingMentorMentee(request.user.email)		
						resultprojectslist = resultprojectslist.filter(division_id__in=[item.pk for item in userdivision])
					except Exception as e:
						divisionerror = "<li>Search result does not filter by divisions related to your Mozillian groups</li>"
			
			# advanced option: refine by showing non completed projects (default checked)
			if form.cleaned_data['noncompleted']:
				resultprojectslist = resultprojectslist.exclude(project_status_id__status = "completed")

			# advanced option: only matching user's skills (warning, if user have not entered skills in mozillian, will return no results)
			if form.cleaned_data['matchskills']:
				try:
					filter = Q()
					for skill in getMozillianSkillsByUser(request.user.email):
						filter	= filter | Q(skills_required__icontains = skill)
				
					resultprojectslist = resultprojectslist.filter(filter)
				except Exception as e:
					skillserror = "<li>Search result does not filter by your skills.</li>"
			
			print skillserror
			
			if divisionerror != "" or skillserror != "":
				error = "Mozillian is currently not available:<ul>"
				if divisionerror:
					error = error + divisionerror
				if skillserror:
					error = error + skillserror
				error = error + "</ul>"
				return render_to_response('matchmaker/templates/searchproject.html', {'resultprojectslist': resultprojectslist, 'role':role, 'form': form, 'error': error, 'searched': searched}, context_instance=RequestContext(request))
			
			
			return render_to_response('matchmaker/templates/searchproject.html', {'resultprojectslist': resultprojectslist, 'role':role, 'form': form, 'searched': searched}, context_instance=RequestContext(request))
			
			
	searched = 0;
	form = SearchForm()
	
	return render_to_response('matchmaker/templates/searchproject.html', {'form': form, 'role':role, 'searched': searched}, context_instance=RequestContext(request))
Ejemplo n.º 6
0
def searchmentor(request):
	# currently restricted to be used only by only used by coordinators
	role = findUserRole(request.user.email)	
	if role == "":
		return redirect('/entrance/register/', context_instance=RequestContext(request))
	if role != "coordinator":
		return redirect('/matchmaker/myprojects', context_instance=RequestContext(request))

	project = ""
	searched = 0
	form = SearchMentorForm()
	resultmentorslist = Mentor.objects.none
	divisionmentorlist = Mentor.objects.none
	
	divisionslist = findDivisionsCorrespondingCoordinator(request.user.email)
	
	for division in divisionslist:
		try:
			divisionmentorlist = getVouchedMembersofDivision(division.pk)
		except Exception as e:
			error = "Unable to return list of mentors in the group relating to your division. Check if Mozillian is up."
			return render_to_response('matchmaker/templates/mentorfinder.html', {'resultmentorslist': resultmentorslist, 'form': form, 'error': error, 'searched': searched, 'project': project}, context_instance=RequestContext(request))
			
	
	if request.method == 'POST':
		project = request.POST['project']
	
		
	if request.method == 'POST' and 'searchterm' in request.POST:
		searched = 1;
		form = SearchMentorForm(request.POST)
		if form.is_valid():
			project = form.cleaned_data['project']
			searchterm = form.cleaned_data['searchterm']
			searchedmentorslist = Mentor.objects.filter(user_id__email__icontains=searchterm)
					
			
			# further filter based on only mentors that are in the coordinator's division
			resultmentorslist = searchedmentorslist.filter(pk__in = [item.pk for item in divisionmentorlist])
			
			# advanced option: show mentors whose skills matches the projects' needs (warning, if user have not entered skills in mozillian, user will not be included in this search)
			if form.cleaned_data['matchskills']:
				projectskills = Project.objects.filter(pk=project)[0].skills_required
				
				#check each mentor to see if they have a single skill that matches one of the project's
				for mentor in resultmentorslist:
					numskillsmatched = 0
					
					mentorskills = getMozillianSkillsByUser(mentor.user_id.email)
					print mentorskills;

					try:
						for skill in mentorskills:
							if projectskills.lower().find(skill.lower()) != -1:
								numskillsmatched = numskillsmatched + 1

						if numskillsmatched < 1:
							resultmentorslist = resultmentorslist.exclude(pk=mentor.pk)
					except Exception as e:
						error = "Skills from Mozillian currently not available. Showing search results not filtered by skills."
						return render_to_response('matchmaker/templates/mentorfinder.html', {'resultmentorslist': resultmentorslist, 'form': form, 'searched': searched, 'error': error, 'project': project}, context_instance=RequestContext(request))	
			
			
			return render_to_response('matchmaker/templates/mentorfinder.html', {'resultmentorslist': resultmentorslist, 'form': form, 'searched': searched, 'project': project}, context_instance=RequestContext(request))		
			
	if request.method =='POST' and 'selectedmentor' in request.POST:
		p = Project.objects.get(pk=request.POST['project'])
		m = Mentor.objects.get(user_id__email=request.POST['selectedmentor'])
		p.mentor_id = m
		p.save()
		return render_to_response('matchmaker/templates/mentorfindersuccess.html', {'mentor': request.POST['selectedmentor'], 'project_name': p.project_name}, context_instance=RequestContext(request))		
	
	searched = 0;
	form = SearchMentorForm(initial={'project': project})

	resultmentorslist = divisionmentorlist
		
	return render_to_response('matchmaker/templates/mentorfinder.html', {'resultmentorslist': resultmentorslist, 'form': form, 'searched': searched, 'project': project}, context_instance=RequestContext(request))