コード例 #1
0
ファイル: project.py プロジェクト: maximebardou/gbi-client
def import_edit(id=None):
    sources = g.db.query(model.ExternalWMTSSource).all()
    if id is None:
        proj = model.ImportProject()
    else:
        proj = g.db.query(model.ImportProject).get(id)

    if not proj:
        abort(404)

    coverage_form = forms.SelectCoverage()

    form = forms.ImportProjectEdit(request.form)
    form.start_level.choices = get_levels(model.ExternalWMTSSource)
    form.end_level.choices = get_levels(model.ExternalWMTSSource)
    form.update_tiles.checked = proj.update_tiles

    if form.validate_on_submit() and validate_max_tiles(form):
        redirect_url = url_for('.import_list', id=id)
        proj.title = form.data['title']
        proj.import_raster_layers = []
        if form.coverage.data != 'false':
            proj.coverage = prepare_feature_collection_coverage(
                form.coverage.data)
        else:
            proj.coverage = ''
            coverage = None

        proj.download_size = float(form.data.get('download_size', 0.0))
        proj.update_tiles = form.data.get('update_tiles', False)
        g.db.add(
            model.ImportRasterLayer(source=form.raster_source.data,
                                    start_level=int(form.start_level.data),
                                    end_level=int(form.end_level.data),
                                    project=proj))
        g.db.commit()
        if form.start.data == 'start':
            redirect_url = url_for('project.start_raster_import', id=proj.id)
        return redirect(redirect_url)
    elif request.method == 'POST':
        flash(_('form error'), 'error')

    form.title.data = proj.title
    if proj.import_raster_layers:
        form.raster_source.data = proj.import_raster_layers[0].source
        if not request.form.get('start_level'):
            form.start_level.data = proj.import_raster_layers[0].start_level
        if not request.form.get('end_level'):
            form.end_level.data = proj.import_raster_layers[0].end_level

    coverage = proj.coverage if proj.coverage else 'null'
    if form.coverage.data:
        coverage = form.coverage.data

    base_layers = g.db.query(
        model.ExternalWMTSSource).filter_by(background_layer=True).all()
    for base_layer in base_layers:
        base_layer.bbox = base_layer.bbox_from_view_coverage()

    free_disk_space = diskspace_available_in_mb(
        current_app.config.geobox_state.user_data_path())

    couch_url = 'http://%s:%s' % ('127.0.0.1',
                                  current_app.config.geobox_state.config.get(
                                      'couchdb', 'port'))
    couch_layers = list(vector_layers_metadata(couch_url))

    couchlayers_form = forms.SelectCouchLayers()
    couch_titles = []
    for key, couch in enumerate(couch_layers):
        couch_titles.append((key, couch['title']))
    couchlayers_form.select_couch.choices = couch_titles

    return render_template('projects/import_edit.html',
                           proj=proj,
                           form=form,
                           sources=sources,
                           couch_layers=couch_layers,
                           base_layers=base_layers,
                           coverage_form=coverage_form,
                           couchlayers_form=couchlayers_form,
                           coverage=coverage,
                           free_disk_space=free_disk_space,
                           with_server=True)
