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

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

New code for handling stripped deployments ... this is test code
at the moment ...

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