Skip to content
This repository was archived by the owner on Nov 15, 2024. It is now read-only.
Merged
Show file tree
Hide file tree
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
10 changes: 8 additions & 2 deletions lms/djangoapps/onboarding/forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -658,7 +658,10 @@ def save(self, user=None, commit=True):
extended_profile = UserExtendedProfile.objects.create(user=user)

if not is_currently_unemployed and organization_name:
organization_to_assign, is_created = Organization.objects.get_or_create(label=organization_name)
organization_to_assign = Organization.objects.filter(label__iexact=organization_name).first()
if not organization_to_assign:
organization_to_assign = Organization.objects.create(label=organization_name)

extended_profile.organization = organization_to_assign

if organization_to_assign.users_count() == 0:
Expand Down Expand Up @@ -711,7 +714,10 @@ def save(self, user=None, commit=True):
extended_profile = UserExtendedProfile.objects.get(user=user)

if not is_currently_unemployed and organization_name:
organization_to_assign, is_created = Organization.objects.get_or_create(label=organization_name)
organization_to_assign = Organization.objects.filter(label__iexact=organization_name).first()
if not organization_to_assign:
organization_to_assign = Organization.objects.create(label=organization_name)

prev_org = extended_profile.organization
extended_profile.organization = organization_to_assign

Expand Down
38 changes: 35 additions & 3 deletions lms/djangoapps/onboarding/helpers.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
import operator
import re
from datetime import date

import collections
from difflib import SequenceMatcher
from lms.djangoapps.onboarding.models import Organization
from openedx.core.djangoapps.site_configuration import helpers as configuration_helpers

COUNTRIES = {
'AD': 'Andorra',
Expand Down Expand Up @@ -7827,3 +7828,34 @@ def oef_eligible_first_learner(user_extended_profile):
"""
return user_extended_profile.is_first_signup_in_org and not user_extended_profile.has_submitted_oef() \
and not user_extended_profile.organization.admin


def get_str_match_ratio(str1, str2):
""" Return matching percentage of two strings """
str1 = re.sub('[^A-Za-z0-9]+', '', str1)
str2 = re.sub('[^A-Za-z0-9]+', '', str2)
return SequenceMatcher(None, str1, str2).ratio()


def get_close_matching_orgs_with_suggestions(request, query):
"""find list of organizations which are very close to a searched string"""
data = {}

all_organizations = Organization.objects.all()
for organization in all_organizations:
match_ratio = get_str_match_ratio(query.lower(), organization.label.lower())
is_suggestion = True if re.match(query, organization.label, re.I) else False
is_matched = True if match_ratio >= configuration_helpers.get_value('org_search_ratio', 0) else False

if is_suggestion or is_matched:
data[organization.label.lower()] = {
'label': organization.label,
'is_admin_assigned': True if organization.admin else False,
'is_current_user_admin': True if organization.admin == request.user else False,
'admin_email': organization.admin.email if organization.admin else 'Administrator not assigned yet.',
'country': COUNTRIES.get(organization.country) if organization.country else '',
'is_matched': is_matched,
'is_suggestion': is_suggestion,
}

return data
28 changes: 10 additions & 18 deletions lms/djangoapps/onboarding/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
import logging
from datetime import datetime

import os
from django.conf import settings
from django.contrib import messages
from django.contrib.auth import logout
Expand All @@ -21,13 +20,14 @@
from django.shortcuts import render
from django.utils.translation import ugettext_lazy as _, ugettext_noop
from django.views.decorators.csrf import csrf_exempt
from path import Path as path

from edxmako.shortcuts import render_to_response
from lms.djangoapps.onboarding.decorators import can_save_org_data, can_not_update_onboarding_steps, \
can_save_org_details
from lms.djangoapps.onboarding.email_utils import send_admin_activation_email, send_admin_update_confirmation_email, send_admin_update_email
from lms.djangoapps.onboarding.helpers import calculate_age_years, COUNTRIES, LANGUAGES, oef_eligible_first_learner
from lms.djangoapps.onboarding.email_utils import send_admin_activation_email, send_admin_update_confirmation_email, \
send_admin_update_email
from lms.djangoapps.onboarding.helpers import calculate_age_years, COUNTRIES, LANGUAGES, oef_eligible_first_learner, \
get_close_matching_orgs_with_suggestions
from lms.djangoapps.onboarding.models import (
Organization,
Currency, OrganizationMetric, OrganizationAdminHashKeys, PartnerNetwork)
Expand Down Expand Up @@ -486,29 +486,21 @@ def get_organizations(request):
Get organizations
"""
final_result = {}
org_label = ''
admin_email = ''

if request.is_ajax():
query = request.GET.get('term', '')
all_organizations = Organization.objects.filter(label__istartswith=query)

for organization in all_organizations:
final_result[organization.label] = {
'is_admin_assigned': True if organization.admin else False,
'is_current_user_admin': True if organization.admin == request.user else False,
'admin_email': organization.admin.email if organization.admin else 'Administrator not assigned yet.'
}
final_result = get_close_matching_orgs_with_suggestions(request, query)

if request.user.is_authenticated():
user_extended_profile = request.user.extended_profile
organization = user_extended_profile.organization
org = user_extended_profile.organization

if organization:
if org:
_result = {
'org': organization.label,
'is_poc': True if organization.admin == request.user else False,
'admin_email': organization.admin.email if organization.admin else ''
'org': org.label,
'is_poc': True if org.admin == request.user else False,
'admin_email': org.admin.email if org.admin else ''
}
else:
_result = {
Expand Down