def get_contact_data_from_profile(self, profile):
        trimmed_tags = ""

        if profile.specialties is not None:
            tags_list = profile.specialties.replace("(",
                                                    "").replace(")",
                                                                "").split(",")
            trimmed_tag_list = []
            try:
                for tag in tags_list:
                    if not len(tag) > 50:
                        trimmed_tag_list.append(tag.strip().capitalize())
                trimmed_tags = ",".join(set(trimmed_tag_list))[0:511]
            except:
                trimmed_tags = ""

        note = "<h4>Summary</h4><p>%s</p><h4>Specialities</h4><p>%s</p>" % (
            profile.summary, profile.specialties)

        country_code = ""
        address_line_3 = ""

        if profile.location is not None:
            location_parts = profile.location.split(',')

            if len(location_parts) > 0:
                country = location_parts[-1].strip()

                country_code = COUNTRY_DICT.get(country, "")

                if len(location_parts) > 1:
                    address_line_3 = location_parts[-2]

        organization = ""
        role = ""

        if len(profile.positions) > 0:
            organization = profile.positions[0].company
            role = profile.positions[0].title

        contact_data = {
            'given_name': profile.first_name or "",
            'family_name': profile.last_name or "",
            'linked_in_url': profile.public_url,
            'note': note,
            'tags': trimmed_tags,
            'role': role or "",
            'organization': organization or "",
            'address_line_3': address_line_3,
            'country': country_code,
            'linked_in_approval': True,
        }

        return contact_data
    def get_contact_data_from_profile(self, profile):
        trimmed_tags = ""
        
        if profile.specialties is not None:
            tags_list = profile.specialties.replace("(","").replace(")","").split(",")
            trimmed_tag_list = []
            try:
                for tag in tags_list:
                    if not len(tag) > 50:
                        trimmed_tag_list.append(tag.strip().capitalize())
                trimmed_tags = ",".join(set(trimmed_tag_list))[0:511]
            except:
                trimmed_tags = ""

        note = "<h4>Summary</h4><p>%s</p><h4>Specialities</h4><p>%s</p>"%(profile.summary,profile.specialties)
        
        country_code = ""
        address_line_3 = ""
            
        if profile.location is not None:
            location_parts = profile.location.split(',')
            
            if len(location_parts) > 0:
                country = location_parts[-1].strip()
                
                country_code = COUNTRY_DICT.get(country, "")
                
                if len(location_parts) > 1:
                    address_line_3 = location_parts[-2]

        organization = ""
        role = ""

        if len(profile.positions) > 0:
            organization = profile.positions[0].company
            role = profile.positions[0].title

        contact_data = {
            'given_name':profile.first_name or "",
            'family_name':profile.last_name or "",
            'linked_in_url':profile.public_url,
            'note':note,
            'tags':trimmed_tags,
            'role':role or "",
            'organization':organization or "",
            'address_line_3':address_line_3,
            'country':country_code,
            'linked_in_approval':True,
        }
    
        return contact_data
