Created
March 25, 2014 04:13
-
-
Save rickcnagy/9755148 to your computer and use it in GitHub Desktop.
Adds a "Default Contact" person to each record in the PLD company database.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/Library/Frameworks/Python.framework/Versions/2.7/bin/python | |
import requests | |
import math | |
import json | |
api_key = 'API_KEY' | |
base_url = "https://api.pipelinedeals.com/api/v3" | |
azreen_id = '25077' | |
def main(): | |
r = PaginatedPldRequest() | |
r.params = { | |
'conditions[company_state]': 'Colorado', | |
'conditions[company_imported_at][from_date]': '2014-03-20' | |
} | |
r.url = '/companies.json' | |
r.function = requests.get | |
r.make_request() | |
while(r.has_next()): | |
company_id = r.next_entry()['id'] | |
p = PldRequuest() | |
p.params = { | |
'person[first_name]': 'Default', | |
'person[last_name]': 'Contact', | |
'person[company_id]': company_id, | |
'person[type]': 'Lead', | |
'person[user_id]': azreen_id | |
} | |
p.function = requests.post | |
p.url = "/people.json" | |
p.make_request() | |
print p.json['first_name'] | |
class PldRequuest(object): | |
def __init__(self): | |
self.params = None | |
self.url = None | |
self.function = None | |
self.response = None | |
self.text = None | |
self.json = None | |
def make_request(self): | |
self.response = self.function(self.full_url(), params=self.full_params()) | |
self.text = self.response.text | |
self.json = self.response.json() | |
def full_params(self): | |
basic_param = {'api_key': api_key} | |
return dict(basic_param.items() + self.params.items()) | |
def full_url(self): | |
return base_url + self.url | |
class PaginatedPldRequest(object): | |
def __init__(self): | |
self.params = None | |
self.url = None | |
self.function = None | |
self.response = None | |
self.text = None | |
self.json = None | |
self.current_entry = None | |
self.pagination = None | |
self.data = None | |
self.per_page = None | |
self.total_entries = 0 | |
self.total_pages = 0 | |
self.current_page = 1 | |
self.current_entry = 1 | |
def make_request(self): | |
self.response = self.function(self.full_url(), params=self.full_params()) | |
self.text = self.response.text | |
self.json = self.response.json() | |
self.pagination = self.json['pagination'] | |
self.data = self.json['entries'] | |
self.process_response() | |
def full_params(self): | |
basic_param = {'api_key': api_key, 'page': self.current_page} | |
return dict(basic_param.items() + self.params.items()) | |
def full_url(self): | |
return base_url + self.url | |
def process_response(self): | |
self.per_page = self.pagination['per_page'] | |
self.total_entries = self.pagination['total'] | |
self.total_pages = math.ceil(float(self.total_entries) / self.per_page) | |
def has_next(self): | |
return self.has_next_on_page() or self.has_next_page() | |
def next_entry(self): | |
next = None | |
if not self.has_next_on_page() and self.has_next_page(): | |
self.get_next_page() | |
if self.has_next_on_page(): | |
next = self.data[self.current_entry - 1] | |
self.current_entry += 1 | |
return next | |
def has_next_entry(self): | |
return (self.current_entry + self.per_page * (self.current_page - 1)) < self.total_entries | |
def has_next_on_page(self): | |
return self.current_entry < self.per_page and self.has_next_entry() | |
def has_next_page(self): | |
return self.current_page < self.total_pages | |
def get_next_page(self): | |
self.current_page += 1 | |
self.current_entry = 1 | |
self.make_request() | |
if __name__ == '__main__': | |
main() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment