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
+