示例#1
0
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
示例#2
0
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