@@ -1926,6 +1926,7 @@ def publish_featurestore_sqlview(
1926
1926
name : str ,
1927
1927
store_name : str ,
1928
1928
sql : str ,
1929
+ key_column : Optional [str ] = None ,
1929
1930
geom_name : str = "geom" ,
1930
1931
geom_type : str = "Geometry" ,
1931
1932
srid : Optional [int ] = 4326 ,
@@ -1938,16 +1939,16 @@ def publish_featurestore_sqlview(
1938
1939
name : str
1939
1940
store_name : str
1940
1941
sql : str
1941
- geom_name : str
1942
- geom_type : str
1942
+ key_column : str, optional
1943
+ geom_name : str, optional
1944
+ geom_type : str, optional
1943
1945
workspace : str, optional
1944
1946
1945
1947
"""
1946
1948
if workspace is None :
1947
1949
workspace = "default"
1948
1950
1949
- layer_xml = """<featureType>
1950
- <name>{0}</name>
1951
+ layer_xml = """<name>{0}</name>
1951
1952
<enabled>true</enabled>
1952
1953
<namespace>
1953
1954
<name>{4}</name>
@@ -1967,20 +1968,29 @@ def publish_featurestore_sqlview(
1967
1968
</geometry>
1968
1969
</virtualTable>
1969
1970
</entry>
1970
- </metadata>
1971
- </featureType>""" .format (
1971
+ </metadata>""" .format (
1972
1972
name , sql , geom_name , geom_type , workspace , srid
1973
1973
)
1974
1974
1975
+ # issue #87
1976
+ if key_column is not None :
1977
+ layer_xml += """<keyColumn>{}</keyColumn>""" .format (key_column )
1978
+
1979
+ # final xml structure to post
1980
+ layer_xml_post = """<featureType>{}</featureType>""" .format (layer_xml )
1981
+
1982
+ # rest API url
1975
1983
url = "{}/rest/workspaces/{}/datastores/{}/featuretypes" .format (
1976
1984
self .service_url , workspace , store_name
1977
1985
)
1978
1986
1987
+ # headers
1979
1988
headers = {"content-type" : "text/xml" }
1980
1989
1990
+ # request
1981
1991
r = requests .post (
1982
1992
url ,
1983
- data = layer_xml ,
1993
+ data = layer_xml_post ,
1984
1994
auth = (self .username , self .password ),
1985
1995
headers = headers ,
1986
1996
)
0 commit comments