示例#1
0
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)
示例#2
0
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)
示例#3
0
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
示例#4
0
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)
示例#5
0
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
示例#6
0
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}
示例#7
0
 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(''), [])
示例#8
0
 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('') == []