Ignore:
Timestamp:
14/12/09 12:40:11 (11 years ago)
Author:
astephen
Message:

more fixes

File:
1 edited

Legend:

Unmodified
Added
Removed
  • cows_wps/trunk/cows_wps/process_handler/validate_arguments.py

    r6111 r6117  
    4646        return parseDateTime(item) 
    4747    elif dtype in ("bbox",): 
    48         dtype = "float" 
     48        return parseBBox(item) 
    4949 
    5050    transformer = dtype 
     
    147147    date_time_value = dateutil.parser.parse("2008-02-23T12:12:12") 
    148148    return date_time_value 
     149 
     150 
     151def parseBBox(item): 
     152    """ 
     153    Checks bbox is valid floats. 
     154    """ 
     155    err_msg = "Invalid bounding box supplied: '%s'." % item 
     156 
     157    if not len(item) == 4: 
     158        raise Exception(err_msg) 
     159 
     160    try: 
     161        # can we convert all to floats 
     162        bbox_floats = [float(i) for i in item] 
     163    except: 
     164        raise Exception(err_msg) 
     165 
     166    # Must be physically valid 
     167    phys_err = "Value of '%s' (%s) is out of range in bounding box supplied: '%s'."  
     168    directions = ("north", "west", "south", "east") 
     169    ranges = [(-90, 90), (-360, 360), (-90, 90), (-360, 360)] 
     170    
     171    for i in range(4): 
     172        low, high = ranges[i] 
     173        value = bbox_floats[i] 
     174        direction = directions[i] 
     175 
     176        if value > high or value < low: 
     177            raise Exception(phys_err % (direction, value, bbox_floats)) 
     178          
     179    return bbox_floats 
    149180 
    150181 
     
    171202        new_dict = {} 
    172203 
    173 #        log.info("running validation") 
    174  
    175204        # Step through each arg testing for validity 
    176205        arg_names = self.valids["DataInputs"].keys() 
     
    197226                         
    198227                    elif d.has_key('optional'): 
    199      
    200228                        if not d['optional']: 
    201229                            raise Exception("key %s does not exist in args (%s)" % (name, self.args.keys())) 
    202          
    203230                    else: 
    204231                        raise Exception("key %s does not exist in args (%s)" % (name, self.args.keys())) 
     
    208235                # Test the value provided 
    209236                value_given = self.args[name] 
    210               
    211237                new_dict[name] = parseValue(value_given, d) 
    212238                 
Note: See TracChangeset for help on using the changeset viewer.