Changeset 807 for TI07-MOLES/trunk


Ignore:
Timestamp:
20/04/06 17:36:50 (13 years ago)
Author:
lawrence
Message:

Most of the attributes for the stub-B are now populated correctly

File:
1 edited

Legend:

Unmodified
Added
Removed
  • TI07-MOLES/trunk/StubB/XSLT/browse/portal/cgi/stubB.py

    r804 r807  
    1717                rr=[i.text for i in r] 
    1818        except: 
    19                 rr='Metadata Element [%s] Not Found'%xpathExpression 
     19                rr=['',] 
    2020        if multiple:  
    2121                return rr 
    2222        else: return rr[0]  
    2323         
    24 class dgPerson: 
    25         '''The ET representation of a contact ''' 
     24class Name: 
     25        ''' Handles the name type ''' 
     26        def __init__(self,element): 
     27                if element is None: 
     28                        self.name='' 
     29                        return 
     30                if wrapGetText(element,'nameOrder')=='L2R': 
     31                        o=('title','initials','familyName') 
     32                else: 
     33                        o=('title','familyName','personalName') 
     34                self.name='' 
     35                for i in o: self.name+=' '+ wrapGetText(element,i) 
     36        def __str__(self): 
     37                return self.name 
     38         
     39class dgContact: 
     40        '''A simple summary of contact information for an organisation or a person ''' 
    2641        def __init__(self,element): 
    2742                ''' Instantiate a MOLES person element ''' 
    2843                self.elem=element 
    2944                if self.elem is None: return 
    30                 self.name=wrapGetText(self.elem,'') 
     45                self.name=Name(self.elem.find('dgRoleHolder/dgPerson/name')) 
    3146                self.org=wrapGetText(self.elem,'dgRoleHolder/dgOrganisation/name') 
    3247                self.email=wrapGetText(self.elem,'contactDetails/eMail') 
    3348                self.phone=wrapGetText(self.elem,'contactDetails/telephone') 
     49                self.url=wrapGetText(self.elem,'contactDetails/URI') 
    3450        def toHTML(self): 
    3551                ''' Convert to simple HTML ''' 
    36                 html=''' 
    37                         %s<br/>%s<br/>%s<br/> 
    38                 ''' % (self.name,self.email,self.phone) 
     52                if str(self.name)!='': 
     53                        html='<p>%s</br>'%self.name 
     54                else: 
     55                        html='<p>' 
     56                if self.org!='': 
     57                        html+='Organisation: %s<br/>'%self.org 
     58                html+='''Email: %s<br/>Phone: %s<br/></p>''' % (self.email,self.phone) 
    3959                return html 
     60                 
    4061class Bounding: 
    4162        ''' Separated out because this may change with versions ''' 
     
    4364                '''Parse a data entity and load a bounding box ''' 
    4465                North=wrapGetText(elem, 
    45                         'dgDataCoverage/dgSpatialCoverage/BoundingBox/LimitNorth') 
     66                        'dgDataSummary/dgDataCoverage/dgSpatialCoverage/BoundingBox/LimitNorth') 
    4667                South=wrapGetText(elem, 
    47                         'dgDataCoverage/dgSpatialCoverage/BoundingBox/LimitSouth') 
     68                        'dgDataSummary/dgDataCoverage/dgSpatialCoverage/BoundingBox/LimitSouth') 
    4869                West=wrapGetText(elem, 
    49                         'dgDataCoverage/dgSpatialCoverage/BoundingBox/LimitWest') 
     70                        'dgDataSummary/dgDataCoverage/dgSpatialCoverage/BoundingBox/LimitWest') 
    5071                East=wrapGetText(elem, 
    51                         'dgDataCoverage/dgSpatialCoverage/BoundingBox/LimitEast') 
     72                        'dgDataSummary/dgDataCoverage/dgSpatialCoverage/BoundingBox/LimitEast') 
    5273                try: 
    5374                        self.box=[float(i) for i in [North, South,West, East]] 
     
    5677        def toHTML(self): 
    5778                if self.box is not None: 
    58                         html=''' 
     79                        html='''<p> 
    5980                                Limit North: %s <br/> 
    6081                                Limit South: %s <br/> 
    6182                                Limit West: %s <br/> 
    6283                                Limit East: %s <br/>     
    63                                 '''%self.box 
     84                                </p>'''%self.box 
    6485                else: 
    6586                        html='No bounding box' 
     
    7192                self.elem=element 
    7293                #just one curator 
    73                 self.curator=dgPerson(self.elem.find('dgDataRoles/dgDataCurator')) 
     94                self.curator=dgContact(self.elem.find('dgDataRoles/dgDataCurator')) 
    7495                #possibly multiple creators 
    75                 self.creators=[dgPerson(i) for i in self.elem.findall('dgDataRoles/dgDataCreator')] 
     96                self.creators=[dgContact(i) for i in self.elem.findall('dgDataRoles/dgDataCreator')] 
    7697                host,service = '','' # dummy for now 
    7798                #possibly multiple granules 
    7899                self.granules=[self.bind2Aservice(host,service,i) for i in self.elem.findall('dgDataGranule')] 
    79100                #bounding box, handled as a class because this is going to be difficult ... 
    80                 b=Bounding(self.elem) 
    81                 self.bbox=b.box 
     101                self.bbox=Bounding(self.elem) 
    82102                self.temporal() 
    83103                #parameters 
    84                 self.parameters=wrapGetText(self.elem,'dgParameterSummary/ParameterName',multiple=1) 
     104                self.parameters=wrapGetText(self.elem,'dgDataSummary/dgParameterSummary/ParameterName',multiple=1) 
    85105                 
    86106        def temporal(self): 
    87107                '''Instantiate the timeCoverage attribute by parsing for temporal coverage ''' 
    88                 t=self.elem.find('dgDataCoverage/dgTemporalCoverage/DateRange') 
     108                t=self.elem.find('dgDataSummary/dgDataCoverage/dgTemporalCoverage/DateRange') 
    89109                if t is not None: 
    90110                        try: 
     
    93113                                self.timeCoverage='No time information' 
    94114                else: 
    95                         t=self.elem.find('dgDataCoverage/dgTemporalCoverage/DateSingle') 
     115                        t=self.elem.find('dgDataSummary/dgDataCoverage/dgTemporalCoverage/DateSingle') 
    96116                        try: 
    97117                                self.timeCoverage=t.text 
     
    138158                # now go get all the related links 
    139159                self.related=[] 
    140                 for related in self.tree.findall('RelatedDeployment'): 
     160                for related in self.tree.findall(self.type+'/RelatedDeployment'): 
    141161                        for item in self.others: 
    142162                                subitems=related.findall(item) 
     
    180200        print x.name 
    181201        print x.parameters 
     202        print x.timeCoverage 
     203        print x.bbox.toHTML() 
     204        print x.curator.toHTML() 
     205        for item in x.creators: print item.toHTML() 
Note: See TracChangeset for help on using the changeset viewer.