Changeset 3748 for TI05-delivery


Ignore:
Timestamp:
03/04/08 15:45:26 (11 years ago)
Author:
spascoe
Message:

Renaming dimension parameter names to avoid clashes

File:
1 edited

Legend:

Unmodified
Added
Removed
  • TI05-delivery/ows_framework/branches/ows_framework-refactor/ows_common/ows_common/pylons/wms_controller.py

    r3697 r3748  
    104104            dims = {} 
    105105            for dimName, dim in layer.dimensions.items(): 
    106                 dims[dimName] = Dimension(valuesUnit=dim.units, 
     106                dimParam = self._mapDimToParam(dimName) 
     107                dims[dimParam] = Dimension(valuesUnit=dim.units, 
    107108                                          unitSymbol=dim.units, 
    108109                                          possibleValues= 
     
    169170        return format 
    170171 
     172    _escapedDimNames = ['width', 'height', 'version', 'request', 
     173                        'layers', 'styles', 'crs', 'srs', 'bbox', 
     174                        'format', 'transparent', 'bgcolor', 
     175                        'exceptions'] 
     176    def _mapDimToParam(self, dimName): 
     177        """ 
     178        Dimension names might clash with WMS parameter names, making 
     179        them inaccessible in WMS requests.  This method maps a 
     180        dimension name to a parameter name that appears in the 
     181        capabilities document and WMS requests. 
     182 
     183        """ 
     184        if dimName.lower() in self._escapedDimNames: 
     185            return dimName+'_dim' 
     186        else: 
     187            return dimName 
     188         
     189    def _mapParamToDim(self, dimParam): 
     190        """ 
     191        Maps a dimension parameter name to it's real dimension name. 
     192 
     193        @see: _mapDimToParam() 
     194 
     195        """ 
     196        try: 
     197            dimName = re.match(r'(.*)_dim$', dimParam).group(1) 
     198            if dimName.lower() in self._escapedDimNames: 
     199                return dimName 
     200            else: 
     201                return dimParam 
     202        except AttributeError: 
     203            return dimParam 
     204 
     205 
    171206    #------------------------------------------------------------------------- 
    172207    # OWS Operation methods 
     
    209244        for dimName, dim in layerObj.dimensions.items(): 
    210245            defaultValue = dim.extent[0] 
    211             dimValues[dimName] = self.getOwsParam(dimName, default=defaultValue) 
     246            dimParam = self._mapDimToParam(dimName) 
     247            dimValues[dimName] = self.getOwsParam(dimParam, default=defaultValue) 
    212248             
    213249        #--------------------------------------------------------------------- 
     
    333369        for dimName, dim in layerObj.dimensions.items(): 
    334370            defaultValue = dim.extent[0] 
    335             dimValues[dimName] = self.getOwsParam(dimName, default=defaultValue) 
     371            dimParam = self._mapDimToParam(dimName) 
     372            dimValues[dimName] = self.getOwsParam(dimParam, default=defaultValue) 
    336373        # Get pixel location 
    337374        i = int(self.getOwsParam('i')) 
Note: See TracChangeset for help on using the changeset viewer.