示例#1
0
    def respond_ckan(ty):
        # First check if there is a package (dataset) in CKAN
        tables = {"task": model.Task, "task_run": model.TaskRun}
        msg_1 = gettext("Data exported to ")
        msg = msg_1 + "%s ..." % current_app.config['CKAN_URL']
        ckan = Ckan(url=current_app.config['CKAN_URL'],
                    api_key=current_user.ckan_api)
        app_url = url_for('.details', short_name=app.short_name, _external=True)

        try:
            package, e = ckan.package_exists(name=app.short_name)
            if e:
                raise e
            if package:
                # Update the package
                owner = User.query.get(app.owner_id)
                package = ckan.package_update(app=app, user=owner, url=app_url,
                                              resources=package['resources'])

                ckan.package = package
                resource_found = False
                # print len(package['resources'])
                for r in package['resources']:
                    if r['name'] == ty:
                        ckan.datastore_delete(name=ty, resource_id=r['id'])
                        ckan.datastore_create(name=ty, resource_id=r['id'])
                        ckan.datastore_upsert(name=ty,
                                              records=gen_json(tables[ty]),
                                              resource_id=r['id'])
                        resource_found = True
                        break
                if not resource_found:
                    create_ckan_datastore(ckan, ty, package['id'])
            else:
                owner = User.query.get(app.owner_id)
                package = ckan.package_create(app=app, user=owner, url=app_url)
                create_ckan_datastore(ckan, ty, package['id'])
                #new_resource = ckan.resource_create(name=ty,
                #                                    package_id=package['id'])
                #ckan.datastore_create(name=ty,
                #                      resource_id=new_resource['result']['id'])
                #ckan.datastore_upsert(name=ty,
                #                     records=gen_json(tables[ty]),
                #                     resource_id=new_resource['result']['id'])
            flash(msg, 'success')
            return respond()
        except requests.exceptions.ConnectionError:
                msg = "CKAN server seems to be down, try again layer or contact the CKAN admins"
                current_app.logger.error(msg)
                flash(msg, 'danger')
        except Exception as inst:
            if len(inst.args) == 3:
                t, msg, status_code = inst.args
                msg = ("Error: %s with status code: %s" % (t, status_code))
            else: # pragma: no cover
                msg = ("Error: %s" % inst.args[0])
            current_app.logger.error(msg)
            flash(msg, 'danger')
        finally:
            return respond()
示例#2
0
    def respond_ckan(ty):
        # First check if there is a package (dataset) in CKAN
        tables = {"task": model.Task, "task_run": model.TaskRun}
        msg_1 = gettext("Data exported to ")
        msg = msg_1 + "%s ..." % current_app.config['CKAN_URL']
        ckan = Ckan(url=current_app.config['CKAN_URL'],
                    api_key=current_user.ckan_api)
        app_url = url_for('.details', short_name=app.short_name, _external=True)

        try:
            package, e = ckan.package_exists(name=app.short_name)
            if e:
                raise e
            if package:
                # Update the package
                owner = User.query.get(app.owner_id)
                package = ckan.package_update(app=app, user=owner, url=app_url,
                                              resources=package['resources'])

                ckan.package = package
                resource_found = False
                # print len(package['resources'])
                for r in package['resources']:
                    if r['name'] == ty:
                        ckan.datastore_delete(name=ty, resource_id=r['id'])
                        ckan.datastore_create(name=ty, resource_id=r['id'])
                        ckan.datastore_upsert(name=ty,
                                              records=gen_json(tables[ty]),
                                              resource_id=r['id'])
                        resource_found = True
                        break
                if not resource_found:
                    create_ckan_datastore(ckan, ty, package['id'])
            else:
                owner = User.query.get(app.owner_id)
                package = ckan.package_create(app=app, user=owner, url=app_url)
                create_ckan_datastore(ckan, ty, package['id'])
                #new_resource = ckan.resource_create(name=ty,
                #                                    package_id=package['id'])
                #ckan.datastore_create(name=ty,
                #                      resource_id=new_resource['result']['id'])
                #ckan.datastore_upsert(name=ty,
                #                     records=gen_json(tables[ty]),
                #                     resource_id=new_resource['result']['id'])
            flash(msg, 'success')
            return respond()
        except requests.exceptions.ConnectionError:
                msg = "CKAN server seems to be down, try again layer or contact the CKAN admins"
                current_app.logger.error(msg)
                flash(msg, 'danger')
        except Exception as inst:
            if len(inst.args) == 3:
                t, msg, status_code = inst.args
                msg = ("Error: %s with status code: %s" % (t, status_code))
            else: # pragma: no cover
                msg = ("Error: %s" % inst.args[0])
            current_app.logger.error(msg)
            flash(msg, 'danger')
        finally:
            return respond()
