def import_collection_to_package(params, id): """ Import a collection to dataset. Does not import whole file data but rather the metadata. """ from irods import irodsCollection path = params['path'] pkg = Package.get(id) conn = get_connection_from_params(params) if (conn): coll = irodsCollection(conn, path) from irods import iRodsOpen rev = model.repo.new_revision() i = 0 for obj in coll.getObjects(): extras = {} fname, _ = obj fpath = "%s/%s" % (coll.getCollName(), fname) f = iRodsOpen(conn, fpath, 'r') if f: i += 1 res = Resource.by_name(fname) if not res: res = Resource(url = '', name=fname, extras=extras, \ resource_type='file') for met in f.getUserMetadata(): key, value, _ = met extras[key] = value res.extras = extras resgrp = pkg.resource_groups[0] resgrp.resources.append(res) Session.add(res) Session.add(resgrp) rev.message = "Update from iRODS, matched file %s" % fname for met in coll.getUserMetadata(): key, value, _ = met pkg.extras[key] = value Session.add(pkg) model.repo.commit() conn.disconnect() h.flash_success("iRODS import to dataset OK! Imported %s resources." % i) else: h.flash_error("Could not connect to iRODS!") h.redirect_to(controller='package', action='read', id=id)
def test_link_and_map_shown(self): name = u'annakarenina' wms_url = 'http://maps.bgs.ac.uk/ArcGIS/services/BGS_Detailed_Geology/MapServer/WMSServer?' rev = model.repo.new_revision() pkg = Package.get(name) pr = Resource(url=wms_url, format='WMS') pkg.resources.append(pr) pkg.save() model.repo.commit_and_remove() # Load the dataset page and check if link appears offset = url_for(controller='package', action='read', id=name) res = self.app.get(offset) assert 'View available WMS layers' in res, res # Load the dataset map preview page and check if libraries are loaded offset = '/dataset/%s/map' % name res = self.app.get(offset) assert '<script type="text/javascript" src="/ckanext/spatial/js/wms_preview.js"></script>' in res, res assert 'CKAN.WMSPreview.setup("%s");' % wms_url.split('?')[0] in res