Example #3
0
    def create_and_render_contact(self,  verifier, request_token, 
                                  request_token_secret):
        if self.api.accessToken(request_token=request_token, verifier=verifier,
                                request_token_secret=request_token_secret):
            fields = ["first-name", "last-name", "honors", "specialties",
                      "positions", "public-profile-url", "summary", "location",
                      "phone-numbers"]
            
            profile = self.api.GetProfile(fields=fields)

            trimmed_tags = ""
            
            if profile.specialties is not None:
                tags_list = profile.specialties.replace("(","").replace(")","").split(",")
                trimmed_tag_list = []
                try:
                    for tag in tags_list:
                        if not len(tag) > 50:
                            trimmed_tag_list.append(tag.strip().capitalize())
                    trimmed_tags = ",".join(set(trimmed_tag_list))[0:511]
                except:
                    trimmed_tags = ""
    
            note = "<h4>Summary</h4><p>%s</p><h4>Specialities</h4><p>%s</p>"%(profile.summary,profile.specialties)
            
            country_code = ""
            address_line_3 = ""
                
            if profile.location is not None:
                location_parts = profile.location.split(',')
                
                if len(location_parts) > 0:
                    country = location_parts[-1].strip()
                    
                    country_code = COUNTRY_DICT.get(country, "")
                    
                    if len(location_parts) > 1:
                        address_line_3 = location_parts[-2]

            organization = ""
            role = ""

            if len(profile.positions) > 0:
                organization = profile.positions[0].company
                role = profile.positions[0].title

            contact_data = {
                'given_name':profile.first_name or "",
                'family_name':profile.last_name or "",
                'linked_in_url':profile.public_url,
                'note':note,
                'tags':trimmed_tags,
                'role':role or "",
                'organization':organization or "",
                'address_line_3':address_line_3,
                'country':country_code,
                'linked_in_approval':True,
            }
            
            try:
                contact = Contact.objects.get(linked_in_url=profile.public_url)
                contact.given_name = contact_data['given_name']
                contact.family_name = contact_data['family_name']
                contact.linked_in_url = contact_data['linked_in_url']
                contact.note = contact_data['note']
                contact.tags = contact_data['tags']
                contact.role = contact_data['role']
                contact.organization = contact_data['organization']
                contact.address_line_3 = contact_data['address_line_3']
                contact.country = contact_data['country']
                contact.linked_in_approval = contact_data['linked_in_approval']
            except ObjectDoesNotExist:
                contact = Contact.objects.create(**contact_data)
            contact.save()
            cache.delete(request_token)
            extra_context = {
                'contact_url':contact.get_absolute_url()
            }
        
        return render_to_response('contactlist/closeme.html', extra_context)