示例#3
0
    def respond_ckan(ty):
        # First check if there is a package (dataset) in CKAN
        tables = {"task": model.Task, "task_run": model.TaskRun}
        msg_1 = lazy_gettext("Data exported to ")
        msg = msg_1 + "%s ..." % current_app.config['CKAN_URL']
        ckan = Ckan(url=current_app.config['CKAN_URL'],
                    api_key=current_user.ckan_api)
        app_url = url_for('.details',
                          short_name=app.short_name,
                          _external=True)

        try:
            package = ckan.package_exists(name=app.short_name)
            if package:
                # Update the package
                ckan.package_update(app=app, user=app.owner, url=app_url)
                if len(package['resources']) == 0:
                    resources = create_ckan_datastores(ckan)
                    ckan.datastore_upsert(name=ty,
                                          records=gen_json(tables[ty]),
                                          resource_id=resources[ty]['id'])
                    flash(msg, 'success')
                    return render_template('/applications/export.html',
                                           title=title,
                                           app=app)
                else:
                    ckan.datastore_delete(name=ty)
                    ckan.datastore_create(name=ty)
                    ckan.datastore_upsert(name=ty,
                                          records=gen_json(tables[ty]))
                    flash(msg, 'success')
                    return render_template('/applications/export.html',
                                           title=title,
                                           app=app)
            else:
                ckan.package_create(app=app,
                                    user=app.owner,
                                    url=app_url,
                                    tags=current_app.config['BRAND'])
                resources = create_ckan_datastores(ckan)
                ckan.datastore_upsert(name=ty,
                                      records=gen_json(tables[ty]),
                                      resource_id=resources[ty]['id'])

                flash(msg, 'success')
                return render_template('/applications/export.html',
                                       title=title,
                                       app=app)
        except Exception as inst:
            print inst
            if len(inst.args) == 3:
                type, msg, status_code = inst.args
                msg = ("Error: %s with status code: %s" % (type, status_code))
            else:
                msg = ("Error: %s" % inst.args[0])
            flash(msg, 'danger')
            return render_template('/applications/export.html',
                                   title=title,
                                   app=app)
示例#4
0
    def respond_ckan(ty):
        # First check if there is a package (dataset) in CKAN
        tables = {"task": model.Task, "task_run": model.TaskRun}
        msg_1 = lazy_gettext("Data exported to ")
        msg = msg_1 + "%s ..." % current_app.config['CKAN_URL']
        ckan = Ckan(url=current_app.config['CKAN_URL'],
                    api_key=current_user.ckan_api)
        app_url = url_for('.details',
                          short_name=app.short_name,
                          _external=True)

        try:
            package, e = ckan.package_exists(name=app.short_name)
            if e:
                raise e
            if package:
                # Update the package
                ckan.package_update(app=app, user=app.owner, url=app_url)
                if len(package['resources']) == 0:
                    resources = create_ckan_datastores(ckan)
                    ckan.datastore_upsert(name=ty,
                                          records=gen_json(tables[ty]),
                                          resource_id=resources[ty]['id'])
                else:
                    ckan.datastore_delete(name=ty)
                    ckan.datastore_create(name=ty)
                    ckan.datastore_upsert(name=ty,
                                          records=gen_json(tables[ty]))
            else:
                ckan.package_create(app=app,
                                    user=app.owner,
                                    url=app_url,
                                    tags=current_app.config['BRAND'])
                resources = create_ckan_datastores(ckan)
                ckan.datastore_upsert(name=ty,
                                      records=gen_json(tables[ty]),
                                      resource_id=resources[ty]['id'])

            flash(msg, 'success')
            return respond()
        except requests.exceptions.ConnectionError:
            msg = "CKAN server seems to be down, try again layer or contact the CKAN admins"
            current_app.logger.error(msg)
            flash(msg, 'danger')
        except Exception as inst:
            if len(inst.args) == 3:
                type, msg, status_code = inst.args
                msg = ("Error: %s with status code: %s" % (type, status_code))
            else:
                msg = ("Error: %s" % inst.args[0])
            current_app.logger.error(msg)
            flash(msg, 'danger')
        finally:
            return respond()
示例#5
0
    def respond_ckan(ty):
        # First check if there is a package (dataset) in CKAN
        tables = {"task": model.Task, "task_run": model.TaskRun}
        msg_1 = lazy_gettext("Data exported to ")
        msg = msg_1 + "%s ..." % current_app.config['CKAN_URL']
        ckan = Ckan(url=current_app.config['CKAN_URL'],
                    api_key=current_user.ckan_api)
        app_url = url_for('.details', short_name=app.short_name, _external=True)

        try:
            package, e = ckan.package_exists(name=app.short_name)
            if e:
                raise e
            if package:
                # Update the package
                ckan.package_update(app=app, user=app.owner, url=app_url)
                if len(package['resources']) == 0:
                    resources = create_ckan_datastores(ckan)
                    ckan.datastore_upsert(name=ty,
                                          records=gen_json(tables[ty]),
                                          resource_id=resources[ty]['id'])
                else:
                    ckan.datastore_delete(name=ty)
                    ckan.datastore_create(name=ty)
                    ckan.datastore_upsert(name=ty, records=gen_json(tables[ty]))
            else:
                ckan.package_create(app=app, user=app.owner, url=app_url,
                                    tags=current_app.config['BRAND'])
                resources = create_ckan_datastores(ckan)
                ckan.datastore_upsert(name=ty,
                                      records=gen_json(tables[ty]),
                                      resource_id=resources[ty]['id'])

            flash(msg, 'success')
            return respond()
        except requests.exceptions.ConnectionError:
                msg = "CKAN server seems to be down, try again layer or contact the CKAN admins"
                current_app.logger.error(msg)
                flash(msg, 'danger')
        except Exception as inst:
            if len(inst.args) == 3:
                type, msg, status_code = inst.args
                msg = ("Error: %s with status code: %s" % (type, status_code))
            else:
                msg = ("Error: %s" % inst.args[0])
            current_app.logger.error(msg)
            flash(msg, 'danger')
        finally:
            return respond()