Ignore:
Timestamp:
18/09/09 09:47:28 (10 years ago)
Author:
pnorton
Message:

Added some wms request logging that writes the parameeters and the header information to a file. Hopefully this will enable statistics to be generated on the data usage.

Also made some changes to the demo page so that it works in IE.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • qesdi/wms_ddc_vis/trunk/lib/wms_ddc_vis/controllers/csmlwms3.py

    r5701 r5734  
    1414 
    1515from wms_ddc_vis.lib.base import request, response 
     16from wms_ddc_vis.lib.wms_request_log_utils import buildLogString, wms_request_logger 
    1617 
    1718log = logging.getLogger(__name__) 
     19 
    1820 
    1921class Csmlwms3Controller(WMSController): 
     
    3133        WMSController._loadCapabilities(self, *args, **kwargs) 
    3234     
     35    def __before__(self, **kwargs): 
     36        wms_request_logger.info( buildLogString(request) ) 
     37        WMSController.__before__(self, **kwargs) 
     38     
    3339    def GetDisplayOptions(self): 
    3440         
    35         generator = SlabJSONGenerator(DRGeoplotWmsLayer.slab_classes) 
     41        #create a list of names for each of the styles (each slabClass has its onw style) 
     42        styleOptionsMap = {} 
     43        for klass in DRGeoplotWmsLayer.slab_classes: 
     44            styleOptionsMap[klass.style] = [x for x in klass.renderingOptions] 
     45         
     46         
     47         
     48        generator = SlabJSONGenerator(styleOptionsMap) 
    3649         
    3750        request.headers['Content-Type'] = 'application/json' 
     
    4053         
    4154        response.write( jsonString ) 
    42      
     55    
    4356    
    4457    def GetFigure(self): 
     
    7184        dimValues = self._getDimValues(layerObj) 
    7285         
     86         
    7387        log.debug("dimValues = %s" % (dimValues,)) 
     88        variable = layerObj.dataReader.getNetcdfVar(layerObj.name, dimValues) 
    7489         
    75         variable = layerObj.dataReader.getNetcdfVar(layerObj.name, dimValues) 
     90                             
     91        params = self._getLowerCaseParams() 
    7692         
    7793        log.debug("variable.shape = %s" % (variable.shape,)) 
    7894        log.debug("bbox = %s" % (bbox,)) 
    7995 
    80         optionalParams = self.getOptionalOWSParams(['cmap','CMAP_MAX','CMAP_MIN', 'SHOW_GRID_LINES', 'NUM_CONTOUR_LINES',  
    81                                                     'CONTOUR_LABEL_INTERVAL', 'width', 'height', 'INTERVALCOLOURBAR', 'INTERVALNAMES']) 
    82          
    8396        (xMin, yMin, xMax, yMax) = bbox 
    8497         
     
    91104        kwargs['drawMetadata'] = True 
    92105        kwargs['units'] = layerObj.units 
     106        kwargs['width'] = width 
     107        kwargs['height'] = height 
    93108 
    94         if 'cmap' in optionalParams: 
    95             kwargs['cmap']= optionalParams['cmap'] 
    96              
    97         if self.getOwsParam('cmap', default=None) != None: 
    98             kwargs['cmap'] = self.getOwsParam('cmap') 
     109        if 'cmap' in params: 
     110            kwargs['cmap']= params['cmap'] 
    99111         
    100         if 'INTERVALCOLOURBAR' in optionalParams: 
    101             kwargs['intervalColourbar'] = optionalParams['INTERVALCOLOURBAR'].lower() == 'true' 
     112        if 'intervalcolourbar' in params: 
     113            kwargs['intervalColourbar'] = params['intervalcolourbar'].lower() == 'true' 
    102114         
    103         if 'INTERVALNAMES' in optionalParams: 
    104             kwargs['intervalNames'] = optionalParams['INTERVALNAMES'].split(',') 
     115        if 'intervalnames' in params: 
     116            kwargs['intervalNames'] = params['intervalnames'].split(',') 
    105117         
    106         if 'CMAP_MAX' in optionalParams: 
    107             kwargs['colourBarMax'] = float(optionalParams['CMAP_MAX']) 
     118        if 'cmap_max' in params: 
     119            kwargs['colourBarMax'] = float(params['cmap_max']) 
    108120        else: 
    109121            kwargs['colourBarMax'] = variable[:].max() 
    110122 
    111         if 'CMAP_MIN' in optionalParams: 
    112             kwargs['colourBarMin'] = float(optionalParams['CMAP_MIN']) 
     123        if 'cmap_min' in params: 
     124            kwargs['colourBarMin'] = float(params['cmap_min']) 
    113125        else: 
    114126            kwargs['colourBarMin'] = variable[:].min()         
    115127         
    116         if 'width' in optionalParams: 
    117             kwargs['width'] = int(optionalParams['width']) 
    118          
    119         if 'height' in optionalParams: 
    120             kwargs['height'] = int(optionalParams['height']) 
    121          
    122         log.debug("kwargs = %s" % (kwargs,)) 
     128        log.info("kwargs = %s" % (kwargs,)) 
    123129         
    124130        if styles == "" or styles[0] == 'grid': 
    125131             
    126             if 'SHOW_GRID_LINES' in optionalParams: 
    127                 kwargs['showGridLines'] = optionalParams['SHOW_GRID_LINES'].lower() == 'true' 
     132            if 'show_grid_lines' in params: 
     133                kwargs['showGridLines'] = params['show_grid_lines'].lower() == 'true' 
    128134                 
    129135            plt = PlotLatLon(variable, **kwargs) 
     
    131137        elif styles[0] == 'contour': 
    132138             
    133             if 'NUM_CONTOUR_LINES' in optionalParams: 
    134                 kwargs['numContourLines'] = int(optionalParams['NUM_CONTOUR_LINES']) 
     139            if 'num_contour_lines' in params: 
     140                kwargs['numContourLines'] = int(params['num_contour_lines']) 
    135141         
    136             if 'CONTOUR_LABEL_INTERVAL' in optionalParams: 
    137                 kwargs['contourLabelInterval'] = int(optionalParams['CONTOUR_LABEL_INTERVAL']) 
     142            if 'contour_label_interval' in params: 
     143                kwargs['contourLabelInterval'] = int(params['contour_label_interval']) 
    138144                 
    139145            log.debug("kwargs = %s" % (kwargs,)) 
     
    143149            raise Exception("unknown style %s" % (styles[0],)) 
    144150  
    145          
    146151        if format in self.nonPILFormats.keys(): 
    147152            plt.format = self.nonPILFormats[format] 
     
    161166             
    162167        log.debug("finished getFigure") 
    163      
    164     def getOptionalOWSParams(self, paramNames): 
    165168         
    166         d = {} 
     169    def _getLowerCaseParams(self): 
     170        lowerDictionary = {} 
    167171         
    168         for n in paramNames: 
    169             val = self.getOwsParam(n, default=None) 
    170               
    171             if val == None: continue 
     172        for k, v in request.params.items(): 
    172173             
    173             val.strip() 
     174            if v == None: 
     175                continue  
    174176             
    175             if val == "": continue 
     177            v.strip() 
    176178             
    177             d[n] = val 
     179            if v == "": 
     180                continue 
    178181             
    179         return d 
     182            lowerDictionary[k.lower()] = v 
     183         
     184        return lowerDictionary 
     185 
    180186                 
Note: See TracChangeset for help on using the changeset viewer.