Mercurial > hg > ISMI_JSONClient
comparison JSONClient.py @ 2:e6c3334e9611
new function:
getSingleRelationFromEntity
| author | dwinter |
|---|---|
| date | Wed, 30 May 2012 16:53:45 +0200 |
| parents | 0ed5ecf36693 |
| children | 3532f1c49efb |
comparison
equal
deleted
inserted
replaced
| 1:0ed5ecf36693 | 2:e6c3334e9611 |
|---|---|
| 6 from Products.PageTemplates.PageTemplateFile import PageTemplateFile | 6 from Products.PageTemplates.PageTemplateFile import PageTemplateFile |
| 7 import os | 7 import os |
| 8 import os.path | 8 import os.path |
| 9 import logging | 9 import logging |
| 10 | 10 |
| 11 from BTrees.OOBTree import OOBTree | |
| 12 | |
| 11 class JSONClient(SimpleItem): | 13 class JSONClient(SimpleItem): |
| 14 | |
| 12 meta_type="JSONClient" | 15 meta_type="JSONClient" |
| 13 | 16 |
| 14 manage_options=SimpleItem.manage_options+( | 17 manage_options=SimpleItem.manage_options+( |
| 15 {'label':'Main Config','action':'changeJSONClientConfigPT'}, | 18 {'label':'Main Config','action':'changeJSONClientConfigPT'}, |
| 16 ) | 19 ) |
| 30 pt.content_type="text/html" | 33 pt.content_type="text/html" |
| 31 return pt() | 34 return pt() |
| 32 | 35 |
| 33 | 36 |
| 34 def changeJSONClientConfig(self,url,RESPONSE=None): | 37 def changeJSONClientConfig(self,url,RESPONSE=None): |
| 38 """cahnge the JSON config""" | |
| 35 self.url=url | 39 self.url=url |
| 36 if RESPONSE is not None: | 40 if RESPONSE is not None: |
| 37 RESPONSE.redirect('manage_main') | 41 RESPONSE.redirect('manage_main') |
| 38 | 42 |
| 39 | 43 |
| 40 def getEntityLink(self,entId): | 44 def getEntityLink(self,entId): |
| 41 return "http://neruda.mpiwg-berlin.mpg.de:8080/om4-ismi/browse/entityDetails.iface?eid="+str(entId) | 45 return "https://openmind-ismi-dev.mpiwg-berlin.mpg.de/om4-ismi/browse/entityDetails.iface?eid="+str(entId) |
| 42 | 46 |
| 43 def json(self,method,params={},cache=True): | 47 def json(self,method,params={},cache=True): |
| 44 """json aufruf""" | 48 """json aufruf""" |
| 45 | 49 |
| 46 | 50 |
| 47 paramString=urllib.urlencode(params) | 51 paramString=urllib.urlencode(params) |
| 48 callUrl = self.url%(method,paramString) | 52 callUrl = self.url%(method,paramString) |
| 49 | 53 logging.debug(callUrl) |
| 50 if (cache is True) and (self._v_jsonCache.get(callUrl,None)!=None): | 54 if (cache is True) and (self._v_jsonCache.get(callUrl,None)!=None): |
| 51 return self._v_jsonCache.get(callUrl) | 55 return self._v_jsonCache.get(callUrl) |
| 52 else: | 56 else: |
| 53 | 57 |
| 54 txt=SrvTxtUtils.getHttpData(callUrl) | 58 txt=SrvTxtUtils.getHttpData(callUrl) |
| 66 attrsHash[attr.get('name')]=attr.get('ownValue') | 70 attrsHash[attr.get('name')]=attr.get('ownValue') |
| 67 attrsHash['@type']=type | 71 attrsHash['@type']=type |
| 68 return attrsHash | 72 return attrsHash |
| 69 | 73 |
| 70 def getOV(self,entId): | 74 def getOV(self,entId): |
| 75 if (entId)<0: #-1 falls keine Entity gefunden wurde | |
| 76 return"" | |
| 71 obj=self.json("getEntity", {'entId':entId}) | 77 obj=self.json("getEntity", {'entId':entId}) |
| 72 return obj.get('entity').get('ownValue') | 78 return obj.get('entity').get('ownValue') |
| 73 | 79 |
| 80 def getSingleRelationFromEntity(self,jsonHash,type="srcRelations",relName=None,idType="sourceId"): | |
| 81 ret = self.getRelationFromEntity(jsonHash,type,relName,maxNum=1) | |
| 82 if len(ret)==0: | |
| 83 return -1 | |
| 84 else: | |
| 85 return ret[0].get(idType) | |
| 86 | |
| 74 def getRelationFromEntity(self,jsonHash,type="srcRelations",relName=None,maxNum=30): | 87 def getRelationFromEntity(self,jsonHash,type="srcRelations",relName=None,maxNum=30): |
| 75 hash=jsonHash.get("entity") | 88 hash=jsonHash.get("entity") |
| 76 logging.debug(type) | 89 logging.debug(type) |
| 77 logging.debug(".................") | 90 logging.debug(".................") |
| 78 logging.debug(hash) | 91 logging.debug(hash) |
| 211 | 224 |
| 212 ret=[] | 225 ret=[] |
| 213 for entry in history: | 226 for entry in history: |
| 214 ret.append("""<a href="%s">%s</a>"""%entry) | 227 ret.append("""<a href="%s">%s</a>"""%entry) |
| 215 return "-->".join(ret) | 228 return "-->".join(ret) |
| 229 | |
| 230 def filter(self,list,filterValue,letter,cache=True,cacheName=None): | |
| 231 """filters a list of jsonObjects, gives only elements where the filterValue, begins with letter.""" | |
| 232 | |
| 233 if cache and cacheName and (self._v_jsonCache.get(cacheName,None)!=None): | |
| 234 hash = self._v_jsonCache.get(cacheName).get(filterValue,None) | |
| 235 if hash is not None: | |
| 236 return hash.get(letter,[]) | |
| 237 | |
| 238 | |
| 239 caches = self._v_jsonCache.get(cacheName,None) | |
| 240 if caches is None: | |
| 241 caches= OOBTree() | |
| 242 | |
| 243 hash=caches.get(filterValue,None) | |
| 244 if hash is None: | |
| 245 hash=OOBTree() | |
| 246 | |
| 247 | |
| 248 for object in list: | |
| 249 sortValue = object.get(filterValue).lower() | |
| 250 if len(sortValue)>0: | |
| 251 val = sortValue[0] | |
| 252 if val=="[" and len(sortValue)>1: | |
| 253 val = sortValue[1] | |
| 254 else: | |
| 255 val="" | |
| 256 | |
| 257 valList=hash.get(val,[]) | |
| 258 valList.append(object) | |
| 259 hash.update({val:valList}) | |
| 260 | |
| 261 caches.update({filterValue:hash}) | |
| 262 | |
| 263 self._v_jsonCache.update({cacheName:caches}) | |
| 264 | |
| 265 return hash.get(letter,[]), hash.keys() | |
| 216 | 266 |
| 217 def manage_addJSONClient(self,id,url,RESPONSE=None): | 267 def manage_addJSONClient(self,id,url,RESPONSE=None): |
| 218 """add a json client""" | 268 """add a json client""" |
| 219 | 269 |
| 220 | 270 |
