# HG changeset patch # User fknauft # Date 1317215354 -7200 # Node ID 901c1f745d13414798befc16b15698dfd3da37c7 # Parent d6c7bedf43703c1c9c7ac784c9f1ea7e7bf0283d GIS-Links from MPDL-Documents now served by Mappit-Server diff -r d6c7bedf4370 -r 901c1f745d13 RestDbGisApi.py --- a/RestDbGisApi.py Fri Sep 23 13:11:46 2011 +0200 +++ b/RestDbGisApi.py Wed Sep 28 15:09:14 2011 +0200 @@ -11,7 +11,6 @@ import re import time import datetime -import urllib import urlFunctions from RestDbInterface import * @@ -36,13 +35,9 @@ meta_type="RESTgis" - # data templates - GIS_schema_table = PageTemplateFile('zpt/GIS_schema_table', globals()) - KML_schema_table = PageTemplateFile('zpt/KML_schema_table', globals()) - HTML_schema_usertables = PageTemplateFile('zpt/HTML_schema_usertables', globals()) # and scripts - def KML_URL_schema_table(self,schema,table, useTimestamp=True): + def KML_URL_schema_table(self,schema,table, useTimestamp=True, args=None): """KML_URL table function""" self.REQUEST.RESPONSE.setHeader("Content-Type", "text/plain") id = self.REQUEST.get('id',[]) @@ -150,19 +145,7 @@ def getLiveKmlUrl(self,schema,table,useTimestamp=True,REQUEST=None): - if REQUEST is None: - REQUEST = self.REQUEST - logging.debug("getLiveKmlUrl") - baseUrl = self.absolute_url() - timestamp = time.time() - # filter parameters in URL and add to new URL - params = [p for p in REQUEST.form.items() if p[0] not in ('format','timestamp')] - params.append(('format','KML')) - if useTimestamp: - # add timestamp so URL changes every time - params.append(('timestamp',timestamp)) - paramstr = urllib.urlencode(params) - return "%s/db/%s/%s?%s"%(baseUrl,schema,table,paramstr) + return self.getLiveUrl(schema,table,useTimestamp,REQUEST) def getKmlData(self, schema, table, ids=None, sortBy=1, gisIdField=None, latField=None, lonField=None, geomField="point", colorField="red"): """returns data structure for KML template""" @@ -439,8 +422,10 @@ ## legacy methods... - def getKmlUrl(self,schema='chgis',table='mpdl',id=[],doc=None): + def getKmlUrl(self,schema='chgis',table='mpdl',args={'doc':None,'id':None}): logging.debug("getKmlUrl") + id=args.get('id') + doc=args.get('doc') data = self.getDataForGoogleMap(schema,table,id,doc) kml=self.getKMLname(data=data,table=table) baseUrl = self.absolute_url() diff -r d6c7bedf4370 -r 901c1f745d13 RestDbInterface.py --- a/RestDbInterface.py Fri Sep 23 13:11:46 2011 +0200 +++ b/RestDbInterface.py Wed Sep 28 15:09:14 2011 +0200 @@ -13,6 +13,8 @@ import json import time import psycopg2 +import urllib + # make psycopg use unicode objects import psycopg2.extensions psycopg2.extensions.register_type(psycopg2.extensions.UNICODE) @@ -97,10 +99,18 @@ HTML_index = PageTemplateFile('zpt/HTML_index', globals()) HTML_schema = PageTemplateFile('zpt/HTML_schema', globals()) HTML_schema_table = PageTemplateFile('zpt/HTML_schema_table', globals()) + GIS_schema_table = PageTemplateFile('zpt/GIS_schema_table', globals()) + KML_schema_table = PageTemplateFile('zpt/KML_schema_table', globals()) + HTML_schema_usertables = PageTemplateFile('zpt/HTML_schema_usertables', globals()) + + + JSONHTML_index = PageTemplateFile('zpt/JSONHTML_index', globals()) JSONHTML_schema = PageTemplateFile('zpt/JSONHTML_schema', globals()) JSONHTML_schema_table = PageTemplateFile('zpt/JSONHTML_schema_table', globals()) # JSON_* templates are scripts + + def JSON_index(self): """JSON index function""" self.REQUEST.RESPONSE.setHeader("Content-Type", "application/json") @@ -271,7 +281,7 @@ # POST to table to check return self.checkTable(format=resultFormat,schema=path[1],table=path[2]) # else show table - return self.showTable(format=resultFormat,schema=path[1],table=path[2]) + return self.showTable(format=resultFormat,schema=path[1],table=path[2],REQUEST=REQUEST, RESPONSE=RESPONSE) # don't know what to do return str(REQUEST) @@ -329,7 +339,10 @@ logging.debug("showtable") if REQUEST is None: REQUEST = self.REQUEST - + queryArgs={'doc':None,'id':None} + queryArgs['doc'] = REQUEST.get('doc') + queryArgs['id'] = REQUEST.get('id') + # should be cross-site accessible if RESPONSE is None: RESPONSE = self.REQUEST.RESPONSE @@ -337,12 +350,28 @@ RESPONSE.setHeader('Access-Control-Allow-Origin', '*') # everything else has its own template - pt = getattr(self.template, '%s_schema_table'%format, None) + pt = getattr(self.template, '%s_schema_table'%format, REQUEST) if pt is None: - return "ERROR!! template %s_schema_table not found"%format - + return "ERROR!! template %s_schema_table not found at %s"%(format, self.template ) #data = self.getTable(schema,table) - return pt(schema=schema,table=table) + return pt(schema=schema,table=table,args=queryArgs) + + def getLiveUrl(self,schema,table,useTimestamp=True,REQUEST=None): + if REQUEST is None: + REQUEST = self.REQUEST + logging.debug("getLiveUrl") + baseUrl = self.absolute_url() + timestamp = time.time() + # filter parameters in URL and add to new URL + params = [p for p in REQUEST.form.items() if p[0] not in ('format','timestamp')] + params.append(('format','KML')) + if useTimestamp: + # add timestamp so URL changes every time + params.append(('timestamp',timestamp)) + paramstr = urllib.urlencode(params) + return "%s/db/%s/%s?%s"%(baseUrl,schema,table,paramstr) + + def getTable(self,schema='public',table=None,sortBy=1,username='guest'): """return table data""" diff -r d6c7bedf4370 -r 901c1f745d13 zpt/GIS_schema_table.zpt --- a/zpt/GIS_schema_table.zpt Fri Sep 23 13:11:46 2011 +0200 +++ b/zpt/GIS_schema_table.zpt Wed Sep 28 15:09:14 2011 +0200 @@ -1,10 +1,18 @@ + + diff -r d6c7bedf4370 -r 901c1f745d13 zpt/KML_schema_table.zpt --- a/zpt/KML_schema_table.zpt Fri Sep 23 13:11:46 2011 +0200 +++ b/zpt/KML_schema_table.zpt Wed Sep 28 15:09:14 2011 +0200 @@ -176,11 +176,14 @@ - + + 116.38,39.92,0