def sync_positions(date_since,date_now,countryLookup,rest): field_list = "id,externalID,address,title,status,clientCorporation,dateLastModified,dateAdded,description,isOpen" position_list_query = "search/JobOrder?query=dateLastModified:[{0} TO {1}] AND isDeleted:0&sort=dateLastModified&fields={2}&count=100".format(date_since,date_now,field_list) url = position_list_query print(url) jres = make_list_request(url,rest) positions=[] if jres != None: position_list=jres["Results"] total_records=jres["TotalRecords"] for pos in position_list: #print(pos) position=Position() position.id="p" + str(pos["id"]) if "title" in pos: if pos["title"] != None: position.job_title=pos["title"].encode("utf-8").strip() if "address" in pos: addr = pos["address"] if "countryID" in addr: if addr["countryID"] != None: if addr["countryID"] in countryLookup : position.position_location=countryLookup[addr["countryID"]].encode("utf-8") if "city" in addr: if addr["city"] != None: position.city=addr["city"].encode("utf-8").strip() if "state" in addr: if addr["state"] != None: position.state=addr["state"].encode("utf-8").strip() if "zip" in addr: if addr["zip"] != None: position.postal_code=addr["zip"].encode("utf-8").strip() if "clientCorporation" in pos: company = pos["clientCorporation"] if "name" in company: if company["name"] != None: position.company_name=company["name"].encode("utf-8").strip() if "externalID" in pos: if pos["externalID"] != None: position.position_id=pos["externalID"].encode("utf-8").strip() if "status" in pos: if pos["status"] != None: position.status=pos["status"].encode("utf-8").strip() if "isOpen" in pos: if pos["isOpen"] != None: if pos["isOpen"] == True: position.open_closed="Open" else: position.open_closed="Closed" if "dateAdded" in pos: if pos["dateAdded"] != None: date_added = datetime.fromtimestamp(int(pos["dateAdded"])/1000).strftime('%Y-%m-%dT%H:%M:%S') position.date_entered=date_added if "dateLastModified" in pos: if pos["dateLastModified"] != None: date_last_modified = datetime.fromtimestamp(int(pos["dateLastModified"])/1000).strftime('%Y-%m-%dT%H:%M:%S') position.last_modified=date_last_modified if "description" in pos: if pos["description"] != None: position.job_description_words=cleanup_text(strip_html_bs(pos["description"].encode("utf-8"))) positions.append(position) return positions
def sync_positions(date_since, date_now, rest): #salesforce is limited to 2000 records returned but will return the total number of rows #we iterate through 2000 at a time updating the query criteria with the LastModifiedDate of #the last processed record keep_processing = True work_done = False while keep_processing: results = rest.make_rest_call( "query?q=SELECT+Id,Name,TR1__Account_Name__c,TR1__City__c,TR1__Client_Job_Description__c,LastModifiedDate,CreatedDate+FROM+TR1__Job__c+WHERE+LastModifiedDate+>+{0}+ORDER+BY+LastModifiedDate+asc" .format(date_since)) result_rows = len(results["records"]) if result_rows > 0: total_result_rows = results["totalSize"] print(results["totalSize"], len(results["records"])) positions = [] for pos in results["records"]: position = Position() position.id = "p" + str(pos["Id"]) if "Name" in pos: if pos["Name"] != None: position.job_title = pos["Name"].encode( "utf-8").strip() if "TR1__Account_Name__c" in pos: if pos["TR1__Account_Name__c"] != None: position.company_name = pos[ "TR1__Account_Name__c"].encode("utf-8").strip() if "TR1__City__c" in pos: if pos["TR1__City__c"] != None: position.position_location = pos[ "TR1__City__c"].encode("utf-8").strip() if "TR1__Client_Job_Description__c" in pos: if pos["TR1__Client_Job_Description__c"] != None: position.description = cleanup_text( strip_html_bs( pos["TR1__Client_Job_Description__c"].encode( "utf-8").strip())) if "CreatedDate" in pos: if pos["CreatedDate"] != None: date_added = pos["CreatedDate"] position.date_entered = date_added if "LastModifiedDate" in pos: if pos["LastModifiedDate"] != None: date_last_modified = pos["LastModifiedDate"] position.last_modified = date_last_modified positions.append(position) write_position_data(positions) work_done = True if total_result_rows > 2000: date_since = results["records"][-1][ "LastModifiedDate"].replace(".000+0000", "Z") else: keep_processing = False else: keep_processing = False return work_done