annotate JSONClient.py @ 0:e8640aa396cd

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