Changeset 2881 for TI05-delivery


Ignore:
Timestamp:
07/09/07 14:39:37 (12 years ago)
Author:
lawrence
Message:

A bunch of changes that I haven't quite finished ... I don't
think they break anything major ... (but the login button
is back on the bottom of the login page, so I'll have to get
that off again ...)

What they do do is more on the visualisation, and some
first steps towards the command line interface ...

Location:
TI05-delivery/ows_framework/trunk/ows_server/ows_server
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • TI05-delivery/ows_framework/trunk/ows_server/ows_server/controllers/csml_wms.py

    r2861 r2881  
    1616from ows_server.lib.ndgInterface import interface 
    1717 
    18 from elementtree import ElementTree as ET 
     18try: #python 2.5 
     19    from xml.etree import ElementTree as ET 
     20except ImportError: 
     21    try: 
     22        # if you've installed it yourself it comes this way 
     23        import ElementTree as ET 
     24    except ImportError: 
     25        # if you've egged it this is the way it comes 
     26        from elementtree import ElementTree as ET 
    1927 
    2028from ows_common import exceptions as OWS_E 
  • TI05-delivery/ows_framework/trunk/ows_server/ows_server/controllers/login.py

    r2880 r2881  
    7070    def index(self): 
    7171        ''' Ok, you really want to login here ''' 
    72         if 'ndgSec' in session: self.__doRedirect() 
     72        if 'ndgSec' in session:  
     73            return self.__doRedirect() 
    7374        self.__setup() 
    7475        return render_response('login') 
     
    101102                                 
    102103        except Exception,e: 
    103             c.xml='Error establishing security context [%s]'%cgi.escape(e) 
     104            c.xml='Error establishing security context [%s]'%cgi.escape(str(e)) 
    104105            return Response(render('content'),code=400) 
    105106         
  • TI05-delivery/ows_framework/trunk/ows_server/ows_server/controllers/selection.py

    r2802 r2881  
    1515         
    1616        if not status: 
    17             return Response('%s not found'%uri,fragment=True) 
     17            return Response('%s not found'%uri) 
    1818         
    1919        return render_response('csml_granule_summary',fragment=True) 
  • TI05-delivery/ows_framework/trunk/ows_server/ows_server/controllers/visualise.py

    r2876 r2881  
    1010        c.selections = {} 
    1111        c.selected = {} 
     12        c.names={} 
    1213        c.bbox = (90, -180, 180, -90) 
    1314        c.inpageid = 'api' 
    1415 
    15         for uri, dif in session.get('selection', []): 
     16        for uri, name in session.get('selection', []): 
    1617            (rstatus, dataset) = interface.GetParsedCSML(uri)                 
    1718            if not rstatus:  
     
    1920                return render_response('error') 
    2021            c.selections[uri]=dataset 
     22            c.names[uri]=name 
    2123         
    2224        c.nothing2see=0 
     25        print c.selections 
    2326        if c.selections=={}: 
    2427            c.nothing2see=1 
    25             return   
     28            return 0 
    2629        
    2730        # Need two fundamental variables: the granules which have been selected 
     
    4952        c.viewedDataset=session.get('viewedDataset',c.selections.keys()[0]) 
    5053        print c.selected.keys() 
     54        return 0 
    5155         
    5256    def __plotops(self): 
     
    5761      
    5862    def index(self): 
    59         self.__setup() 
     63        s=self.__setup() 
     64        if s: return s 
    6065        c.visible='Granules' 
    6166        self.__plotops() 
     
    6570        ''' Take ajax request for inpage tab change ''' 
    6671         
    67         self.__setup() 
     72        s=self.__setup() 
     73        if s: return s 
    6874        c.visible=view 
    6975        formValue=request.params.get('dataset',0) 
     
    8793         
    8894        self.__setup() 
     95        if s: return s 
    8996        c.visible=view 
    9097        checkedFeatures=[] 
  • TI05-delivery/ows_framework/trunk/ows_server/ows_server/lib/ndgInterface.py

    r2852 r2881  
    198198                if s is not None: 
    199199                    status,message=HandleSecurity(s,securityTokens) 
    200                     if not status: return 0,'<p> Access Denied </p><p>%s</p>'%message 
     200                    if not status: return 0,'<p> Access Denied for %s </p><p>%s</p>'%(uri,message) 
    201201        return 1,x 
    202202                 
  • TI05-delivery/ows_framework/trunk/ows_server/ows_server/models/DocumentRetrieve.py

    r2860 r2881  
    117117             
    118118             
    119 class RestfulGet: 
     119class ndgHTTP: 
    120120    ''' Provides a get method to obtain an xml document from a remote NDG repository ''' 
    121121    def __init__(self,remoteHost,proxyServer=None): 
     
    128128            proxyHandler=urllib2.ProxyHandler({'http':proxy}) 
    129129        self.opener=urllib2.build_opener(proxyHandler) 
     130         
     131    def uriget(self,uri): 
     132        n=ndgObject(uri) 
     133        return self.get(n.repository,n.schema,n.localID) 
    130134 
    131135    def get(self,repository,schema,localID,format='NDG-B0',targetCollection=None): 
     136        #last two arguments for compatibiltiy with API, not for use in restful get ... 
    132137        #TODO what about security? Probably means we need to get the headers of our responses sorted ... 
    133138        url='%s/view/%s__%s__%s?format=raw&outputSchema=%s'%(self.remoteHost,repository,schema,localID,format) 
     
    151156        else: 
    152157            raise IOError(response) 
     158         
     159    def setSecurity(self,location,usercode,password): 
     160        ''' Use a usercode password to set security credentials at a specific location ''' 
     161        pass 
    153162     
  • TI05-delivery/ows_framework/trunk/ows_server/ows_server/models/ndgRetrieve.py

    r2860 r2881  
    3131            else: 
    3232                ps=config.get('DEFAULT','proxyServer') 
    33                 ws=DocumentRetrieve.RestfulGet(r,proxyServer=ps) 
     33                ws=DocumentRetrieve.ndgHTTP(r,proxyServer=ps) 
    3434        else: 
    3535            pwf=config.get('NDG_EXIST','passwordFile') 
     
    4545    elif uri.schema=='NDG-A0': 
    4646        status,ws=getws(config,uri,remote) 
     47    else: 
     48        status=0 
     49        ws='<p> Invalid scheme in NDG format URI </p>' 
    4750      
    4851    if not status: return status,ws 
  • TI05-delivery/ows_framework/trunk/ows_server/ows_server/public/layout/ndg2.css

    r2865 r2881  
    6767.InPageHdr a {display:block; text-decoration:none;} 
    6868.InPageContent {border:1px solid black; clear: both;} 
     69.InPageContent ul {list-style:none;} 
    6970.InPageContent .hidden {display:none;} 
    7071/* Left Column if Necessary */ 
  • TI05-delivery/ows_framework/trunk/ows_server/ows_server/templates/login.kid

    r2867 r2881  
    11<html py:extends="'ndgPage.kid'" xmlns="http://www.w3.org/1999/xhtml" xmlns:py="http://purl.org/kid/ns#"> 
     2     
     3    <div py:def="loginForm()" class="loginForm"> 
     4        <form action="$g.getCredentials" method="POST"> 
     5            <input type="hidden" name="r" value="${c.returnTo}"/> 
     6            <table cellspacing="0" border="0" cellpadding="5"> 
     7                <tr> 
     8                    <td>Username:</td>  
     9                    <td><input type="text" name="username" value=""/></td> 
     10                </tr><tr> 
     11                    <td>Pass-phrase:</td> 
     12                    <td><input type="password" name="passphrase"/></td> 
     13                </tr><tr> 
     14                    <td colspan="2" align="right"> 
     15                    <input type="submit" value="Login"/></td> 
     16                </tr> 
     17            </table> 
     18        </form> 
     19    </div> 
     20     
    221    <head py:replace="pagehead(0)"/> 
    322    <body> 
    423        <div py:replace="header()"/> 
    5                 <table cellspacing="0" border="0" cellpadding="5"> 
    6                 <tbody> 
    7                 <tr> 
    8                 <td><h4>Login</h4></td> 
    9         </tr> 
    10         <tr> 
    11                         <span py:replace="loginForm()"/> 
    12                 </tr> 
    13                 </tbody> 
    14                 </table> 
    15                 ${c.xml} 
    16                 <div py:replace="footer()"/> 
     24        <div class="loginContent">         
     25            <h4>Login</h4> 
     26            <div py:replace="loginForm()"/> 
     27            ${c.xml} 
     28        </div> 
     29        <div py:replace="footer()"/> 
    1730    </body> 
    18      
    19     <span py:def="loginForm()" class="loginForm"> 
    20                 <form action="$g.getCredentials" method="POST"> 
    21                 <input type="hidden" name="r" value="${c.returnTo}"/> 
    22                 <table cellspacing="0" border="0" cellpadding="5"> 
    23                 <tbody> 
    24                 <tr> 
    25                         <td>Username:</td>  
    26                         <td><input type="text" name="username" value=""/></td> 
    27                 </tr> 
    28                 <tr> 
    29                         <td>Pass-phrase:</td> 
    30                         <td><input type="password" name="passphrase"/></td> 
    31                 </tr> 
    32                 <tr> 
    33                         <td colspan="2" align="right"> 
    34                         <input type="submit" value="Login"/></td> 
    35                 </tr> 
    36                 </tbody> 
    37                 </table> 
    38                 </form> 
    39         </span> 
    40          
    41         <div py:def="footer()" id="Footer"> 
    42         <center><table><tbody> 
    43             <tr> 
    44                 <td align="center" width="60%"> 
    45                     <table><tbody> 
    46                     <tr><td><span py:replace="linkimage(g.ndgLink,g.ndgImage,'NDG')"/></td> 
    47                     <td> This portal is a product of the <a href="http://ndg.nerc.ac.uk"> NERC DataGrid</a> 
    48                     Not all functionality is completely implemented, bugs and problems are expected </td> 
    49                     </tr> 
    50                     </tbody></table> 
    51                 </td> 
    52                 <td width="40%" align="center"> 
    53                     <div id="loginStatus"> 
    54                         <!--! now we choose one of the next two (logged in or not) --> 
    55                         <div py:if="'ndgSec' in session"><table><tbody><tr><td> User [${session['ndgSec']['u']}] logged in 
    56                         at [${session['ndgSec']['h']}] with roles [${session['ndgSec']['roles']}]</td><td> 
    57                         &nbsp;<span py:replace="logOut()"/></td></tr></tbody></table></div> 
    58                         <div py:if="'ndgSec' not in session"></div> 
    59                     </div> 
    60                 </td> 
    61                 <td><span py:replace="linkimage(g.stfcLink,g.stfcImage,'Hosted by the STFC CEDA')"/></td> 
    62             </tr> 
    63         </tbody></table></center> 
    64     </div> 
     31 
    6532</html> 
  • TI05-delivery/ows_framework/trunk/ows_server/ows_server/templates/ndgPage.kid

    r2878 r2881  
    1919        <link media="all, screen" href="/layout/ndg2.css" type="text/css" rel="stylesheet"/> 
    2020 
    21         <script type="text/javascript"> 
     21        <script py:if="ol==1" type="text/javascript"> 
    2222          var app = null; 
    2323          function initOLMapBox() { 
     
    3535              app.updateVisLayer(wmsURL, form.featureId.value, form.time.value); 
    3636          } 
    37  
    3837        </script> 
    3938 
  • TI05-delivery/ows_framework/trunk/ows_server/ows_server/templates/visualise.kid

    r2876 r2881  
    121121                            </td><td> 
    122122                                <p> Select Time </p> 
    123                                 
    124123                                <p> This version simply uses the first timestep:<br/> $tstep </p> 
    125124                            </td><td> 
     
    129128                        </table> 
    130129                        <form name="visSelect" id="visSelect" onchange="updateVis('visSelect')"> 
    131                             <input type="hidden" name="granuleURI" value="$tstep"/> 
    132                             <input type="hidden" name="featureId" value="${f}"/> 
     130                            <input type="hidden" name="granuleURI" value="$u"/> 
     131                            <input type="hidden" name="featureId" value="$f"/> 
    133132                            <input type="hidden" name="time" value="$tstep"/> 
    134133                            <input type="button" value="Update" onclick="updateVis('visSelect')"/> 
Note: See TracChangeset for help on using the changeset viewer.