annotate JSONClient.py @ 4:ceac1f8e896f default tip

exportTexts
author dwinter
date Fri, 14 Dec 2012 13:47:41 -0500
parents 3532f1c49efb
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
e8640aa396cd initial
dwinter
parents:
diff changeset
1 from OFS.SimpleItem import SimpleItem
e8640aa396cd initial
dwinter
parents:
diff changeset
2 from Globals import package_home
e8640aa396cd initial
dwinter
parents:
diff changeset
3 import json
e8640aa396cd initial
dwinter
parents:
diff changeset
4 import SrvTxtUtils
e8640aa396cd initial
dwinter
parents:
diff changeset
5 import urllib
e8640aa396cd initial
dwinter
parents:
diff changeset
6 from Products.PageTemplates.PageTemplateFile import PageTemplateFile
e8640aa396cd initial
dwinter
parents:
diff changeset
7 import os
e8640aa396cd initial
dwinter
parents:
diff changeset
8 import os.path
e8640aa396cd initial
dwinter
parents:
diff changeset
9 import logging
e8640aa396cd initial
dwinter
parents:
diff changeset
10
3
3532f1c49efb changes for new apu
dwinter
parents: 2
diff changeset
11 from lxml import etree
3532f1c49efb changes for new apu
dwinter
parents: 2
diff changeset
12
2
e6c3334e9611 new function:
dwinter
parents: 1
diff changeset
13 from BTrees.OOBTree import OOBTree
e6c3334e9611 new function:
dwinter
parents: 1
diff changeset
14
0
e8640aa396cd initial
dwinter
parents:
diff changeset
15 class JSONClient(SimpleItem):
2
e6c3334e9611 new function:
dwinter
parents: 1
diff changeset
16
0
e8640aa396cd initial
dwinter
parents:
diff changeset
17 meta_type="JSONClient"
e8640aa396cd initial
dwinter
parents:
diff changeset
18
1
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
19 manage_options=SimpleItem.manage_options+(
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
20 {'label':'Main Config','action':'changeJSONClientConfigPT'},
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
21 )
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
22
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
23
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
24
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
25 _v_jsonCache={}
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
26
0
e8640aa396cd initial
dwinter
parents:
diff changeset
27 def __init__(self,id,url):
e8640aa396cd initial
dwinter
parents:
diff changeset
28 """init"""
e8640aa396cd initial
dwinter
parents:
diff changeset
29 self.id=id
e8640aa396cd initial
dwinter
parents:
diff changeset
30 self.url=url
e8640aa396cd initial
dwinter
parents:
diff changeset
31
1
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
32 def changeJSONClientConfigPT(self):
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
33 """change form"""
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
34 pt=zptFile(self, 'zpt/changeJSONClientForm.zpt')
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
35 pt.content_type="text/html"
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
36 return pt()
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
37
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
38
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
39 def changeJSONClientConfig(self,url,RESPONSE=None):
2
e6c3334e9611 new function:
dwinter
parents: 1
diff changeset
40 """cahnge the JSON config"""
1
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
41 self.url=url
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
42 if RESPONSE is not None:
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
43 RESPONSE.redirect('manage_main')
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
44
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
45
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
46 def getEntityLink(self,entId):
3
3532f1c49efb changes for new apu
dwinter
parents: 2
diff changeset
47 return "https://openmind-ismi-dev.mpiwg-berlin.mpg.de/om4-ismi/browse/entityDetails.xhtml?eid="+str(entId)
1
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
48
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
49 def json(self,method,params={},cache=True):
0
e8640aa396cd initial
dwinter
parents:
diff changeset
50 """json aufruf"""
e8640aa396cd initial
dwinter
parents:
diff changeset
51
1
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
52
0
e8640aa396cd initial
dwinter
parents:
diff changeset
53 paramString=urllib.urlencode(params)
e8640aa396cd initial
dwinter
parents:
diff changeset
54 callUrl = self.url%(method,paramString)
2
e6c3334e9611 new function:
dwinter
parents: 1
diff changeset
55 logging.debug(callUrl)
1
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
56 if (cache is True) and (self._v_jsonCache.get(callUrl,None)!=None):
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
57 return self._v_jsonCache.get(callUrl)
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
58 else:
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
59
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
60 txt=SrvTxtUtils.getHttpData(callUrl)
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
61 logging.debug(txt)
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
62 obj= json.loads(txt)
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
63
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
64 self._v_jsonCache[callUrl]=obj
0
e8640aa396cd initial
dwinter
parents:
diff changeset
65 return obj
e8640aa396cd initial
dwinter
parents:
diff changeset
66
e8640aa396cd initial
dwinter
parents:
diff changeset
67
e8640aa396cd initial
dwinter
parents:
diff changeset
68 def mapEntityAttributesToData(self,entity,type):
3
3532f1c49efb changes for new apu
dwinter
parents: 2
diff changeset
69 logging.debug(entity)
3532f1c49efb changes for new apu
dwinter
parents: 2
diff changeset
70 attrs=entity.get('atts')
0
e8640aa396cd initial
dwinter
parents:
diff changeset
71 attrsHash={}
e8640aa396cd initial
dwinter
parents:
diff changeset
72 for attr in attrs:
3
3532f1c49efb changes for new apu
dwinter
parents: 2
diff changeset
73 attrsHash[attr.get('name')]=attr.get('ov')
0
e8640aa396cd initial
dwinter
parents:
diff changeset
74 attrsHash['@type']=type
e8640aa396cd initial
dwinter
parents:
diff changeset
75 return attrsHash
e8640aa396cd initial
dwinter
parents:
diff changeset
76
e8640aa396cd initial
dwinter
parents:
diff changeset
77 def getOV(self,entId):
2
e6c3334e9611 new function:
dwinter
parents: 1
diff changeset
78 if (entId)<0: #-1 falls keine Entity gefunden wurde
e6c3334e9611 new function:
dwinter
parents: 1
diff changeset
79 return""
3
3532f1c49efb changes for new apu
dwinter
parents: 2
diff changeset
80 obj=self.json("get_ent", {'id':entId})
3532f1c49efb changes for new apu
dwinter
parents: 2
diff changeset
81 return obj.get('ent').get('ov')
0
e8640aa396cd initial
dwinter
parents:
diff changeset
82
3
3532f1c49efb changes for new apu
dwinter
parents: 2
diff changeset
83 def getSingleRelationFromEntity(self,jsonHash,type="src_Rrels",relName=None,idType="src_id"):
2
e6c3334e9611 new function:
dwinter
parents: 1
diff changeset
84 ret = self.getRelationFromEntity(jsonHash,type,relName,maxNum=1)
e6c3334e9611 new function:
dwinter
parents: 1
diff changeset
85 if len(ret)==0:
e6c3334e9611 new function:
dwinter
parents: 1
diff changeset
86 return -1
e6c3334e9611 new function:
dwinter
parents: 1
diff changeset
87 else:
e6c3334e9611 new function:
dwinter
parents: 1
diff changeset
88 return ret[0].get(idType)
e6c3334e9611 new function:
dwinter
parents: 1
diff changeset
89
3
3532f1c49efb changes for new apu
dwinter
parents: 2
diff changeset
90 def getRelationFromEntity(self,jsonHash,type="src_rels",relName=None,maxNum=3000):
3532f1c49efb changes for new apu
dwinter
parents: 2
diff changeset
91 hash=jsonHash.get("ent")
0
e8640aa396cd initial
dwinter
parents:
diff changeset
92 logging.debug(type)
e8640aa396cd initial
dwinter
parents:
diff changeset
93 logging.debug(".................")
e8640aa396cd initial
dwinter
parents:
diff changeset
94 logging.debug(hash)
e8640aa396cd initial
dwinter
parents:
diff changeset
95 rels = hash.get(type,None)
e8640aa396cd initial
dwinter
parents:
diff changeset
96 logging.debug(".................")
e8640aa396cd initial
dwinter
parents:
diff changeset
97 logging.debug(rels)
e8640aa396cd initial
dwinter
parents:
diff changeset
98
e8640aa396cd initial
dwinter
parents:
diff changeset
99 if (rels is None) or (relName is None):
e8640aa396cd initial
dwinter
parents:
diff changeset
100 logging.debug("return")
e8640aa396cd initial
dwinter
parents:
diff changeset
101 return rels
e8640aa396cd initial
dwinter
parents:
diff changeset
102 ret=[]
e8640aa396cd initial
dwinter
parents:
diff changeset
103
e8640aa396cd initial
dwinter
parents:
diff changeset
104
e8640aa396cd initial
dwinter
parents:
diff changeset
105 counter=0
e8640aa396cd initial
dwinter
parents:
diff changeset
106 for rel in rels:
e8640aa396cd initial
dwinter
parents:
diff changeset
107 if rel.get("name","")==relName:
e8640aa396cd initial
dwinter
parents:
diff changeset
108 counter+=1
e8640aa396cd initial
dwinter
parents:
diff changeset
109 ret.append(rel)
e8640aa396cd initial
dwinter
parents:
diff changeset
110 if counter > maxNum:
e8640aa396cd initial
dwinter
parents:
diff changeset
111 break
e8640aa396cd initial
dwinter
parents:
diff changeset
112
e8640aa396cd initial
dwinter
parents:
diff changeset
113 logging.debug("++++++++++++++++++++++++++++++")
e8640aa396cd initial
dwinter
parents:
diff changeset
114 logging.debug(rels)
e8640aa396cd initial
dwinter
parents:
diff changeset
115 return ret
1
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
116
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
117 def getPubmanOutput(self,url="http://pubman.mpiwg-berlin.mpg.de/search/SearchAndExport?cqlQuery=escidoc.context.objid=escidoc:79281&exportFormat=APA&outputFormat=html_linked&sortKeys=&sortOrder=ascending&startRecord=1&maximumRecords=50",cache=True):
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
118 """getPubmanOutput"""
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
119
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
120 callUrl = url
0
e8640aa396cd initial
dwinter
parents:
diff changeset
121
1
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
122 if (cache is True) and (self._v_jsonCache.get(callUrl,None)!=None):
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
123 return self._v_jsonCache.get(callUrl)
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
124 else:
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
125
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
126 txt=SrvTxtUtils.getHttpData(callUrl)
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
127 logging.debug(txt)
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
128 #obj= json.loads(txt)
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
129
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
130 self._v_jsonCache[callUrl]=txt
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
131 return txt
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
132
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
133 def activateUrl(self,value):
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
134 #wenn ein wert eine url ist, dass mache daraus einen entsprechende a link.
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
135 if value.startswith("http://") or value.startswith("https://"):
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
136 return """<a class="activatedLink" href="%s">%s</a>"""%(value,value)
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
137 else:
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
138 return value
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
139
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
140
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
141 def getISMIIDfromBiographie(self,name):
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
142 #nimmt den Filenamen und gibt die ISMI Personen ID zurueck diese liegt auf dem Server in einer Datei bio2ismi.txt
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
143 data = str(getattr(self.biographies,'bio2ismi.txt'))
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
144 logging.debug(data)
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
145 for line in data.split("\n"):
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
146 splitted= line.split("\t")
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
147 filename=splitted[1].replace(r"\w","_")
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
148 filename=filename.replace(r"%\d+","_")
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
149 logging.debug(line)
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
150 if (len(splitted)> 1) and (name in filename):
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
151 return splitted[0]
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
152 return ""
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
153
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
154 def collectURL(self,url,name,REQUEST):
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
155 history=REQUEST.SESSION.get('history',None);
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
156 if history is None:
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
157 history=[]
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
158
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
159
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
160 if len(history)>0:#wenn der letzte Eintrag gleich dem jetzigen ist, dann nicht eintragen
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
161 urlStored,nameStored=history[-1]
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
162 if urlStored==url:
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
163 return self.createBreadcrumb(REQUEST);
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
164
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
165
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
166 history.append((url,name))
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
167 REQUEST.SESSION.set('history',history);
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
168 return self.createBreadcrumb(REQUEST);
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
169
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
170 def collectTriple(self,s,p,o,inverse=False,REQUEST=None,RESPONSE=None):
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
171 """collect a triple and redirect"""
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
172
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
173 history=REQUEST.SESSION.get('triple',None);
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
174 if history is None:
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
175 history=[]
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
176
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
177
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
178
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
179 if not (s,p,o) in history:
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
180
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
181 history.append((s,p,o))
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
182 REQUEST.SESSION.set('triple',history);
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
183
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
184 if inverse:
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
185 RESPONSE.redirect(s)
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
186 else:
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
187 RESPONSE.redirect(o)
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
188
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
189 def cleanHistoryAndTriple(self,REQUEST):
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
190 """clean history"""
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
191 REQUEST.SESSION.set('triple',[]);
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
192 REQUEST.SESSION.set('history',[]);
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
193 REQUEST.response.redirect(REQUEST['HTTP_REFERER'])
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
194
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
195 def getTripleAsRDF(self,REQUEST):
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
196 """show the triple as RDF"""
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
197 ret="""<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:ismi="http://ismi.mpiwg-berlin.mpg.de/ns/"> """
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
198
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
199 rdfString="""<rdf:Description rdf:about="%s">
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
200 <ismi:%s rdf:resource="%s"/>
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
201 <ismi:has_ownValue>%s</ismi:has_ownValue>
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
202 </rdf:Description>"""
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
203
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
204 ownValueString="""<rdf:Description rdf:about="%s">
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
205 <ismi:has_ownValue>%s</ismi:has_ownValue>
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
206 </rdf:Description>"""
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
207
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
208 history=REQUEST.SESSION.get('triple',None);
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
209 if history is not None:
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
210 for triple in history:
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
211 s,p,o=triple
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
212 ownValue=self.getOV(s.split("=")[1])
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
213 ret+=rdfString%(s,p,o,ownValue)
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
214 ret+=ownValueString%(o,self.getOV(o.split("=")[1]))
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
215
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
216
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
217 ret+="</rdf:RDF>"
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
218
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
219 urlBase=REQUEST['URL0']
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
220 ret=ret.replace("../",urlBase+"ISMI/database/")
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
221 REQUEST.response.setHeader("Content-type", "text/rdf")
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
222 return ret
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
223 def createBreadcrumb(self,REQUEST):
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
224 history=REQUEST.SESSION.get('history',None);
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
225 if history is None:
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
226 return ""
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
227
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
228 ret=[]
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
229 for entry in history:
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
230 ret.append("""<a href="%s">%s</a>"""%entry)
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
231 return "-->".join(ret)
2
e6c3334e9611 new function:
dwinter
parents: 1
diff changeset
232
e6c3334e9611 new function:
dwinter
parents: 1
diff changeset
233 def filter(self,list,filterValue,letter,cache=True,cacheName=None):
e6c3334e9611 new function:
dwinter
parents: 1
diff changeset
234 """filters a list of jsonObjects, gives only elements where the filterValue, begins with letter."""
e6c3334e9611 new function:
dwinter
parents: 1
diff changeset
235
e6c3334e9611 new function:
dwinter
parents: 1
diff changeset
236 if cache and cacheName and (self._v_jsonCache.get(cacheName,None)!=None):
e6c3334e9611 new function:
dwinter
parents: 1
diff changeset
237 hash = self._v_jsonCache.get(cacheName).get(filterValue,None)
e6c3334e9611 new function:
dwinter
parents: 1
diff changeset
238 if hash is not None:
e6c3334e9611 new function:
dwinter
parents: 1
diff changeset
239 return hash.get(letter,[])
e6c3334e9611 new function:
dwinter
parents: 1
diff changeset
240
e6c3334e9611 new function:
dwinter
parents: 1
diff changeset
241
e6c3334e9611 new function:
dwinter
parents: 1
diff changeset
242 caches = self._v_jsonCache.get(cacheName,None)
e6c3334e9611 new function:
dwinter
parents: 1
diff changeset
243 if caches is None:
e6c3334e9611 new function:
dwinter
parents: 1
diff changeset
244 caches= OOBTree()
e6c3334e9611 new function:
dwinter
parents: 1
diff changeset
245
e6c3334e9611 new function:
dwinter
parents: 1
diff changeset
246 hash=caches.get(filterValue,None)
e6c3334e9611 new function:
dwinter
parents: 1
diff changeset
247 if hash is None:
e6c3334e9611 new function:
dwinter
parents: 1
diff changeset
248 hash=OOBTree()
e6c3334e9611 new function:
dwinter
parents: 1
diff changeset
249
e6c3334e9611 new function:
dwinter
parents: 1
diff changeset
250
e6c3334e9611 new function:
dwinter
parents: 1
diff changeset
251 for object in list:
e6c3334e9611 new function:
dwinter
parents: 1
diff changeset
252 sortValue = object.get(filterValue).lower()
e6c3334e9611 new function:
dwinter
parents: 1
diff changeset
253 if len(sortValue)>0:
e6c3334e9611 new function:
dwinter
parents: 1
diff changeset
254 val = sortValue[0]
e6c3334e9611 new function:
dwinter
parents: 1
diff changeset
255 if val=="[" and len(sortValue)>1:
e6c3334e9611 new function:
dwinter
parents: 1
diff changeset
256 val = sortValue[1]
e6c3334e9611 new function:
dwinter
parents: 1
diff changeset
257 else:
e6c3334e9611 new function:
dwinter
parents: 1
diff changeset
258 val=""
e6c3334e9611 new function:
dwinter
parents: 1
diff changeset
259
e6c3334e9611 new function:
dwinter
parents: 1
diff changeset
260 valList=hash.get(val,[])
e6c3334e9611 new function:
dwinter
parents: 1
diff changeset
261 valList.append(object)
e6c3334e9611 new function:
dwinter
parents: 1
diff changeset
262 hash.update({val:valList})
e6c3334e9611 new function:
dwinter
parents: 1
diff changeset
263
e6c3334e9611 new function:
dwinter
parents: 1
diff changeset
264 caches.update({filterValue:hash})
e6c3334e9611 new function:
dwinter
parents: 1
diff changeset
265
e6c3334e9611 new function:
dwinter
parents: 1
diff changeset
266 self._v_jsonCache.update({cacheName:caches})
e6c3334e9611 new function:
dwinter
parents: 1
diff changeset
267
e6c3334e9611 new function:
dwinter
parents: 1
diff changeset
268 return hash.get(letter,[]), hash.keys()
3
3532f1c49efb changes for new apu
dwinter
parents: 2
diff changeset
269
3532f1c49efb changes for new apu
dwinter
parents: 2
diff changeset
270
3532f1c49efb changes for new apu
dwinter
parents: 2
diff changeset
271 def xsltTransform(self,path=None,pathXML=None,pathXSL=None,entID=None):
3532f1c49efb changes for new apu
dwinter
parents: 2
diff changeset
272 """xlst"""
3532f1c49efb changes for new apu
dwinter
parents: 2
diff changeset
273 if path is not None:
3532f1c49efb changes for new apu
dwinter
parents: 2
diff changeset
274 pathXML=path+".xml"
3532f1c49efb changes for new apu
dwinter
parents: 2
diff changeset
275 pathXSL=path+".xsl"
3532f1c49efb changes for new apu
dwinter
parents: 2
diff changeset
276
3532f1c49efb changes for new apu
dwinter
parents: 2
diff changeset
277
3532f1c49efb changes for new apu
dwinter
parents: 2
diff changeset
278 logging.debug(pathXML)
3532f1c49efb changes for new apu
dwinter
parents: 2
diff changeset
279 logging.debug(pathXSL)
3532f1c49efb changes for new apu
dwinter
parents: 2
diff changeset
280
3532f1c49efb changes for new apu
dwinter
parents: 2
diff changeset
281 url=self.REQUEST['URL2']
3532f1c49efb changes for new apu
dwinter
parents: 2
diff changeset
282 xmlURL=url+pathXML
3532f1c49efb changes for new apu
dwinter
parents: 2
diff changeset
283 xslURL=url+pathXSL
3532f1c49efb changes for new apu
dwinter
parents: 2
diff changeset
284
3532f1c49efb changes for new apu
dwinter
parents: 2
diff changeset
285
3532f1c49efb changes for new apu
dwinter
parents: 2
diff changeset
286
3532f1c49efb changes for new apu
dwinter
parents: 2
diff changeset
287 logging.debug(xmlURL)
3532f1c49efb changes for new apu
dwinter
parents: 2
diff changeset
288 logging.debug(xslURL)
3532f1c49efb changes for new apu
dwinter
parents: 2
diff changeset
289
3532f1c49efb changes for new apu
dwinter
parents: 2
diff changeset
290
3532f1c49efb changes for new apu
dwinter
parents: 2
diff changeset
291
3532f1c49efb changes for new apu
dwinter
parents: 2
diff changeset
292 f= urllib.urlopen(xslURL);
3532f1c49efb changes for new apu
dwinter
parents: 2
diff changeset
293 txt= f.read()
3532f1c49efb changes for new apu
dwinter
parents: 2
diff changeset
294 xslt_root=etree.fromstring(txt)
3532f1c49efb changes for new apu
dwinter
parents: 2
diff changeset
295 #xslt_root= etree.parse(xslURL) #verstehe nicht warum das nicht geht??
3532f1c49efb changes for new apu
dwinter
parents: 2
diff changeset
296
3532f1c49efb changes for new apu
dwinter
parents: 2
diff changeset
297 f= urllib.urlopen(xmlURL+"?id="+entID);
3532f1c49efb changes for new apu
dwinter
parents: 2
diff changeset
298 txt= f.read()
3532f1c49efb changes for new apu
dwinter
parents: 2
diff changeset
299 xml=etree.fromstring(txt)
3532f1c49efb changes for new apu
dwinter
parents: 2
diff changeset
300 #xml= etree.parse(xmlURL+"?id="+entID)
3532f1c49efb changes for new apu
dwinter
parents: 2
diff changeset
301
3532f1c49efb changes for new apu
dwinter
parents: 2
diff changeset
302 transform=etree.XSLT(xslt_root)
3532f1c49efb changes for new apu
dwinter
parents: 2
diff changeset
303
3532f1c49efb changes for new apu
dwinter
parents: 2
diff changeset
304
3532f1c49efb changes for new apu
dwinter
parents: 2
diff changeset
305 result =transform(xml)
3532f1c49efb changes for new apu
dwinter
parents: 2
diff changeset
306 return unicode(result)
3532f1c49efb changes for new apu
dwinter
parents: 2
diff changeset
307
1
0ed5ecf36693 history managememt added
dwinter
parents: 0
diff changeset
308
0
e8640aa396cd initial
dwinter
parents:
diff changeset
309 def manage_addJSONClient(self,id,url,RESPONSE=None):
e8640aa396cd initial
dwinter
parents:
diff changeset
310 """add a json client"""
e8640aa396cd initial
dwinter
parents:
diff changeset
311
e8640aa396cd initial
dwinter
parents:
diff changeset
312
e8640aa396cd initial
dwinter
parents:
diff changeset
313 newObj=JSONClient(id,url)
e8640aa396cd initial
dwinter
parents:
diff changeset
314 self._setObject(id,newObj)
e8640aa396cd initial
dwinter
parents:
diff changeset
315
e8640aa396cd initial
dwinter
parents:
diff changeset
316
e8640aa396cd initial
dwinter
parents:
diff changeset
317 if RESPONSE is not None:
e8640aa396cd initial
dwinter
parents:
diff changeset
318 RESPONSE.redirect('manage_main')
e8640aa396cd initial
dwinter
parents:
diff changeset
319
e8640aa396cd initial
dwinter
parents:
diff changeset
320 def manage_addJSONClientForm(self):
e8640aa396cd initial
dwinter
parents:
diff changeset
321 """form for adding JSONClient"""
e8640aa396cd initial
dwinter
parents:
diff changeset
322 pt=zptFile(self, 'zpt/AddJSONClientForm.zpt')
e8640aa396cd initial
dwinter
parents:
diff changeset
323
e8640aa396cd initial
dwinter
parents:
diff changeset
324 return pt()
3
3532f1c49efb changes for new apu
dwinter
parents: 2
diff changeset
325
3532f1c49efb changes for new apu
dwinter
parents: 2
diff changeset
326
3532f1c49efb changes for new apu
dwinter
parents: 2
diff changeset
327
0
e8640aa396cd initial
dwinter
parents:
diff changeset
328 def zptFile(self, path, orphaned=False):
e8640aa396cd initial
dwinter
parents:
diff changeset
329 """returns a page template file from the product"""
e8640aa396cd initial
dwinter
parents:
diff changeset
330 if orphaned:
e8640aa396cd initial
dwinter
parents:
diff changeset
331 # unusual case
e8640aa396cd initial
dwinter
parents:
diff changeset
332 pt=PageTemplateFile(os.path.join(package_home(globals()), path))
e8640aa396cd initial
dwinter
parents:
diff changeset
333 else:
e8640aa396cd initial
dwinter
parents:
diff changeset
334
e8640aa396cd initial
dwinter
parents:
diff changeset
335 pt=PageTemplateFile(os.path.join(package_home(globals()), path)).__of__(self)
e8640aa396cd initial
dwinter
parents:
diff changeset
336 return pt
e8640aa396cd initial
dwinter
parents:
diff changeset
337