comparison JSONClient.py @ 0:e8640aa396cd

initial
author dwinter
date Thu, 13 Oct 2011 10:51:54 +0200
parents
children 0ed5ecf36693
comparison
equal deleted inserted replaced
-1:000000000000 0:e8640aa396cd
1 from OFS.SimpleItem import SimpleItem
2 from Globals import package_home
3 import json
4 import SrvTxtUtils
5 import urllib
6 from Products.PageTemplates.PageTemplateFile import PageTemplateFile
7 import os
8 import os.path
9 import logging
10
11 class JSONClient(SimpleItem):
12 meta_type="JSONClient"
13
14 def __init__(self,id,url):
15 """init"""
16 self.id=id
17 self.url=url
18
19 def json(self,method,params={}):
20 """json aufruf"""
21
22 paramString=urllib.urlencode(params)
23 callUrl = self.url%(method,paramString)
24 txt=SrvTxtUtils.getHttpData(callUrl)
25 logging.debug(txt)
26 obj= json.loads(txt)
27 return obj
28
29
30 def mapEntityAttributesToData(self,entity,type):
31 attrs=entity.get('attributes')
32 attrsHash={}
33 for attr in attrs:
34 attrsHash[attr.get('name')]=attr.get('ownValue')
35 attrsHash['@type']=type
36 return attrsHash
37
38 def getOV(self,entId):
39 obj=self.json("getEntity", {'entId':entId})
40 return obj.get('entity').get('ownValue')
41
42 def getRelationFromEntity(self,jsonHash,type="srcRelations",relName=None,maxNum=30):
43 hash=jsonHash.get("entity")
44 logging.debug(type)
45 logging.debug(".................")
46 logging.debug(hash)
47 rels = hash.get(type,None)
48 logging.debug(".................")
49 logging.debug(rels)
50
51 if (rels is None) or (relName is None):
52 logging.debug("return")
53 return rels
54 ret=[]
55
56
57 counter=0
58 for rel in rels:
59 if rel.get("name","")==relName:
60 counter+=1
61 ret.append(rel)
62 if counter > maxNum:
63 break
64
65 logging.debug("++++++++++++++++++++++++++++++")
66 logging.debug(rels)
67 return ret
68
69 def manage_addJSONClient(self,id,url,RESPONSE=None):
70 """add a json client"""
71
72
73 newObj=JSONClient(id,url)
74 self._setObject(id,newObj)
75
76
77 if RESPONSE is not None:
78 RESPONSE.redirect('manage_main')
79
80 def manage_addJSONClientForm(self):
81 """form for adding JSONClient"""
82 pt=zptFile(self, 'zpt/AddJSONClientForm.zpt')
83
84 return pt()
85
86 def zptFile(self, path, orphaned=False):
87 """returns a page template file from the product"""
88 if orphaned:
89 # unusual case
90 pt=PageTemplateFile(os.path.join(package_home(globals()), path))
91 else:
92
93 pt=PageTemplateFile(os.path.join(package_home(globals()), path)).__of__(self)
94 return pt
95