Exemple #1
0
def download_metadata_tooling(job, org):

	org.status = 'Downloading Metadata'
	org.save()
	
	try:
		
		tooling_url = org.instance_url + '/services/data/v' + str(settings.SALESFORCE_API_VERSION) + '.0/tooling/'
		headers = { 
			'Accept': 'application/json',
			'Authorization': 'Bearer ' + org.access_token
		}

		metadata_types = [
			'ApexClass',
			'ApexComponent',
			'ApexPage',
			'ApexTrigger',
		]

		for component_type in metadata_types:

			data_query = 'select+id+from+' + component_type
			metadata_records = requests.get(tooling_url + 'query/?q=' + data_query, headers = headers)
			
			# Only continue if records exist to query
			if 'records' in metadata_records.json():

				# create the component type record and save
				component_type_record = ComponentType()
				component_type_record.org = org
				component_type_record.name = component_type
				component_type_record.save()

				count_children = 0

				for component in metadata_records.json()['records']:

					metadata_url = org.instance_url + component['attributes']['url']

					record = requests.get(metadata_url, headers = headers)

					# Only take non package components
					if record.json()['NamespacePrefix'] == None:

						# create the component record and save
						component_record = Component()
						component_record.component_type = component_type_record
						
						if component_type == 'ApexPage' or component_type == 'ApexComponent':
							component_record.name = record.json()['Name']
							component_record.content = record.json()['Markup']

						#ApexClass or ApexTrigger
						else:
							component_record.name = record.json()['FullName']
							component_record.content = record.json()['Body']
							
						component_record.save()

						count_children += 1

				if count_children == 0:
					component_type_record.delete()

			org.status = 'Finished'

	except Exception as error:
		org.status = 'Error'
		org.error = error

	org.save()

	# Check if both jobs are now finished
	check_overall_status(job)
Exemple #2
0
def download_metadata_tooling(job, org):

    org.status = 'Downloading Metadata'
    org.save()

    try:

        tooling_url = org.instance_url + '/services/data/v' + str(
            settings.SALESFORCE_API_VERSION) + '.0/tooling/'
        headers = {
            'Accept': 'application/json',
            'Authorization': 'Bearer ' + org.access_token
        }

        metadata_types = [
            'ApexClass',
            'ApexComponent',
            'ApexPage',
            'ApexTrigger',
        ]

        for component_type in metadata_types:

            # Build the query string
            data_query = 'select+id+from+%s+where+NamespacePrefix=null' % component_type

            # Execute the query
            metadata_records = requests.get(tooling_url + 'query/?q=' +
                                            data_query,
                                            headers=headers)

            # Convert to JSON object
            metadata_json = metadata_records.json()

            # Only continue if records exist to query
            if 'records' in metadata_json:

                # create the component type record and save
                component_type_record = ComponentType()
                component_type_record.org = org
                component_type_record.name = component_type
                component_type_record.save()

                count_children = 0

                for component in metadata_json['records']:

                    # Get the URL to query for the full body
                    metadata_url = org.instance_url + component['attributes'][
                        'url']

                    # Query for body
                    record = requests.get(metadata_url, headers=headers)

                    # create the component record and save
                    component_record = Component()
                    component_record.component_type = component_type_record

                    if component_type == 'ApexPage' or component_type == 'ApexComponent':
                        component_record.name = record.json()['Name']
                        component_record.content = record.json()['Markup']

                    #ApexClass or ApexTrigger
                    else:
                        component_record.name = record.json()['FullName']
                        component_record.content = record.json()['Body']

                    component_record.save()

                    count_children += 1

                if count_children == 0:
                    component_type_record.delete()

    except Exception as error:
        org.status = 'Error'
        org.error = error
        org.error_stacktrace = traceback.format_exc()

    org.status = 'Finished'
    org.save()

    # Check if both jobs are now finished
    check_overall_status(job)
Exemple #3
0
def download_metadata_tooling(job, org):

    org.status = 'Downloading Metadata'
    org.save()

    try:

        tooling_url = org.instance_url + '/services/data/v' + str(
            settings.SALESFORCE_API_VERSION) + '.0/tooling/'
        headers = {
            'Accept': 'application/json',
            'Authorization': 'Bearer ' + org.access_token
        }

        metadata_types = [
            'ApexClass',
            'ApexComponent',
            'ApexPage',
            'ApexTrigger',
        ]

        for component_type in metadata_types:

            data_query = 'select+id+from+' + component_type
            metadata_records = requests.get(tooling_url + 'query/?q=' +
                                            data_query,
                                            headers=headers)

            # Only continue if records exist to query
            if 'records' in metadata_records.json():

                # create the component type record and save
                component_type_record = ComponentType()
                component_type_record.org = org
                component_type_record.name = component_type
                component_type_record.save()

                count_children = 0

                for component in metadata_records.json()['records']:

                    metadata_url = org.instance_url + component['attributes'][
                        'url']

                    record = requests.get(metadata_url, headers=headers)

                    # Only take non package components
                    if record.json()['NamespacePrefix'] == None:

                        # create the component record and save
                        component_record = Component()
                        component_record.component_type = component_type_record

                        if component_type == 'ApexPage' or component_type == 'ApexComponent':
                            component_record.name = record.json()['Name']
                            component_record.content = record.json()['Markup']

                        #ApexClass or ApexTrigger
                        else:
                            component_record.name = record.json()['FullName']
                            component_record.content = record.json()['Body']

                        component_record.save()

                        count_children += 1

                if count_children == 0:
                    component_type_record.delete()

            org.status = 'Finished'

    except Exception as error:
        org.status = 'Error'
        org.error = error

    org.save()

    # Check if both jobs are now finished
    check_overall_status(job)