コード例 #2
0
def import_edit(id):
    proj = g.db.query(model.ImportProject).get(id)

    sources = g.db.query(model.ExternalWMTSSource).all()
    if not proj:
        abort(404)

    coverage_form = forms.SelectCoverage()

    form = forms.ImportProjectEdit(request.form)
    form.start_level.choices = get_levels(model.ExternalWMTSSource)
    form.end_level.choices = get_levels(model.ExternalWMTSSource)
    form.update_tiles.checked = proj.update_tiles

    if form.validate_on_submit():
        redirect_url = url_for('.import_list', id=id)
        proj.title = form.data['title']
        proj.import_raster_layers = []
        if form.coverage.data != 'false':
            proj.coverage = prepare_feature_collection_coverage(
                form.coverage.data)
        else:
            proj.coverage = ''

        proj.download_size = float(form.data.get('download_size', 0.0))
        proj.update_tiles = form.data.get('update_tiles', False)

        g.db.add(
            model.ImportRasterLayer(source=form.raster_source.data,
                                    start_level=int(form.start_level.data),
                                    end_level=int(form.end_level.data),
                                    project=proj))
        g.db.commit()
        if form.start.data == 'start':
            local_raster_source = g.db.query(model.LocalWMTSSource).filter_by(
                wmts_source=form.raster_source.data).first()
            if local_raster_source:
                local_raster_source.download_level_start = min(
                    local_raster_source.download_level_start,
                    int(form.start_level.data))
                local_raster_source.download_level_end = max(
                    local_raster_source.download_level_end,
                    int(form.end_level.data))
            else:
                local_raster_source = model.LocalWMTSSource(
                    download_level_start=int(form.start_level.data),
                    download_level_end=int(form.end_level.data),
                    wmts_source_id=form.raster_source.data.id)
            g.db.add(
                model.RasterImportTask(
                    source=form.raster_source.data,
                    zoom_level_start=int(form.start_level.data),
                    zoom_level_end=int(form.end_level.data),
                    layer=local_raster_source,
                    coverage=prepare_task_coverage(form.coverage.data),
                    update_tiles=form.update_tiles.data,
                    project=proj))
            redirect_url = url_for('tasks.list')
            g.db.commit()
            write_mapproxy_config(current_app.config.geobox_state)
        return redirect(redirect_url)
    elif request.method == 'POST':
        flash(_('form error'), 'error')

    form.title.data = proj.title
    has_zoom_level = 'false'
    if proj.import_raster_layers:
        form.raster_source.data = proj.import_raster_layers[0].source
        form.start_level.data = proj.import_raster_layers[0].start_level
        form.end_level.data = proj.import_raster_layers[0].end_level
        has_zoom_level = 'true'

    coverage = proj.coverage if proj.coverage else 'null'
    base_layer = g.db.query(
        model.ExternalWMTSSource).filter_by(background_layer=True).first()
    base_layer.bbox = base_layer.bbox_from_view_coverage()

    free_disk_space = diskspace_available_in_mb(
        current_app.config.geobox_state.user_data_path())

    return render_template('projects/import_edit.html',
                           proj=proj,
                           form=form,
                           sources=sources,
                           has_zoom_level=has_zoom_level,
                           base_layer=base_layer,
                           coverage_form=coverage_form,
                           coverage=coverage,
                           free_disk_space=free_disk_space)
コード例 #3
0
ファイル: project.py プロジェクト: maximebardou/gbi-client
def export_edit(id=None):
    if id is None:
        proj = model.ExportProject()
    else:
        proj = g.db.query(model.ExportProject).get(id)

    if not proj:
        abort(404)

    raster_sources = g.db.query(model.LocalWMTSSource).order_by(
        model.LocalWMTSSource.id).all()
    coverage_form = forms.SelectCoverage()
    form = forms.ExportProjectEdit(request.form)
    form.end_level.choices = form.start_level.choices = get_levels(
        model.LocalWMTSSource)

    form.srs.choices = list(
        current_app.config.geobox_state.config.get('web', 'available_srs'))
    if form.validate_on_submit():
        proj.title = form.data['title']
        proj.export_raster_layers = []
        proj.export_vector_layers = []
        if form.coverage.data != 'false':
            proj.coverage = prepare_feature_collection_coverage(
                form.coverage.data)
        else:
            proj.coverage = ''

        proj.export_srs = form.srs.data
        proj.export_format = form.format.data
        proj.download_size = float(form.data.get('download_size', 0.0))

        g.db.commit()
        redirect_url = url_for('.export_list', id=id)
        for raster_layer in json.loads(form.data['raster_layers']):
            raster_source = g.db.query(model.LocalWMTSSource).get(
                raster_layer['source_id'])
            start_level = int(raster_layer['start_level'])
            end_level = int(
                raster_layer.get('end_level') or raster_layer['start_level'])
            if not proj.coverage:
                raster_coverage = raster_source.wmts_source.download_coverage
                proj.coverage = raster_coverage
            else:
                raster_coverage = proj.coverage

            g.db.add(
                model.ExportRasterLayer(source=raster_source,
                                        start_level=start_level,
                                        end_level=end_level,
                                        project=proj))
        g.db.commit()

        if form.start.data == 'start':
            create_export_tasks(proj)
            redirect_url = url_for('tasks.list')

        return redirect(redirect_url)

    elif request.method == 'POST':
        flash(_('form error'), 'error')

    form.title.data = proj.title
    form.format.data = proj.export_format
    form.srs.data = proj.export_srs

    coverage = proj.coverage if proj.coverage else 'null'
    if form.coverage.data:
        coverage = form.coverage.data

    base_layers = g.db.query(
        model.ExternalWMTSSource).filter_by(background_layer=True).all()
    for base_layer in base_layers:
        base_layer.bbox = base_layer.bbox_from_view_coverage()

    free_disk_space = diskspace_available_in_mb(
        current_app.config.geobox_state.user_data_path())
    cache_url = get_external_couch_url(request)

    couch_url = 'http://%s:%s' % ('127.0.0.1',
                                  current_app.config.geobox_state.config.get(
                                      'couchdb', 'port'))
    couch_layers = list(vector_layers_metadata(couch_url))

    couchlayers_form = forms.SelectCouchLayers()
    couch_titles = []
    for key, couch in enumerate(couch_layers):
        couch_titles.append((key, couch['title']))
    couchlayers_form.select_couch.choices = couch_titles

    return render_template('projects/export_edit.html',
                           proj=proj,
                           form=form,
                           raster_sources=raster_sources,
                           couch_layers=couch_layers,
                           layers=proj.export_raster_layers,
                           base_layers=base_layers,
                           coverage=coverage,
                           free_disk_space=free_disk_space,
                           coverage_form=coverage_form,
                           couchlayers_form=couchlayers_form,
                           cache_url=cache_url)
