0
|
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
|