annotate REST_test.py @ 5:7539a9e69365 api_v1

small fix
author casties
date Wed, 16 Jun 2010 11:47:06 +0000
parents 48de7c260ffe
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
48de7c260ffe first commit
fknauft
parents:
diff changeset
1 '''
48de7c260ffe first commit
fknauft
parents:
diff changeset
2 Created on 26.04.2010
48de7c260ffe first commit
fknauft
parents:
diff changeset
3
48de7c260ffe first commit
fknauft
parents:
diff changeset
4 @author: fknauft
48de7c260ffe first commit
fknauft
parents:
diff changeset
5 '''
48de7c260ffe first commit
fknauft
parents:
diff changeset
6
48de7c260ffe first commit
fknauft
parents:
diff changeset
7 from OFS.Folder import Folder
48de7c260ffe first commit
fknauft
parents:
diff changeset
8 from Acquisition import Implicit
48de7c260ffe first commit
fknauft
parents:
diff changeset
9 from Globals import DTMLFile,package_home,Persistent
48de7c260ffe first commit
fknauft
parents:
diff changeset
10 from Products.PageTemplates.PageTemplateFile import PageTemplateFile
48de7c260ffe first commit
fknauft
parents:
diff changeset
11 from Products.ZSQLExtend import ZSQLExtend
48de7c260ffe first commit
fknauft
parents:
diff changeset
12 import urllib
48de7c260ffe first commit
fknauft
parents:
diff changeset
13 import re
48de7c260ffe first commit
fknauft
parents:
diff changeset
14 import string
48de7c260ffe first commit
fknauft
parents:
diff changeset
15
48de7c260ffe first commit
fknauft
parents:
diff changeset
16 from zope.publisher.interfaces import IPublishTraverse
48de7c260ffe first commit
fknauft
parents:
diff changeset
17 from zope.interface import implements
48de7c260ffe first commit
fknauft
parents:
diff changeset
18 #from zope.publisher.interfaces import NotFound
48de7c260ffe first commit
fknauft
parents:
diff changeset
19 #from zope.app import zapi
48de7c260ffe first commit
fknauft
parents:
diff changeset
20 #from zope.component import queryMultiAdapter
48de7c260ffe first commit
fknauft
parents:
diff changeset
21 try:
48de7c260ffe first commit
fknauft
parents:
diff changeset
22 from ZPublisher.BaseRequest import DefaultPublishTraverse
48de7c260ffe first commit
fknauft
parents:
diff changeset
23 except:
48de7c260ffe first commit
fknauft
parents:
diff changeset
24 pass
48de7c260ffe first commit
fknauft
parents:
diff changeset
25
48de7c260ffe first commit
fknauft
parents:
diff changeset
26
48de7c260ffe first commit
fknauft
parents:
diff changeset
27 class RESTclass(Folder,Persistent, Implicit):
48de7c260ffe first commit
fknauft
parents:
diff changeset
28 """Klasse die Methoden fuer die RESTful Abfragen zur Verfuegung stellt. """
48de7c260ffe first commit
fknauft
parents:
diff changeset
29
48de7c260ffe first commit
fknauft
parents:
diff changeset
30 meta_type="RESTclass"
48de7c260ffe first commit
fknauft
parents:
diff changeset
31
48de7c260ffe first commit
fknauft
parents:
diff changeset
32 def publishTraverse(self,request,name):
48de7c260ffe first commit
fknauft
parents:
diff changeset
33 """change the traversal if literature object"""
48de7c260ffe first commit
fknauft
parents:
diff changeset
34
48de7c260ffe first commit
fknauft
parents:
diff changeset
35 #actual_url=request['ACTUAL_URL']
48de7c260ffe first commit
fknauft
parents:
diff changeset
36 #lastActual=actual_url.split("/")[-1]
48de7c260ffe first commit
fknauft
parents:
diff changeset
37
48de7c260ffe first commit
fknauft
parents:
diff changeset
38
48de7c260ffe first commit
fknauft
parents:
diff changeset
39 tr=DefaultPublishTraverse(self, request)
48de7c260ffe first commit
fknauft
parents:
diff changeset
40 ob= tr.publishTraverse(request, name)
48de7c260ffe first commit
fknauft
parents:
diff changeset
41
48de7c260ffe first commit
fknauft
parents:
diff changeset
42 return ob
48de7c260ffe first commit
fknauft
parents:
diff changeset
43
48de7c260ffe first commit
fknauft
parents:
diff changeset
44 def RESTwrite2File(self,datadir, name,text):
48de7c260ffe first commit
fknauft
parents:
diff changeset
45 # try:
48de7c260ffe first commit
fknauft
parents:
diff changeset
46 fileid=name
48de7c260ffe first commit
fknauft
parents:
diff changeset
47 if fileid in datadir.objectIds():
48de7c260ffe first commit
fknauft
parents:
diff changeset
48 datadir.manage_delObjects(fileid)
48de7c260ffe first commit
fknauft
parents:
diff changeset
49 newfile=open(name,'w')
48de7c260ffe first commit
fknauft
parents:
diff changeset
50 newfile.write(text)
48de7c260ffe first commit
fknauft
parents:
diff changeset
51 newfile.close()
48de7c260ffe first commit
fknauft
parents:
diff changeset
52 file4Read=open(name,'r')
48de7c260ffe first commit
fknauft
parents:
diff changeset
53 fileInZope=datadir.manage_addFile(id=fileid,file=file4Read)
48de7c260ffe first commit
fknauft
parents:
diff changeset
54 return "Write successful"
48de7c260ffe first commit
fknauft
parents:
diff changeset
55 # except:
48de7c260ffe first commit
fknauft
parents:
diff changeset
56 # return "Could not write"
48de7c260ffe first commit
fknauft
parents:
diff changeset
57
48de7c260ffe first commit
fknauft
parents:
diff changeset
58 def RESTexecuteString(self, function, params=[] ):
48de7c260ffe first commit
fknauft
parents:
diff changeset
59
48de7c260ffe first commit
fknauft
parents:
diff changeset
60 try:
48de7c260ffe first commit
fknauft
parents:
diff changeset
61 return eval(str(function))(params)
48de7c260ffe first commit
fknauft
parents:
diff changeset
62 except:
48de7c260ffe first commit
fknauft
parents:
diff changeset
63 return eval("self."+ str(function))(params)
48de7c260ffe first commit
fknauft
parents:
diff changeset
64
48de7c260ffe first commit
fknauft
parents:
diff changeset
65
48de7c260ffe first commit
fknauft
parents:
diff changeset
66 def REST_result2XML(self,data):
48de7c260ffe first commit
fknauft
parents:
diff changeset
67 listXML= """<?xml version="1.0" encoding="UTF-8" standalone="yes"?>"""
48de7c260ffe first commit
fknauft
parents:
diff changeset
68 for line in data:
48de7c260ffe first commit
fknauft
parents:
diff changeset
69 listXML=listXML+"<name>"
48de7c260ffe first commit
fknauft
parents:
diff changeset
70 for value in line:
48de7c260ffe first commit
fknauft
parents:
diff changeset
71 listXML=listXML +str(value)
48de7c260ffe first commit
fknauft
parents:
diff changeset
72 listXML=listXML +"</name>"
48de7c260ffe first commit
fknauft
parents:
diff changeset
73 return listXML
48de7c260ffe first commit
fknauft
parents:
diff changeset
74
48de7c260ffe first commit
fknauft
parents:
diff changeset
75 def REST_result2HtmlTable(self,data):
48de7c260ffe first commit
fknauft
parents:
diff changeset
76 listHtml= "<table>"
48de7c260ffe first commit
fknauft
parents:
diff changeset
77 for line in data:
48de7c260ffe first commit
fknauft
parents:
diff changeset
78 listHtml=listHtml+"<tr>"
48de7c260ffe first commit
fknauft
parents:
diff changeset
79 for value in line:
48de7c260ffe first commit
fknauft
parents:
diff changeset
80 listHtml=listHtml +"<td>"+str(value)+"</td>"
48de7c260ffe first commit
fknauft
parents:
diff changeset
81 listHtml=listHtml +"</tr>"
48de7c260ffe first commit
fknauft
parents:
diff changeset
82 listHtml=listHtml+ """ </table> """
48de7c260ffe first commit
fknauft
parents:
diff changeset
83 return listHtml
48de7c260ffe first commit
fknauft
parents:
diff changeset
84
48de7c260ffe first commit
fknauft
parents:
diff changeset
85 def REST_getTableNames(self,schema,username,c_string,container):
48de7c260ffe first commit
fknauft
parents:
diff changeset
86
48de7c260ffe first commit
fknauft
parents:
diff changeset
87 results=container.ZSQLSimpleSearch("SELECT oid FROM pg_namespace WHERE nspname LIKE '"+schema+"'")
48de7c260ffe first commit
fknauft
parents:
diff changeset
88 schema_id=0
48de7c260ffe first commit
fknauft
parents:
diff changeset
89 for result in results:
48de7c260ffe first commit
fknauft
parents:
diff changeset
90 schema_id=getattr(result,'oid')
48de7c260ffe first commit
fknauft
parents:
diff changeset
91
48de7c260ffe first commit
fknauft
parents:
diff changeset
92 SQL="""SELECT relname FROM pg_class WHERE relhaspkey
48de7c260ffe first commit
fknauft
parents:
diff changeset
93 AND relname NOT LIKE 'pg/_toast%' ESCAPE '/'
48de7c260ffe first commit
fknauft
parents:
diff changeset
94 AND relname NOT LIKE 'spatial_ref_sys'
48de7c260ffe first commit
fknauft
parents:
diff changeset
95 AND relname NOT LIKE 'geometry_columns'
48de7c260ffe first commit
fknauft
parents:
diff changeset
96 AND relname NOT LIKE 'markierung'"""
48de7c260ffe first commit
fknauft
parents:
diff changeset
97 # AND tablename NOT LIKE 'sql/_%' ESCAPE '/'
48de7c260ffe first commit
fknauft
parents:
diff changeset
98 if username!={}:
48de7c260ffe first commit
fknauft
parents:
diff changeset
99 uid=''
48de7c260ffe first commit
fknauft
parents:
diff changeset
100 username=container.getVar('username')
48de7c260ffe first commit
fknauft
parents:
diff changeset
101 results=container.ZSQLSimpleSearch("SELECT uid FROM chgis.usernames WHERE username LIKE '"+ str(username) +"'")
48de7c260ffe first commit
fknauft
parents:
diff changeset
102 for result in results:
48de7c260ffe first commit
fknauft
parents:
diff changeset
103 uid=container.getAttr(result,'uid')
48de7c260ffe first commit
fknauft
parents:
diff changeset
104 SQL=SQL+"""AND relowner ="""+str(uid)
48de7c260ffe first commit
fknauft
parents:
diff changeset
105
48de7c260ffe first commit
fknauft
parents:
diff changeset
106 if c_string == 'empty':
48de7c260ffe first commit
fknauft
parents:
diff changeset
107 SQL = SQL + """ AND int4(reltuples)=0"""
48de7c260ffe first commit
fknauft
parents:
diff changeset
108 if schema_id != 0:
48de7c260ffe first commit
fknauft
parents:
diff changeset
109 SQL = SQL + """ AND int4(relnamespace)=""" + str(schema_id)
48de7c260ffe first commit
fknauft
parents:
diff changeset
110 data=container.ZSQLSimpleSearch(SQL)
48de7c260ffe first commit
fknauft
parents:
diff changeset
111 return data
48de7c260ffe first commit
fknauft
parents:
diff changeset
112
48de7c260ffe first commit
fknauft
parents:
diff changeset
113
48de7c260ffe first commit
fknauft
parents:
diff changeset
114
48de7c260ffe first commit
fknauft
parents:
diff changeset
115 manage_addRESTclassForm=PageTemplateFile('zpt/RESTzopetemplate',globals())
48de7c260ffe first commit
fknauft
parents:
diff changeset
116
48de7c260ffe first commit
fknauft
parents:
diff changeset
117 def manage_addRESTclass(self, id, title='', label='', description='',
48de7c260ffe first commit
fknauft
parents:
diff changeset
118 createPublic=0,
48de7c260ffe first commit
fknauft
parents:
diff changeset
119 createUserF=0,
48de7c260ffe first commit
fknauft
parents:
diff changeset
120 REQUEST=None):
48de7c260ffe first commit
fknauft
parents:
diff changeset
121 """Add a new Folder object with id *id*.
48de7c260ffe first commit
fknauft
parents:
diff changeset
122
48de7c260ffe first commit
fknauft
parents:
diff changeset
123 If the 'createPublic' and 'createUserF' parameters are set to any true
48de7c260ffe first commit
fknauft
parents:
diff changeset
124 value, an 'index_html' and a 'UserFolder' objects are created respectively
48de7c260ffe first commit
fknauft
parents:
diff changeset
125 in the new folder.
48de7c260ffe first commit
fknauft
parents:
diff changeset
126 """
48de7c260ffe first commit
fknauft
parents:
diff changeset
127
48de7c260ffe first commit
fknauft
parents:
diff changeset
128
48de7c260ffe first commit
fknauft
parents:
diff changeset
129 ob=RESTclass()
48de7c260ffe first commit
fknauft
parents:
diff changeset
130 ob.id=str(id)
48de7c260ffe first commit
fknauft
parents:
diff changeset
131 ob.title=title
48de7c260ffe first commit
fknauft
parents:
diff changeset
132 self._setObject(id, ob)
48de7c260ffe first commit
fknauft
parents:
diff changeset
133 ob=self._getOb(id)
48de7c260ffe first commit
fknauft
parents:
diff changeset
134 setattr(ob,'label',label)
48de7c260ffe first commit
fknauft
parents:
diff changeset
135 # setattr(ob,'description',description)
48de7c260ffe first commit
fknauft
parents:
diff changeset
136 # setattr(ob,'connection_id',connection_id)
48de7c260ffe first commit
fknauft
parents:
diff changeset
137
48de7c260ffe first commit
fknauft
parents:
diff changeset
138 # checkPermission=getSecurityManager().checkPermission
48de7c260ffe first commit
fknauft
parents:
diff changeset
139 REQUEST.RESPONSE.redirect('manage_main')
48de7c260ffe first commit
fknauft
parents:
diff changeset
140
48de7c260ffe first commit
fknauft
parents:
diff changeset
141