Пример #1
0
def backup(email, password, path):
    heroku = Client(email, password)
    path = Path(path)
    if not path.exists():
        path.mkdir()

    for clip in heroku.get_all_dataclips():
        slug = clip['slug']
        print(clip['name'])

        destination_dir = path / slug
        destination_dir.mkdir()

        with (destination_dir / 'clip.json').open('w') as output_file:
            json.dump(clip, output_file)

        for version in heroku.get_dataclip_versions(slug):
            print(version['version_number'])

            version_dir = destination_dir / str(version['version_number'])
            version_dir.mkdir()

            with (version_dir / 'clip.json').open('w') as output_file:
                json.dump(version, output_file)

            with (version_dir / 'clip.sql').open('w') as output_file:
                output_file.write(version['sql'])
Пример #2
0
def move_all(email, password, source_resource, destination_resource):
    heroku = Client(email, password)
    resources = {
        resource['resource_name']: resource['id']
        for resource in heroku.get_heroku_resources()
    }

    if source_resource not in resources:
        raise Exception('`source_resource` not a heroku resource')
    if destination_resource not in resources:
        raise Exception('`destination_resource` not a heroku resource')

    source_dataclips_slugs = [
        dataclip['slug'] for dataclip in heroku.get_all_dataclips()
        if dataclip['heroku_id'] == resources[source_resource]
    ]

    for source_dataclip_slug in source_dataclips_slugs:
        heroku.move_to_resource(source_dataclip_slug,
                                resources[destination_resource])
Пример #3
0
def move_all(email, password, source_resource, destination_resource):
    heroku = Client(email, password)
    resources = {
        resource['resource_name']: resource['id']
        for resource in heroku.get_heroku_resources()
    }

    if source_resource not in resources:
        raise Exception('`source_resource` not a heroku resource')
    if destination_resource not in resources:
        raise Exception('`destination_resource` not a heroku resource')

    source_dataclips_slugs = [
        dataclip['slug']
        for dataclip in heroku.get_all_dataclips()
        if dataclip['heroku_resource_id'] == resources[source_resource]
    ]

    for source_dataclip_slug in source_dataclips_slugs:
        heroku.move_to_resource(source_dataclip_slug, resources[destination_resource])