def connect(request):
    if request.GET.get("code"):
        code = request.GET.get("code")
        token = linkedin_api.get_auth_token(code, "http://%s/linkedin/connect" % request.get_host())
        profile_info = linkedin_api.get_profile(token, fields=["first-name", "last-name", "id", "headline", "picture-url", "email-address", "site-standard-profile-request"])
        logger.error(profile_info)

        user, created = models.UserProfile.objects.get_or_create(linkedin_id=profile_info['id'], oauth_code=code)
        user = auth.authenticate(username=str(user.linkedin_id), password="******")
        login(request, user)

        user.first_name = profile_info['firstName']

        if 'lastName' in profile_info:
            user.last_name = profile_info['lastName']

        if 'pictureUrl' in profile_info:
            user.picture_url = profile_info['pictureUrl']

        if 'emailAddress' in profile_info:
            user.email = profile_info['emailAddress']

        if 'headline' in profile_info:
            user.headline = profile_info['headline']

        if 'siteStandardProfileRequest' in profile_info:
            user.linkedin_profile_url = profile_info['siteStandardProfileRequest']['url']

        user.oauth_token = token
        user.oauth_code = code
        user.save()

        tasks.crawl_linkedin(user)

        if request.GET.get("next"):
            return HttpResponseRedirect(request.GET.get("next"))
        return HttpResponseRedirect('/db/profile/')
    else:
        return HttpResponse(status=404)
def crawl_linkedin(user):
    fields = ["id","first-name","last-name","headline","email-address","picture-url","positions"]
    json_data = linkedin_api.get_profile(user.oauth_token, fields)
    parse_user_data(user, json_data)