@@ -141,7 +141,7 @@ def setup_connection(self, retries=3, backoff_factor=0.9):
141
141
)
142
142
self .client .mount ("{}://" .format (parsed_url .scheme ), HTTPAdapter (max_retries = retry ))
143
143
144
- def http_request (self , url , data = None , method = 'get' , headers = {}):
144
+ def http_request (self , url , data = None , method = 'get' , headers = {}, files = None ):
145
145
req_method = getattr (self .client , method .lower ())
146
146
147
147
if self .access_token :
@@ -152,14 +152,13 @@ def http_request(self, url, data=None, method='get', headers={}):
152
152
params = urlencode (params )
153
153
url = "{proto}://{address}{path}?{params}" .format (proto = parsed_url .scheme , address = parsed_url .netloc ,
154
154
path = parsed_url .path , params = params )
155
-
156
- resp = req_method (url , headers = headers , data = data )
157
- else :
155
+ elif self .username and self .password :
158
156
valid_uname_pw = base64 .b64encode (
159
157
("%s:%s" % (self .username , self .password )).encode ("utf-8" )).decode ("ascii" )
160
158
headers ['Authorization' ] = 'Basic {}' .format (valid_uname_pw )
161
- resp = req_method (url , headers = headers , data = data )
162
- return resp
159
+
160
+ return req_method (url , headers = headers , data = data , files = files )
161
+
163
162
164
163
def get_version (self ):
165
164
'''obtain the version or just 2.2.x if < 2.3.x
@@ -1070,11 +1069,18 @@ def get_styles(self, names=None, workspaces=None, recursive=False):
1070
1069
Will always return an array.
1071
1070
'''
1072
1071
all_styles = []
1072
+
1073
+ # Get Names first to speed up recursive queries
1074
+ if names is None :
1075
+ names = []
1076
+ elif isinstance (names , string_types ):
1077
+ names = [s .strip () for s in names .split (',' ) if s .strip ()]
1078
+
1073
1079
if not workspaces :
1074
1080
# Add global styles
1075
1081
url = "{}/styles.xml" .format (self .service_url )
1076
1082
styles = self .get_xml (url )
1077
- all_styles += self .__build_style_list (styles , recursive = recursive )
1083
+ all_styles += self .__build_style_list (styles , recursive = recursive , names = names )
1078
1084
workspaces = []
1079
1085
elif isinstance (workspaces , string_types ):
1080
1086
workspaces = [s .strip () for s in workspaces .split (',' ) if s .strip ()]
@@ -1098,32 +1104,30 @@ def get_styles(self, names=None, workspaces=None, recursive=False):
1098
1104
continue
1099
1105
else :
1100
1106
raise FailedRequestError ("Failed to get styles: {}" .format (e ))
1101
- all_styles += self .__build_style_list (styles , workspace = ws , recursive = recursive )
1102
-
1103
- if names is None :
1104
- names = []
1105
- elif isinstance (names , string_types ):
1106
- names = [s .strip () for s in names .split (',' ) if s .strip ()]
1107
+ all_styles += self .__build_style_list (styles , workspace = ws , recursive = recursive , names = names )
1107
1108
1108
1109
if all_styles and names :
1109
1110
return ([style for style in all_styles if style .name in names ])
1110
1111
1111
1112
return all_styles
1112
1113
1113
- def __build_style_list (self , styles_tree , workspace = None , recursive = False ):
1114
+ def __build_style_list (self , styles_tree , workspace = None , recursive = False , names = None ):
1114
1115
all_styles = []
1115
1116
for s in styles_tree .findall ("style" ):
1116
1117
try :
1118
+ style_name = s .find ('name' ).text
1119
+ if names and style_name not in names :
1120
+ continue
1117
1121
if recursive :
1118
- style_format = self .get_xml (s [1 ].attrib .get ('href' )). find ( 'format' ). text
1119
- style_version = self . get_xml ( s [ 1 ]. attrib . get ( 'href' )). find ('languageVersion ' ).find (
1120
- 'version' ).text .replace ('.' , '' )[:- 1 ]
1122
+ style_xml = self .get_xml (s [1 ].attrib .get ('href' ))
1123
+ style_format = style_xml . find ('format ' ).text
1124
+ style_version = style_xml . find ( 'languageVersion' ). find ( 'version' ).text .replace ('.' , '' )[:- 1 ]
1121
1125
all_styles .append (
1122
- Style (self , s . find ( "name" ). text , _name (workspace ), style_format + style_version )
1126
+ Style (self , style_name , _name (workspace ), style_format + style_version )
1123
1127
)
1124
1128
else :
1125
1129
all_styles .append (
1126
- Style (self , s . find ( 'name' ). text , _name (workspace ))
1130
+ Style (self , style_name , _name (workspace ))
1127
1131
)
1128
1132
except Exception :
1129
1133
all_styles .append (
@@ -1142,7 +1146,7 @@ def get_style(self, name, workspace=None, recursive=False):
1142
1146
return self ._return_first_item (styles )
1143
1147
1144
1148
def create_style (self , name , data , overwrite = False , workspace = None , style_format = "sld10" , raw = False ):
1145
- styles = self .get_styles (names = name , workspaces = [workspace ])
1149
+ styles = self .get_styles (names = name , workspaces = [workspace ], recursive = True )
1146
1150
if len (styles ) > 0 :
1147
1151
style = styles [0 ]
1148
1152
else :
0 commit comments