コード例 #4
0
ファイル: project.py プロジェクト: gr2m/gbi-client
def import_edit(id=None):
    sources = g.db.query(model.ExternalWMTSSource).all()

    if id is None:
        proj = model.ImportProject()
    else:
        proj = g.db.query(model.ImportProject).get(id)

    if not proj:
        abort(404)

    coverage_form = forms.SelectCoverage()

    form = forms.ImportProjectEdit(request.form)
    form.start_level.choices = get_levels(model.ExternalWMTSSource)
    form.end_level.choices = get_levels(model.ExternalWMTSSource)
    form.update_tiles.checked = proj.update_tiles

    if form.validate_on_submit():
        redirect_url = url_for('.import_list', id=id)
        proj.title = form.data['title']
        proj.import_raster_layers = []
        if form.coverage.data != 'false':
            proj.coverage = prepare_feature_collection_coverage(form.coverage.data)
        else:
            proj.coverage = ''

        proj.download_size = float(form.data.get('download_size', 0.0))
        proj.update_tiles = form.data.get('update_tiles', False)

        g.db.add(model.ImportRasterLayer(
            source=form.raster_source.data,
            start_level=int(form.start_level.data),
            end_level=int(form.end_level.data),
            project=proj
        ))
        g.db.commit()
        if form.start.data == 'start':
            create_raster_import_task(proj)
            redirect_url = url_for('tasks.list')
        return redirect(redirect_url)
    elif request.method == 'POST':
        flash(_('form error'), 'error')

    form.title.data = proj.title
    if proj.import_raster_layers:
        form.raster_source.data = proj.import_raster_layers[0].source
        if not request.form.get('start_level'):
            form.start_level.data = proj.import_raster_layers[0].start_level
        if not request.form.get('end_level'):
            form.end_level.data = proj.import_raster_layers[0].end_level

    coverage = proj.coverage if proj.coverage else 'null'
    if form.coverage.data:
        coverage = form.coverage.data

    base_layer = g.db.query(model.ExternalWMTSSource).filter_by(background_layer=True).first()
    base_layer.bbox = base_layer.bbox_from_view_coverage()

    free_disk_space = diskspace_available_in_mb(current_app.config.geobox_state.user_data_path())

    return render_template('projects/import_edit.html',
        proj=proj, form=form, sources=sources,
        base_layer=base_layer,coverage_form=coverage_form,
        coverage=coverage, free_disk_space=free_disk_space)
