Ignore:
Timestamp:
02/07/07 10:31:43 (12 years ago)
Author:
lawrence
Message:

ows stack now has the equivalent support for DIF to
the older wsgi stack

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

Legend:

Unmodified
Added
Removed
  • TI05-delivery/ows_framework/trunk/ows_server/ows_server/models/DIF.py

    r2672 r2680  
    134134        #Data curator information 
    135135        self.centre=DIFcontact(helper,helper.find(self.tree,'Data_Center')) 
    136         self.curator=DIFcontact(helper,helper.find(self.tree,'Data_Curator')) 
    137         if self.curator.core is None:self.curator=self.centre  
     136        #self.curator=DIFcontact(helper,helper.find(self.tree,'Data_Curator')) 
    138137        
    139138        #Data Creators 
     
    196195    inputFile2= 'examples/bodc.eg3.difChange.dif' 
    197196    inputFile2= 'examples/ndg.noc.soton.ac.uk__DIF__NOCSDAT162.xml' 
    198     configFile='examples/example.config' 
     197    configFile= 'config/ndgDiscovery.config' 
    199198     
    200199    def setUp(self): 
    201200        ''' Load example config and DIF files for testing ''' 
    202         f=file(self.inputFile2,'r') 
    203         xml=f.read() 
    204         self.dif=DIF(xml) 
     201        from xmlHandler2 import xmlHandler 
     202        x=xmlHandler(self.inputFile2) 
     203        self.dif=DIF(x.tree,et=1) 
    205204        self.config=myConfig(self.configFile) 
    206205 
     
    210209        print 'Author [%s]'%self.dif.authors 
    211210        print 'Abstract [%s]'%self.dif.abstract 
    212          
    213     def testrenderDIF(self): 
    214         ''' Testing the conversion to html ''' 
    215         print self.dif.timeCoverage 
    216         html=self.dif.toHTML(self.config) 
    217         html=html.encode('utf-8') 
    218         g=file('difOutput.html','w') 
    219         g.write(html) 
     211        print 'BBox [%s]'%self.dif.bbox.boxes 
    220212     
    221213    def testParameters(self): 
     
    226218        ''' Grab a test example from the internet and load it ''' 
    227219        from ndgRetrieve import ndgRetrieve 
    228         retriever=ndgRetrieve('./') 
    229220        #testURI='grid.bodc.nerc.ac.uk__DIF__EDMED1048008' 
    230221        testURI='neodc.nerc.ac.uk__DIF__NEODC_NEXTMAP' 
    231         inputs={'repository':'glue.badc.rl.ac.uk','uri':testURI,'format':'original','type':'xml','original':'1'} 
    232         ctype,r=retriever._present(inputs,'text/html') 
    233         d=DIF(r) 
     222        uri=ndgObject(testURI,config=self.config) 
     223        status,xml=ndgRetrieve(uri,self.config) 
     224        self.assertEqual(status,1) 
     225        d=DIF(xml.tree,et=1) 
    234226        print d.entryID,[str(i) for i in d.services] 
    235227 
  • TI05-delivery/ows_framework/trunk/ows_server/ows_server/models/geoUtilities.py

    r2643 r2680  
    1010 
    1111class Bounding: 
    12     ''' Separated out because this is NDG specific really ''' 
     12    ''' Separated out because this is NDG specific really  
     13    NB needs to support multiple bounding boxes properly and doesn't ... ''' 
    1314    def __init__(self,elem,entity='stubB',getter=wrapGetText): 
    1415        '''Parse a data entity and load a bounding box ''' 
     
    2930        West=getter(elem,match[entity]['West']) 
    3031        East=getter(elem,match[entity]['East']) 
     32        self.boxes=[] 
     33        self.nboxes=0 
     34         
    3135        self.set([North,West,East,South]) 
    32         #except: 
    33         #    self.box=None 
    34  
     36         
    3537    def set(self,box): 
    3638        try:  
    37             self.box=[geoString2float(i) for i in box] 
     39            self.boxes.append([geoString2float(i) for i in box]) 
     40            self.nboxes+=1 
    3841        except: 
    39             self.box=None 
    40  
    41     def toHTML(self): 
    42         return self.toHTMLbox() 
    43      
     42            pass 
     43         
    4444    def toHTMLbox(self): 
    45         if self.box is not None: 
    46             html='''<table><tbody><tr><td colspan="2" align="center">%s</td></tr> 
     45        if self.nboxes!=1: 
     46            return '<p> Record includes %s bounding boxes </p>'%self.nboxes 
     47        else: 
     48            return '''<table><tbody><tr><td colspan="2" align="center">%s</td></tr> 
    4749                      <tr><td>%s,</td><td>&nbsp;%s</td></tr> 
    4850                      <tr><td colspan="2" align="center">%s</td></tr> 
    49                     </tbody></table>'''%tuple(self.box) 
    50         else: 
    51             html='' 
    52         return html 
     51                    </tbody></table>'''%tuple(self.boxes[0]) 
    5352 
    5453class TimeCoverage: 
     
    7069        return self.data[i] 
    7170         
    72 import unittest 
    73 class TestCase(unittest.TestCase): 
    74      
    75     def testgeoString2float(self): 
    76         self.assertEqual(geoString2float('12S'),-12.0) 
    77          
    78     def testBounding(self): 
    79         bbox=Bounding('dummy') 
    80         bbox.set(['15N','12W','12E','15S']) 
    81         y=bbox.toHTML() 
    82          
    83     def testTimeCoverage(self): 
    84         ''' Test time coverage class ''' 
    85         tc=TimeCoverage(('01-01-2001','01-02-2001','Complete')) 
    86         print tc 
    87         self.assertEqual(tc[2],'Complete') 
    88      
    89 if __name__=="__main__": 
    90     unittest.main() 
  • TI05-delivery/ows_framework/trunk/ows_server/ows_server/models/ndgObject.py

    r2655 r2680  
    6666            # If this record is itself a discovery record, then we don't have much more to do 
    6767            if self.schema in ['DIF','DC','MDIP','ISO19139']: 
    68                 self.xmlURL=self.discoveryURL+'&format=raw' 
    69                 self.printableURL=self.discoveryURL+'&format=xml' 
     68                self.xmlURL=self.discoveryURL+'?format=raw' 
     69                self.printableURL=self.discoveryURL+'?format=xml' 
    7070                self.gettable=1 
    7171                self.URL=self.discoveryURL 
  • TI05-delivery/ows_framework/trunk/ows_server/ows_server/public/layout/ndg2.css

    r2676 r2680  
    7272 
    7373/* This is the "metadata" css */ 
    74 .metadata {PADDING-LEFT: 20px; font-size:80%;} 
     74.metadata {PADDING-LEFT: 20px; font-size:80%; padding-right:20px;} 
    7575.metadata #keywords {COLOR: Blue; FONT-SIZE:120%; FONT-WEIGHT:bold;} 
    7676.metaentry {COLOR: Black} 
  • TI05-delivery/ows_framework/trunk/ows_server/ows_server/templates/dif.kid

    r2676 r2680  
    1818                    <div id="abstract">$c.doc.abstract</div> 
    1919                </div> 
     20                <div py:replace="People('Creators',c.doc.creators)"/> 
    2021                <div py:replace="ParameterList(c.doc.parameters)"/>  
    21                 <div py:replace="Coverage()"/> 
     22                <div py:replace="Coverage(c.doc.bbox,c.doc.timeCoverage)"/> 
    2223                <div if="c.doc.sensors!=[]" py:replace="Keywords('Sensors',c.doc.sensors)"/> 
    2324                <div if="c.doc.sources!=[]" py:replace="Keywords('Sources',c.doc.sources)"/> 
    24                 <div py:replace="Curator()"/> 
     25                <div py:replace="Centre(c.doc.centre)"/> 
     26                <div py:replace="People('Personnel',c.doc.personnel)"/> 
    2527                <div py:replace="Services()"/> 
    2628            </div> 
  • TI05-delivery/ows_framework/trunk/ows_server/ows_server/templates/meta.kid

    r2676 r2680  
    1414                for word in params[item]: 
    1515                    keywords.append(word.replace(' ','&nbsp;')) 
    16                 keywords='; '.join(keywords) 
     16                keywords=', '.join(keywords) 
    1717                ?> 
    1818                <tr py:if="params[item]!=[]"><td>$keywords</td></tr> 
     
    2929            <tr py:if="c.doc.ndgObject is not None"> 
    3030            <td width="20%"><span py:replace="linkimage(c.doc.ndgObject.xmlURL,c.icons_xml,'[XML]')"/></td> 
    31             <td>Downloadable XML version of this record</td> 
    32             </tr> 
     31            <td>Downloadable XML version of this record 
     32            <span py:if="c.doc.ndgObject.gettable==1"> 
     33            (Original <span py:replace="linkimage(c.doc.ndgObject.xmlURL+'&amp;original=1',c.icons_xml,'[XML]')"/>) 
     34            </span></td></tr> 
    3335            <tr py:if="c.doc.ndgObject is not None"> 
    3436            <td width="20%"><span py:replace="linkimage(c.doc.ndgObject.printableURL,c.icons_prn,'[HTML]')"/></td> 
    35             <td>Viewable XML version of this record</td> 
    36             </tr> 
     37            <td>Viewable XML version of this record 
     38             <span py:if="c.doc.ndgObject.gettable==1"> 
     39            (Original <span py:replace="linkimage(c.doc.ndgObject.printableURL+'&amp;original=1',c.icons_prn,'[HTML]')"/>) 
     40            </span></td></tr> 
     41            <tr py:if="c.doc.ndgObject.gettable==1"><td></td><td>(Original records are the raw material harvested from data providers)</td></tr> 
    3742        </tbody></table> 
    3843    </div> <!-- ServiceList --> 
    3944     
    4045     
    41     <div py:def="Coverage()"/> 
     46    <div py:def="Spatial(bbox)"> 
     47        <!-- Currently this only shows the first bounding box --> 
     48        <table py:if="bbox.nboxes==1"><tbody> 
     49            <tr><td colspan="2" class="cellhead">Spatial coverage</td></tr> 
     50            <tr><td colspan="2" align="center">${bbox.boxes[0][0]}</td></tr> 
     51            <tr><td align="center">${bbox.boxes[0][1]}</td><td align="center">${bbox.boxes[0][2]}</td></tr> 
     52            <tr><td colspan="2" align="center">${bbox.boxes[0][3]}</td></tr> 
     53        </tbody></table>  
     54        <span py:if="bbox.nboxes!=1"><p class="cellhead">Spatial Coverage</p> 
     55        <p> Record includes $bbox.nboxes spatial bounding box records </p></span> 
     56    </div> 
     57     
     58    <div py:def="Coverage(bbox,timcov)"> 
     59        <table cellspacing="0" cellpadding="3" border="0" width="100%"><tbody> 
     60            <tr><td class="linehead" colspan="2"><span class="heading0"> Data Coverage</span> </td></tr> 
     61            <tr><td><div py:replace="Spatial(bbox)"/></td> 
     62                <td><table><tr><td colspan="2" class="cellhead"> Temporal coverage</td></tr> 
     63                           <tr><td> Start Date: ${timcov[0]}</td><td>End Date: ${timcov[1]}</td></tr> 
     64                           <tr><td colspan="2"> Status:${timcov[2]}</td></tr></table> 
     65                </td></tr> 
     66        </tbody></table> 
     67    </div> 
     68     
     69    <div py:def="People(ptype,listOf)"> 
     70        <table py:if="listOf!=[]" cellspacing="0" cellpadding="3" border="0" width="100%"><tbody> 
     71            <tr><td class="linehead"><span class="heading0"> $ptype</span></td></tr> 
     72            <tr py:for="p in listOf"><td>${XML(p.core['role'])}</td><td>${XML(p.toHTML())}</td></tr> 
     73        </tbody></table>  
     74    </div> 
     75     
     76    <div py:def="Centre(cen)"> 
     77        <table cellspacing="0" cellpadding="3" border="0" width="100%"><tbody> 
     78            <tr><td class="linehead"><span class="heading0"> Data Centre</span></td></tr> 
     79            <tr><td>${XML(cen.toHTML())}</td></tr> 
     80        </tbody></table>  
     81    </div> 
    4282     
    4383    <div py:def="Keywords(Name,listOf)"> 
     
    4888    </div> 
    4989     
    50     <div py:def="Curator()"/> 
    51      
    5290</html> 
Note: See TracChangeset for help on using the changeset viewer.