Changeset 5955


Ignore:
Timestamp:
03/11/09 17:00:55 (10 years ago)
Author:
astephen
Message:

lots of new stuff.

Location:
cows_wps/trunk/cows_wps
Files:
1 added
5 edited

Legend:

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

    r5938 r5955  
    1414 
    1515    def index(self): 
    16         """Show login page.""" 
    17         login_form = """        <form action="/view/login">  
     16        """ 
     17        Show login page. 
     18        """ 
     19        login_form = """        <form action="/login/check" onSubmit="return validateTextInput(document.getElementById('username').value, /^[a-zz0-9A-Z]{4,20}$/, 'The username must be between 4 and 20 letters and/or numbers.');" >  
    1820                <p>Please enter your details</p> 
    1921                <label class="text_width_150"><b>Username: </b></label> 
    20                 <input type="text" name="username" value="" size="20" /><br /> 
     22                <input type="text" name="username" id="username" value="" size="20" /><br /> 
    2123                <label class="text_width_150"><b>Password: </b></label> 
    2224                <input type="password" name="password" value="" size="20" />&nbsp;&nbsp; 
     
    2426        </form> 
    2527        """ 
    26        
    2728        renderer = UIPageRenderer() 
    28         resp = renderer.render("Login page (not plugged in yet)",  
     29        resp = renderer.render("Login page",  
    2930                               [("Please log in", login_form)]) 
    3031        return resp 
    31          
     32        
     33    def check(self): 
     34        """ 
     35        Checks login. 
     36        """ 
     37        username = request.params.get("username", None) 
     38        if username == None: 
     39            return "Please provide an argument username=&lt;Something&gt;"  
     40 
     41        renderer = UIPageRenderer() 
     42        resp = renderer.render("Login page", 
     43                              [("Status: logged in", "You are logged in as: %s" % username)]) 
     44        return resp  
  • cows_wps/trunk/cows_wps/controllers/view.py

    r5938 r5955  
    1313class ViewController(BaseController): 
    1414 
     15    def index(self): 
     16        """ 
     17        Shows a table of all procs. 
     18        """ 
     19        pc = ProcConfig() 
     20        procs = pc.renderProcsViewTable() 
     21 
     22        resp = "%s" % procs 
     23        renderer = UIPageRenderer() 
     24        resp = renderer.render("View available processes", 
     25                               [("Select your process", resp)]) 
     26        return resp 
     27 
     28    def list(self): 
     29        """ 
     30        Shows a drop-down list of possible procs to choose from.  
     31        """ 
     32        pc = ProcConfig() 
     33        procs = pc.getProcList() 
     34  
     35        resp = """      <form action="/view/proc2"> 
     36                <p>Please select a process from the drop-down menu below and press 'GO' to view its detailed description.</p> 
     37                <select name="proc_id">""" 
     38       
     39        for (proc, long_name) in procs.items(): 
     40            resp += ('                  <option name="%s" value="%s">%s</option>\n' % (proc, proc, long_name)) 
     41 
     42        resp += """             </select> 
     43                <input type="submit" value="GO" /> 
     44        </form>""" 
     45 
     46        renderer = UIPageRenderer() 
     47        resp = renderer.render("View available processes", 
     48                               [("Select your process", resp)]) 
     49 
     50        return resp 
     51 
    1552    def proc(self): 
    1653        """ 
    1754        Show specific view of process. 
    1855        """ 
    19  
    2056        proc = str(request.params.get("proc_id", None)) 
    2157        if proc == None: 
     
    3066                               [("Process: %s" % proc, resp)]) 
    3167        return resp 
    32  
    33     def index(self): 
    34         """Show generic ui list.""" 
    35         pc = ProcConfig() 
    36         procs = pc.getProcList() 
    37   
    38         resp = """      <form action="/view/proc"> 
    39                 <p>Please select a process from the drop-down menu below and press 'GO' to view its detailed description.</p> 
    40                 <select name="proc_id"> 
    41                 """ 
    42        
    43         for (proc, long_name) in procs.items(): 
    44             resp += ('                  <option name="%s" value="%s">%s</option>\n' % (proc, proc, long_name)) 
    45  
    46         resp += """             </select> 
    47                 <input type="submit" value="GO" /> 
    48         </form> 
    49         """ 
    50  
    51         renderer = UIPageRenderer() 
    52         resp = renderer.render("View available processes", 
    53                                [("Select your process", resp)]) 
    54  
    55         return resp 
    5668         
  • cows_wps/trunk/cows_wps/lib/ui/proc_config.py

    r5940 r5955  
    11import logging 
     2 
     3from cows_wps.utils.create_process_config import createProcessConfig 
    24 
    35from cows_wps.lib.ui.proc_config_convertor import ProcConfigConvertor  
    46from cows_wps.utils.parse_capabilities_config import caps_config_dict 
     7 
     8from cows_wps.renderer.form_renderer import FormRenderer 
    59 
    610log = logging.getLogger(__name__) 
     
    2226        proc_config = pcc.convertConfig(proc) 
    2327        return self.renderProcessPage(proc_config) 
    24          
    2528 
    2629    def renderProcessPage(self, pc): 
     
    8285        resp.append("</div>\n") 
    8386        return resp 
     87 
     88    def renderProcsViewTable(self): 
     89        """ 
     90        Renders the table of all procs on the view page. 
     91        """ 
     92        resp = """<table border="1" style="position: relative; left: 30px;">\n<tr>""" 
     93        headings = ("Process name", "Short description", "Full description", "Comments",  
     94                    "Options") 
     95        for heading in headings: 
     96            resp += """<td width="20%%" style="background:#FF9900"><b>%s</b></td>\n""" % heading   
     97        resp += "</tr>\n" 
     98 
     99        procs = self.getProcList() 
     100        for (proc, long_name) in procs.items(): 
     101            # Get config dict for this proc 
     102            proc_dict = createProcessConfig(proc)["Capabilities"]["globals"] 
     103 
     104            required_items = ("Title", "Abstract", "ProcessDescription")      
     105            resp += "<tr>\n<td>%s</td>\n" % proc  
     106 
     107            for req_item in required_items: 
     108                resp += """<td>%s</td>\n""" % proc_dict[req_item] 
     109 
     110            # Now add link to details and submit pages 
     111            resp += """<td><a href="/submit/form?proc_id=%s">Submit job</a><br /> 
     112                           <a href="/view/proc?proc_id=%s">View full details</a></td>\n""" % (proc, proc) 
     113 
     114            resp += "</tr>\n" 
     115 
     116        resp += "</table>\n"  
     117        return resp 
     118 
     119    def renderProcSubmissionForm(self, proc): 
     120        """         
     121        Renders a submission form for a proc. 
     122        """ 
     123        pcc = ProcConfigConvertor() 
     124        proc_config = pcc.convertConfig(proc) 
     125        inputs = proc_config["Inputs"] 
     126 
     127        # Get form renderer 
     128        fm = FormRenderer() 
     129 
     130        resp = """Please complete the form below to submit a request to the CEDA Web Processing Service. 
     131                Note that some processes are restricted to registered users only. 
     132                Click the 'Submit' button to submit your request.""" 
     133 
     134        resp += """<form action="/submit"> 
     135                <input type="hidden" name="proc_id" value="%s" /> 
     136                <table border="0">\n""" % proc 
     137 
     138        # Now render the inputs dict as a form 
     139         
     140        for (name, input) in inputs: 
     141            resp += """<tr><td width="30%%"><b>%s</b></td><td width="45%%">\n""" % name 
     142            al = input["allowed_length"] 
     143            pv = input["possible_values"] 
     144            array_or_item = input["item_type"] 
     145            tp = input["type"] 
     146 
     147            if tp == "bool": 
     148                resp += fm.renderRadioButton(name, is_boolean=True) 
     149             
     150            elif tp in ("float", "int", "string"): 
     151                resp += fm.renderTextInput(name, dtype=tp)  
     152 
     153            resp += "</td><td>%s</td></tr>\n" % "Eventually we'll put some useful advice here." 
     154       
     155        resp += '<tr><td></td><td><input type="submit" value="Submit" /></td><td></td></table>\n</form>\n' 
     156        return  fm.htmlify(resp) 
  • cows_wps/trunk/cows_wps/public/js/ui/validate.js

    r5938 r5955  
    1717function validate(name, value, data_type, multiple, possible_values, allowed_length) { 
    1818 
    19     var if  
     19} 
    2020 
     21/* function: validateString(): 
     22   Validates a string input checking it conforms to a regext pattern. 
     23   Inputs: 
     24     * input 
     25     * regex_match 
     26   Returns: 
     27     * true OR false: if valid or not. 
     28*/ 
     29function validateTextInput(input, regex_match, msg) { 
     30    if (input.match(regex_match) != null) { 
     31        return true; 
     32    } else { 
     33        alert("You have submitted an invalid input, please try again. " + msg)  
     34        return false; 
     35    } 
     36} 
     37 
     38 
  • cows_wps/trunk/cows_wps/templates/ui_template.html

    r5938 r5955  
    66        <title>$title</title> 
    77        <link href="/style/wps_ui.css" rel="stylesheet" type="text/css" /> 
     8        <script type="text/javascript" src="/js/ui/validate.js"></script> 
    89</head> 
    910 
Note: See TracChangeset for help on using the changeset viewer.