Ejemplo n.º 1
0
def dataset_export_dcat(context, data_dict):
    '''Export a dataset to RDF XML using GeoDCAT XSLT.

    :param id: the name or id of the dataset to be exported.
    :type id: string

    rtype: dict
    '''

    pkg = _get_action('package_show')(context, data_dict)

    dtype = pkg.get('dataset_type')
    obj = pkg.get(dtype) if dtype else None

    cached_metadata = get_cache('metadata')
    result = None
    if obj:
        # Get a proper serializer
        xser = xml_serializer_for(obj)
        xser.target_namespace = pylons.config.get('ckan.site_url')
        name = '%(name)s@%(revision_id)s.dcat' % (pkg)
        cached = cached_metadata.get(
            name, createfunc=lambda: _transform_dcat(xser.to_xml()))
        link = toolkit.url_for(
            controller='ckanext.publicamundi.controllers.files:Controller',
            action='download_file',
            object_type='metadata',
            name_or_id=name,
            filename=('%(name)s.xml' % (pkg)))
        result = dict(url=link)

    return result
Ejemplo n.º 2
0
def dataset_export_dcat(context, data_dict):
    '''Export a dataset to RDF XML using GeoDCAT XSLT.

    :param id: the name or id of the dataset to be exported.
    :type id: string

    rtype: dict
    '''

    pkg = _get_action('package_show')(context, data_dict)
    
    dtype = pkg.get('dataset_type')
    obj = pkg.get(dtype) if dtype else None
    
    cached_metadata = get_cache('metadata')
    result = None
    if obj:
        # Get a proper serializer
        xser = xml_serializer_for(obj)
        xser.target_namespace = pylons.config.get('ckan.site_url')
        name = '%(name)s@%(revision_id)s.dcat' % (pkg)
        cached = cached_metadata.get(name, createfunc=lambda: _transform_dcat(xser.to_xml()))
        link = toolkit.url_for(
            controller='ckanext.publicamundi.controllers.files:Controller',
            action='download_file',
            object_type='metadata',
            name_or_id=name,
            filename=('%(name)s.xml' % (pkg)))
        result = dict(url=link)

    return result
Ejemplo n.º 3
0
def dataset_export(context, data_dict):
    '''Export a dataset to XML.
    
    :param id: the name or id of the dataset to be exported.
    :type id: string

    rtype: string
    '''

    _check_access('package_show', context, data_dict)
    pkg = _get_action('package_show')(context, data_dict)

    dtype = pkg.get('dataset_type')
    obj = pkg.get(dtype) if dtype else None

    cached_metadata = get_cache('metadata')
    result = None
    if obj:
        # Get a proper serializer
        xser = xml_serializer_for(obj)
        xser.target_namespace = config.get('ckan.site_url')
        # Persist exported XML data and wrap into a URL
        name = '%(name)s@%(revision_id)s' % (pkg)
        cached = cached_metadata.get(name, createfunc=xser.dumps)
        link = toolkit.url_for(
            controller='ckanext.publicamundi.controllers.files:Controller',
            action='download_file',
            object_type='metadata',
            name_or_id=name,
            filename=('%(name)s.xml' % (pkg)))
        result = dict(url=link)

    return result
Ejemplo n.º 4
0
 def download_file(self, object_type, name_or_id, filename=None):
     '''Download file from CKAN's filestore, grouped under `object_type` and
     identified by `name_or_id` inside this group.
     '''
     
     filepath = None
     if object_type == 'resources':
         up = uploader.ResourceUpload(resource={})
         filepath = up.get_path(name_or_id)
         app = fileapp.FileApp(filepath)
     elif object_type == 'source-metadata':
         up = uploader.MetadataUpload()
         filepath = up.get_path(name_or_id)
         app = fileapp.FileApp(filepath)
     elif object_type == 'metadata':
         val = get_cache('metadata').get(name_or_id)
         app = fileapp.DataApp(val, content_type='application/xml; charset=utf-8') 
     else:
         abort(404, 'Unknown object-type')
     
     # Retreive file
     try:
         status, headers, app_it = request.call_application(app)
     except:
         abort(404, 'Not Found')
     response.headers.update(dict(headers))
     response.status = status
     # Dump
     return app_it
Ejemplo n.º 5
0
 def download_file(self, object_type, name_or_id, filename=None):
     '''Download file from CKAN's filestore, grouped under `object_type` and
     identified by `name_or_id` inside this group.
     '''
     
     filepath = None
     if object_type == 'resources':
         up = uploader.ResourceUpload(resource={})
         filepath = up.get_path(name_or_id)
         app = fileapp.FileApp(filepath)
     elif object_type == 'source-metadata':
         up = uploader.MetadataUpload()
         filepath = up.get_path(name_or_id)
         app = fileapp.FileApp(filepath)
     elif object_type == 'metadata':
         val = get_cache('metadata').get(name_or_id)
         app = fileapp.DataApp(val, content_type='application/xml; charset=utf-8') 
     else:
         abort(404, 'Unknown object-type')
     
     # Retreive file
     try:
         status, headers, app_it = request.call_application(app)
     except:
         abort(404, 'Not Found')
     response.headers.update(dict(headers))
     response.status = status
     # Dump
     return app_it
Ejemplo n.º 6
0
    def test_cache(self):
        from ckanext.publicamundi.cache_manager import get_cache

        cache1 = get_cache('test')

        def compute():
            log1.info(' ** i compute something **')
            return 42

        val = cache1.get('foo', createfunc=compute)
        assert False
Ejemplo n.º 7
0
    def test_cache(self):
        from ckanext.publicamundi.cache_manager import get_cache

        cache1 = get_cache('test')

        def compute():
            log1.info(' ** i compute something **')
            return 42
        
        val = cache1.get('foo', createfunc=compute)
        assert False