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

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

Minor bug fixes to various browse code bits and bobs ...

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