Example #4
0
    def test_codes_exist_for_linked_in_country_names(self):
        linked_in_country_names = ["United States",
                "Afghanistan",
                "Aland Islands",
                "Albania",
                "Algeria",
                "American Samoa",
                "Andorra",
                "Angola",
                "Anguilla",
                "Antarctica",
                "Antigua and Barbuda",
                "Argentina",
                "Armenia",
                "Aruba",
                "Australia",
                "Austria",
                "Azerbaijan",
                "Bahamas",
                "Bahrain",
                "Bangladesh",
                "Barbados",
                "Belarus",
                "Belgium",
                "Belize",
                "Benin",
                "Bermuda",
                "Bhutan",
                "Bolivia",
                "Bosnia and Herzegovina",
                "Botswana",
                "Brazil",
                "British Indian Ocean Territory",
                "Brunei Darussalam",
                "Bulgaria",
                "Burkina Faso",
                "Burundi",
                "Cambodia",
                "Cameroon",
                "Canada",
                "Cape Verde",
#                "Caribbean Nations", No obvious match
                "Cayman Islands",
                "Central African Republic",
                "Chad",
                "Chile",
                "China",
                "Christmas Island",
                "Cocos (Keeling) Islands",
                "Colombia",
                "Comoros",
                "Congo",
                "Cook Islands",
                "Costa Rica",
                "Cote D'Ivoire (Ivory Coast)",
                "Croatia",
                "Cuba",
                "Cyprus",
                "Czech Republic",
                "Democratic Republic of the Congo",
                "Denmark",
                "Djibouti",
                "Dominica",
                "Dominican Republic",
                "East Timor",
                "Ecuador",
                "Egypt",
                "El Salvador",
                "Equatorial Guinea",
                "Eritrea",
                "Estonia",
                "Ethiopia",
                "Falkland Islands (Malvinas)",
                "Faroe Islands",
                "Federated States of Micronesia",
                "Fiji",
                "Finland",
                "France",
                "French Guiana",
                "French Polynesia",
                "French Southern Territories",
                "Gabon",
                "Gambia",
                "Georgia",
                "Germany",
                "Ghana",
                "Gibraltar",
                "Greece",
                "Greenland",
                "Grenada",
                "Guadeloupe",
                "Guam",
                "Guatemala",
                "Guernsey",
                "Guinea",
                "Guinea-Bissau",
                "Guyana",
                "Haiti",
                "Honduras",
                "Hong Kong",
                "Hungary",
                "Iceland",
                "India",
                "Indonesia",
                "Iran",
                "Iraq",
                "Ireland",
                "Isle of Man",
                "Israel",
                "Italy",
                "Jamaica",
                "Japan",
                "Jersey",
                "Jordan",
                "Kazakhstan",
                "Kenya",
                "Kiribati",
                "Korea",
                "Korea (North)",
                "Kuwait",
                "Kyrgyzstan",
                "Laos",
                "Latvia",
                "Lebanon",
                "Lesotho",
                "Liberia",
                "Libya",
                "Liechtenstein",
                "Lithuania",
                "Luxembourg",
                "Macao",
                "Macedonia",
                "Madagascar",
                "Malawi",
                "Malaysia",
                "Maldives",
                "Mali",
                "Malta",
                "Marshall Islands",
                "Martinique",
                "Mauritania",
                "Mauritius",
                "Mayotte",
                "Mexico",
                "Moldova",
                "Monaco",
                "Mongolia",
                "Montenegro",
                "Montserrat",
                "Morocco",
                "Mozambique",
                "Myanmar",
                "Namibia",
                "Nauru",
                "Nepal",
                "Netherlands",
                "Netherlands Antilles",
                "New Caledonia",
                "New Zealand",
                "Nicaragua",
                "Niger",
                "Nigeria",
                "Niue",
                "Norfolk Island",
                "Northern Mariana Islands",
                "Norway",
                "Oman",
                "Pakistan",
                "Palau",
                "Palestinian Territory",
                "Panama",
                "Papua New Guinea",
                "Paraguay",
                "Peru",
                "Philippines",
                "Pitcairn",
                "Poland",
                "Portugal",
                "Puerto Rico",
                "Qatar",
                "Reunion",
                "Romania",
                "Russian Federation",
                "Rwanda",
                "Saint Helena",
                "Saint Kitts and Nevis",
                "Saint Lucia",
                "Saint Pierre and Miquelon",
                "Saint Vincent and the Grenadines",
                "Samoa",
                "San Marino",
                "Sao Tome and Principe",
                "Saudi Arabia",
                "Senegal",
                "Serbia",
                "Seychelles",
                "Sierra Leone",
                "Singapore",
                "Slovak Republic",
                "Slovenia",
                "Solomon Islands",
                "Somalia",
                "South Africa",
                "Spain",
                "Sri Lanka",
                "Sudan",
                "Suriname",
                "Svalbard and Jan Mayen",
                "Swaziland",
                "Sweden",
                "Switzerland",
                "Syria",
                "Taiwan",
                "Tajikistan",
                "Tanzania",
                "Thailand",
                "Timor-Leste",
                "Togo",
                "Tokelau",
                "Tonga",
                "Trinidad and Tobago",
                "Tunisia",
                "Turkey",
                "Turkmenistan",
                "Turks and Caicos Islands",
                "Tuvalu",
                "Uganda",
                "Ukraine",
                "United Arab Emirates",
                "United Kingdom",
                "Uruguay",
                "Uzbekistan",
                "Vanuatu",
                "Vatican City State (Holy See)",
                "Venezuela",
                "Vietnam",
                "Virgin Islands (British)",
                "Virgin Islands (U.S.)",
                "Wallis and Futuna",
                "Western Sahara",
                "Yemen",
                "Zambia",
                "Zimbabwe"]

        mismatched_countries = []
        mismatched_codes = []

        for country_name in linked_in_country_names:
            country_code = COUNTRY_DICT.get(country_name)
            
            if country_code is None:
                mismatched_countries.append(country_name)
            else:
                if self.get_country_name_from_code(country_code) is None:
                    mismatched_codes.append(country_code)
            
        self.assertEquals(0, len(mismatched_countries), mismatched_countries)
        self.assertEquals(0, len(mismatched_codes), mismatched_codes)        
    def test_codes_exist_for_linked_in_country_names(self):
        linked_in_country_names = [
            "United States",
            "Afghanistan",
            "Aland Islands",
            "Albania",
            "Algeria",
            "American Samoa",
            "Andorra",
            "Angola",
            "Anguilla",
            "Antarctica",
            "Antigua and Barbuda",
            "Argentina",
            "Armenia",
            "Aruba",
            "Australia",
            "Austria",
            "Azerbaijan",
            "Bahamas",
            "Bahrain",
            "Bangladesh",
            "Barbados",
            "Belarus",
            "Belgium",
            "Belize",
            "Benin",
            "Bermuda",
            "Bhutan",
            "Bolivia",
            "Bosnia and Herzegovina",
            "Botswana",
            "Brazil",
            "British Indian Ocean Territory",
            "Brunei Darussalam",
            "Bulgaria",
            "Burkina Faso",
            "Burundi",
            "Cambodia",
            "Cameroon",
            "Canada",
            "Cape Verde",
            #                "Caribbean Nations", No obvious match
            "Cayman Islands",
            "Central African Republic",
            "Chad",
            "Chile",
            "China",
            "Christmas Island",
            "Cocos (Keeling) Islands",
            "Colombia",
            "Comoros",
            "Congo",
            "Cook Islands",
            "Costa Rica",
            "Cote D'Ivoire (Ivory Coast)",
            "Croatia",
            "Cuba",
            "Cyprus",
            "Czech Republic",
            "Democratic Republic of the Congo",
            "Denmark",
            "Djibouti",
            "Dominica",
            "Dominican Republic",
            "East Timor",
            "Ecuador",
            "Egypt",
            "El Salvador",
            "Equatorial Guinea",
            "Eritrea",
            "Estonia",
            "Ethiopia",
            "Falkland Islands (Malvinas)",
            "Faroe Islands",
            "Federated States of Micronesia",
            "Fiji",
            "Finland",
            "France",
            "French Guiana",
            "French Polynesia",
            "French Southern Territories",
            "Gabon",
            "Gambia",
            "Georgia",
            "Germany",
            "Ghana",
            "Gibraltar",
            "Greece",
            "Greenland",
            "Grenada",
            "Guadeloupe",
            "Guam",
            "Guatemala",
            "Guernsey",
            "Guinea",
            "Guinea-Bissau",
            "Guyana",
            "Haiti",
            "Honduras",
            "Hong Kong",
            "Hungary",
            "Iceland",
            "India",
            "Indonesia",
            "Iran",
            "Iraq",
            "Ireland",
            "Isle of Man",
            "Israel",
            "Italy",
            "Jamaica",
            "Japan",
            "Jersey",
            "Jordan",
            "Kazakhstan",
            "Kenya",
            "Kiribati",
            "Korea",
            "Korea (North)",
            "Kuwait",
            "Kyrgyzstan",
            "Laos",
            "Latvia",
            "Lebanon",
            "Lesotho",
            "Liberia",
            "Libya",
            "Liechtenstein",
            "Lithuania",
            "Luxembourg",
            "Macao",
            "Macedonia",
            "Madagascar",
            "Malawi",
            "Malaysia",
            "Maldives",
            "Mali",
            "Malta",
            "Marshall Islands",
            "Martinique",
            "Mauritania",
            "Mauritius",
            "Mayotte",
            "Mexico",
            "Moldova",
            "Monaco",
            "Mongolia",
            "Montenegro",
            "Montserrat",
            "Morocco",
            "Mozambique",
            "Myanmar",
            "Namibia",
            "Nauru",
            "Nepal",
            "Netherlands",
            "Netherlands Antilles",
            "New Caledonia",
            "New Zealand",
            "Nicaragua",
            "Niger",
            "Nigeria",
            "Niue",
            "Norfolk Island",
            "Northern Mariana Islands",
            "Norway",
            "Oman",
            "Pakistan",
            "Palau",
            "Palestinian Territory",
            "Panama",
            "Papua New Guinea",
            "Paraguay",
            "Peru",
            "Philippines",
            "Pitcairn",
            "Poland",
            "Portugal",
            "Puerto Rico",
            "Qatar",
            "Reunion",
            "Romania",
            "Russian Federation",
            "Rwanda",
            "Saint Helena",
            "Saint Kitts and Nevis",
            "Saint Lucia",
            "Saint Pierre and Miquelon",
            "Saint Vincent and the Grenadines",
            "Samoa",
            "San Marino",
            "Sao Tome and Principe",
            "Saudi Arabia",
            "Senegal",
            "Serbia",
            "Seychelles",
            "Sierra Leone",
            "Singapore",
            "Slovak Republic",
            "Slovenia",
            "Solomon Islands",
            "Somalia",
            "South Africa",
            "Spain",
            "Sri Lanka",
            "Sudan",
            "Suriname",
            "Svalbard and Jan Mayen",
            "Swaziland",
            "Sweden",
            "Switzerland",
            "Syria",
            "Taiwan",
            "Tajikistan",
            "Tanzania",
            "Thailand",
            "Timor-Leste",
            "Togo",
            "Tokelau",
            "Tonga",
            "Trinidad and Tobago",
            "Tunisia",
            "Turkey",
            "Turkmenistan",
            "Turks and Caicos Islands",
            "Tuvalu",
            "Uganda",
            "Ukraine",
            "United Arab Emirates",
            "United Kingdom",
            "Uruguay",
            "Uzbekistan",
            "Vanuatu",
            "Vatican City State (Holy See)",
            "Venezuela",
            "Vietnam",
            "Virgin Islands (British)",
            "Virgin Islands (U.S.)",
            "Wallis and Futuna",
            "Western Sahara",
            "Yemen",
            "Zambia",
            "Zimbabwe"
        ]

        mismatched_countries = []
        mismatched_codes = []

        for country_name in linked_in_country_names:
            country_code = COUNTRY_DICT.get(country_name)

            if country_code is None:
                mismatched_countries.append(country_name)
            else:
                if self.get_country_name_from_code(country_code) is None:
                    mismatched_codes.append(country_code)

        self.assertEquals(0, len(mismatched_countries), mismatched_countries)
        self.assertEquals(0, len(mismatched_codes), mismatched_codes)
