Ejemplo n.º 1
0
 def test(self):
     User.create(email='*****@*****.**')
     # no exception here as empty response expected
     data = {
         'event_name': 'Eventful 1',
         'created_at': int(time.time()),
         'email': '*****@*****.**'
     }
     Event.create(**data)
Ejemplo n.º 2
0
 def test(self):
     User.create(email='*****@*****.**')
     # no exception here as empty response expected
     data = {
         'event_name': 'Eventful 1',
         'created_at': int(time.time()),
         'email': '*****@*****.**'
     }
     Event.create(**data)
Ejemplo n.º 3
0
 def it_allows_update_last_request_at(self):
     payload = {
         'user_id': '1224242',
         'update_last_request_at': True,
         'custom_attributes': {}
     }
     with patch.object(Intercom, 'post', return_value=payload) as mock_method:
         User.create(user_id='1224242', update_last_request_at=True)
         mock_method.assert_called_once_with(
             '/users/', update_last_request_at=True, user_id='1224242')
Ejemplo n.º 4
0
 def it_allows_update_last_request_at(self):
     payload = {
         'user_id': '1224242',
         'update_last_request_at': True,
         'custom_attributes': {}
     }
     with patch.object(Intercom, 'post',
                       return_value=payload) as mock_method:
         User.create(user_id='1224242', update_last_request_at=True)
         mock_method.assert_called_once_with('/users/',
                                             update_last_request_at=True,
                                             user_id='1224242')
Ejemplo n.º 5
0
 def save(self, *args, **kwargs):
     """
     Save the object with the "deploying" status to the DB to get
     the ID, and use that in a celery deploy task
     """
     if not self.id:
         self.status = 'Deploying'
     super(Deployment, self).save(*args, **kwargs)
     if self.status == 'Deploying':
         deploy.delay(self)
         User.create(
             email=self.email
         )
Ejemplo n.º 6
0
 def it_can_use_user_create_for_convenience(self):
     payload = {
         'email': '*****@*****.**',
         'user_id': 'i-1224242',
         'custom_attributes': {}
     }
     with patch.object(Intercom, 'post', return_value=payload) as mock_method:  # noqa
         user = User.create(email="*****@*****.**", user_id="i-1224242")
         eq_(payload, user.to_dict)
         mock_method.assert_called_once_with('/users/', email="*****@*****.**", user_id="i-1224242")  # noqa
Ejemplo n.º 7
0
 def it_allows_setting_dates_to_none_without_converting_them_to_0(self):
     payload = {
         'email': '*****@*****.**',
         'custom_attributes': {},
         'remote_created_at': None
     }
     with patch.object(Intercom, 'post', return_value=payload) as mock_method:
         user = User.create(email="*****@*****.**", remote_created_at=None)
         ok_(user.remote_created_at is None)
         mock_method.assert_called_once_with('/users/', email="*****@*****.**", remote_created_at=None)  # noqa
Ejemplo n.º 8
0
 def it_updates_the_user_with_attributes_set_by_the_server(self):
     payload = {
         'email': '*****@*****.**',
         'user_id': 'i-1224242',
         'custom_attributes': {},
         'session_count': 4
     }
     with patch.object(Intercom, 'post', return_value=payload) as mock_method:
         user = User.create(email="*****@*****.**", user_id="i-1224242")
         eq_(payload, user.to_dict)
         mock_method.assert_called_once_with('/users/', email="*****@*****.**", user_id="i-1224242")  # noqa
Ejemplo n.º 9
0
def get_or_create_user(timestamp):
    # get user
    email = '*****@*****.**' % (timestamp)
    try:
        user = User.find(email=email)
    except ResourceNotFound:
        # Create a user
        user = User.create(email=email,
                           user_id=timestamp,
                           name="Ada %s" % (timestamp))
        time.sleep(5)
    return user
Ejemplo n.º 10
0
def get_or_create_user(timestamp):
    # get user
    email = '*****@*****.**' % (timestamp)
    try:
        user = User.find(email=email)
    except ResourceNotFound:
        # Create a user
        user = User.create(
            email=email,
            user_id=timestamp,
            name="Ada %s" % (timestamp))
        time.sleep(5)
    return user
Ejemplo n.º 11
0
 def it_allows_setting_dates_to_none_without_converting_them_to_0(self):
     payload = {
         'email': '*****@*****.**',
         'custom_attributes': {},
         'remote_created_at': None
     }
     with patch.object(Intercom, 'post',
                       return_value=payload) as mock_method:
         user = User.create(email="*****@*****.**", remote_created_at=None)
         ok_(user.remote_created_at is None)
         mock_method.assert_called_once_with('/users/',
                                             email="*****@*****.**",
                                             remote_created_at=None)  # noqa
