Mercurial > hg > ChinaGisRestApi
comparison RestDbInterface.py @ 13:e2c73c077533
NEW - # 12: create table and upload data
https://it-dev.mpiwg-berlin.mpg.de/tracs/GIS/ticket/12
ongoing...
| author | casties |
|---|---|
| date | Thu, 12 Aug 2010 20:04:57 +0200 |
| parents | 0fa22c291ff1 |
| children | 05933707897f |
comparison
equal
deleted
inserted
replaced
| 12:0fa22c291ff1 | 13:e2c73c077533 |
|---|---|
| 98 """change the traversal""" | 98 """change the traversal""" |
| 99 # get stored path | 99 # get stored path |
| 100 path = request.get('restdb_path', []) | 100 path = request.get('restdb_path', []) |
| 101 logging.debug("publishtraverse: name=%s restdb_path=%s"%(name,path)) | 101 logging.debug("publishtraverse: name=%s restdb_path=%s"%(name,path)) |
| 102 | 102 |
| 103 if name == "index_html": | 103 if name in ("index_html", "PUT"): |
| 104 # end of traversal | 104 # end of traversal |
| 105 return self.index_html | 105 if request.get("method") == "POST" and request.get("action",None) == "PUT": |
| 106 # fake PUT by POST with action=PUT | |
| 107 name = "PUT" | |
| 108 | |
| 109 return getattr(self, name) | |
| 106 #TODO: should we check more? | 110 #TODO: should we check more? |
| 107 else: | 111 else: |
| 108 # traverse | 112 # traverse |
| 109 if len(path) == 0: | 113 if len(path) == 0: |
| 110 # first segment | 114 # first segment |
| 153 | 157 |
| 154 def PUT(self, REQUEST, RESPONSE): | 158 def PUT(self, REQUEST, RESPONSE): |
| 155 """ | 159 """ |
| 156 Implement WebDAV/HTTP PUT/FTP put method for this object. | 160 Implement WebDAV/HTTP PUT/FTP put method for this object. |
| 157 """ | 161 """ |
| 158 logging.debug("PUT with REQUEST=%s"%(REQUEST)) | 162 logging.debug("RestDbInterface PUT") |
| 163 #logging.debug("req=%s"%REQUEST) | |
| 159 #self.dav__init(REQUEST, RESPONSE) | 164 #self.dav__init(REQUEST, RESPONSE) |
| 160 #self.dav__simpleifhandler(REQUEST, RESPONSE) | 165 #self.dav__simpleifhandler(REQUEST, RESPONSE) |
| 166 # ReST path was stored in request | |
| 167 path = REQUEST.get('restdb_path',[]) | |
| 168 if len(path) == 3: | |
| 169 schema = path[1] | |
| 170 tablename = path[2] | |
| 171 file = REQUEST.get("create_table_file",None) | |
| 172 if file is None: | |
| 173 RESPONSE.setStatus(400) | |
| 174 return | |
| 175 | |
| 176 logging.debug("put with schema=%s table=%s file=%s"%(schema,tablename,file)) | |
| 177 self.createTableFromXML(schema, tablename, file) | |
| 178 | |
| 179 else: | |
| 180 # 400 Bad Request | |
| 181 RESPONSE.setStatus(400) | |
| 182 return | |
| 161 | 183 |
| 162 | 184 |
| 163 def showTable(self,format='XML',schema='public',table=None): | 185 def showTable(self,format='XML',schema='public',table=None): |
| 164 """returns PageTemplate with tables""" | 186 """returns PageTemplate with tables""" |
| 165 logging.debug("showtable") | 187 logging.debug("showtable") |
| 214 logging.debug("getlistofschemas") | 236 logging.debug("getlistofschemas") |
| 215 # TODO: really look up schemas | 237 # TODO: really look up schemas |
| 216 data={'fields': (('schemas',),), 'rows': [('public',),]} | 238 data={'fields': (('schemas',),), 'rows': [('public',),]} |
| 217 return data | 239 return data |
| 218 | 240 |
| 241 def createTableFromXML(self,schema,table,data): | |
| 242 """create or replace a table with the given XML data""" | |
| 243 logging.debug("createTableFromXML schema=%s table=%s data=%s"%(schema,table,data)) | |
| 244 | |
| 219 | 245 |
| 220 def manage_editRestDbInterface(self, title=None, connection_id=None, | 246 def manage_editRestDbInterface(self, title=None, connection_id=None, |
| 221 REQUEST=None): | 247 REQUEST=None): |
| 222 """Change the object""" | 248 """Change the object""" |
| 223 if title is not None: | 249 if title is not None: |
