source: TI07-MOLES/trunk/StubB/XSLT/browse/portal/cgi/renderEntity.py @ 940

Subversion URL: http://proj.badc.rl.ac.uk/svn/ndg/TI07-MOLES/trunk/StubB/XSLT/browse/portal/cgi/renderEntity.py@940
Revision 940, 3.8 KB checked in by lawrence, 13 years ago (diff)

Some minor bug fixes in rendering DIFs and stubB

Line 
1def renderEntity(entity):
2        ''' Take an NDG metadata entity (D or B) and render to HTML on a standard pattern,
3        depends on all entities having the same attributes '''
4       
5        #this is NOT supposed to be the whole page ...
6       
7        #need to start by building the coverage information html
8        #follow by building the contact information
9        #then get the related datasets (if available)
10
11        if entity is None: return ''
12
13        #try:
14        contentHTML=renderContent(entity)
15        #except:
16        #       contentHTML=''
17       
18        if entity.metadataType is 'stubB':
19                relatedHTML=renderRelated(entity)
20        else:
21                relatedHTML=''
22               
23        if entity.type=='dgDataEntity':
24                relatedHTML=renderGranules(entity)+relatedHTML
25        elif entity.type=='DIF':
26                relatedHTML=renderDataLinks(entity)+relatedHTML
27
28        html='''
29                <DIV id="EntityContent">
30                <p></p>
31                <h5>%s</h5>
32                <DIV id="Abstract">
33                        <p>%s</p>
34                </DIV>
35                <p><br/></p>
36                %s
37                %s
38        </DIV>'''%(entity.name,entity.abstract,contentHTML,relatedHTML)
39        return html
40
41def renderContent(entity):
42        '''Parse the entity for content information '''
43       
44        html=''
45        try:
46            if entity.constraints.exists:
47                html='<p>Access Control: %s</p>'%entity.constraints.html
48        except: pass
49       
50        html+='''
51        <table cellspacing="0" cellpadding="3" width="90%" border="0">
52                <tbody>
53                        <tr>
54                                <td class="lineHead" width="40%"><b>Field</b></td>
55                                <td class="lineHead" width="60%"><b>Description</b></td>
56                        </tr>'''
57                       
58        for item in entity.parameters:
59                html+='''
60                        <tr><td class="line"><b>Parameter</b><br/></td>
61                        <td class="line">%s</td></tr>'''%item
62       
63        html+='''
64                <tr><td class="line"><b>Spatial Coverage</b><br/></td>
65                        <td class="line">%s</td></tr>'''%entity.bbox.toHTML()
66       
67        html+='''
68                <tr><td class="line"><b>Temporal Coverage</b><br/></td>
69                        <td class="line">%s</td></tr>'''%entity.timeCoverage
70       
71        html+='''
72                <tr><td class="line"><b>Data Curator</b><br/></td>
73                        <td class="line">%s</td></tr>'''%entity.curator.toHTML()
74               
75        for c in entity.creators:
76                html+='''
77                        <tr><td class="line"><b>Data Creator</b><br/></td>
78                        <td class="line">%s</td></tr>'''%c.toHTML()
79                       
80        html+='</tbody></table>'
81       
82        return html
83#
84# Following classes specific to stub-B
85#
86def renderGranules(entity):
87        ''' Render information about data granules within a data entity '''
88        if len(entity.granules):
89                html='''<p><br/></p>
90                <table cellspacing="0" cellpadding="3" width="90%" border="0">
91                <tbody>
92                        <tr><td class="lineHead" colspan="3">
93                          <span class="headingO">Data Granules</span></td></tr>
94                        <tr class="lineHiLite">
95                          <td width="30%" colspan="2">Accessability</td><td>Link</td></tr>'''
96                for g in entity.granules:
97                        html+='<tr>'
98                        if g.constraints.exist:
99                                html+='<td width="20px"  class="key"></td><td>%s</td>'%g.constraints.html
100                        else:
101                           html+='<td>public</td><td></td>'
102                        html+='<td>%s</td></tr>'%g.Aurl
103                html+='</tbody></table>'
104                return html
105        else: return ''
106       
107def renderDataLinks(entity):
108    return 'some data link stuff'
109       
110def renderRelated(entity):
111        ''' take a stub-b and create html for the related entities '''
112        if entity.related!=[]:
113                html='''<p><br/></p>
114                <table cellspacing="0" cellpadding="3" width="90%" border="0">
115                <tbody>
116                        <tr>
117                                <td class="lineHead" colspan="2"><span class="headingO">Related Entities</span></td>
118                        </tr>'''
119                       
120                for deployment in entity.related:
121                        #really ought to have a row for the deployment name ....
122                        for instance  in deployment[1]:
123                                label=instance[0]
124                                for link in instance[1]:
125                                        html+='<tr><td width="40%%"><b>%s</b></td><td width="60%%"><a href="%s">%s</a></td></tr>'%(label,link[1],link[0])
126                html+='</tbody></table>'
127        else:
128                html=''
129        return html
130
131if __name__=="__main__":
132        from stubB import stubB
133        xml=open('../../exampleB/methyl.example.xml').read()
134        x=stubB(xml,makeHTML=renderEntity)
135        html=x.toHTML()
136        f=open('output.html','w')
137        f.write(html)
138       
139       
140
Note: See TracBrowser for help on using the repository browser.