コード例 #5
0
def export_edit(id):
    from ...lib.vectormapping import default_mappings as mappings

    proj = g.db.query(model.ExportProject).get(id)

    raster_sources = g.db.query(model.LocalWMTSSource).order_by(
        model.LocalWMTSSource.id).all()

    if not proj:
        abort(404)

    coverage_form = forms.SelectCoverage()
    form = forms.ExportProjectEdit(request.form)
    form.end_level.choices = form.start_level.choices = get_levels(
        model.LocalWMTSSource)
    form.mapping_name.choices = [
        (name, '%s (%s, %s)' %
         (mapping.name, mapping.geom_type, mapping.other_srs.srs_code))
        for name, mapping in mappings.items()
    ]
    form.srs.choices = [(srs, srs)
                        for srs in current_app.config.geobox_state.config.get(
                            'web', 'available_srs')]
    if form.validate_on_submit():
        proj.title = form.data['title']
        proj.export_raster_layers = []
        proj.export_vector_layers = []
        if form.coverage.data != 'false':
            proj.coverage = prepare_feature_collection_coverage(
                form.coverage.data)
        else:
            proj.coverage = ''

        proj.export_srs = form.srs.data
        proj.export_format = form.format.data
        proj.download_size = float(form.data.get('download_size', 0.0))

        g.db.commit()
        redirect_url = url_for('.export_list', id=id)
        for raster_layer in json.loads(form.data['raster_layers']):
            raster_source = g.db.query(model.LocalWMTSSource).get(
                raster_layer['source_id'])
            start_level = int(raster_layer['start_level'])
            end_level = int(
                raster_layer.get('end_level') or raster_layer['start_level'])
            if not proj.coverage:
                raster_coverage = raster_source.wmts_source.download_coverage
                proj.coverage = raster_coverage
            else:
                raster_coverage = proj.coverage

            g.db.add(
                model.ExportRasterLayer(source=raster_source,
                                        start_level=start_level,
                                        end_level=end_level,
                                        project=proj))

            if form.start.data == 'start':
                g.db.add(
                    model.RasterExportTask(layer=raster_source,
                                           export_format=proj.export_format,
                                           export_srs=proj.export_srs,
                                           zoom_level_start=start_level,
                                           zoom_level_end=end_level,
                                           coverage=raster_coverage,
                                           project=proj))
                redirect_url = url_for('tasks.list')

        if form.data['mapping_name'] != 'None':
            g.db.add(
                model.ExportVectorLayer(mapping_name=form.data['mapping_name'],
                                        project=proj))

            if form.start.data == 'start':
                g.db.add(
                    model.VectorExportTask(
                        db_name=mappings[form.data['mapping_name']].couchdb,
                        mapping_name=form.data['mapping_name'],
                        project=proj,
                    ))
                redirect_url = url_for('tasks.list')

        g.db.commit()

        return redirect(redirect_url)

    elif request.method == 'POST':
        flash(_('form error'), 'error')

    form.title.data = proj.title
    form.format.data = proj.export_format
    form.srs.data = proj.export_srs
    if proj.export_vector_layers:
        form.mapping_name.data = proj.export_vector_layers[0].mapping_name
    coverage = proj.coverage if proj.coverage else 'null'
    base_layer = g.db.query(
        model.ExternalWMTSSource).filter_by(background_layer=True).first()
    base_layer.bbox = base_layer.bbox_from_view_coverage()

    free_disk_space = diskspace_available_in_mb(
        current_app.config.geobox_state.user_data_path())
    cache_url = get_local_cache_url(request)

    return render_template('projects/export_edit.html',
                           proj=proj,
                           form=form,
                           raster_sources=raster_sources,
                           layers=proj.export_raster_layers,
                           base_layer=base_layer,
                           coverage=coverage,
                           free_disk_space=free_disk_space,
                           coverage_form=coverage_form,
                           cache_url=cache_url)
