Mercurial > hg > ISMI_JSONClient
diff JSONClient.py @ 0:e8640aa396cd
initial
author | dwinter |
---|---|
date | Thu, 13 Oct 2011 10:51:54 +0200 |
parents | |
children | 0ed5ecf36693 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/JSONClient.py Thu Oct 13 10:51:54 2011 +0200 @@ -0,0 +1,95 @@ +from OFS.SimpleItem import SimpleItem +from Globals import package_home +import json +import SrvTxtUtils +import urllib +from Products.PageTemplates.PageTemplateFile import PageTemplateFile +import os +import os.path +import logging + +class JSONClient(SimpleItem): + meta_type="JSONClient" + + def __init__(self,id,url): + """init""" + self.id=id + self.url=url + + def json(self,method,params={}): + """json aufruf""" + + paramString=urllib.urlencode(params) + callUrl = self.url%(method,paramString) + txt=SrvTxtUtils.getHttpData(callUrl) + logging.debug(txt) + obj= json.loads(txt) + return obj + + + def mapEntityAttributesToData(self,entity,type): + attrs=entity.get('attributes') + attrsHash={} + for attr in attrs: + attrsHash[attr.get('name')]=attr.get('ownValue') + attrsHash['@type']=type + return attrsHash + + def getOV(self,entId): + obj=self.json("getEntity", {'entId':entId}) + return obj.get('entity').get('ownValue') + + def getRelationFromEntity(self,jsonHash,type="srcRelations",relName=None,maxNum=30): + hash=jsonHash.get("entity") + logging.debug(type) + logging.debug(".................") + logging.debug(hash) + rels = hash.get(type,None) + logging.debug(".................") + logging.debug(rels) + + if (rels is None) or (relName is None): + logging.debug("return") + return rels + ret=[] + + + counter=0 + for rel in rels: + if rel.get("name","")==relName: + counter+=1 + ret.append(rel) + if counter > maxNum: + break + + logging.debug("++++++++++++++++++++++++++++++") + logging.debug(rels) + return ret + +def manage_addJSONClient(self,id,url,RESPONSE=None): + """add a json client""" + + + newObj=JSONClient(id,url) + self._setObject(id,newObj) + + + if RESPONSE is not None: + RESPONSE.redirect('manage_main') + +def manage_addJSONClientForm(self): + """form for adding JSONClient""" + pt=zptFile(self, 'zpt/AddJSONClientForm.zpt') + + return pt() + +def zptFile(self, path, orphaned=False): + """returns a page template file from the product""" + if orphaned: + # unusual case + pt=PageTemplateFile(os.path.join(package_home(globals()), path)) + else: + + pt=PageTemplateFile(os.path.join(package_home(globals()), path)).__of__(self) + return pt +