Changeset 2643 for TI05-delivery


Ignore:
Timestamp:
24/06/07 22:08:49 (12 years ago)
Author:
lawrence
Message:

Starting to put stubB handling into ows/browse.
Starting to add trackback support.

Location:
TI05-delivery/ows_framework/trunk/ows_server/ows_server
Files:
9 added
7 edited

Legend:

Unmodified
Added
Removed
  • TI05-delivery/ows_framework/trunk/ows_server/ows_server/config/routing.py

    r2639 r2643  
    2727    # change these when security layer is present and not before 
    2828    #to 
    29     # map.connect('wms/:file',controller='csml_wms') 
    30     # map.connect('wcs/:file',controller='csml_wcs') 
     29    # map.connect('wms/:uri',controller='csml_wms') 
     30    # map.connect('wcs/:uri',controller='csml_wcs') 
    3131     
    3232    map.connect(':file/wms', controller='csml_wms') 
  • TI05-delivery/ows_framework/trunk/ows_server/ows_server/controllers/retrieve.py

    r2639 r2643  
    33from ows_server.models import ndgObject,  ndgRetrieve 
    44from paste.request import parse_querystring 
     5from ows_server.models import stubB  
    56 
    67#from ows_server.models import ndgRetrieve 
     
    3940        if status: 
    4041            #(the return object x is an xmlHandler object) 
    41             xml=x.html 
     42            xml=x.tohtml() 
    4243            return Response(xml) 
    4344        else: 
     
    4950        status=self.__setup(uri) 
    5051        if status: return Response(status) 
     52        if 'ndgSec' in session: 
     53            securityTokens=session['ndgSec'] 
     54        else: securityTokens=None 
    5155        status,x=ndgRetrieve.ndgRetrieve( 
    52                 self.uri,self.cf,logger=self.logger,requestor=self.requestor,format=self.format) 
     56                self.uri,self.cf,logger=self.logger,requestor=self.requestor,format=self.format, 
     57                securityTokens=securityTokens) 
     58        c.title='Viewing [%s]'%self.uri 
     59         
    5360        if status: 
    5461            #(the return object x is an xmlHandler object) 
    55             xml=x.html 
     62            if self.uri.schema=='NDG-B1': 
     63                r='stubB' 
     64                c.doc=stubB.stubB(x.tree,self.cf) 
     65                c.tbinfo=self.__mytb() 
     66            elif self.uri.schema=='NDG-A0': 
     67                r='csml' 
     68            elif self.uri.schema=='DIF': 
     69                r='dif' 
     70            else: 
     71                c.xml=x.tohtml() 
     72                r='content' 
    5673            if 'format' in self.inputs: 
    57                 if self.inputs['format']=='xml': 
    58                     pass 
    59         else: xml=x 
    60         c.xml=xml 
    61         c.title='Viewing [%s]'%self.uri 
    62         f=file('debug.xml','w') 
    63         f.write(xml) 
    64         f.close() 
    65         return render_response('content') 
     74                #override previous output choice if format is xml 
     75                if self.inputs['format']=='xml':  
     76                    c.xml=x.tohtml() 
     77                    r='content' 
     78            f=file('debug.xml','w') 
     79            f.write(x.tohtml()) 
     80            f.close() 
     81            g=file('debug2.xml','w') 
     82            g.write(str(x)) 
     83            g.close()        
     84        else:  
     85            c.xml='<div class="error">%s</div>'%x 
     86            r='content' 
     87        return render_response(r) 
    6688     
    6789     
    68          
     90    def __mytb(self): 
     91        ''' Get the trackback info for this page  
     92        (can't do it in Kid because it doesn't do substutions in comments) ''' 
     93        s='''<!-- 
     94        <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
     95             xmlns:dc="http://purl.org/dc/elements/1.1/" 
     96             xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/"> 
     97        <rdf:Description 
     98            rdf:about="%s" 
     99            dc:identifier="%s" 
     100            dc:title="%s" 
     101            trackback:ping="%s" /> 
     102        </rdf:RDF> 
     103        -->'''%(self.uri,g.server+h.url_for(),c.doc.name,g.server+h.url_for(controller="trackback")) 
     104        return s 
  • TI05-delivery/ows_framework/trunk/ows_server/ows_server/controllers/trackback.py

    r2614 r2643  
    33    ''' Provides the pylons controller for recieving trackbacks to NDG documents ''' 
    44    def index(self): 
     5        # need to receive a trackback, and mail someone ... 
    56        return Response('not yet implemented') 
  • TI05-delivery/ows_framework/trunk/ows_server/ows_server/lib/ndg/stubB.py

    r2615 r2643  
    22# 
    33# This python code (will) handle all forms of stub-B and provide HTML 
    4 # methods to the extent required by the NDG browse functionality 
     4# methods to the extent required by the NDG browse functionality. 
     5# NB, It would be cleaner to use Dom's way of doing things but we'd 
     6# need a schema for that ... 
    57# BNL April 2006 
    68#  
     
    134136        ''' Holds the stub-b document and provides methods which get and manipulate it ''' 
    135137         
    136         def __init__(self,xml,config): 
    137                  
    138                 '''Instantiate by parsing an xml document passed in as a string ''' 
     138        def __init__(self,xmlHandlerInstance,config): 
     139                 
     140                '''Instantiate with an xmlHandler instance and config file ''' 
    139141                 
    140142                self.metadataType='NDG-B1' 
  • TI05-delivery/ows_framework/trunk/ows_server/ows_server/models/ndgRetrieve.py

    r2641 r2643  
    154154        self.assertEqual(status,0) 
    155155         
    156          
    157          
    158          
    159          
    160156if __name__=="__main__": 
    161157    unittest.main() 
  • TI05-delivery/ows_framework/trunk/ows_server/ows_server/models/xmlHandler2.py

    r2641 r2643  
    6767            if n[0]=='xmlns': 
    6868                self.realns[n[1][1:-1]]='default' 
     69                self.defns=self.realns[n[1][1:-1]] 
    6970            elif n[0][0:6]=='xmlns:': 
    7071                self.realns[n[1][1:-1]]=n[0][6:] 
     
    178179            s=self.r2.sub(r'\1&gt;',s) 
    179180        return s 
    180        
     181         
     182    def __distributens(self,xpathExpression): 
     183        ''' Actually we only support tag finding in this ''' 
     184        tags=xpathExpression.split('/') 
     185        new='' 
     186        for t in tags:  
     187            if t[1]<>'{':  
     188                new+=self.defns+t+'/' 
     189            else: 
     190                new+=t+'/' 
     191        new=new[0:-1] 
     192        return new 
     193         
     194    def getText(self,elem,xpathExpression,multiple=0): 
     195        ''' Get a text object sensibly, given ET API for xml doesn't handle  
     196        namespaces gracefully ''' 
     197        if elem is None:  
     198            if multiple: 
     199                return ['',] 
     200            else: return ''  
     201        if multiple: 
     202                r=elem.findall(self.__distributens(xpathExpression)) 
     203        else: 
     204                r=[elem.find(self.__distributens(xpathExpression)),] 
     205        try:  # if element is None, this should fail ... 
     206                rr=[] 
     207                for i in r: 
     208                    t=i.text  
     209                    if t is not None:  
     210                        rr.append(t) 
     211                    else: rr.append('') 
     212        except: 
     213                rr=['',] 
     214        if multiple:  
     215                return rr 
     216        else: return rr[0] 
    181217           
    182218           
  • TI05-delivery/ows_framework/trunk/ows_server/ows_server/public/layout/ndg2.css

    r2639 r2643  
    3232.ndgem {FONT-WEIGHT: bold} 
    3333 
    34  
     34/* This is the "metadata" css */ 
     35DIV.metadata {PADDING-LEFT: 20px;} 
     36.metadata #title {FONT-WEIGHT:bold; FONT-SIZE:140%; FONT-STYLE:italic; } 
     37.metadata #keywords {COLOR: Blue; FONT-SIZE:120%; FONT-WEIGHT:bold;} 
     38.metaentry {COLOR: Black} 
     39.metadata #abstract {MARGIN-LEFT: 50px; MARGIN-RIGHT:50px; MARGIN-TOP:10px; MARGIN-BOTTOM:10px; font-style:italic; font-size:100%; border:thin solid black; padding: 8px} 
    3540 
    3641/* And now the footer */ 
Note: See TracChangeset for help on using the changeset viewer.