コード例 #6
0
ファイル: project.py プロジェクト: gr2m/gbi-client
def export_edit(id=None):
    if id is None:
        proj = model.ExportProject()
    else:
        proj = g.db.query(model.ExportProject).get(id)

    if not proj:
        abort(404)

    raster_sources = g.db.query(model.LocalWMTSSource).order_by(model.LocalWMTSSource.id).all()
    coverage_form = forms.SelectCoverage()
    form = forms.ExportProjectEdit(request.form)
    form.end_level.choices = form.start_level.choices = get_levels(model.LocalWMTSSource)
    form.mapping_name.choices = [
        (name, '%s (%s, %s)' % (mapping.name, mapping.geom_type, mapping.other_srs.srs_code))
        for name, mapping in mappings.items()
    ]
    form.srs.choices = [(srs, srs) for srs in current_app.config.geobox_state.config.get('web', 'available_srs')]
    if form.validate_on_submit():
        proj.title = form.data['title']
        proj.export_raster_layers = []
        proj.export_vector_layers = []
        if form.coverage.data != 'false':
            proj.coverage = prepare_feature_collection_coverage(form.coverage.data)
        else:
            proj.coverage = ''

        proj.export_srs = form.srs.data
        proj.export_format = form.format.data
        proj.download_size = float(form.data.get('download_size', 0.0))

        g.db.commit()
        redirect_url = url_for('.export_list', id=id)
        for raster_layer in json.loads(form.data['raster_layers']):
            raster_source = g.db.query(model.LocalWMTSSource).get(raster_layer['source_id'])
            start_level = int(raster_layer['start_level'])
            end_level = int(raster_layer.get('end_level') or raster_layer['start_level'])
            if not proj.coverage:
                raster_coverage = raster_source.wmts_source.download_coverage
                proj.coverage = raster_coverage
            else:
                raster_coverage = proj.coverage

            g.db.add(model.ExportRasterLayer(
                source=raster_source,
                start_level=start_level,
                end_level=end_level,
                project=proj
            ))

        if form.data['mapping_name'] != 'None':
            g.db.add(model.ExportVectorLayer(
                mapping_name=form.data['mapping_name'],
                project=proj
            ))
        g.db.commit()

        if form.start.data == 'start':
            create_export_tasks(proj)
            redirect_url = url_for('tasks.list')

        return redirect(redirect_url)

    elif request.method == 'POST':
        flash(_('form error'), 'error')

    form.title.data = proj.title
    form.format.data = proj.export_format
    form.srs.data = proj.export_srs
    if proj.export_vector_layers:
        form.mapping_name.data = proj.export_vector_layers[0].mapping_name

    coverage = proj.coverage if proj.coverage else 'null'
    if form.coverage.data:
        coverage = form.coverage.data

    base_layer = g.db.query(model.ExternalWMTSSource).filter_by(background_layer=True).first()
    base_layer.bbox = base_layer.bbox_from_view_coverage()

    free_disk_space = diskspace_available_in_mb(current_app.config.geobox_state.user_data_path())
    cache_url = get_local_cache_url(request)

    return render_template('projects/export_edit.html', proj=proj, form=form, raster_sources=raster_sources,
        layers=proj.export_raster_layers, base_layer=base_layer, coverage=coverage,
        free_disk_space=free_disk_space,coverage_form=coverage_form,
        cache_url=cache_url)
