def process_dataset_on_delete(package_id): context = {'model': model, 'job': True} # Delete back references package = toolkit.get_action('package_show')(context, {'id': package_id}) link_package_ids = utils.normalize_list(package.get('linked_datasets', [])) _delete_link_package_back_references(package_id, link_package_ids)
def _create_link_package_back_references(package_id, link_package_ids): context = {'model': model, 'job': True} # Create package back reference for every linked package for link_package_id in link_package_ids: link_package = toolkit.get_action('package_show')(context, {'id': link_package_id}) back_package_ids = utils.normalize_list(link_package.get('linked_datasets', [])) if package_id not in back_package_ids: link_package['linked_datasets'] = back_package_ids + [package_id] toolkit.get_action('package_update')(context, link_package)
def linked_datasets(value, context): if context.get('job'): return value # Check if the user has access to the linked datasets selected = utils.normalize_list(value) allowed = _get_allowed_linked_datasets() for id in selected: if id not in allowed: raise Invalid('Invalid linked datasets') return value
def process_dataset_on_create(package_id): context = {'model': model, 'job': True} # Pause excecution time.sleep(3) # Process dataset_fields _process_dataset_fields(package_id) # Create back references package = toolkit.get_action('package_show')(context, {'id': package_id}) link_package_ids = utils.normalize_list(package.get('linked_datasets', [])) _create_link_package_back_references(package_id, link_package_ids)
def get_linked_datasets_for_display(value, context=None): context = context or {'model': model} # Get datasets datasets = [] ids = utils.normalize_list(value) for id in ids: dataset = toolkit.get_action('package_show')(context, {'id': id}) href = toolkit.url_for('dataset_read', id=dataset['name'], qualified=True) datasets.append({'text': dataset['title'], 'href': href}) return datasets
def _get_link_package_ids_from_revisions(package_id): # Get revisions revisions = (model.Session.query(model.PackageExtraRevision).filter( model.PackageExtraRevision.package_id == package_id, model.PackageExtraRevision.key == 'linked_datasets').order_by( model.PackageExtraRevision.revision_timestamp).all()) # Prev revision prev = [] if len(revisions) >= 2: revision = revisions[-2] if revision.state == 'active': prev = utils.normalize_list(revision.value) # Next revision next = [] if len(revisions) >= 1: revision = revisions[-1] if revision.state == 'active': next = utils.normalize_list(revision.value) return {'prev': prev, 'next': next}
def test_normalize_list(self): value = ['name1', 'name2'] assert_equals(utils.normalize_list(value), value) assert_equals(utils.normalize_list('{name1,name2}'), value) assert_equals(utils.normalize_list(''), [])
def test_normalize_list(self): value = ['name1', 'name2'] assert utils.normalize_list(value) == value assert utils.normalize_list('{name1,name2}') == value assert utils.normalize_list('') == []