source: cows/trunk/cows/service/imps/data_reader_geoplot_backend/slab_options_parser.py @ 5755

Subversion URL: http://proj.badc.rl.ac.uk/svn/ndg/cows/trunk/cows/service/imps/data_reader_geoplot_backend/slab_options_parser.py@5755
Revision 5755, 1.8 KB checked in by pnorton, 11 years ago (diff)

Modified the browser sniffing code so that it dosen't trigger for IE 8. Also made some changes to the slab option parsers.

Line 
1import logging
2import mock
3
4from matplotlib import cm
5from cows.service.imps.csmlbackend.config import config
6
7log = logging.getLogger(__name__)
8
9class SlabOptionsParser(object):
10   
11    def __init__(self, slabOptions, renderOptions):
12       
13        self._slabOptionsLookup = {}
14        for option in slabOptions:
15            self._slabOptionsLookup[option.name.lower()] = option
16       
17       
18       
19        self._renderOptions = {}
20        for k, v in renderOptions.items():
21            self._renderOptions[k.lower()] = v
22       
23    def getOption(self, optionName):
24        return self._getOption(optionName)
25   
26    def _getOption(self, optionName):
27       
28        name = optionName.lower()
29
30        if name not in self._slabOptionsLookup:
31            log.warning("Unknown option %s received, returning None")
32            return None
33       
34        value = None;
35        if name in self._renderOptions:
36            value = self._getOptionFromDict(name)
37       
38        if value == None:
39            value = self._getDefaultForOption(name)
40       
41        return value
42   
43    def _getOptionFromDict(self, optionName):
44       
45        value = None
46       
47        try:
48            stringValue = self._renderOptions[optionName]
49            type = self._slabOptionsLookup[optionName].type
50            log.debug("optionName = %s, stringValue = %s" % (optionName, stringValue,))
51            if type == bool :
52                value = stringValue.lower() == 'true'
53            else:
54                value = type(stringValue)
55               
56        except:
57            log.exception("Error getting option %s from renderOptions=%s" % (optionName, self._renderOptions))
58            value = None
59           
60        return value
61
62    def _getDefaultForOption(self, optionName):
63        return self._slabOptionsLookup[optionName].default
64       
Note: See TracBrowser for help on using the repository browser.