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

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

Modifications to support cut-down stub-b xquery.
Slight rearrangement of page positioning in discovery. (Needs CSS
support)

Line 
1from ndgObject import *
2
3headings = {'activity':'Activities',
4                   'dataproductiontool':'Data Production Tool',
5                   'observationstation':'Observation Station',
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%">
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            #could use a name if we have one, but meanwhile we'll use a numeric ...
41            for l in self.links[o]:
42                a = '<a href="%s">%s</a>'%(l[0].URL,l[1])
43                html+='''<tr><td width="30%%">%s</td><td width="60%%">%s</td></tr>'''%(h,a)
44        html+='</tbody></table>'
45        return html
46
47class Deployment:
48    ''' Used by the old-stub-B code - obsolete '''
49    def __init__(self,helper,elem,others,config):
50        labels={'activity':'Activity ','observationstation':'Observation Station ',
51                'dataproductiontool':'Data Production Tool ','dataEntity':'Data Entity ',
52                'dataentity':'Data Entity'}
53        n=idconvert(helper,elem,config)
54        self.ndgObject=n
55        self.URL=n.BURL
56        self.dateRange=(helper.getText(elem,'DateStart'),helper.getText(elem,'DateEnd'))
57        self.links={}
58        for o in others:
59            ids=helper.findall(elem,o)
60            if o not in self.links: self.links[o]=[]
61            for i in ids:
62                link=ndgLink(helper.getText(i,'name'),
63                    helper.getText(i,'abbreviation'),idconvert(helper,i,config),label=labels[o])
64                self.links[o].append(link)
65import unittest
66from xmlHandler import xmlHandler
67from ETxmlView import nsdumb
68from Utilities import myConfig
69class TestCase(unittest.TestCase):
70       
71    def testDeployments(self):
72        ''' Tests the ability to read and populate deployments '''
73        f='examples/badc.nerc.ac.uk__NDG-B1__dataent_chablis.xml'
74        s=open(f,'r').read()
75        x=xmlHandler(s,string=1)
76        h=nsdumb(x.tree)
77        btype='dgDataEntity'
78        config=myConfig('ndgDiscovery.config')
79        D=Deployments(h,btype,config)
80        for e in h.findall(x.tree,'dgDataEntity/RelatedDeployment'):
81            D.add(e)
82        s=open('output.html','w')
83        s.write(D.toHTML())
84        s.close()
85
86if __name__=="__main__":
87    unittest.main()
88
89
90       
91       
Note: See TracBrowser for help on using the repository browser.