Example #1
0
class sfdc():
    def __init__(self, options):
        self.options = options

        self.sf = Salesforce(username=options["username"],
                             password=options["password"],
                             security_token=options["token"])

    def getRecords(self, query):
        self.query = query
        print "Searching SFDC for %s" % self.query

        self.contacts = []
        self.accounts = []
        self.users = []
        self.leads = []

        results = self.sf.quick_search(self.query)
        if not results:
            return False

        for record in results:
            if record['attributes']['type'] == 'Contact':
                self.contacts.append(self.sf.Contact.get(record["Id"]))
            elif record['attributes']['type'] == 'User':
                self.users.append(self.sf.User.get(record["Id"]))
            elif record['attributes']['type'] == 'Account':
                self.accounts.append(self.sf.Account.get(record["Id"]))
            elif record['attributes']['type'] == 'Lead':
                self.leads.append(self.sf.Lead.get(record["Id"]))

        return True
Example #2
0
# sf.Contact.create({'LastName':'Smith','Email':'*****@*****.**'})

# sf.Contact.create({'LastName':'Smith','Email':'*****@*****.**'})

# contact = sf.Contact.get('0038A00000YfgVEQAZ')

# contact = sf.Contact.get_by_custom_id('My_Custom_ID__c', '22')

# sfresult = sf.Contact.update('0038A00000YfgVEQAZ',{'LastName': 'Jones', 'FirstName': 'John'})
# sfresult = 204 (succeded, no content)
# sf.Contact.delete('0038A00000YfgVEQAZ')

# result = sf.Contact.create(
#     {'Email':attendee['profile']['email']+"3",
#     'FirstName':attendee['profile']['first_name']+"3",
#     'LastName':attendee['profile']['last_name']+"3",
#     'Title':attendee['profile']['job_title']+"3"})
# contactID = result['id']
# result = sf.Opportunity.create({'AccountId':"", 'npsp__Primary_Contact__c':contactID, 'EventbriteSync__Buyer__c':contactID, 'amount':attendee['costs']['gross']['major_value'], 'StageName':'posted', 'CloseDate':attendee['created'], 'CampaignId':campaignID, 'Order_Number__c':attendee['order_id'], 'Ticket_Type__c':attendee['ticket_class_name'], 'RecordTypeId':'012f4000000JdASAA0', 'Name':'tempName'})
# print(result)

# sf.Payment.create({})
# result = sf.Opportunity.create({'AccountId':'0017h00000XpNWPAA3', 'npsp__Primary_Contact__c':'0037h00000RkN8TAAV', 'EventbriteSync__Buyer__c':'0037h00000RkN8TAAV', 'StageName':'posted', 'CloseDate':"2021-03-25T19:23:04Z", 'CampaignId':'7017h000000xOe6AAE', 'Order_Number__c':'1686870425', 'Ticket_Type__c':"Nonmember Ticket", 'RecordTypeId':'012f4000000JdASAA0', 'Name':'tempName', 'amount':'20.00'})
# print(result)
# opID = result['id']
# result = sf.npe01__OppPayment__c.create({'npe01__Opportunity__c':opID, 'npe01__Paid__c':True, 'Payment_Contact__c':'0038A00000ZVhpbQAD', 'Ready_for_Invoice__c':True, 'npe01__Payment_Amount__c':'50.00'})
#print(result)
# sfCM = sf.query("SELECT Id FROM CampaignMember WHERE Eventbrite_Attendee_ID__c = '{ebAttendee}'".format(ebEventID=attendee['event_id']))
searchterm = "Mobile Loaves & Fishes, Inc."
qs = sf.quick_search(format_soql("{{Mobile Loaves & Fishes, Inc.}}"))
print(qs)
Example #3
0
class SFAccess:
    session = None
    instance = None

    def __init__(self, settings):
        self.sf_user = settings["sfUser"]
        self.sf_pswd = settings["sfPsw"]
        self.sf_token = settings["sfToken"]

    def login(self):
        self.sf = Salesforce(username=self.sf_user,
                             password=self.sf_pswd,
                             security_token=self.sf_token)

        # these can be stored and reused for faster authentication
        self.instance = self.sf.sf_instance
        self.session = self.sf.session_id

    def quick_search(self, name):
        return self.sf.quick_search(name)

    @gen.coroutine
    def get_report(self, report_id=None):
        if report_id is not None:
            # check if we have logged in
            if self.session is None:
                self.login()
            # do the call
            http_client = AsyncHTTPClient()
            future = http_client.fetch(
                "https://%s/services/data/v34.0/analytics/reports/%s" % (self.instance, report_id),
                headers={
                    "Authorization": "Bearer %s" % self.session}
            )
            result = yield future
            # result here brings whole report and you need to decode it then
            # https://developer.salesforce.com/docs/atlas.en-us.api_analytics.meta/api_analytics/sforce_analytics_rest_api_factmap_example.htm
            data = json.loads(result.body.decode("utf-8"))
            return data
        else:
            raise ValueError("You must provide report_id")

    @gen.coroutine
    def get_utilisation_report(self, report_id):
        data = yield self.get_report(report_id)
        # getting useful date range dictionary
        date_range_dict = get_time_range(data)
        # getting employee names and keys
        employee_key_dict = get_employee_names(data)

        # getting final report
        final_report = create_final_util_report(raw_report=data,
                                                time_dict=date_range_dict,
                                                employee_dict=employee_key_dict)
        return final_report

    @gen.coroutine
    def get_billability_report(self, report_id):
        data = yield self.get_report(report_id)
        # getting useful date range dictionary
        date_range_dict = get_time_range(data)
        # getting employee names and keys
        employee_key_dict = get_employee_names(data)
        # getting final report
        final_report = create_final_billability_report(raw_report=data,
                                                       time_dict=date_range_dict,
                                                       employee_dict=employee_key_dict)
        return final_report

    @gen.coroutine
    def get_billability_groupings_report(self, report_id):
        data = yield self.get_report(report_id)
        # getting useful date range dictionary
        date_range_dict = get_time_range(data)
        # getting final report
        groups = get_groups(data)

        final_report = create_sub_totals_report(raw_report=data,
                                                time_dict=date_range_dict,
                                                group_dict=groups)
        return final_report