コード例 #7
0
ファイル: project.py プロジェクト: omniscale/gbi-client
def import_edit(id=None):
    sources = g.db.query(model.ExternalWMTSSource).all()
    if id is None:
        proj = model.ImportProject()
    else:
        proj = g.db.query(model.ImportProject).get(id)

    if not proj:
        abort(404)

    coverage_form = forms.SelectCoverage()

    form = forms.ImportProjectEdit(request.form)
    form.start_level.choices = get_levels(model.ExternalWMTSSource)
    form.end_level.choices = get_levels(model.ExternalWMTSSource)
    form.update_tiles.checked = proj.update_tiles

    if form.validate_on_submit() and validate_max_tiles(form):
        redirect_url = url_for('.import_list', id=id)
        proj.title = form.data['title']
        proj.import_raster_layers = []
        if form.coverage.data != 'false':
            proj.coverage = prepare_feature_collection_coverage(form.coverage.data)
        else:
            proj.coverage = ''
            coverage = None

        proj.download_size = float(form.data.get('download_size', 0.0))
        proj.update_tiles = form.data.get('update_tiles', False)
        g.db.add(model.ImportRasterLayer(
            source=form.raster_source.data,
            start_level=int(form.start_level.data),
            end_level=int(form.end_level.data),
            project=proj
        ))
        g.db.commit()
        if form.start.data == 'start':
            redirect_url = url_for('project.start_raster_import', id=proj.id)
        return redirect(redirect_url)
    elif request.method == 'POST':
        flash(_('form error'), 'error')

    form.title.data = proj.title
    if proj.import_raster_layers:
        form.raster_source.data = proj.import_raster_layers[0].source
        if not request.form.get('start_level'):
            form.start_level.data = proj.import_raster_layers[0].start_level
        if not request.form.get('end_level'):
            form.end_level.data = proj.import_raster_layers[0].end_level

    coverage = proj.coverage if proj.coverage else 'null'
    if form.coverage.data:
        coverage = form.coverage.data

    base_layers = g.db.query(model.ExternalWMTSSource).filter_by(
        background_layer=True).all()
    for base_layer in base_layers:
        base_layer.bbox = base_layer.bbox_from_view_coverage()

    free_disk_space = diskspace_available_in_mb(
        current_app.config.geobox_state.user_data_path())

    couch_url = 'http://%s:%s' % (
        '127.0.0.1',
        current_app.config.geobox_state.config.get('couchdb', 'port')
    )
    couch_layers = list(vector_layers_metadata(couch_url))

    couchlayers_form = forms.SelectCouchLayers()
    couch_titles = []
    for key, couch in enumerate(couch_layers):
        couch_titles.append((key, couch['title']))
    couchlayers_form.select_couch.choices = couch_titles

    return render_template('projects/import_edit.html', proj=proj, form=form,
                           sources=sources, couch_layers=couch_layers,
                           base_layers=base_layers, coverage_form=coverage_form,
                           couchlayers_form=couchlayers_form,
                           coverage=coverage, free_disk_space=free_disk_space,
                           with_server=True)
コード例 #8
0
ファイル: project.py プロジェクト: omniscale/gbi-client
def export_edit(id=None):
    if id is None:
        proj = model.ExportProject()
    else:
        proj = g.db.query(model.ExportProject).get(id)

    if not proj:
        abort(404)

    raster_sources = g.db.query(model.LocalWMTSSource).order_by(model.LocalWMTSSource.id).all()
    coverage_form = forms.SelectCoverage()
    form = forms.ExportProjectEdit(request.form)
    form.end_level.choices = form.start_level.choices = get_levels(model.LocalWMTSSource)

    form.srs.choices = list(current_app.config.geobox_state.config.get('web', 'available_srs'))
    if form.validate_on_submit():
        proj.title = form.data['title']
        proj.export_raster_layers = []
        proj.export_vector_layers = []
        if form.coverage.data != 'false':
            proj.coverage = prepare_feature_collection_coverage(form.coverage.data)
        else:
            proj.coverage = ''

        proj.export_srs = form.srs.data
        proj.export_format = form.format.data
        proj.download_size = float(form.data.get('download_size', 0.0))

        g.db.commit()
        redirect_url = url_for('.export_list', id=id)
        for raster_layer in json.loads(form.data['raster_layers']):
            raster_source = g.db.query(model.LocalWMTSSource).get(raster_layer['source_id'])
            start_level = int(raster_layer['start_level'])
            end_level = int(raster_layer.get('end_level') or raster_layer['start_level'])
            if not proj.coverage:
                raster_coverage = raster_source.wmts_source.download_coverage
                proj.coverage = raster_coverage
            else:
                raster_coverage = proj.coverage

            g.db.add(model.ExportRasterLayer(
                source=raster_source,
                start_level=start_level,
                end_level=end_level,
                project=proj
            ))
        g.db.commit()

        if form.start.data == 'start':
            create_export_tasks(proj)
            redirect_url = url_for('tasks.list')

        return redirect(redirect_url)

    elif request.method == 'POST':
        flash(_('form error'), 'error')

    form.title.data = proj.title
    form.format.data = proj.export_format
    form.srs.data = proj.export_srs

    coverage = proj.coverage if proj.coverage else 'null'
    if form.coverage.data:
        coverage = form.coverage.data

    base_layers = g.db.query(model.ExternalWMTSSource).filter_by(background_layer=True).all()
    for base_layer in base_layers:
        base_layer.bbox = base_layer.bbox_from_view_coverage()

    free_disk_space = diskspace_available_in_mb(current_app.config.geobox_state.user_data_path())
    cache_url = get_external_couch_url(request)

    couch_url = 'http://%s:%s' % ('127.0.0.1', current_app.config.geobox_state.config.get('couchdb', 'port'))
    couch_layers = list(vector_layers_metadata(couch_url))

    couchlayers_form = forms.SelectCouchLayers()
    couch_titles = []
    for key, couch in enumerate(couch_layers):
        couch_titles.append((key, couch['title']))
    couchlayers_form.select_couch.choices = couch_titles

    return render_template('projects/export_edit.html', proj=proj, form=form,
        raster_sources=raster_sources,couch_layers=couch_layers,
        layers=proj.export_raster_layers, base_layers=base_layers, coverage=coverage,
        free_disk_space=free_disk_space,coverage_form=coverage_form, couchlayers_form=couchlayers_form,
        cache_url=cache_url)
