예제 #1
0
def sync_organizations(dry_run, sync_from_datetime, loglevel):
    logger.setLevel(loglevel)
    error_count = 0
    success_count = 0

    organizations = Organization.objects.all()
    if sync_from_datetime:
        organizations = organizations.filter(updated__gte=sync_from_datetime)

    logger.info("Syncing {0} Organization objects.".format(organizations.count()))

    for organization in organizations:
        logger.debug("Syncing Organization: {0}".format(organization.id))

        # Find the corresponding SF organization.
        try:
            sforganization = SalesforceOrganization.objects.get(external_id=organization.id)
        except SalesforceOrganization.DoesNotExist:
            sforganization = SalesforceOrganization()

        # SF Layout: Account details section.
        sforganization.name = organization.name
        sforganization.legal_status = organization.legal_status
        sforganization.description = organization.description

        # SF Layout: Contact Information section. Ignore address type and only use first address.
        # When multiple address types are supported in the website, extend this function
        sforganization.billing_city = organization.city[:40]
        sforganization.billing_street = organization.address_line1 + " " + organization.address_line2
        sforganization.billing_postal_code = organization.postal_code
        if organization.country:
            sforganization.billing_country = organization.country.name
        else:
            sforganization.billing_country = ''

        # E-mail addresses for organizations are currently left out because source data is not validated
        # sforganization.email_address = organization.email
        sforganization.phone = organization.phone_number
        sforganization.website = organization.website

        # SF Layout: Bank Account section.
        sforganization.address_bank = organization.account_bank_address
        sforganization.bank_account_name = organization.name
        sforganization.bank_account_number = organization.account_number
        sforganization.bank_name = organization.account_bank_name
        sforganization.bic_swift = organization.account_bic
        sforganization.country_bank = str(organization.account_bank_country)
        sforganization.iban_number = organization.account_iban

        # SF Layout: System Information.
        sforganization.external_id = organization.id
        sforganization.created_date = organization.created

        # Save the object to Salesforce
        if not dry_run:
            try:
                sforganization.save()
                success_count += 1
            except Exception as e:
                error_count += 1
                logger.error("Error while saving organization id {0}: ".format(organization.id) + str(e))

    return success_count, error_count
def sync_organizations(test_run):
    global error_count
    global success_count
    organizations = Organization.objects.all()
    logger.info("Syncing {0} Organization objects.".format(organizations.count()))

    for organization in organizations:
        logger.info("Syncing Organization: {0}".format(organization.id))

        # Find the corresponding SF organization.
        try:
            sforganization = SalesforceOrganization.objects.get(external_id=organization.id)
        except SalesforceOrganization.DoesNotExist:
            sforganization = SalesforceOrganization()

        # SF Layout: Account details section.
        sforganization.name = organization.name
        sforganization.legal_status = organization.legal_status
        sforganization.description = organization.description

        # TODO: Determine if and how organization type should be entered
        # sforganization.organization_type =

        # SF Layout: Contact Information section. Intentionally ignore the address type as it is not used.
        try:
            organizationaddress = OrganizationAddress.objects.get(organization=organization)
        except OrganizationAddress.DoesNotExist:
            sforganization.billing_city = ''
            sforganization.billing_street = ''
            sforganization.billing_postal_code = ''
            sforganization.billing_country = ''
        except OrganizationAddress.MultipleObjectsReturned:
            logger.warn("Organization id {0} has multiple addresses, this is not supported by the integration.".format(organization.id))
        else:
            sforganization.billing_city = organizationaddress.city
            sforganization.billing_street = organizationaddress.line1 + " " + organizationaddress.line2
            sforganization.billing_postal_code = organizationaddress.postal_code
            if organizationaddress.country:
                sforganization.billing_country = organizationaddress.country.name
            else:
                sforganization.billing_country = ''

        sforganization.email_address = organization.email
        sforganization.phone = organization.phone_number
        sforganization.website = organization.website

        # SF Layout: Bank Account section.
        sforganization.address_bank = organization.account_bank_address
        sforganization.bank_account_name = organization.account_bank_name
        sforganization.bank_account_number = organization.account_number
        sforganization.bank_name = organization.name
        sforganization.bic_swift = organization.account_bic
        sforganization.country_bank = str(organization.account_bank_country)
        sforganization.iban_number = organization.account_iban

        # SF Layout: System Information.
        sforganization.external_id = organization.id
        sforganization.created_date = organization.created

        # Save the object to Salesforce
        if not test_run:
            try:
                sforganization.save()
                success_count += 1
            except Exception as e:
                error_count += 1
                logger.error("Error while saving organization id {0}: ".format(organization.id) + str(e))
