Changeset 2493


Ignore:
Timestamp:
17/05/07 14:48:29 (12 years ago)
Author:
spascoe
Message:

Implemented all metadata fields in WMS_Capabilities/Service.

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

Legend:

Unmodified
Added
Removed
  • TI05-delivery/ows_framework/trunk/ows_server/ows_server.egg-info/PKG-INFO

    r2488 r2493  
    11Metadata-Version: 1.0 
    22Name: ows-server 
    3 Version: 0.0.0dev-r2486 
     3Version: 0.0.0dev-r2488 
    44Summary: UNKNOWN 
    55Home-page: UNKNOWN 
  • TI05-delivery/ows_framework/trunk/ows_server/ows_server.egg-info/SOURCES.txt

    r2488 r2493  
    3939ows_server/templates/wms_service_metadata.kid 
    4040ows_server/tests/__init__.py 
     41ows_server/tests/exampleCapabilities1.xml 
    4142ows_server/tests/test_models.py 
    4243ows_server/tests/functional/__init__.py 
  • TI05-delivery/ows_framework/trunk/ows_server/ows_server/lib/wms_capabilities.py

    r2488 r2493  
    2222    return path([qname(ows_ns, x) for x in items]) 
    2323 
     24def text_or_none(e): 
     25    if e is not None: 
     26        return e.text 
     27    else: 
     28        return e 
     29 
    2430class WmsOwsAdapter(object): 
    2531    """ 
     
    3238 
    3339    def _getTitle(self): 
    34         e = self.ows_tree.find(ows_path(['ServiceIdentification', 'Title'])) 
    35         if e is not None: 
    36             return e.text 
    37         else: 
    38             return None 
     40        return text_or_none(self.ows_tree.find( 
     41            ows_path(['ServiceIdentification', 'Title']))) 
    3942    title = property(_getTitle) 
    4043 
     
    5255 
    5356    def _getOnlineResource(self): 
    54         e = self.ows_tree.find(ows_path(['ServiceProvider', 
    55                                          'ProviderSite'])) 
    56         if e is not None: 
    57             return e.attrib[qname(xlink_ns, 'href')] 
    58         else: 
    59             return None 
     57        return self.ows_tree.find( 
     58            ows_path(['ServiceProvider', 
     59                      'ProviderSite'])).attrib[qname(xlink_ns, 'href')] 
    6060    onlineResource = property(_getOnlineResource) 
     61 
     62    def _getContactInformation(self): 
     63        """ 
     64        This gets the first ServiceContact element. 
     65 
     66        """ 
     67        d = {} 
     68        e = self.ows_tree.find(ows_path(['ServiceProvider', 'ServiceContact'])) 
     69 
     70        d['person'] = text_or_none(e.find(qname(ows_ns, 'IndividualName'))) 
     71 
     72        # This one doesn't map exactly.  Use ServiceProvider/ProviderName 
     73        d['organization'] = text_or_none( 
     74            self.ows_tree.find(ows_path(['ServiceProvider', 'ProviderName']))) 
     75 
     76        d['position'] = text_or_none(e.find(qname(ows_ns, 'PositionName'))) 
     77 
     78        d['address'] = [x.text for x in 
     79                        e.findall(ows_path(['ContactInfo', 'Address', 
     80                                            'DeliveryPoint']))] 
     81        d['city'] = text_or_none(e.find(ows_path(['ContactInfo', 
     82                                                  'Address', 'City']))) 
     83        d['state_or_province'] = text_or_none( 
     84            e.find(ows_path(['ContactInfo', 'Address', 'AdministrativeArea']))) 
     85 
     86        d['postcode'] = text_or_none( 
     87            e.find(ows_path(['ContactInfo', 'Address', 'PostalCode']))) 
     88 
     89        d['country'] = text_or_none( 
     90            e.find(ows_path(['ContactInfo', 'Address', 'Country']))) 
     91 
     92        d['telephone'] = text_or_none( 
     93            e.find(ows_path(['ContactInfo', 'Phone', 'Voice']))) 
     94 
     95        d['fax'] = text_or_none( 
     96            e.find(ows_path(['ContactInfo', 'Phone', 'Facsimile']))) 
     97 
     98        d['email'] = text_or_none( 
     99            e.find(ows_path(['ContactInfo', 'Address', 
     100                             'ElectronicMailAddress']))) 
     101 
     102        return d 
     103    contactInformation = property(_getContactInformation) 
     104 
     105    def _getFees(self): 
     106        return text_or_none( 
     107            self.ows_tree.find(ows_path(['ServiceIdentification', 'Fees']))) 
     108    fees = property(_getFees) 
     109 
     110    def _getAccessConstraints(self): 
     111        return text_or_none( 
     112            self.ows_tree.find(ows_path(['ServiceIdentification', 
     113                                         'AccessConstraints']))) 
     114    accessConstraints = property(_getAccessConstraints) 
  • TI05-delivery/ows_framework/trunk/ows_server/ows_server/templates/wms_service_metadata.kid

    r2486 r2493  
    88""" 
    99 
    10 # Namespaces 
    11 ows_ns = 'http://www.opengis.net/ows/1.1' 
    12  
    13 # ElementTree utilities 
    14 def qname(ns, tag): 
    15     return '{%s}%s' % (ns, tag) 
    16 def path(items): 
    17     return '/'.join(path) 
     10from ows_server.lib.wms_capabilities import WmsOwsAdapter 
    1811?> 
    1912<WMS_Capabilities version="1.3.0" 
     
    2417                  xsi:schemaLocation="http://www.opengis.net/wms http://schemas.opengis.net/wms/1.3.0/capabilities_1_2_0.xsd"> 
    2518 
    26 <?python 
    27 # Data extracted from ows_c 
    28 title_e = ows_c.find(path([qname(ows_ns, 'ServiceIdentification'), 
    29                            qname(ows_ns, 'Title')])) 
    30 abstrat_es = ows_c.findall(path([qname(ows_ns, 'ServiceIdentification'), 
    31                                  qname(ows_ns, 'Abstract')])) 
    32 ?> 
     19<?python m = WmsOwsAdapter(ows_c) ?> 
    3320 
    3421  <Service> 
    3522    <Name>WMS</Name> 
    36     <Title py:if="title_e" py:content="title.text"/> 
    37     <Abstract py:for="e in abstract_e" py:content="e.text"/> 
     23    <Title py:if="m.title" py:content="m.title"/> 
     24    <Abstract py:for="a in m.abstracts" py:content="a"/> 
     25    <KeywordList py:if="m.keywords"> 
     26      <Keyword py:for="k in m.keywords" py:content="k"/> 
     27    </KeywordList> 
     28    <OnlineResource py:if="m.onlineResource" 
     29                    xlink:type="simple" 
     30                    xlink:href="${m.onlineResource}"/> 
     31    <ContactInformation> 
     32      <?python ci = m.contactInformation ?> 
     33      <ContactPersonPrimary> 
     34        <ContactPerson py:content="ci['person']"/> 
     35        <ContactOrganization py:content="ci['organization']"/> 
     36      </ContactPersonPrimary> 
     37      <ContactAddress> 
     38        <Address py:for="a in ci['address']" py:content="a"/> 
     39        <City py:content="ci['city']"/> 
     40        <StateOrProvince py:content="ci['state_or_province']"/> 
     41        <PostCode py:content="ci['postcode']"/> 
     42        <Country py:content="ci['country']"/> 
     43      </ContactAddress> 
     44      <ContactVoiceTelephone py:content="ci['telephone']"/> 
     45      <ContactFacsimile py:content="ci['fax']"/> 
     46      <ContactElectronicMailAddress py:content="ci['email']"/> 
     47    </ContactInformation> 
     48    <Fees py:content="m.fees"/> 
     49    <AccessConstraints py:content="m.accessConstraints"/> 
    3850  </Service> 
    3951</WMS_Capabilities> 
  • TI05-delivery/ows_framework/trunk/ows_server/ows_server/tests/test_models.py

    r2488 r2493  
    2525    def testOnlineResource(self): 
    2626        olr = self.woa.onlineResource 
     27        print olr 
    2728        assert olr == 'http://hostname/' 
     29 
     30    def testContactInformation(self): 
     31        ci = self.woa.contactInformation 
     32        print ci 
     33        assert ci == {'city': 'Greenbelt', 
     34                      'fax': '+1 301 555-1212', 
     35                      'organization': 'Acme Corporation', 
     36                      'state_or_province': 'MD', 
     37                      'country': 'USA', 
     38                      'telephone': '+1 301 555-1212', 
     39                      'person': 'Jeff Smith, Server Administrator', 
     40                      'postcode': '20771', 
     41                      'address': ['NASA Goddard Space Flight Center'], 
     42                      'position': 'Computer Scientist', 
     43                      'email': 'user@host.com' 
     44                      } 
     45 
     46    def testFees(self): 
     47        assert self.woa.fees == 'NONE' 
     48 
     49    def testAccessConstraints(self): 
     50        assert self.woa.accessConstraints == 'NONE' 
Note: See TracChangeset for help on using the changeset viewer.