Ejemplo n.º 12
0
 def it_can_use_user_create_for_convenience(self):
     payload = {
         'email': '*****@*****.**',
         'user_id': 'i-1224242',
         'custom_attributes': {}
     }
     with patch.object(Intercom, 'post',
                       return_value=payload) as mock_method:  # noqa
         user = User.create(email="*****@*****.**", user_id="i-1224242")
         eq_(payload, user.to_dict)
         mock_method.assert_called_once_with('/users/',
                                             email="*****@*****.**",
                                             user_id="i-1224242")  # noqa
Ejemplo n.º 13
0
 def it_updates_the_user_with_attributes_set_by_the_server(self):
     payload = {
         'email': '*****@*****.**',
         'user_id': 'i-1224242',
         'custom_attributes': {},
         'session_count': 4
     }
     with patch.object(Intercom, 'post',
                       return_value=payload) as mock_method:
         user = User.create(email="*****@*****.**", user_id="i-1224242")
         eq_(payload, user.to_dict)
         mock_method.assert_called_once_with('/users/',
                                             email="*****@*****.**",
                                             user_id="i-1224242")  # noqa
Ejemplo n.º 14
0
    def test(self):
        user = User.create(email='*****@*****.**')
        # store current session count
        session_count = user.session_count

        # register a new session
        user.new_session = True
        user.save()

        # count has increased by 1
        self.assertEquals(session_count + 1, user.session_count)

        # register a new session
        user.new_session = True
        user.save()

        # count has increased by 1
        self.assertEquals(session_count + 2, user.session_count)
Ejemplo n.º 15
0
    def test(self):
        user = User.create(email='*****@*****.**')
        # store current session count
        session_count = user.session_count

        # register a new session
        user.new_session = True
        user.save()

        # count has increased by 1
        self.assertEquals(session_count + 1, user.session_count)

        # register a new session
        user.new_session = True
        user.save()

        # count has increased by 1
        self.assertEquals(session_count + 2, user.session_count)
Ejemplo n.º 16
0
def export_users_batch(argv=sys.argv):
    if len(argv) < 2:
        usage(argv)
    config_uri = argv[1]
    options = parse_vars(argv[2:])
    setup_logging(config_uri)
    settings = get_appsettings(config_uri, options=options)
    engine = engine_from_config(settings, 'sqlalchemy.')
    DBSession.configure(bind=engine)

    create_attrs = {'name': 'nicename',
                    'email': 'email',
                    'contact_email': 'linkedin_email',
                    'phone': 'phone',
                    #'user_hash': 'get_hmac',
                    'created_at': 'create_timestamp',
                    'poc': 'point_of_contact',
                    'primary_type': 'primary_type',
                    'total_sent_messages': 'sent',
                    "total_connected_messages": 'connected',
                    "conversion_messages": 'ratio',
                    "Connect_Me-Accepted": 'connect_me_accept',
                    "Connect_Me-Sent": 'connect_me_sent',
                    "Connect_Me-Conv_Rate": 'connect_me_conv',
                    "Request_Meeting-Accepted": 'request_meeting_accept',
                    "Request_Meeting-Sent": 'request_meeting_sent',
                    "Request_Meeting-Conv_Rate": 'request_meeting_conv',
                    "Customer-To-Founder-Accepted": 'company_accept',
                    "Customer-To-Founder-Sent": 'company_sent',
                    "Customer-To-Founder-Conv_Rate": 'company_conv'
                    }
    not_custom_attrs = ['name', 'email', 'created_at']

    with transaction.manager:
        Intercom.app_id = Settings.get('intercom_id')
        Intercom.app_api_key = Settings.get('intercom_api_key')
        users = DBSession.query(User).filter(User.activated == True, User.login_enabled == True).all()
        print 'Rate limits', Intercom.rate_limit_details
        print 'Have %s users able to login, starting to update their info in intercom!' % len(users)
        for user in users:
            print 'processing user %s' % user.email
            try:
                intercom_user = IntercomUser.find(email=user.email)
            except:
                print 'created new user for intercom'
                intercom_user = IntercomUser.create(email=user.email)

            stats = user.get_connect_stats()

            changed = False
            for intercomattr, userattr in create_attrs.iteritems():
                val = stats.get(userattr, getattr(user, userattr, None))
                if hasattr(val, '__call__'):
                    val = val()
                if val is None:
                    continue
                changed = True
                if intercomattr in not_custom_attrs:
                    setattr(intercom_user, intercomattr, val)
                else:
                    intercom_user.custom_attributes[intercomattr] = val
            if user.company:
                intercom_user.companies = [{'id': user.company.id,
                                            'name': user.company.name}]
            intercom_user.custom_attributes['class_number'] = user.company.alchemistclass \
                if user.company else 'No class'

            if changed:
                print 'sending %s info' % user.email
                intercom_user.save()

            if Intercom.rate_limit_details.get('remaining', 0) <= 10:
                break
Ejemplo n.º 17
0
def create_intercom_profile(email):
    user = IntercomUser.create(email=email)
    return user