Пример #1
0
def create_metadata_doc(couchdb, layer):
    metadata_url = couchdb.couch_url + '/metadata'

    md_doc = {
        'title':
        layer.wmts_source.title,
        'name':
        layer.name,
        'type':
        'tiles',
        'source': {
            'type': layer.wmts_source.source_type,
            'url': layer.wmts_source.url,
            'format': layer.wmts_source.format,
            'srs': layer.wmts_source.srs,
            'layers': layer.wmts_source.layer,
        },
        'levelMin':
        layer.wmts_source.download_level_start
        or layer.wmts_source.view_level_start,
        'levelMax':
        layer.wmts_source.download_level_end
        or layer.wmts_source.view_level_end,
    }
    resp = requests.get(couchdb.couch_url)
    if resp.status_code == 404:
        requests.put(couchdb.couch_url)

    resp = requests.get(metadata_url)
    if resp.status_code == 200:
        rev = resp.json()['_rev']
        md_doc['_rev'] = rev
    elif resp.status_code != 404:
        raise CouchDBCache.UnexpectedResponse(
            'got unexpected resp (%d) from CouchDB: %s' %
            (resp.status_code, resp.content))

    resp = requests.put(
        metadata_url,
        headers=[('Content-type', 'application/json')],
        data=json.dumps(md_doc),
    )