Exemplo n.º 1
0
def periodic_import_linkedin_contacts_for_user(user_id):
    """
    periodic task for import of linked in
    contacts for particular user with social profile.
    """
    user = User.objects.filter(id=user_id).first()
    if user and user.social_auth.first():
        logger.info('Importing contacts for %s' % user)
        contacts = linkedin.get_contacts(user)
        num_contacts = len(contacts)
        contacts = {c['id']: c for c in contacts if c['id'] != 'private'}
        contact_codes = set(contacts.keys())
        exists_contact_codes = set(ContactOwners.objects.filter(code__in=contact_codes, user=user)\
                                   .values_list('code', flat=True))
        contacts_diff = contact_codes - exists_contact_codes
        last_pct = 0
        logging.info(' - got %d contacts %d new of them for user "%s" to process' %
                     (num_contacts, len(contacts_diff), user.username))
        num_contacts = len(contacts_diff)
        for progress, contact_code in enumerate(contacts_diff):
            Contact.create(user, providers.LINKEDIN, already_checked=True, **contacts[contact_code])
            progress_pct = round((float(progress) / num_contacts) * 100)
            if progress_pct != last_pct and progress_pct % 20 == 0:
                logging.info('  -- processed %s%% of "%s" contacts' % (progress_pct, user.username))
                last_pct = progress_pct
        #clear old dependencies for e.g. if some contact changed his headline, for removing duplicates
        # Contact.objects.filter(codes__code__in=contact_codes, codes__user=user)
        ContactOwners.objects.filter(user=user).exclude(code__in=contact_codes).delete()
Exemplo n.º 2
0
def contacts_validation(backend, details, request, response, uid, user, social_user=None, *args, **kwargs):
    if not DEBUG:
        connections = get_contacts(tokens=response['access_token'])
        if connections is None or len(connections) < 10:
            raise StopPipeline
Exemplo n.º 3
0
def import_linkedin_contacts(user):
    print 'first time login linkedin import started'
    contacts = linkedin.get_contacts(user)
    for contact_data in contacts:
        Contact.create(user, providers.LINKEDIN, **contact_data)