Changeset 7535


Ignore:
Timestamp:
28/09/10 12:27:24 (9 years ago)
Author:
astephen
Message:

Fixed to async argument handler working.

Location:
cows_wps/trunk
Files:
1 deleted
14 edited

Legend:

Unmodified
Added
Removed
  • cows_wps/trunk/bin/create_policy_file.py

    r7525 r7535  
    6767    roles_reversed = reverseMap(roles) 
    6868    role_map = roles_info["proc_role_map"] 
    69     arg_map = reverseMap(roles_info["pattern_role_map"], rtype = "dict") 
     69    arg_map = roles_info["pattern_role_map"] 
     70    arg_map_ordered_keys = arg_map.keys() 
     71    arg_map_ordered_keys.sort() 
    7072 
    7173    # Order the process ids 
     
    8284                raise Exception("Unrecognised pattern in 'roles_info.ini' file: '%s'." % pattern) 
    8385 
    84             pattern_modified = pattern[4:].replace("=", ",").replace("/", "\\/") 
     86            pattern_modified = pattern[4:].replace("=", ",") 
    8587 
    86             for (role_number, role) in roles_reversed: 
    87  
     88            for arg in arg_map_ordered_keys: 
     89                 
     90                role = arg_map[arg] 
    8891                if role == "none": continue 
    8992 
    90                 mapped_role = arg_map[role]  
    91                 role_specific_pattern = pattern_modified.replace("(.+?)", mapped_role) 
     93#                mapped_role = arg_map[role]  
     94                role_specific_pattern = pattern_modified.replace("(.+?)", arg) 
    9295                proc_id_and_arg_pattern = ".*%s.*%s.*" % (proc_id, role_specific_pattern) 
    9396 
  • cows_wps/trunk/cows_wps/controllers/status.py

    r7531 r7535  
    1313 
    1414from cows_wps.utils.parse_wps_config import wps_config_dict 
    15 #from cows_wps.utils.role_handler import RoleHandler 
     15from cows_wps.utils.role_handler import RoleHandler 
    1616 
    1717from cows_wps.model.managers import requestManager 
     
    4040        #!FIXME: Remove hard-coded version 
    4141 
    42        
    43 #        rh = RoleHandler() 
     42        # Now work out which authorisedRoles are associated with this Process ID 
     43        # and this set of arguments 
     44        rh = RoleHandler() 
     45        authorisedRoles = rh.getRoleNumberFromProcessIDAndArgs(context.config['identifier'], context.inputs)      
    4446 
    4547        responseXML = xml_renderer.wrapExecuteResponse(context, context.config['identifier'], '0.4.0', context.inputs,  
    4648                      requestId, 
    47                       authorisedRoles="0") 
     49                      authorisedRoles = authorisedRoles) 
    4850 
    4951        response.content_type = 'text/xml' 
  • cows_wps/trunk/cows_wps/controllers/wps.py

    r7531 r7535  
    259259                                                           self.validVersions[0],  
    260260                                                           input_dict, requestId, 
    261                                                            authorisedRoles, 
    262                                                            is_cached=True) 
     261                                                           authorisedRoles = authorisedRoles, 
     262                                                           is_cached = True) 
    263263 
    264264            context.close() 
     
    349349                                                       self.validVersions[0],  
    350350                                                       input_dict, requestId, 
    351                                                        authorisedRoles, 
     351                                                       authorisedRoles = authorisedRoles, 
    352352                                                       is_cached=False) 
    353353         
  • cows_wps/trunk/cows_wps/process_handler/validate_arguments.py

    r7120 r7535  
    8282 
    8383    # Check if enumeration specified and if given values are allowed 
    84     if enumeration: 
     84    # TOFIX: to avoid finding dynamic possible_values 
     85    if enumeration and enumeration[0].find("$") != 0: 
    8586        enum_typed = [convertType(dtype, x) for x in enumeration]  
    8687        checkArgInList(item, enum_typed)    
     
    112113        if allowed_length.find("-") < 0: 
    113114            allowed_lengths = [int(x) for x in allowed_length.split(",")] 
     115 
    114116            if l not in allowed_lengths: 
    115117                raise Exception("Array length of %s is not in list of allowed lengths: %s" \ 
     
    128130 
    129131    # Check if enumeration specified and if given values are allowed 
    130     if enumeration: 
     132    # TOFIX: Need to improve how we miss out the URL template for possible_values 
     133    if enumeration and enumeration[0].find("$") != 0: 
    131134        enum_typed = [convertType(dtype, x) for x in enumeration]  
    132135        for i in array: 
  • cows_wps/trunk/cows_wps/public/js/ui/dynamic_form/dynamic_form_classes.js

    r7477 r7535  
    11/* dynamic_form_classes.js - a set of classes used to support the dynamically generated input form */ 
    22 
    3 NOTES: 
    4  
    5  1. Need to check "--Please select--" before sending requests. Hopefully call validator then only submit if good. 
    6  2. Need to check response is OK... 
     3//NOTES: 
     4 
     5// 1. Need to check "--Please select--" before sending requests. Hopefully call validator then only submit if good. 
     6// 2. Need to check response is OK... 
    77                                // Check for error first 
    8                                 if (checkForWPSCaughtException(xml) == true) { 
    9                                                 return; 
    10                                 } 
    11  
    12  
    13 /* IN PYTHON DO: 
    14 resp += "var dynamic_form_manager = null;"; 
    15 if dynamic == True: 
    16         resp += """dynamic_form_manager = new DynamicFormManager();""" 
    17  
    18         for dyn in dynamics: 
    19                 resp += """\ndynamic_form_manager.addFormField("%s", "%s", "%s");""" % (field_name, url_template, xml_path) 
    20 */ 
     8//                              if (checkForWPSCaughtException(xml) == true) { 
     9//                                              return; 
     10//                              } 
     11 
    2112 
    2213//returns true if supplied item exists in the supplied array 
    23 function contains(arr, item) { 
     14/*function contains(arr, item) { 
    2415        // returns true if item in arr and false if not 
    2516        for (var i = 0; i < arr.length; i++) { 
     
    3021        return false; 
    3122} 
     23*/ 
    3224 
    3325// returns true if there is overlap between the two arrays 
     
    10092 
    10193                for (var i = 0; i < item.length; i++) { 
    102                         if (contains(arr, item[i]) ==  false) { 
     94                        if (contains(arr, item[i]) == false) { 
    10395                                return false; 
    10496                        } 
     
    162154 
    163155        isCached: function(url) { 
    164                 if (contains(this.cache_keys, url)) { 
     156                if (contains(this.cache_keys, url) == true) { 
    165157                        return true; 
    166158                } 
     
    195187} 
    196188 
    197 /* XMLExtractor class - allows extraction of content from XML response. */ 
    198 function XMLExtractor() { 
    199         this.dummy = 1; 
    200 } 
    201  
    202 XMLExtractor.prototype = { 
    203  
    204         extractFromXML: function(xml, xml_path) { 
     189 
     190function extractFromXML(xml, xml_path) { 
    205191                // Extracts values at xml_path location within XML response 
    206192                // E.g. <person><job>nurse mother</job></person> and "person/job" will resturn ["nurse", "mother"] 
     
    213199                $(xml).find(item).each(function() { 
    214200                        if (parts.length == 0) { 
    215 //                                              alert("HERE" + $(this).text()); 
    216201                                resp = $(this).text(); 
    217202                                // This return is for the embedded function and not the object method 
    218203                                return; 
    219204                        } else { 
    220                                 return resolve($(this), new_path); 
     205alert("TEST:" + new_path); 
     206                                return extractFromXML($(this), new_path); 
    221207                        } 
    222208                }); 
    223209 
    224210                if (resp) return resp; 
    225         }, 
    226211} 
    227212 
    228213// URLResolver class - resolves the contents of a URL template into a URL 
    229 function URLResolver(form_id) { 
     214function URLResolver() { 
    230215        this.form_name = false; //form_id; 
    231216//      this.form = $("#" + form_id); 
     
    253238                        url = url.replace(match, selected_field); 
    254239                } 
    255  
    256240                return url; 
    257241        }, 
    258242 
    259243        getSelectedFormField: function(field_name) { 
    260                 var indx = $("#" + field_name + " option").index($("#" + field_name + " option:selected")); 
    261                 var value = $("#" + field_name + " option").eq(indx).val(); 
    262  
    263                 if (value == "-- Please select --") { 
    264                         return false; 
     244                // Need to handle different input types here 
     245                var field = $("#" + field_name); 
     246                var ftype = field.attr("type"); 
     247 
     248                if (ftype == "select") { 
     249                        var indx = $("#" + field_name + " option").index($("#" + field_name + " option:selected")); 
     250                        var value = $("#" + field_name + " option").eq(indx).val(); 
     251 
     252                        if (value == "-- Please select --") { 
     253                                return false; 
     254                        } 
     255                } else { 
     256                        // Assume free text 
     257                        var value = $("#" + field_name).val(); 
    265258                } 
    266259                return value; 
    267260        } 
    268261} 
     262 
     263 
     264// updateFormOnAsyncResponse 
     265/*  - is called as response function after async requests */ 
     266function updateFormOnAsyncResponseCallback(xml, status, XMLHttpRequestObject) { 
     267        // Callback function that picks up and handles the XML response from async calls 
     268        // Just refers to dynamic_form_manager 
     269        return dynamic_form_manager.updateFormOnAsyncResponse(xml, status, XMLHttpRequestObject); 
     270} 
     271/* 
     272        var url = xml.baseURI; 
     273 
     274        dynamic_form_manager.response_cache.addToCache(url, xml); 
     275        var field_names_to_update = dynamic_form_manager.url_to_field_name_mapper[url]; 
     276 
     277        for (var i = 0; i < field_names_to_update.length; i++) { 
     278                var field_name = url_maps[i]; 
     279                this.updateFormElement(field_name, url, xml); 
     280        } 
     281 
     282        // Remove URL from pending list 
     283        this.removePending(url); 
     284} 
     285*/ 
     286 
     287 
    269288 
    270289 
     
    290309                this.response_cache = new ResponseCache(); 
    291310                this.url_resolver = new URLResolver(); 
    292                 this.xml_extractor = new XMLExtractor(); 
    293311        }, 
    294312 
     
    297315                url_template is a template for the async process that generates the XML required to determine the possible field values 
    298316                xml_path is the location within the XML response tree to find the required field values */ 
     317 
     318                // Fix url_template which has had webhelpers turn "&" into "&amp;amp" 
     319                url_template = url_template.replace(/&amp;amp;/g, "&"); 
    299320                this.form_fields[field_name] = [url_template, xml_path]; 
    300321                this.field_names.push(field_name); 
     
    303324        updateForm: function() { 
    304325                /* Triggered by "Update form" button */ 
     326 
    305327                for (var i = 0; i < this.field_names.length; i++) { 
    306328                        var field_name = this.field_names[i]; 
     
    324346 
    325347        isPending: function(url) { 
    326                 if (contains(this.pending_calls), url) { 
     348                if (contains(this.pending_calls, url)) { 
    327349                        return true; 
    328350                } 
     
    367389                } 
    368390 
     391                showWaitingDiv(); 
     392 
    369393                $.ajax({ 
    370394                        type: "GET", 
    371395                        url: url, 
    372396                        dataType: "xml", 
    373                         success: this.updateFormOnAsyncResponse, 
     397                        success: updateFormOnAsyncResponseCallback, 
    374398                }); 
    375399        }, 
     
    378402                // Callback method that picks up and handles the XML response from async calls 
    379403                var url = xml.baseURI; 
     404 
     405                hideWaitingDiv(); 
     406 
    380407                this.response_cache.addToCache(url, xml); 
    381408                var field_names_to_update = this.url_to_field_name_mapper[url]; 
    382409 
    383410                for (var i = 0; i < field_names_to_update.length; i++) { 
    384                         var field_name = url_maps[i]; 
     411                        var field_name = field_names_to_update[i]; 
    385412                        this.updateFormElement(field_name, url, xml); 
    386413                } 
     
    393420                // Parses XML to extract required array and updates form element with these values 
    394421                var xml_path = this.form_fields[field_name][1]; 
    395                 var select_options = this.xml_extractor.extractFromXML(xml, xml_path); 
     422                var select_options_text = extractFromXML(xml, xml_path); 
     423                var select_options = select_options_text.split(/\s/); 
    396424 
    397425                // Add invalid selection at top of list so no defaults selected 
     
    410438                for (var i = 0; i < select_options.length; i++) { 
    411439//                      var opt = document.createElement("option"); 
    412                         var value = new_values[i]; 
     440                        var value = select_options[i]; 
    413441                        elem.append("<option value='" + value + "'>" + value + "</option>"); 
    414442//                      opt.setAttribute("value", value); 
  • cows_wps/trunk/cows_wps/public/js/ui/submit_utils.js

    r7388 r7535  
    6565function callWPSToUpdateForm() { 
    6666        var resp = new WPSResponse(); 
     67        showWaitingDiv(); 
    6768        resp.callWPS("http://ceda-wps1.badc.rl.ac.uk/wps?Request=Execute&Format=text/xml&Identifier=ListPPFileHeader&Store=false&Status=false&DataInputs=FilePath,/disks/kona1/cwps-test-data/africa-lam/prods_op_afr_20100813_18.006pp"); 
    6869} 
     
    7475function updateForm(response_dict) { 
    7576        var dct = response_dict; 
     77        hideWaitingDiv(); 
    7678 
    7779        for (var key in dct) { 
  • cows_wps/trunk/cows_wps/public/js/ui/validate.js

    r7002 r7535  
    2727} 
    2828 
     29function validateSelectInput(input, dummy, msg) { 
     30// Dummy function just so they all do the same. 
     31        return true; 
     32} 
     33 
     34function selectionDefined(id) { 
     35        var sel_defined = false; 
     36 
     37        $("#" + id).children().each(function() { 
     38                if (this.selected == true) { 
     39                        var text = $(this).val(); 
     40 
     41                        if ((text != "-- Please select --") && (text != "-- Dynamic field (see instructions) --")) { 
     42                                sel_defined = true; 
     43                                return sel_defined; 
     44                        } 
     45                } 
     46        }); 
     47 
     48        return sel_defined;  
     49} 
     50 
     51         
     52 
    2953/* 
    3054function: validateTextAreaInput(): 
     
    158182/* ValidatorMappings is a pseudo-class */ 
    159183function ValidatorMappings() { 
    160     this.ids = new Array("text", "textarea", "bounding_box"); 
    161     this.values = new Array(validateTextInput, validateTextAreaInput, validateBoundingBoxInput); 
     184    this.ids = new Array("text", "select", "textarea", "bounding_box"); 
     185    this.values = new Array(validateTextInput, validateSelectInput, validateTextAreaInput, validateBoundingBoxInput); 
    162186 
    163187    function getFunction(id) { 
     
    207231 
    208232        var fnc = vm.getFunction(validation_type); 
    209          
    210         var value = document.getElementById(name).value; 
     233        
     234        // Now do some generic checks 
     235        if (validation_type == "select") { 
     236                if (optional == true) { 
     237                        var value = ""; 
     238                } else { 
     239                        // Must have selected something if here 
     240                        if (selectionDefined(name) == false) { 
     241                                alert(invalid_input_msg + msg); 
     242                                return false; 
     243                        } 
     244                } 
     245        } else {  
     246                var value = $("#" + name).val(); //document.getElementById(name).value; 
     247        } 
    211248 
    212249        // If optional then we can return true if empty 
  • cows_wps/trunk/cows_wps/renderer/form_renderer.py

    r7533 r7535  
    9797 
    9898        multiple_string = "" 
     99        multiple_msg = "one" 
     100 
    99101        if multiple == True: 
    100102            multiple_string = 'multiple="multiple"' 
     103            multiple_msg = "at least one" 
    101104 
    102105        html = """<select %s name="%s" id="%s">\n""" % (multiple_string, name, name) 
     
    114117 
    115118        html += "</select>\n" 
     119 
     120        msg = "Please ensure you have selected %s entry for the %s input." % (multiple_msg, name) 
     121        js_opt = str(optional).lower() 
     122        html += """\n<script type="text/javascript">addValidator('%s', '%s', %s, '%s', %s);</script>\n""" % (name, "select", "null", msg, js_opt) 
    116123        return html 
    117124 
  • cows_wps/trunk/cows_wps/renderer/proc_config_renderer.py

    r7388 r7535  
    131131        fm = FormRenderer() 
    132132 
    133         resp = """Please complete the form below to submit a request to the CEDA Web Processing Service. 
     133        # Define default arg for whether dynamic form args exist 
     134        resp = """<script type="text/javascript">var dynamic_form_manager = null;</script>""" 
     135 
     136        resp += """Please complete the form below to submit a request to the CEDA Web Processing Service. 
    134137                Note that some processes are restricted to registered users only. 
    135138                Click the 'Submit' button to submit your request.<br><br>""" 
    136139 
    137         triggers_present = [i[1] for i in inputs if i[1]["argument_trigger"] != None] 
    138         if triggers_present != []: 
     140        dynamic_args_present = [i[1] for i in inputs if i[1]["dynamic"] != False] 
     141 
     142        if dynamic_args_present != []: 
     143            # Since args are present we need to create dynamic form manager in javascript 
     144            resp += """<script type="text/javascript">dynamic_form_manager = new DynamicFormManager();</script>""" 
     145 
    139146            resp += """\n\nThis process includes arguments for which the possible values 
    140147                       are dependent on calls to an external process. Please click the  
     
    165172                pv = self._resolveWebServiceCallForPossibleValues(pv[0]) 
    166173 
     174            is_dynamic = input.get("dynamic", False) 
     175 
     176            if is_dynamic: 
     177                # Add to dynamic form manager 
     178                resp += """\n<script type="text/javascript">dynamic_form_manager.addDynamicFormField("%s", "%s", "%s");</script>""" % \ 
     179                         (name, input["possible_values_url_template"], 
     180                          input["possible_values_xml_path"]) 
     181 
    167182            default = input.get("default", None) 
    168183            opt = input.get("optional", False) 
     
    188203                if multiple == True: n_items = "one or more items" 
    189204                instruction += " Please select %s from the list." % n_items 
     205 
     206            elif is_dynamic: 
     207                resp += fm.renderSelectList(name, values = ["-- Dynamic field (see instructions) --"], optional = opt, multiple = multiple) 
     208                n_items = "an item" 
     209                if multiple == True: n_items = "one or more items" 
     210                instruction += "This field is dynamic, please select other options then click 'Update form' to populate the form field. Then please select %s from the list." % n_items  
    190211 
    191212            elif tp == "bool": 
     
    230251        resp += '<tr class="%s"><td></td><td colspan="2">' % row_style 
    231252 
    232         if triggers_present != []: 
    233             resp += '<input type="button" id="update" name="update" value="Update form" onClick="callWPSToUpdateForm();" />' 
     253        if dynamic_args_present != []: 
     254            resp += '<input type="button" id="update" name="update" value="Update form" onClick="dynamic_form_manager.updateForm();" /> Click to update the options above based on the selections you have made.<br />\n' 
    234255 
    235256        resp += '<input type="submit" value="Submit" /> Click this button when you are happy with your selections.</td></table>\n</form>\n'  
  • cows_wps/trunk/cows_wps/renderer/xml_renderer.py

    r7531 r7535  
    127127 
    128128def wrapExecuteResponse(context, identifier, version, input_dict, job_id,  
    129                         authorisedRoles="0", is_cached=False): 
     129                        authorisedRoles = "0", is_cached=False): 
    130130    """ 
    131131    Wraps full ExecuteResponse XML around specific response. 
     
    153153            output_xml = Element("ComplexValue", format=out_def["mime_type"], schema=out_def["schema"]) 
    154154                 
    155             output_xml.append(comp_t.generate(context=context, authorisedRoles=authorisedRoles)) 
     155            output_xml.append(comp_t.generate(context = context, authorisedRoles = authorisedRoles)) 
    156156             
    157157        else: 
  • cows_wps/trunk/cows_wps/templates/ui_template.html

    r7515 r7535  
    1313        <script type="text/javascript" src="/js/ui/async_wps/wps_request.js"></script> 
    1414        <script type="text/javascript" src="/js/ui/jobviewer_utils.js"></script> 
     15        <script type="text/javascript" src="/js/ui/dynamic_form/dynamic_form_classes.js"></script> 
    1516 
    1617        <!-- A dummy init() function that does nothing, will be overloaded in bounding box required. --> 
  • cows_wps/trunk/cows_wps/utils/parse_capabilities_config.py

    r7387 r7535  
    6161 
    6262 
     63def commaSplitOrNone(s): 
     64    if s == None: 
     65        return None 
     66 
     67    return s.strip().split(",") 
     68 
     69 
     70def stripOrNone(s): 
     71    if s == None: 
     72        return None 
     73 
     74    return s.strip() 
     75 
     76def boolOrFalse(s): 
     77    if s: 
     78        return fixTrueFalse(s.strip()) 
     79 
     80    return False 
     81 
     82 
     83 
    6384def parseDataOutputInputs(outputInputDict): 
    6485    outin_dict = {} 
    6586 
    6687    allowed_types = ("xml", 'complex','xml_complex_value',"string", "float", "int", "bool", "filepath", "bbox", "datetime") 
    67     additional_param_options = ("extent", "basedir") 
    68  
    69     for item in outputInputDict: 
    70         item_with_params= item.split(".") 
    71         param = item_with_params[0] 
    72  
    73         if not outin_dict.has_key(param): 
     88    additional_param_options = ("extent", "basedir",  
     89                               "possible_values_url_template", 
     90                               "possible_values_xml_path") 
     91 
     92    # Create short name for d 
     93    d = outputInputDict 
     94 
     95    for item in d: 
     96 
     97        item_with_params = item.split(".") 
     98        p = item_with_params[0] 
     99 
     100        if not outin_dict.has_key(p): 
     101 
    74102            item_dict = {} 
    75             item_type = outputInputDict[param].strip().split(".") 
     103            item_type = d[p].strip().split(".") 
    76104 
    77105            if item_type[0] not in allowed_types: 
     
    82110                if item_type[0] == "xml_complex_value": 
    83111                    try: 
    84                         item_dict["template"] = outputInputDict[param+".template"] 
     112                        item_dict["template"] = d[p + ".template"] 
    85113                    except: 
    86114                        raise Exception("xml_complex_value type must have a template") 
     
    94122                    item_dict["item_type"] = "item" 
    95123 
    96                 if outputInputDict.has_key(param + ".possible_values"): 
    97                     item_dict["possible_values"] = outputInputDict[param+".possible_values"].strip().split(",") 
     124                item_dict["possible_values"] = commaSplitOrNone(d.get(p + ".possible_values", None))   
     125 
     126                item_dict["dynamic"] = boolOrFalse(d.get(p + ".dynamic", False)) 
     127 
     128                """ 
     129                if d.has_key(p + ".possible_values"): 
     130                    item_dict["possible_values"] = d[p + ".possible_values"].strip().split(",") 
    98131                else: 
    99132                    item_dict["possible_values"]=None 
    100  
    101                 if outputInputDict.has_key(param + ".argument_trigger"): 
    102                     item_dict["argument_trigger"] = outputInputDict[param + ".argument_trigger"].strip() 
    103                 else: 
    104                     item_dict["argument_trigger"] = None 
    105  
    106                 if outputInputDict.has_key(param + ".default"): 
    107                     value = fixTrueFalse(outputInputDict[param + ".default"].strip())  
     133""" 
     134 
     135                if d.has_key(p + ".default"): 
     136                    value = fixTrueFalse(d[p + ".default"].strip())  
    108137                    if value == "now": 
    109138                        value = apply(datetime.datetime, time.localtime(time.time())[:6]) 
     
    111140                    item_dict["default"] = value 
    112141 
    113                 if outputInputDict.has_key(param + ".optional"): 
    114                     item_dict["optional"] = fixTrueFalse(outputInputDict[param+".optional"].strip()) 
    115  
    116                 if outputInputDict.has_key(param + ".length"): 
    117                     if isValidLengthDescription(outputInputDict[param+".length"].strip()): 
    118                         item_dict["allowed_length"] = outputInputDict[param+".length"].strip().replace(" ","-") 
     142                if d.has_key(p + ".optional"): 
     143                    item_dict["optional"] = fixTrueFalse(d[p + ".optional"].strip()) 
     144 
     145                if d.has_key(p + ".length"): 
     146                    if isValidLengthDescription(d[p + ".length"].strip()): 
     147                        item_dict["allowed_length"] = d[p + ".length"].strip().replace(" ","-") 
    119148                    else: 
    120                         raise Exception("varilable length %s not recognised" % outputInputDict[param+".length"].strip()) 
     149                        raise Exception("Variable length %s not recognised" % d[p + ".length"].strip()) 
    121150                else: 
    122151                    item_dict["allowed_length"] = None 
    123152 
    124                  
    125                 if outputInputDict.has_key(param + ".schema"): 
    126                     item_dict["schema"] = outputInputDict[param+".schema"].strip() 
     153                # Loop through items that are strings or should be set to None 
     154                for i in ("schema", "encoding", "mime_type"): 
     155 
     156                    item_dict[i] = stripOrNone(d.get(p + "." + i, None)) 
     157 
     158                """ 
     159                if d.has_key(p + ".schema"): 
     160                    item_dict["schema"] = d[p + ".schema"].strip() 
    127161                else: 
    128162                    item_dict["schema"] = None 
    129163 
    130                 if outputInputDict.has_key(param + ".encoding"): 
    131                     item_dict["encoding"] = outputInputDict[param+".encoding"].strip() 
    132  
    133                 if outputInputDict.has_key(param + ".mime_type"): 
    134                     item_dict["mime_type"] = outputInputDict[param+".mime_type"].strip() 
     164                if d.has_key(p + ".encoding"): 
     165                    item_dict["encoding"] = d[p + ".encoding"].strip() 
     166 
     167                if d.has_key(p + ".mime_type"): 
     168                    item_dict["mime_type"] = d[p + ".mime_type"].strip() 
    135169                else: 
    136170                    item_dict["mime_type"] = None 
     171""" 
    137172 
    138173                for add_option in additional_param_options: 
    139                     key_name = param + "." + add_option 
    140  
    141                     if outputInputDict.has_key(key_name): 
    142                         value = outputInputDict[key_name].strip() 
     174                    key_name = p + "." + add_option 
     175 
     176                    if d.has_key(key_name): 
     177                        value = d[key_name].strip() 
    143178                        item_dict[add_option] = value  
    144179 
    145                 outin_dict[param.strip()] = item_dict 
     180                outin_dict[p.strip()] = item_dict 
    146181 
    147182    return outin_dict 
  • cows_wps/trunk/cows_wps/utils/role_handler.py

    r7525 r7535  
    107107    inputs = [("GetWeatherStations", {}),  
    108108              ("DoubleIt", {}), 
     109              ("SubsetPPFile", {"FilePath": "/badc/ukmo-um/data/global/ag/ap/2010/01/01/agap2010010100_00023_00.pp"}), 
    109110              ("NCDumpIt", {"FilePath": "/badc/ecmwf-op/data/gg/ap/myfile.nc"}), 
    110111              ("NCDumpIt", {"FilePath": "/badc/ukmo-um/data/foo/baa"})] 
  • cows_wps/trunk/process_configs/SubsetPPFile.ini

    r7387 r7535  
    2121[DataInputs] 
    2222FilePath = filepath 
    23 FilePath.basedir = /disks/kona1/cwps-test-data/africa-lam 
    24 FilePath.argument_trigger = StashCodes 
     23#FilePath.basedir = /disks/kona1/cwps-test-data/africa-lam 
     24FilePath.basedir = /badc/ukmo-um/data 
     25#FilePath.argument_trigger = StashCodes 
     26 
    2527StashCodes = int.list 
    26 StashCodes.possible_values = $ListPPFileHeader:FilePath=FilePath/StashCodes  
     28StashCodes.dynamic = True 
     29StashCodes.possible_values_url_template = http://ceda-wps1.badc.rl.ac.uk/wps?Request=Execute&Format=text/xml&Identifier=ListPPFileHeader&Store=false&Status=false&DataInputs=FilePath,${FilePath} 
     30StashCodes.possible_values_xml_pathFULL = ExecuteResponse/ProcessOutputs/Output/WPSResponseDetails/ProcessSpecificContent/StashCodes 
     31StashCodes.possible_values_xml_path = StashCodes 
    2732 
    2833[ProcessOutputs] 
Note: See TracChangeset for help on using the changeset viewer.