Example #6
0
def tag_search(request):
    query = None
    search = False
    api = linkedin.LinkedIn(*settings.LI_LIST)
    api.requestToken()
    if request.method == 'POST':
        form = SearchForm(request.POST)
        if form.is_valid():
            if form.cleaned_data.get('tags', False):
                string_tags = [tag.name for tag in form.cleaned_data.get('tags')]
                tag_string = " ".join(string_tags)
                search_term = "%s %s" % (form.cleaned_data['search_term'],
                                         tag_string)
            else:
                search_term = form.cleaned_data['search_term']
            if search_term.strip(' '):
                query = SearchQuerySet().auto_query(search_term)
                search = True
            else:
                form = SearchForm()
    elif request.method == 'GET':
        form = SearchForm()
        if request.GET.get('oauth_verifier',False) and request.GET.get('oauth_token',False):
            verifier = request.GET.get('oauth_verifier')
            request_token = request.GET.get('oauth_token')
            request_token_secret = cache.get(request_token)
            if not request_token_secret:
                return redirect('/contacts/')
            if api.accessToken(request_token=request_token,request_token_secret=request_token_secret,verifier=verifier):
                profile = api.GetProfile(fields=["first-name","last-name","honors","specialties","positions","public-profile-url","summary","location","phone-numbers"])
                tags_list = profile.specialties.replace("(","").replace(")","").split(",")
                trimmed_tag_list = []
                try:
                    for tag in tags_list:
                        if not len(tag) > 50:
                            trimmed_tag_list.append(tag.strip().capitalize())
                    trimmed_tags = ",".join(set(trimmed_tag_list))[0:511]
                except:
                    trimmed_tags = ""
                #assert False, trimmed_tags
                note = "<h4>Summary</h4><p>%s</p><h4>Specialities</h4><p>%s</p>"%(profile.summary,profile.specialties)
                contact_data = {
                    'given_name':profile.first_name,
                    'family_name':profile.last_name,
                    'linked_in_url':profile.public_url,
                    'note':note,
                    'tags':trimmed_tags,
                    'role':profile.positions[0].title,
                    'organization':profile.positions[0].company,
                    'address_line_1':profile.location.split(',')[0],
                    'country':COUNTRY_DICT.get(profile.location.split(',')[1],""),
                    'linked_in_approval':True,
                }
                try:
                    contact = Contact.objects.get(linked_in_url=profile.public_url)
                    contact.given_name = contact_data['given_name']
                    contact.family_name = contact_data['family_name']
                    contact.linked_in_url = contact_data['linked_in_url']
                    contact.note = contact_data['note']
                    contact.tags = contact_data['tags']
                    contact.role = contact_data['role']
                    contact.organization = contact_data['organization']
                    contact.address_line_1 = contact_data['address_line_1']
                    contact.country = contact_data['country']
                    contact.linked_in_approval = contact_data['linked_in_approval']
                except ObjectDoesNotExist:
                    contact = Contact.objects.create(**contact_data)
                contact.save()
                cache.delete(request_token)
                extra_context = {
                    'contact_url':contact.get_absolute_url()
                }

                return render_to_response('contactlist/closeme.html',extra_context)

        cache.set(api.request_token,api.request_token_secret,30*60)
    else:
        form = SearchForm()
    extra_context = {
        'auth_url':api.getAuthorizeURL(),
        'search':search,
        'query': query,
        'form': form,
    }

    return render_to_response('search/search_embedded.html', extra_context)
