source: TI07-MOLES/trunk/PythonCode/wsgi/DeploymentHandling.py @ 2517

Subversion URL: http://proj.badc.rl.ac.uk/svn/ndg/TI07-MOLES/trunk/PythonCode/wsgi/DeploymentHandling.py@2522
Revision 2517, 3.8 KB checked in by lawrence, 12 years ago (diff)

Sundry browse bug fixes from PML experience, plus look-n-feel
in browse and discovery.

Line 
1from ndgObject import *
2
3headings = {'activity':'Activities',
4                   'dataproductiontool':'Data Production Tools',
5                   'observationstation':'Observation Stations',
6                   'dataentity':'Data Entity'}
7others = { 'dgDataEntity':['activity','dataproductiontool','observationstation'],
8            'dgDataProductionTool':['activity','observationstation','dataentity'],
9            'dgObservationStation':['activity','dataproductiontool','dataentity'],
10            'dgActivity':['dataproductiontool','dataentity','observationstation']
11            }
12           
13       
14class Deployments:
15    def __init__(self,helper,bType,config):
16        self.others=others[bType] 
17        self.known=[]
18        self.links={}
19        for o in self.others:self.links[o]=[]
20        self.config=config
21        self.h=helper
22    def add(self,d):
23        for o in self.others:
24            e=self.h.find(d,o)
25            u='%s:%s:%s'%(self.h.getText(e,'dgMetadataID/repositoryIdentifier'),
26                    'NDG-B1',
27                    self.h.getText(e,'dgMetadataID/localIdentifier'))
28            if u not in self.known:
29                self.links[o].append((ndgObject(u,self.config),self.h.getText(e,'name'),self.h.getText(e,'abbreviation')))
30                self.known.append(u)
31    def toHTML(self):
32        if self.links=={}: return ''
33        html='''<table cellspacing="0" cellpadding="3" border="0" width="100%" class="related">
34                <tbody>
35                <tr><td class="lineHead" colspan="2">
36                        <span class="headingO">Related Entities</span></td></tr>
37                '''
38        for o in self.others:
39            h=headings[o]
40            hh=''
41            for l in self.links[o]:
42                print l
43                w=l[1].replace(' ','&nbsp;')
44                hh+='<a href="%s">%s</a>&nbsp;(%s) '%(l[0].URL,w,l[2])
45            if hh<>'':
46                html+='<tr class="separated"><td width=20%%" class="line">%s</td><td width="80%%">%s</td></tr>'%(h,hh)
47        #    for l in self.links[o]:
48        #        a = '<a href="%s">%s</a>'%(l[0].URL,l[1])
49        #        html+='''<tr><td width="20%%" class="line">%s</td><td width="80%%">%s</td></tr>'''%(h,a)
50        html+='</tbody></table>'
51        return html
52
53class Deployment:
54    ''' Used by the old-stub-B code - obsolete '''
55    def __init__(self,helper,elem,others,config):
56        labels={'activity':'Activity ','observationstation':'Observation Station ',
57                'dataproductiontool':'Data Production Tool ','dataEntity':'Data Entity ',
58                'dataentity':'Data Entity'}
59        n=idconvert(helper,elem,config)
60        self.ndgObject=n
61        self.URL=n.BURL
62        self.dateRange=(helper.getText(elem,'DateStart'),helper.getText(elem,'DateEnd'))
63        self.links={}
64        for o in others:
65            ids=helper.findall(elem,o)
66            if o not in self.links: self.links[o]=[]
67            for i in ids:
68                link=ndgLink(helper.getText(i,'name'),
69                    helper.getText(i,'abbreviation'),idconvert(helper,i,config),label=labels[o])
70                self.links[o].append(link)
71import unittest
72from xmlHandler import xmlHandler
73from ETxmlView import nsdumb
74from Utilities import myConfig
75class TestCase(unittest.TestCase):
76       
77    def testDeployments(self):
78        ''' Tests the ability to read and populate deployments '''
79        f='examples/badc.nerc.ac.uk__NDG-B1__dataent_chablis.xml'
80        s=open(f,'r').read()
81        x=xmlHandler(s,string=1)
82        h=nsdumb(x.tree)
83        btype='dgDataEntity'
84        config=myConfig('ndgDiscovery.config')
85        D=Deployments(h,btype,config)
86        for e in h.findall(x.tree,'dgDataEntity/RelatedDeployment'):
87            D.add(e)
88        s=open('output.html','w')
89        s.write(D.toHTML())
90        s.close()
91
92if __name__=="__main__":
93    unittest.main()
94
95
96       
97       
Note: See TracBrowser for help on using the repository browser.