コード例 #9
0
ファイル: project.py プロジェクト: GeoDodo/gbi-client
def import_edit(id):
    proj = g.db.query(model.ImportProject).get(id)

    sources = g.db.query(model.ExternalWMTSSource).all()
    if not proj:
        abort(404)

    coverage_form = forms.SelectCoverage()

    form = forms.ImportProjectEdit(request.form)
    form.start_level.choices = get_levels(model.ExternalWMTSSource)
    form.end_level.choices = get_levels(model.ExternalWMTSSource)
    form.update_tiles.checked = proj.update_tiles

    if form.validate_on_submit():
        redirect_url = url_for(".import_list", id=id)
        proj.title = form.data["title"]
        proj.import_raster_layers = []
        if form.coverage.data != "false":
            proj.coverage = prepare_feature_collection_coverage(form.coverage.data)
        else:
            proj.coverage = ""

        proj.download_size = float(form.data.get("download_size", 0.0))
        proj.update_tiles = form.data.get("update_tiles", False)

        g.db.add(
            model.ImportRasterLayer(
                source=form.raster_source.data,
                start_level=int(form.start_level.data),
                end_level=int(form.end_level.data),
                project=proj,
            )
        )
        g.db.commit()
        if form.start.data == "start":
            local_raster_source = (
                g.db.query(model.LocalWMTSSource).filter_by(wmts_source=form.raster_source.data).first()
            )
            if local_raster_source:
                local_raster_source.download_level_start = min(
                    local_raster_source.download_level_start, int(form.start_level.data)
                )
                local_raster_source.download_level_end = max(
                    local_raster_source.download_level_end, int(form.end_level.data)
                )
            else:
                local_raster_source = model.LocalWMTSSource(
                    download_level_start=int(form.start_level.data),
                    download_level_end=int(form.end_level.data),
                    wmts_source_id=form.raster_source.data.id,
                )
            g.db.add(
                model.RasterImportTask(
                    source=form.raster_source.data,
                    zoom_level_start=int(form.start_level.data),
                    zoom_level_end=int(form.end_level.data),
                    layer=local_raster_source,
                    coverage=prepare_task_coverage(form.coverage.data),
                    update_tiles=form.update_tiles.data,
                    project=proj,
                )
            )
            redirect_url = url_for("tasks.list")
            g.db.commit()
            write_mapproxy_config(current_app.config.geobox_state)
        return redirect(redirect_url)
    elif request.method == "POST":
        flash(_("form error"), "error")

    form.title.data = proj.title
    has_zoom_level = "false"
    if proj.import_raster_layers:
        form.raster_source.data = proj.import_raster_layers[0].source
        form.start_level.data = proj.import_raster_layers[0].start_level
        form.end_level.data = proj.import_raster_layers[0].end_level
        has_zoom_level = "true"

    coverage = proj.coverage if proj.coverage else "null"
    base_layer = g.db.query(model.ExternalWMTSSource).filter_by(background_layer=True).first()
    base_layer.bbox = base_layer.bbox_from_view_coverage()

    free_disk_space = diskspace_available_in_mb(current_app.config.geobox_state.user_data_path())

    return render_template(
        "projects/import_edit.html",
        proj=proj,
        form=form,
        sources=sources,
        has_zoom_level=has_zoom_level,
        base_layer=base_layer,
        coverage_form=coverage_form,
        coverage=coverage,
        free_disk_space=free_disk_space,
    )
