Пример #1
0
def proxy_request(url):
    app_state = current_app.config.geobox_state

    response = proxy_couchdb_request(request, url)
    if '201' in response.status:

        if (
            app_state.config.get('web', 'authorization_layer_name') in url
            and 'metadata' not in url
        ):
            couch_url = 'http://%s:%s' % (
                '127.0.0.1',
                app_state.config.get('couchdb', 'port')
            )
            db_name = '%s_%s' % (
                app_state.home_server.prefix,
                app_state.config.get('web', 'authorization_layer_name')
            )
            couch = VectorCouchDB(couch_url, db_name)
            download_coverage = couch.coverage()

            db_session = app_state.user_db_session()
            sources = db_session.query(ExternalWMTSSource).filter_by(
                is_public=False).all()
            for source in sources:
                source.download_coverage = json.dumps(download_coverage)
            db_session.commit()

            if app_state.home_server is not None:
                requests.get(app_state.home_server.update_coverage_url)

    return response
Пример #2
0
def proxy_request(url):
    app_state = current_app.config.geobox_state

    response = proxy_couchdb_request(request, url)
    if '201' in response.status:

        if (app_state.config.get('web', 'authorization_layer_name') in url
                and 'metadata' not in url):
            couch_url = 'http://%s:%s' % (
                '127.0.0.1', app_state.config.get('couchdb', 'port'))
            db_name = '%s_%s' % (app_state.home_server.prefix,
                                 app_state.config.get(
                                     'web', 'authorization_layer_name'))
            couch = VectorCouchDB(couch_url, db_name)
            download_coverage = couch.coverage()

            db_session = app_state.user_db_session()
            sources = db_session.query(ExternalWMTSSource).filter_by(
                is_public=False).all()
            for source in sources:
                source.download_coverage = json.dumps(download_coverage)
            db_session.commit()

            if app_state.home_server is not None:
                requests.get(app_state.home_server.update_coverage_url)

    return response
Пример #3
0
def upload_gml():
    app_state = current_app.config.geobox_state

    form = forms.GMLUploadForm()
    form.srs.choices = list(app_state.config.get('web', 'available_srs'))
    form.srs.choices.insert(0, ('', _('-- select srs --'), ''))

    if form.validate_on_submit():
        upload_file = request.files['upload_file']
        if upload_file:
            mapping = Mapping(None, None, '*', other_srs=form.srs.data)
            couch_url = 'http://%s:%s' % (
                '127.0.0.1', app_state.config.get('couchdb', 'port'))
            db_name = '%s_%s' % (app_state.home_server.prefix,
                                 app_state.config.get(
                                     'web', 'authorization_layer_name'))
            couch = VectorCouchDB(
                couch_url, db_name,
                app_state.config.get('web', 'authorization_layer_title'))
            couch.remove_all_features()
            couch.store_records(load_json_from_gml(upload_file, mapping))

            download_coverage = couch.coverage()

            db_session = app_state.user_db_session()
            sources = db_session.query(ExternalWMTSSource).filter_by(
                is_public=False).all()
            for source in sources:
                source.download_coverage = json.dumps(download_coverage)
            db_session.commit()

            flash(
                _('gml file %(name)s successfully uploaded and geometries added to %(auth_layer_title)s',
                  name=upload_file.filename,
                  auth_layer_title=app_state.config.get(
                      'web', 'authorization_layer_title')), 'info')
            return redirect(url_for('main.index'))

    return render_template('admin/upload_gml.html', form=form)