Example #7
0
def tag_search(request):
    query = None
    search = False
    api = linkedin.LinkedIn(*settings.LI_LIST)
    api.requestToken()
    if request.method == 'POST':
        form = SearchForm(request.POST)
        if form.is_valid():
            if form.cleaned_data.get('tags', False):
                string_tags = [
                    tag.name for tag in form.cleaned_data.get('tags')
                ]
                tag_string = " ".join(string_tags)
                search_term = "%s %s" % (form.cleaned_data['search_term'],
                                         tag_string)
            else:
                search_term = form.cleaned_data['search_term']
            if search_term.strip(' '):
                query = SearchQuerySet().auto_query(search_term)
                search = True
            else:
                form = SearchForm()
    elif request.method == 'GET':
        form = SearchForm()
        if request.GET.get('oauth_verifier', False) and request.GET.get(
                'oauth_token', False):
            verifier = request.GET.get('oauth_verifier')
            request_token = request.GET.get('oauth_token')
            request_token_secret = cache.get(request_token)
            if not request_token_secret:
                return redirect('/contacts/')
            if api.accessToken(request_token=request_token,
                               request_token_secret=request_token_secret,
                               verifier=verifier):
                profile = api.GetProfile(fields=[
                    "first-name", "last-name", "honors", "specialties",
                    "positions", "public-profile-url", "summary", "location",
                    "phone-numbers"
                ])
                tags_list = profile.specialties.replace("(", "").replace(
                    ")", "").split(",")
                trimmed_tag_list = []
                try:
                    for tag in tags_list:
                        if not len(tag) > 50:
                            trimmed_tag_list.append(tag.strip().capitalize())
                    trimmed_tags = ",".join(set(trimmed_tag_list))[0:511]
                except:
                    trimmed_tags = ""
                #assert False, trimmed_tags
                note = "<h4>Summary</h4><p>%s</p><h4>Specialities</h4><p>%s</p>" % (
                    profile.summary, profile.specialties)
                contact_data = {
                    'given_name': profile.first_name,
                    'family_name': profile.last_name,
                    'linked_in_url': profile.public_url,
                    'note': note,
                    'tags': trimmed_tags,
                    'role': profile.positions[0].title,
                    'organization': profile.positions[0].company,
                    'address_line_1': profile.location.split(',')[0],
                    'country':
                    COUNTRY_DICT.get(profile.location.split(',')[1], ""),
                    'linked_in_approval': True,
                }
                try:
                    contact = Contact.objects.get(
                        linked_in_url=profile.public_url)
                    contact.given_name = contact_data['given_name']
                    contact.family_name = contact_data['family_name']
                    contact.linked_in_url = contact_data['linked_in_url']
                    contact.note = contact_data['note']
                    contact.tags = contact_data['tags']
                    contact.role = contact_data['role']
                    contact.organization = contact_data['organization']
                    contact.address_line_1 = contact_data['address_line_1']
                    contact.country = contact_data['country']
                    contact.linked_in_approval = contact_data[
                        'linked_in_approval']
                except ObjectDoesNotExist:
                    contact = Contact.objects.create(**contact_data)
                contact.save()
                cache.delete(request_token)
                extra_context = {'contact_url': contact.get_absolute_url()}

                return render_to_response('contactlist/closeme.html',
                                          extra_context)

        cache.set(api.request_token, api.request_token_secret, 30 * 60)
    else:
        form = SearchForm()
    extra_context = {
        'auth_url': api.getAuthorizeURL(),
        'search': search,
        'query': query,
        'form': form,
    }

    return render_to_response('search/search_embedded.html', extra_context)