コード例 #10
0
ファイル: project.py プロジェクト: GeoDodo/gbi-client
def export_edit(id):
    from ...lib.vectormapping import default_mappings as mappings

    proj = g.db.query(model.ExportProject).get(id)

    raster_sources = g.db.query(model.LocalWMTSSource).order_by(model.LocalWMTSSource.id).all()

    if not proj:
        abort(404)

    coverage_form = forms.SelectCoverage()
    form = forms.ExportProjectEdit(request.form)
    form.end_level.choices = form.start_level.choices = get_levels(model.LocalWMTSSource)
    form.mapping_name.choices = [
        (name, "%s (%s, %s)" % (mapping.name, mapping.geom_type, mapping.other_srs.srs_code))
        for name, mapping in mappings.items()
    ]
    form.srs.choices = [(srs, srs) for srs in current_app.config.geobox_state.config.get("web", "available_srs")]
    if form.validate_on_submit():
        proj.title = form.data["title"]
        proj.export_raster_layers = []
        proj.export_vector_layers = []
        if form.coverage.data != "false":
            proj.coverage = prepare_feature_collection_coverage(form.coverage.data)
        else:
            proj.coverage = ""

        proj.export_srs = form.srs.data
        proj.export_format = form.format.data
        proj.download_size = float(form.data.get("download_size", 0.0))

        g.db.commit()
        redirect_url = url_for(".export_list", id=id)
        for raster_layer in json.loads(form.data["raster_layers"]):
            raster_source = g.db.query(model.LocalWMTSSource).get(raster_layer["source_id"])
            start_level = int(raster_layer["start_level"])
            end_level = int(raster_layer.get("end_level") or raster_layer["start_level"])
            if not proj.coverage:
                raster_coverage = raster_source.wmts_source.download_coverage
                proj.coverage = raster_coverage
            else:
                raster_coverage = proj.coverage

            g.db.add(
                model.ExportRasterLayer(
                    source=raster_source, start_level=start_level, end_level=end_level, project=proj
                )
            )

            if form.start.data == "start":
                g.db.add(
                    model.RasterExportTask(
                        layer=raster_source,
                        export_format=proj.export_format,
                        export_srs=proj.export_srs,
                        zoom_level_start=start_level,
                        zoom_level_end=end_level,
                        coverage=raster_coverage,
                        project=proj,
                    )
                )
                redirect_url = url_for("tasks.list")

        if form.data["mapping_name"] != "None":
            g.db.add(model.ExportVectorLayer(mapping_name=form.data["mapping_name"], project=proj))

            if form.start.data == "start":
                g.db.add(
                    model.VectorExportTask(
                        db_name=mappings[form.data["mapping_name"]].couchdb,
                        mapping_name=form.data["mapping_name"],
                        project=proj,
                    )
                )
                redirect_url = url_for("tasks.list")

        g.db.commit()

        return redirect(redirect_url)

    elif request.method == "POST":
        flash(_("form error"), "error")

    form.title.data = proj.title
    form.format.data = proj.export_format
    form.srs.data = proj.export_srs
    if proj.export_vector_layers:
        form.mapping_name.data = proj.export_vector_layers[0].mapping_name
    coverage = proj.coverage if proj.coverage else "null"
    base_layer = g.db.query(model.ExternalWMTSSource).filter_by(background_layer=True).first()
    base_layer.bbox = base_layer.bbox_from_view_coverage()

    free_disk_space = diskspace_available_in_mb(current_app.config.geobox_state.user_data_path())
    cache_url = get_local_cache_url(request)

    return render_template(
        "projects/export_edit.html",
        proj=proj,
        form=form,
        raster_sources=raster_sources,
        layers=proj.export_raster_layers,
        base_layer=base_layer,
        coverage=coverage,
        free_disk_space=free_disk_space,
        coverage_form=coverage_form,
        cache_url=cache_url,
    )