Changeset 7102 for cows_wps


Ignore:
Timestamp:
25/06/10 19:59:39 (9 years ago)
Author:
astephen
Message:

Added more filter options on jobs controller.

Location:
cows_wps/trunk/cows_wps
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • cows_wps/trunk/cows_wps/controllers/jobs.py

    r7097 r7102  
    9292            "order_by": checkValidOrderBy} 
    9393 
     94 
    9495    def index(self): 
    9596        (args, bad_args) = self._parseArgs() 
     
    107108        for (key, default) in self.default_args.items(): 
    108109            value = None 
     110 
    109111            if request.params.has_key(key): 
    110                 value = str(request.params.getone(key)) 
    111              
     112                value = str(request.params.getone(key).strip()) 
     113 
    112114                # If arg_check is False then bad input 
    113115                arg_check = apply(self.arg_processers[key], [value]) 
    114                 if arg_check == False: 
     116 
     117                if arg_check == False or value == "": 
    115118                    bad_args[key] = value 
    116119                    value = default 
  • cows_wps/trunk/cows_wps/renderer/ui_renderer.py

    r7097 r7102  
    88from genshi import HTML 
    99 
    10 c.tester = "OOJOJ" 
     10#c.tester = "OOJOJ" 
    1111 
    1212 
     
    5050        Renders jobs page. 
    5151        """ 
    52         rjobs = '<table border="2"><tr><td>Job id</td><td>Job type</td><td>User</td><td>Submission time</td><td>Job status</td></tr>\n' 
     52        rjobs = self._renderJobsTable(jobs) 
     53  
     54        filter_html = "" 
    5355 
     56        if len(bad_args.keys()) > 0: 
     57            msg = "Warning: the following arguments were provided with unknown values: <br/><br/>" 
     58 
     59            for (key, value) in bad_args.items(): 
     60                msg += "%s = %s<br/>" % (key, value)  
     61 
     62            filter_html += '<center><div id="incorrect_arguments" style="width: 600px; border-width: 0px; background: orange; color: white; font-weight: bold; padding: 3px;">%s</div>' % msg  
     63 
     64        filter_html += self._renderFilterOptions(args) 
     65  
     66        items = [("Welcome to the Jobs Page", "The Jobs Page allows you to view current and previous jobs. Select the filter options to modify the records matched."), 
     67                 ("Filter the Job List", filter_html), 
     68                 ("Total Matches", str(total_matches)), 
     69                 ("Jobs", rjobs)]  #["<br>%s = %s" % (job[0], str(job)) for job in jobs])]  
     70 
     71        return self.render("Jobs Page", items) 
     72 
     73 
     74    def _renderJobsTable(self, jobs): 
     75        "Renders and returns (as string) table of HTML jobs." 
     76        html = '<table border="2"><tr><td>Job id</td><td>Job type</td><td>User</td><td>Submission time</td><td>Job status</td></tr>\n' 
    5477        count = 0 
    5578 
     
    6386            # HTML for row 
    6487            row = '<tr class="%s"><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr>\n' % (row_style, job_id, job_type, user, created, status) 
    65             rjobs += row 
     88            html += row 
    6689 
    67         rjobs += "</table>" 
    68   
    69         items = [("Jobs Page", "This is where you can view jobs."), 
    70                  ("Warning bad args", str(bad_args)), 
    71                  ("Filtering Area", str(args)), 
    72                  ("Total Matches", str(total_matches)), 
    73                  ("Jobs", rjobs)]  #["<br>%s = %s" % (job[0], str(job)) for job in jobs])]  
     90        html += "</table>" 
     91        return html 
    7492 
    75         return self.render("Jobs Page", items) 
    7693 
     94    def _renderFilterOptions(self, args): 
     95        """ 
     96        Returns a string for the rendered HTML for filter form. 
     97        """ 
     98        filters = [("job_id_match", {"type": "text", "text": "Job ID matches", "default": ""}), 
     99                   ("job_status", {"type": "list", "text": "Job Status", "default": "-- Please select --", 
     100                         "option_names": ("-- Please select --", "Completed", "Failed", "Running"), 
     101                         "option_values": ("", "COMPLETED", "FAILED", "STARTED|ACCEPTED")}), 
     102                  ] 
     103 
     104        html = '<form name="filter_form" action="jobs">' 
     105        for (id, fd) in filters: 
     106 
     107            input = "<br/>%s " % fd["text"]  
     108 
     109            if id in args.keys(): 
     110                value = args[id] 
     111                if value == None: value = "" 
     112            else: 
     113                value = fd["default"]  
     114 
     115            if fd["type"] == "text": 
     116                input += '<input type="text" id="%s" name="%s" value="%s" />' % (id, id, value) 
     117 
     118            elif fd["type"] == "list": 
     119                input += '<select id="%s" name="%s">' % (id, id) 
     120 
     121                for (i, opt_name) in enumerate(fd["option_names"]):  
     122                    opt_value = fd["option_values"][i] 
     123 
     124                    selected = ""  
     125 
     126                    if value == opt_value: 
     127                        selected = ' selected="selected"' 
     128 
     129                    input += '\n        <option value="%s"%s>%s</option>' % (opt_value, selected, opt_name) 
     130 
     131                input += "</select>" 
     132 
     133            html += "\n%s" % input 
     134 
     135        html += '<input type="submit" value="Filter jobs" />' 
     136        html += '</form>' 
     137#        raise Exception(str(html)) 
     138        return html  
Note: See TracChangeset for help on using the changeset viewer.