예제 #3
0
def sync_organizations(dry_run, sync_from_datetime, loglevel):
    logger.setLevel(loglevel)
    error_count = 0
    success_count = 0

    organizations = Organization.objects.all()
    if sync_from_datetime:
        organizations = organizations.filter(updated__gte=sync_from_datetime)

    logger.info("Syncing {0} Organization objects.".format(organizations.count()))

    for organization in organizations:
        logger.debug("Syncing Organization: {0}".format(organization.id))

        # Find the corresponding SF organization
        try:
            sforganization = SalesforceOrganization.objects.get(external_id=organization.id)
        except SalesforceOrganization.DoesNotExist:
            sforganization = SalesforceOrganization()
        except Exception as e:
            logger.error("Error while loading sforganization id {0} - stopping: ".format(organization.id) + str(e))
            return success_count, error_count+1

        # Populate the data from the source
        sforganization.name = organization.name

        sforganization.billing_city = organization.city[:40]
        sforganization.billing_street = organization.address_line1 + " " + organization.address_line2
        sforganization.billing_postal_code = organization.postal_code
        sforganization.billing_state = organization.state[:20]

        if organization.country:
            sforganization.billing_country = organization.country.name
        else:
            sforganization.billing_country = ''

        if organization.email and re_email.match(organization.email.upper()):
            sforganization.email_address = organization.email
        elif organization.email:
            logger.error("Organization has invalid e-mail address '{0}', org id {1}. "
                         "Ignoring e-mail address field.".format(organization.email, organization.id))

        sforganization.phone = organization.phone_number
        sforganization.website = organization.website
        sforganization.twitter = organization.twitter
        sforganization.facebook = organization.facebook
        sforganization.skype = organization.skype

        sforganization.tags = ""
        for tag in organization.tags.all():
            sforganization.tags = str(tag) + ", " + sforganization.tags

        sforganization.bank_account_name = organization.account_holder_name
        sforganization.bank_account_address = organization.account_holder_address
        sforganization.bank_account_postalcode = organization.account_holder_postal_code
        sforganization.bank_account_city = organization.account_holder_city
        if organization.account_holder_country:
            sforganization.bank_account_country = organization.account_holder_country.name
        else:
            sforganization.bank_account_country = ''

        sforganization.bank_name = organization.account_bank_name
        sforganization.bank_address = organization.account_bank_address
        sforganization.bank_postalcode = organization.account_bank_postal_code
        sforganization.bank_city = organization.account_bank_city
        if organization.account_bank_country:
            sforganization.bank_country = organization.account_bank_country.name
        else:
            sforganization.bank_country = ''

        sforganization.bank_account_number = organization.account_number
        sforganization.bank_bic_swift = organization.account_bic
        sforganization.bank_account_iban = organization.account_iban

        sforganization.external_id = organization.id
        sforganization.created_date = organization.created
        sforganization.deleted_date = organization.deleted

        # Save the object to Salesforce
        if not dry_run:
            try:
                sforganization.save()
                success_count += 1
            except Exception as e:
                error_count += 1
                logger.error("Error while saving organization id {0}: ".format(organization.id) + str(e))

    return success_count, error_count
예제 #4
0
def sync_organizations(test_run):
    organizations = Organization.objects.all()
    logger.info("Syncing {0} Organization objects.".format(organizations.count()))

    for organization in organizations:
        logger.info("Syncing Organization: {0}".format(organization))

        # Find the corresponding SF organization.
        try:
            sforganization = SalesforceOrganization.objects.filter(external_id=organization.id).get()
        except SalesforceOrganization.DoesNotExist:
            sforganization = SalesforceOrganization()

        # SF Layout: Account details section.
        sforganization.name = organization.name
        sforganization.legal_status = organization.legal_status
        # Unknown (Business/Funds/1%IDEA): - sforganization.organization_type =

        # # SF Layout: Address Information section.
        sforganization.external_id = organization.id
        # if organization.organizationaddress:
        #     sforganization.billing_city = str(organization.organizationaddress.country.name)
        #     sforganization.billing_street = str(organization.organizationaddress.line1) + " " + str(organization.organizationaddress.line2)
        #     sforganization.billing_postal_code = str(organization.organizationaddress.postal_code)
        # else:
        #     sforganization.billing_city = ''
        #     sforganization.billing_street = ''
        #     sforganization.billing_postal_code = ''
        #
        # sforganization.email_address =
        sforganization.phone = organization.phone_number
        sforganization.website = organization.website

        # # SF Layout: Bank Account section.
        sforganization.address_bank = organization.account_bank_address
        sforganization.bank_account_name = organization.account_bank_name
        sforganization.bank_account_number = organization.account_number
        sforganization.bank_name = organization.name
        sforganization.bic_swift = organization.account_bic
        sforganization.country_bank = str(organization.account_bank_country)
        sforganization.iban_number = organization.account_iban

        # # SF Layout: Description section.
        sforganization.description = organization.description

        # # SF Layout: System Information.
        sforganization.created_date = organization.created

        # Save the SF project.
        if not test_run:
            sforganization.save()