patch_for_bug_671.txt

leonardomateo -, 2007-06-23 08:44 AM

Download (4.28 KB)

 
1
Index: tools/mapserver_export/ms_export.py
2
===================================================================
3
--- tools/mapserver_export/ms_export.py	(revision 7034)
4
+++ tools/mapserver_export/ms_export.py	(working copy)
5
@@ -31,6 +31,7 @@
6
     self.header = ''
7
     self.footer = ''
8
     self.symbolQueue = {}
9
+    
10
 
11
   # Set the options collected from the GUI
12
   def setOptions(self, units, image, mapname, width, height, template, header, footer):
13
@@ -215,16 +216,29 @@
14
     pg['table'] = ''
15
     pg['geom'] = 'the_geom'
16
     
17
-    cmp = dataString.split(" ")
18
+    
19
+    whereCondition = dataString.split("sql")[1][1:]
20
+    cmp = dataString.split("sql")[0].split(" ")
21
+    
22
     for c in cmp:
23
       if c[:1] == "(":
24
         pg['geom'] = c[1:][:-1]
25
       else:
26
         kvp = c.split("=")
27
-        pg[kvp[0]] =  kvp[1]
28
+        if (len(kvp) >= 2):
29
+          pg[kvp[0]] =  kvp[1]
30
+    
31
+    connString = 'host=' + pg['host'] + " user=" + pg['user']
32
+    
33
+    if (len(pg['password'].replace("\'", "")) > 0):
34
+      connString += " password=" + pg['password'].replace("'", "")
35
+    
36
+    connString += " dbname=" + pg['dbname']
37
+     
38
+    dataString = pg['geom'] + " FROM " + pg['table'].replace("\"", "")
39
+    filterString = whereCondition.replace("\"", "")
40
+    return (connString, dataString, filterString)
41
 
42
-    return pg
43
-
44
        
45
   # Write the map layers
46
   def writeMapLayers(self):
47
@@ -240,7 +254,7 @@
48
 
49
       self.outFile.write("  LAYER\n")
50
       # write the name of the layer
51
-      self.outFile.write("    NAME '" + lyr.getElementsByTagName("layername")[0].childNodes[0].nodeValue.encode('utf-8') + "'\n")
52
+      self.outFile.write("    NAME '" + lyr.getElementsByTagName("layername")[0].childNodes[0].nodeValue.encode('utf-8').replace("\"", "") + "'\n")
53
       if lyr.getAttribute("type").encode('utf-8') == 'vector':  
54
         self.outFile.write("    TYPE " + lyr.getAttribute("geometry").encode('utf-8').upper() + "\n")
55
       elif lyr.getAttribute("type").encode('utf-8') == 'raster':  
56
@@ -264,11 +278,11 @@
57
 
58
       if providerString == 'postgres':
59
         # it's a postgis layer
60
-        pg = self.parsePostgisConnection(dataString)
61
+        (pgConnString, sqlData, sqlFilter) = self.parsePostgisConnection(dataString)
62
         self.outFile.write("    CONNECTIONTYPE postgis\n")
63
-        self.outFile.write("    CONNECTION 'host=" + pg['host'] + " dbname=" + pg['dbname'] 
64
-                            + " password=" + pg['password'] + " user=" + pg['user'] + "'\n")
65
-        self.outFile.write("    DATA '" + pg['geom'] + " FROM " + pg['table'] + "'\n")
66
+        self.outFile.write("    CONNECTION '" + pgConnString + "'\n")
67
+        self.outFile.write("    DATA '" + sqlData + "'\n")
68
+        self.outFile.write("    FILTER '" + sqlFilter + "'\n")
69
 
70
       elif providerString == 'wms' and lyr.getAttribute("type").encode('utf-8').upper() == 'RASTER':
71
         # it's a WMS layer 
72
@@ -280,7 +294,7 @@
73
         wmsNames = []
74
         wmsStyles = []
75
         for wmsLayer in wmsSubLayers: 
76
-          wmsNames.append( wmsLayer.getElementsByTagName('name')[0].childNodes[0].nodeValue.encode('utf-8') )
77
+          wmsNames.append( wmsLayer.getElementsByTagName('name')[0].childNodes[0].nodeValue.encode('utf-8').replace("\"", "") )
78
           try: 
79
             wmsStyles.append( wmsLayer.getElementsByTagName('style')[0].childNodes[0].nodeValue.encode('utf-8') )
80
           except:
81
@@ -305,7 +319,7 @@
82
       # WMS settings for all layers
83
       self.outFile.write("    METADATA\n")
84
       self.outFile.write("      'wms_title' '" 
85
-           + lyr.getElementsByTagName("layername")[0].childNodes[0].nodeValue.encode('utf-8') + "'\n")
86
+           + lyr.getElementsByTagName("layername")[0].childNodes[0].nodeValue.encode('utf-8').replace("\"", "") + "'\n")
87
       self.outFile.write("    END\n")
88
 
89
       self.outFile.write("    STATUS DEFAULT\n")
90
@@ -364,9 +378,8 @@
91
 
92
     self.outFile.write("    CLASS\n")
93
 
94
-    self.outFile.write("       NAME " 
95
-         + layerNode.getElementsByTagName("layername")[0].childNodes[0].nodeValue.encode('utf-8') 
96
-         + " \n")
97
+    self.outFile.write("       NAME '" 
98
+         + layerNode.getElementsByTagName("layername")[0].childNodes[0].nodeValue.encode('utf-8').replace("\"", "") + "' \n")
99
 
100
     self.outFile.write("       STYLE\n")
101
     # use the point symbol map to lookup the mapserver symbol type
102