Exemple #1
0
def get_or_create_company(timestamp):
    name = 'Company %s' % (timestamp)

    # get company
    try:
        company = Company.find(name=name)
    except ResourceNotFound:
        # Create a company
        company = Company.create(company_id=timestamp, name=name)
    return company
Exemple #2
0
 def test_update(self):
     # Find a company by id
     company = Company.find(id=self.company.id)
     # Update a company
     now = get_timestamp()
     updated_name = 'Company %s' % (now)
     company.name = updated_name
     company.save()
     company = Company.find(id=self.company.id)
     self.assertEqual(company.name, updated_name)
def get_or_create_company(timestamp):
    name = 'Company %s' % (timestamp)

    # get company
    try:
        company = Company.find(name=name)
    except ResourceNotFound:
        # Create a company
        company = Company.create(
            company_id=timestamp, name=name)
    return company
Exemple #4
0
def intercom_companies():
    """ Get all companies from Intercom and return the data as a pandas
        DataFrame.

    """
    Intercom.app_id = get_config('INTERCOM_APP_ID')
    Intercom.app_api_key = get_config('INTERCOM_API_KEY')
    company_list = [FlatDict(c.to_dict) for c in Company.all()
                    if 'Verified' in c.custom_attributes and
                    c.custom_attributes['Verified']]
    companies = []
    for c in company_list:
        dic = {}
        for k, v in c.iteritems():
            kn = k.lower().split(':')[-1].replace(' ', '_')
            dic[kn] = v
        companies.append(dic)
    companies = pd.DataFrame(companies)
    companies = companies.T.drop(
        ['0', '1', 'id', 'widget_integrated', 'app_id',
         'automatic_confirm_bookings', 'minimum_book_in_advance_hours',
         'phone_number', 'monthly_spend']).T
    companies.last_request_at = companies.last_request_at.apply(
        lambda x: date.fromtimestamp(x))
    companies.created_at = companies.created_at.apply(
        lambda x: date.fromtimestamp(x))
    companies.remote_created_at = companies.remote_created_at.apply(
        lambda x: date.fromtimestamp(x))
    companies.updated_at = companies.updated_at.apply(
        lambda x: date.fromtimestamp(x))
    return companies
 def it_raises_error_on_load(self):
     data = {
         'type': 'user',
         'id': 'aaaaaaaaaaaaaaaaaaaaaaaa',
         'company_id': '4',
         'name': 'MyCo'
     }
     side_effect = [data, None]
     with patch.object(Intercom, 'get', side_effect=side_effect) as mock_method:  # noqa
         company = Company.find(company_id='4')
         with assert_raises(intercom.HttpError):
             company.load()
         eq_([call('/companies', company_id='4'), call('/companies/aaaaaaaaaaaaaaaaaaaaaaaa')],  # noqa
             mock_method.mock_calls)
Exemple #6
0
 def it_raises_error_on_load(self):
     data = {
         'type': 'user',
         'id': 'aaaaaaaaaaaaaaaaaaaaaaaa',
         'company_id': '4',
         'name': 'MyCo'
     }
     side_effect = [data, None]
     with patch.object(Intercom, 'get',
                       side_effect=side_effect) as mock_method:  # noqa
         company = Company.find(company_id='4')
         with assert_raises(intercom.HttpError):
             company.load()
         eq_(
             [
                 call('/companies', company_id='4'),
                 call('/companies/aaaaaaaaaaaaaaaaaaaaaaaa')
             ],  # noqa
             mock_method.mock_calls)
Exemple #7
0
    def test_add_user_custom_attributes(self):
        user = User.find(email=self.user.email)
        user.companies = [
            {
                "id": 6,
                "name": "Intercom",
                "custom_attributes": {
                    "referral_source": "Google"
                }
            }
        ]
        user.save()
        user = User.find(email=self.user.email)
        self.assertEqual(len(user.companies), 2)
        self.assertEqual(user.companies[0].company_id, "9")

        # check the custom attributes
        company = Company.find(company_id=6)
        self.assertEqual(
            company.custom_attributes['referral_source'], "Google")
Exemple #8
0
 def test_find_by_id(self):
     # Find a company by _id
     company = Company.find(id=self.company.id)
     self.assertEqual(company.company_id, self.company.company_id)
Exemple #9
0
 def test_find_by_company_name(self):
     # Find a company by name
     company = Company.find(name=self.company.name)
     self.assertEqual(company.name, self.company.name)
 def it_raises_error_if_no_response_on_find_all(self):
     with patch.object(Intercom, 'get', return_value=None) as mock_method:
         with assert_raises(intercom.HttpError):
             [x for x in Company.all()]
         mock_method.assert_called_once_with('/companies')
Exemple #11
0
 def it_raises_error_if_no_response_on_find(self):
     with patch.object(Intercom, 'get', return_value=None) as mock_method:
         with assert_raises(intercom.HttpError):
             Company.find(company_id='4')
         mock_method.assert_called_once_with('/companies', company_id='4')
Exemple #12
0
 def test_users(self):
     company = Company.find(id=self.company.id)
     # Get a list of users in a company
     for user in company.users:
         self.assertIsNotNone(user.email)
 def test_total_company_count(self):
     ok_(Company.count() >= 0)
Exemple #14
0
 def it_raises_error_if_no_response_on_find_all(self):
     with patch.object(Intercom, 'get', return_value=None) as mock_method:
         with assert_raises(intercom.HttpError):
             [x for x in Company.all()]
         mock_method.assert_called_once_with('/companies')
 def test_untag_companies(self):
     # Untag companies
     tag = Tag.untag_companies("red", [self.user.companies[0].id])
     self.assertEqual(tag.name, "red")
     company = Company.find(id=self.user.companies[0].id)
     self.assertEqual(0, len(company.tags))
Exemple #16
0
 def test_iterate(self):
     # Iterate over all companies
     for company in Company.all():
         self.assertTrue(company.id is not None)
 def it_raises_error_if_no_response_on_find(self):
     with patch.object(Intercom, 'get', return_value=None) as mock_method:
         with assert_raises(intercom.HttpError):
             Company.find(company_id='4')
         mock_method.assert_called_once_with('/companies', company_id='4')
Exemple #18
0
 def test_total_company_count(self):
     ok_(Company.count() >= 0)
Exemple #19
0
 def test_untag_companies(self):
     # Untag companies
     tag = Tag.untag_companies("red", [self.user.companies[0].id])
     self.assertEqual(tag.name, "red")
     company = Company.find(id=self.user.companies[0].id)
     self.assertEqual(0, len(company.tags))