Mercurial > hg > ChinaGisRestApi
view REST_test.py @ 17:ed997e639cfd
more upload table
author | casties |
---|---|
date | Tue, 17 Aug 2010 11:16:16 +0200 |
parents | 48de7c260ffe |
children |
line wrap: on
line source
''' 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')