Skip to content

Commit 063a66b

Browse files
author
gsherman
committedJun 23, 2007
Patch for ticket #671 (leonardomateo) applied.
git-svn-id: http://svn.osgeo.org/qgis/branches/Release-0_8_0@7042 c8812cc2-4d05-0410-92ff-de0c093fc19c
1 parent ab3f37e commit 063a66b

File tree

1 file changed

+26
-13
lines changed

1 file changed

+26
-13
lines changed
 

‎tools/mapserver_export/ms_export.py

Lines changed: 26 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ def __init__(self, projectFile, mapFile):
3131
self.header = ''
3232
self.footer = ''
3333
self.symbolQueue = {}
34+
3435

3536
# Set the options collected from the GUI
3637
def setOptions(self, units, image, mapname, width, height, template, header, footer):
@@ -215,15 +216,28 @@ def parsePostgisConnection( self, dataString ):
215216
pg['table'] = ''
216217
pg['geom'] = 'the_geom'
217218

218-
cmp = dataString.split(" ")
219+
220+
whereCondition = dataString.split("sql")[1][1:]
221+
cmp = dataString.split("sql")[0].split(" ")
222+
219223
for c in cmp:
220224
if c[:1] == "(":
221225
pg['geom'] = c[1:][:-1]
222226
else:
223227
kvp = c.split("=")
224-
pg[kvp[0]] = kvp[1]
225-
226-
return pg
228+
if (len(kvp) >= 2):
229+
pg[kvp[0]] = kvp[1]
230+
231+
connString = 'host=' + pg['host'] + " user=" + pg['user']
232+
233+
if (len(pg['password'].replace("\'", "")) > 0):
234+
connString += " password=" + pg['password'].replace("'", "")
235+
236+
connString += " dbname=" + pg['dbname']
237+
238+
dataString = pg['geom'] + " FROM " + pg['table'].replace("\"", "")
239+
filterString = whereCondition.replace("\"", "")
240+
return (connString, dataString, filterString)
227241

228242

229243
# Write the map layers
@@ -240,7 +254,7 @@ def writeMapLayers(self):
240254

241255
self.outFile.write(" LAYER\n")
242256
# write the name of the layer
243-
self.outFile.write(" NAME '" + lyr.getElementsByTagName("layername")[0].childNodes[0].nodeValue.encode('utf-8') + "'\n")
257+
self.outFile.write(" NAME '" + lyr.getElementsByTagName("layername")[0].childNodes[0].nodeValue.encode('utf-8').replace("\"", "") + "'\n")
244258
if lyr.getAttribute("type").encode('utf-8') == 'vector':
245259
self.outFile.write(" TYPE " + lyr.getAttribute("geometry").encode('utf-8').upper() + "\n")
246260
elif lyr.getAttribute("type").encode('utf-8') == 'raster':
@@ -264,11 +278,11 @@ def writeMapLayers(self):
264278

265279
if providerString == 'postgres':
266280
# it's a postgis layer
267-
pg = self.parsePostgisConnection(dataString)
281+
(pgConnString, sqlData, sqlFilter) = self.parsePostgisConnection(dataString)
268282
self.outFile.write(" CONNECTIONTYPE postgis\n")
269-
self.outFile.write(" CONNECTION 'host=" + pg['host'] + " dbname=" + pg['dbname']
270-
+ " password=" + pg['password'] + " user=" + pg['user'] + "'\n")
271-
self.outFile.write(" DATA '" + pg['geom'] + " FROM " + pg['table'] + "'\n")
283+
self.outFile.write(" CONNECTION '" + pgConnString + "'\n")
284+
self.outFile.write(" DATA '" + sqlData + "'\n")
285+
self.outFile.write(" FILTER '" + sqlFilter + "'\n")
272286

273287
elif providerString == 'wms' and lyr.getAttribute("type").encode('utf-8').upper() == 'RASTER':
274288
# it's a WMS layer
@@ -280,7 +294,7 @@ def writeMapLayers(self):
280294
wmsNames = []
281295
wmsStyles = []
282296
for wmsLayer in wmsSubLayers:
283-
wmsNames.append( wmsLayer.getElementsByTagName('name')[0].childNodes[0].nodeValue.encode('utf-8') )
297+
wmsNames.append( wmsLayer.getElementsByTagName('name')[0].childNodes[0].nodeValue.encode('utf-8').replace("\"", "") )
284298
try:
285299
wmsStyles.append( wmsLayer.getElementsByTagName('style')[0].childNodes[0].nodeValue.encode('utf-8') )
286300
except:
@@ -305,7 +319,7 @@ def writeMapLayers(self):
305319
# WMS settings for all layers
306320
self.outFile.write(" METADATA\n")
307321
self.outFile.write(" 'wms_title' '"
308-
+ lyr.getElementsByTagName("layername")[0].childNodes[0].nodeValue.encode('utf-8') + "'\n")
322+
+ lyr.getElementsByTagName("layername")[0].childNodes[0].nodeValue.encode('utf-8').replace("\"", "") + "'\n")
309323
self.outFile.write(" END\n")
310324

311325
self.outFile.write(" STATUS DEFAULT\n")
@@ -365,8 +379,7 @@ def simpleRenderer(self, layerNode, symbolNode):
365379
self.outFile.write(" CLASS\n")
366380

367381
self.outFile.write(" NAME '"
368-
+ layerNode.getElementsByTagName("layername")[0].childNodes[0].nodeValue.encode('utf-8')
369-
+ "'\n")
382+
+ layerNode.getElementsByTagName("layername")[0].childNodes[0].nodeValue.encode('utf-8').replace("\"", "") + "' \n")
370383

371384
self.outFile.write(" STYLE\n")
372385
# use the point symbol map to lookup the mapserver symbol type

0 commit comments

Comments
 (0)
Please sign in to comment.