def datapackage_show(context, data_dict): """ Generate the data required for a datapackage for the specified package. """ model = context['model'] try: p.toolkit.check_access('package_show', context, data_dict) pkg = get_package_object(context, data_dict).as_dict() except logic.NotFound: p.toolkit.abort(404) datapackage = { 'id': pkg['id'], 'name': pkg['name'], 'title': pkg['title'], 'license': LICENSE_LOOKUP.get(pkg['license_id'], ''), 'resources': [], } if pkg['notes']: datapackage['description'] = pkg['notes'] try: package_zip = PackageZip.get_for_package(pkg['id']) datapackage['filepath'] = package_zip.filepath except Exception, ex: pass
def datapackage_show(context, data_dict): """ Generate the data required for a datapackage for the specified package. """ model = context["model"] try: p.toolkit.check_access("package_show", context, data_dict) pkg = get_package_object(context, data_dict).as_dict() except logic.NotFound: p.toolkit.abort(404) datapackage = { "id": pkg["id"], "name": pkg["name"], "title": pkg["title"], "license": LICENSE_LOOKUP.get(pkg["license_id"], ""), "resources": [], } if pkg["notes"]: datapackage["description"] = pkg["notes"] try: package_zip = PackageZip.get_for_package(pkg["id"]) datapackage["filepath"] = package_zip.filepath except Exception, ex: pass
def has_packagezip(pkg): return PackageZip.get_for_package(pkg.id) != None
def packagezip_has_data(pkg): pz = PackageZip.get_for_package(pkg.id) if pz: return pz.has_data
def packagezip_size(pkg): pz = PackageZip.get_for_package(pkg.id) if pz: return pz.size
template.render(datapackage=datapackage, date=datetime.datetime.now()).encode('utf8')) # Strip out unnecessary data from datapackage for res in datapackage['resources']: del res['has_data'] if 'cache_filepath' in res: del res['cache_filepath'] if 'reason' in res: del res['reason'] if 'detected_format' in res: del res['detected_format'] zipf.writestr('datapackage.json', json.dumps(datapackage, indent=4)) statinfo = os.stat(filepath) filesize = statinfo.st_size package_zip = PackageZip.get_for_package(package_id) if not package_zip: PackageZip.create(package_id, filepath, filesize, has_data=any_have_data) log.info('Package zip created: %s', filepath) else: package_zip.filepath = filepath package_zip.updated = datetime.datetime.now() package_zip.size = filesize package_zip.has_data = any_have_data log.info('Package zip updated: %s', filepath) model.Session.add(package_zip) model.Session.commit()