Mercurial > hg > ChinaGisRestApi
changeset 1:48de7c260ffe
first commit
author | fknauft |
---|---|
date | Wed, 12 May 2010 14:34:42 +0000 |
parents | 7015452299aa |
children | 61a3764cd5fb |
files | .project .pydevproject REST_test.py RESTinterface.py __init__.py zpt/RESTzopetemplate.zpt |
diffstat | 6 files changed, 241 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/.project Wed May 12 14:34:42 2010 +0000 @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>ChinaGisRestApi</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.python.pydev.PyDevBuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.python.pydev.pythonNature</nature> + </natures> +</projectDescription>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/.pydevproject Wed May 12 14:34:42 2010 +0000 @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<?eclipse-pydev version="1.0"?> + +<pydev_project> + +<pydev_property name="org.python.pydev.PYTHON_PROJECT_VERSION">python 2.6</pydev_property> +<pydev_property name="org.python.pydev.PYTHON_PROJECT_INTERPRETER">Default</pydev_property> +<pydev_pathproperty name="org.python.pydev.PROJECT_SOURCE_PATH"> +<path>/ChinaGisRestApi/src</path> +</pydev_pathproperty> +</pydev_project>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/REST_test.py Wed May 12 14:34:42 2010 +0000 @@ -0,0 +1,141 @@ +''' +Created on 26.04.2010 + +@author: fknauft +''' + +from OFS.Folder import Folder +from Acquisition import Implicit +from Globals import DTMLFile,package_home,Persistent +from Products.PageTemplates.PageTemplateFile import PageTemplateFile +from Products.ZSQLExtend import ZSQLExtend +import urllib +import re +import string + +from zope.publisher.interfaces import IPublishTraverse +from zope.interface import implements +#from zope.publisher.interfaces import NotFound +#from zope.app import zapi +#from zope.component import queryMultiAdapter +try: + from ZPublisher.BaseRequest import DefaultPublishTraverse +except: + pass + + +class RESTclass(Folder,Persistent, Implicit): + """Klasse die Methoden fuer die RESTful Abfragen zur Verfuegung stellt. """ + + meta_type="RESTclass" + + def publishTraverse(self,request,name): + """change the traversal if literature object""" + + #actual_url=request['ACTUAL_URL'] + #lastActual=actual_url.split("/")[-1] + + + tr=DefaultPublishTraverse(self, request) + ob= tr.publishTraverse(request, name) + + return ob + + def RESTwrite2File(self,datadir, name,text): +# try: + fileid=name + if fileid in datadir.objectIds(): + datadir.manage_delObjects(fileid) + newfile=open(name,'w') + newfile.write(text) + newfile.close() + file4Read=open(name,'r') + fileInZope=datadir.manage_addFile(id=fileid,file=file4Read) + return "Write successful" +# except: +# return "Could not write" + + def RESTexecuteString(self, function, params=[] ): + + try: + return eval(str(function))(params) + except: + return eval("self."+ str(function))(params) + + + def REST_result2XML(self,data): + listXML= """<?xml version="1.0" encoding="UTF-8" standalone="yes"?>""" + for line in data: + listXML=listXML+"<name>" + for value in line: + listXML=listXML +str(value) + listXML=listXML +"</name>" + return listXML + + def REST_result2HtmlTable(self,data): + listHtml= "<table>" + for line in data: + listHtml=listHtml+"<tr>" + for value in line: + listHtml=listHtml +"<td>"+str(value)+"</td>" + listHtml=listHtml +"</tr>" + listHtml=listHtml+ """ </table> """ + return listHtml + + def REST_getTableNames(self,schema,username,c_string,container): + + results=container.ZSQLSimpleSearch("SELECT oid FROM pg_namespace WHERE nspname LIKE '"+schema+"'") + schema_id=0 + for result in results: + schema_id=getattr(result,'oid') + + SQL="""SELECT relname FROM pg_class WHERE relhaspkey + AND relname NOT LIKE 'pg/_toast%' ESCAPE '/' + AND relname NOT LIKE 'spatial_ref_sys' + AND relname NOT LIKE 'geometry_columns' + AND relname NOT LIKE 'markierung'""" + # AND tablename NOT LIKE 'sql/_%' ESCAPE '/' + if username!={}: + uid='' + username=container.getVar('username') + results=container.ZSQLSimpleSearch("SELECT uid FROM chgis.usernames WHERE username LIKE '"+ str(username) +"'") + for result in results: + uid=container.getAttr(result,'uid') + SQL=SQL+"""AND relowner ="""+str(uid) + + if c_string == 'empty': + SQL = SQL + """ AND int4(reltuples)=0""" + if schema_id != 0: + SQL = SQL + """ AND int4(relnamespace)=""" + str(schema_id) + data=container.ZSQLSimpleSearch(SQL) + return data + + + +manage_addRESTclassForm=PageTemplateFile('zpt/RESTzopetemplate',globals()) + +def manage_addRESTclass(self, id, title='', label='', description='', + createPublic=0, + createUserF=0, + REQUEST=None): + """Add a new Folder object with id *id*. + + If the 'createPublic' and 'createUserF' parameters are set to any true + value, an 'index_html' and a 'UserFolder' objects are created respectively + in the new folder. + """ + + + ob=RESTclass() + ob.id=str(id) + ob.title=title + self._setObject(id, ob) + ob=self._getOb(id) + setattr(ob,'label',label) +# setattr(ob,'description',description) +# setattr(ob,'connection_id',connection_id) + +# checkPermission=getSecurityManager().checkPermission + REQUEST.RESPONSE.redirect('manage_main') + + \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/RESTinterface.py Wed May 12 14:34:42 2010 +0000 @@ -0,0 +1,33 @@ +''' +Created on 26.04.2010 + +@author: fknauft +''' + +from zope.publisher.interfaces import IPublishTraverse +from zope.interface import implements +#from zope.publisher.interfaces import NotFound +#from zope.app import zapi +#from zope.component import queryMultiAdapter +try: + from ZPublisher.BaseRequest import DefaultPublishTraverse +except: + pass +class RESTinterface(DefaultPublishTraverse): + """VLP spezifische Erweiterung der Collection""" + + implements(IPublishTraverse) + + def publishTraverse(self,request,name): + """change the traversal if literature object""" + + actual_url=request['ACTUAL_URL'] + lastActual=actual_url.split("/")[-1] + + + tr=DefaultPublishTraverse(self, request) + ob= tr.publishTraverse(request, name) + + return ob + #raise NotFound(self.context, name, request) + #return repr(request) \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/__init__.py Wed May 12 14:34:42 2010 +0000 @@ -0,0 +1,30 @@ + +import REST_test + +#class RESTinterface(DefaultPublishTraverse): +# """VLP spezifische Erweiterung der Collection""" +# +# meta_type="RESTinterface" +# +# implements(IPublishTraverse) +# +# def publishTraverse(self,request,name): +# """change the traversal if literature object""" +# +# actual_url=request['ACTUAL_URL'] +# lastActual=actual_url.split("/")[-1] +# +# +# tr=DefaultPublishTraverse(self, request) +# ob= tr.publishTraverse(request, name) +# +# return ob + +def initialize(context): + context.registerClass( + REST_test.RESTclass, + constructors = ( + REST_test.manage_addRESTclassForm, + REST_test.manage_addRESTclass + ) + )
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/zpt/RESTzopetemplate.zpt Wed May 12 14:34:42 2010 +0000 @@ -0,0 +1,9 @@ + <div tal:replace="structure here/manage_page_header">Header</div> + <h2>Add a RESTclass</h2> + <form method="post" action="manage_addRESTclass"> + <p class="form-label">ID</p> + <p class="form-element"><input size="80" name="id"/></p> + <p class="form-label">Titel</p> + <p class="form-element"><input size="80" name="titel"/></p> + <p><input type="submit" value="Add" /></p> + </form>