Example #4
0
class SFAccess:
    session = None
    instance = None

    def __init__(self, settings):
        self.sf_user = settings["sfUser"]
        self.sf_pswd = settings["sfPsw"]
        self.sf_token = settings["sfToken"]

    def login(self):
        self.sf = Salesforce(username=self.sf_user,
                             password=self.sf_pswd,
                             security_token=self.sf_token)

        # these can be stored and reused for faster authentication
        self.instance = self.sf.sf_instance
        self.session = self.sf.session_id

    def quick_search(self, name):
        return self.sf.quick_search(name)

    @gen.coroutine
    def get_report(self, report_id=None):
        if report_id is not None:
            # check if we have logged in
            if self.session is None:
                self.login()
            # do the call
            http_client = AsyncHTTPClient()
            future = http_client.fetch(
                "https://%s/services/data/v34.0/analytics/reports/%s" %
                (self.instance, report_id),
                headers={"Authorization": "Bearer %s" % self.session})
            result = yield future
            # result here brings whole report and you need to decode it then
            # https://developer.salesforce.com/docs/atlas.en-us.api_analytics.meta/api_analytics/sforce_analytics_rest_api_factmap_example.htm
            data = json.loads(result.body.decode("utf-8"))
            return data
        else:
            raise ValueError("You must provide report_id")

    @gen.coroutine
    def get_utilisation_report(self, report_id):
        data = yield self.get_report(report_id)
        # getting useful date range dictionary
        date_range_dict = get_time_range(data)
        # getting employee names and keys
        employee_key_dict = get_employee_names(data)

        # getting final report
        final_report = create_final_util_report(
            raw_report=data,
            time_dict=date_range_dict,
            employee_dict=employee_key_dict)
        return final_report

    @gen.coroutine
    def get_billability_report(self, report_id):
        data = yield self.get_report(report_id)
        # getting useful date range dictionary
        date_range_dict = get_time_range(data)
        # getting employee names and keys
        employee_key_dict = get_employee_names(data)
        # getting final report
        final_report = create_final_billability_report(
            raw_report=data,
            time_dict=date_range_dict,
            employee_dict=employee_key_dict)
        return final_report

    @gen.coroutine
    def get_billability_groupings_report(self, report_id):
        data = yield self.get_report(report_id)
        # getting useful date range dictionary
        date_range_dict = get_time_range(data)
        # getting final report
        groups = get_groups(data)

        final_report = create_sub_totals_report(raw_report=data,
                                                time_dict=date_range_dict,
                                                group_dict=groups)
        return final_report