Exemplo n.º 1
0
    def get(self, request, dataset):
        dataset = Dataset.objects.filter(slug=dataset).first()
        request = normalize_get_params(request)

        # This calls the passed in 'request' method on a Dataset and returns the response
        try:
            reqtype = request.GET['request']
            if reqtype.lower() == 'getcapabilities':
                return TemplateResponse(request, 'wms/getcapabilities.xml', dict(gfi_formats=gfi_handler.FORMATS, dataset=dataset, server=Server.objects.first()), content_type='application/xml')
            else:
                layer = get_layer_from_request(dataset, request)
                if not layer:
                    raise ValueError('Could not find a layer named "{}"'.format(request.GET.get('layers')))
                if reqtype.lower() == 'getmap':
                    request = enhance_getmap_request(dataset, layer, request)
                elif reqtype.lower() == 'getlegendgraphic':
                    request = enhance_getlegendgraphic_request(dataset, layer, request)
                elif reqtype.lower() == 'getfeatureinfo':
                    request = enhance_getfeatureinfo_request(dataset, layer, request)
                elif reqtype.lower() == 'getmetadata':
                    request = enhance_getmetadata_request(dataset, layer, request)

                return getattr(dataset, reqtype.lower())(layer, request)

        except NotImplementedError:
            logger.exception('Returning a 500:')
            return HttpResponse('"{}" is not implemented for a {}'.format(reqtype, dataset.__class__.__name__), status=500, reason="Could not process inputs", content_type="application/json")
        except BaseException as e:
            logger.exception('Returning a 500:')
            return HttpResponse(str(e), status=500, reason="Could not process inputs", content_type="application/json")
Exemplo n.º 2
0
 def getlegendgraphic(self, layer, request):
     try:
         if 'filledcontours' in request.GET['image_type']:
             return glg_handler.filledcontour(request)
         elif 'contours' in request.GET['image_type']:
             return glg_handler.contour(request)
         elif 'vector' in request.GET['image_type']:
             return glg_handler.vector(request)
         else:
             return glg_handler.gradiant(request)
     except BaseException:
         logger.exception("Could not process GetLegendGraphic request")
         raise
Exemplo n.º 3
0
    def get(self, request, dataset):
        dataset = Dataset.objects.filter(slug=dataset).first()
        request = normalize_get_params(request)
        reqtype = request.GET['request']

        # This calls the passed in 'request' method on a Dataset and returns the response
        try:
            if reqtype.lower() == 'getcapabilities':
                return TemplateResponse(request, 'wms/getcapabilities.xml', dict(dataset=dataset, server=Server.objects.first()), content_type='application/xml')
            else:
                layer = get_layer_from_request(dataset, request)
                if not layer:
                    raise ValueError('Could not find a layer named "{}"'.format(request.GET.get('layers')))
                if reqtype.lower() == 'getmap':
                    request = enhance_getmap_request(dataset, layer, request)
                elif reqtype.lower() == 'getlegendgraphic':
                    request = enhance_getlegendgraphic_request(dataset, layer, request)
                elif reqtype.lower() == 'getfeatureinfo':
                    request = enhance_getfeatureinfo_request(dataset, layer, request)
                elif reqtype.lower() == 'getmetadata':
                    request = enhance_getmetadata_request(dataset, layer, request)
                try:
                    response = getattr(dataset, reqtype.lower())(layer, request)
                except AttributeError as e:
                    logger.exception(e)
                    return HttpResponse(str(e), status=500, reason="Could not process inputs", content_type="application/json")
                except NotImplementedError as e:
                    return HttpResponse(str(e), status=500, reason="Could not process inputs", content_type="application/json")
                # Test formats, etc. before returning?
                return response
        except (AttributeError, ValueError) as e:
            logger.exception(str(e))
            return HttpResponse(str(e), status=500, reason="Could not process inputs", content_type="application/json")
        except NotImplementedError as e:
            logger.exception(str(e))
            return HttpResponse('"{}" is not implemented for a {}'.format(reqtype, dataset.__class__.__name__), status=500, reason="Could not process inputs", content_type="application/json")