Mercurial > hg > ISMI_JSONClient
view JSONClient.py @ 0:e8640aa396cd
initial
author | dwinter |
---|---|
date | Thu, 13 Oct 2011 10:51:54 +0200 |
parents | |
children | 0ed5ecf36693 |
line wrap: on
line source
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