def version_download(id, resource_id, version_id): """Download resource blueprint supporting version id. This download blueprint gets the activity_id from the version and redirects to a download url that can handle it. Currently is working with blob_storage extension but can work with any download endpoint that knows how to handle activities for resources. """ context = { 'model': model, 'user': toolkit.c.user } try: version = action.version_show( context, {'resource_id': resource_id, 'version_id': version_id} ) activity_id = version['activity_id'] except toolkit.ObjectNotFound: toolkit.abort(404, toolkit._(u'Version not found')) download_url = toolkit.url_for( 'resource.download', id=id, resource_id=resource_id, activity_id=activity_id, qualified=True ) return toolkit.redirect_to(download_url)
def test_version_delete(self): dataset = factories.Dataset() resource = factories.Resource(package_id=dataset['id'], name='First name') user = factories.Sysadmin() context = get_context(user) version = resource_version_create(context, { 'resource_id': resource['id'], 'name': '1', 'notes': 'Version notes' }) assert version version_delete(context, {'version_id': version['id']}) with pytest.raises(toolkit.ObjectNotFound): version_show(context, {'version_id': version['id']})
def test_version_show(self): dataset = factories.Dataset() resource = factories.Resource(package_id=dataset['id'], name='First name') user = factories.Sysadmin() context = get_context(user) version = resource_version_create(context, { 'resource_id': resource['id'], 'name': '1', 'notes': 'Version notes' }) result = version_show(context, {'version_id': version['id']}) assert result['id'] == version['id'] assert result['name'] == '1' assert result['notes'] == 'Version notes' assert result['creator_user_id'] == user['id']
def dataset_version_restore(context, data_dict): """Restores dataset version by restoring dataset metadata and creating a new version with it :param dataset_id: the id or name of the dataset :type dataset_id: string :param version_id: the id or name of the dataset :type version_id: string :returns: restored dataset :rtype: dict """ model = context.get('model', core_model) dataset_name_or_id, version_name_or_id = toolkit.get_or_bust( data_dict, ['dataset_id', 'version_id']) dataset = model.Package.get(dataset_name_or_id) if not dataset: raise toolkit.ObjectNotFound("Dataset not found") dataset_id = dataset.id toolkit.check_access('version_create', context, {"package_id": dataset_id}) version = version_show(context, data_dict) if not version: raise toolkit.ObjectNotFound("Version not found") v_name = "restored_{}".format(version['name']) v_notes = "Restored from version: {}".format(version['name']) old_dataset = activity_dataset_show(context, { 'activity_id': version['activity_id'], 'dataset_id': dataset_id }) restored_dataset = toolkit.get_action('package_update')(context, old_dataset) dataset_version_create(context, { 'dataset_id': dataset.id, 'name': v_name, 'notes': v_notes }) return restored_dataset