예제 #1
0
from sqlalchemy import engine_from_config
import sqlahelper
from owslib.wms import WebMapService
from xml.dom.minidom import parseString
from math import sqrt

from c2cgeoportal.lib import get_setting, caching, get_protected_layers_query
from c2cgeoportal.lib.functionality import get_functionality
from c2cgeoportal.models import DBSession, Layer, LayerGroup, \
    Theme, RestrictionArea, Role, User
from c2cgeoportal.lib.wmstparsing import parse_extent, TimeInformation


_ = TranslationStringFactory('c2cgeoportal')
log = logging.getLogger(__name__)
cache_region = caching.get_region()


class Entry(object):

    WFS_NS = "http://www.opengis.net/wfs"

    def __init__(self, request):
        self.request = request
        if request.user:
            request.response.cache_control.private = True
        else:
            request.response.cache_control.public = True
        request.response.cache_control.max_age = \
            request.registry.settings["default_max_age"]
        self.settings = request.registry.settings
예제 #2
0
from xml import sax
from xml.sax import saxutils
from xml.sax.saxutils import XMLFilterBase, XMLGenerator
from xml.sax.xmlreader import InputSource

from pyramid.httpexceptions import HTTPBadGateway

from sqlalchemy import distinct

from owslib.wms import WebMapService

from c2cgeoportal.lib import caching, get_protected_layers_query, \
    get_writable_layers_query, add_url_params
from c2cgeoportal.models import DBSession, Layer

cache_region = caching.get_region()
log = logging.getLogger(__name__)


@cache_region.cache_on_arguments()
def get_protected_layers(role_id):
    q = get_protected_layers_query(role_id, distinct(Layer.name))
    return [r for r, in q.all()]


@cache_region.cache_on_arguments()
def get_private_layers():
    q = DBSession.query(Layer.name).filter(Layer.public.is_(False))
    return [r for r, in q.all()]

예제 #3
0
import logging

import simplejson as json
from simplejson.decoder import JSONDecodeError

from pyramid.view import view_config
from pyramid.response import Response
from pyramid.httpexceptions import HTTPBadGateway

from c2cgeoportal.lib.caching import get_region, \
    set_common_headers, NO_CACHE, PRIVATE_CACHE
from c2cgeoportal.lib.functionality import get_functionality
from c2cgeoportal.views.proxy import Proxy

log = logging.getLogger(__name__)
cache_region = get_region()


class PrintProxy(Proxy):  # pragma: no cover

    def __init__(self, request):
        Proxy.__init__(self, request)
        self.config = self.request.registry.settings

    def _get_capabilities_proxy(self, filter_, *args, **kwargs):
        resp, content = self._proxy(*args, **kwargs)

        if self.request.method == "GET":
            try:
                capabilities = json.loads(content)
            except JSONDecodeError as e:
예제 #4
0
import urllib.parse
import urllib.error
import logging

import json

from pyramid.view import view_config
from pyramid.response import Response
from pyramid.httpexceptions import HTTPBadGateway

from c2cgeoportal.lib.caching import get_region, set_common_headers, NO_CACHE, PRIVATE_CACHE
from c2cgeoportal.lib.functionality import get_functionality
from c2cgeoportal.views.proxy import Proxy

log = logging.getLogger(__name__)
cache_region = get_region()


class PrintProxy(Proxy):  # pragma: no cover
    def __init__(self, request):
        Proxy.__init__(self, request)
        self.config = self.request.registry.settings

    def _get_capabilities_proxy(self, filter_, *args, **kwargs):
        resp, content = self._proxy(*args, **kwargs)

        if self.request.method == "GET":
            if resp.status == 200:
                try:
                    capabilities = json.loads(content)
                except json.JSONDecodeError as e: