Mercurial > hg > MPIWGWeb
comparison SrvTxtUtils.py @ 216:3b517b412f77
fixed problem updating users with new IDs
author | casties |
---|---|
date | Wed, 02 Oct 2013 14:40:50 +0200 |
parents | 938add25f81b |
children | 649f74b167e6 |
comparison
equal
deleted
inserted
replaced
215:c0dcb747cc41 | 216:3b517b412f77 |
---|---|
5 | 5 |
6 import sys | 6 import sys |
7 import os | 7 import os |
8 import stat | 8 import stat |
9 import urllib | 9 import urllib |
10 import urllib2 | |
11 import logging | 10 import logging |
12 import time | 11 import time |
13 import re | 12 import re |
13 import datetime | |
14 try: | |
15 import httplib2 | |
16 httplib = 'httplib2' | |
17 except: | |
18 logging.warn("Unable to import httplib2! Falling back to urllib2!") | |
19 import urllib2 | |
20 httplib = 'urllib2' | |
14 | 21 |
15 import xml.etree.ElementTree as ET | 22 import xml.etree.ElementTree as ET |
16 | 23 |
17 srvTxtUtilsVersion = "1.10.0" | 24 srvTxtUtilsVersion = "1.12.0" |
18 | 25 |
19 map_months = {'en': [u"", | 26 map_months = {'en': [u"", |
20 u"January", | 27 u"January", |
21 u"February", | 28 u"February", |
22 u"March", | 29 u"March", |
151 ds = date.isoformat() | 158 ds = date.isoformat() |
152 | 159 |
153 return ds | 160 return ds |
154 | 161 |
155 | 162 |
156 def getHttpData(url, data=None, num_tries=3, timeout=10, noExceptions=False): | 163 def getDate(date): |
164 """return date object from date or datetime date.""" | |
165 if isinstance(date, datetime.datetime): | |
166 # strip time | |
167 return date.date() | |
168 | |
169 return date | |
170 | |
171 | |
172 def getDatetime(date): | |
173 """return datetime object from date or datetime date.""" | |
174 if isinstance(date, datetime.date): | |
175 # add time 0:00 | |
176 return datetime.datetime.combine(date, datetime.time()) | |
177 | |
178 return date | |
179 | |
180 | |
181 def getHttpData(url, data=None, num_tries=3, timeout=10, username=None, password=None, cache=None, insecure=False, noExceptions=False): | |
157 """returns result from url+data HTTP request""" | 182 """returns result from url+data HTTP request""" |
158 # we do GET (by appending data to url) | 183 # we do GET (by appending data to url) |
159 if isinstance(data, str) or isinstance(data, unicode): | 184 if isinstance(data, str) or isinstance(data, unicode): |
160 # if data is string then append | 185 # if data is string then append |
161 url = "%s?%s"%(url,data) | 186 url = "%s?%s"%(url,data) |
162 elif isinstance(data, dict) or isinstance(data, list) or isinstance(data, tuple): | 187 elif isinstance(data, dict) or isinstance(data, list) or isinstance(data, tuple): |
163 # urlencode | 188 # urlencode |
164 url = "%s?%s"%(url,urllib.urlencode(data)) | 189 url = "%s?%s"%(url,urllib.urlencode(data)) |
165 | 190 |
166 response = None | |
167 errmsg = None | 191 errmsg = None |
168 for cnt in range(num_tries): | 192 if httplib == 'httplib2': |
169 try: | 193 # use httplib2 |
170 logging.debug("getHttpData(#%s %ss) url=%s"%(cnt+1,timeout,url)) | 194 for cnt in range(num_tries): |
171 if sys.version_info < (2, 6): | 195 try: |
172 # set timeout on socket -- ugly :-( | 196 logging.debug("getHttp(lib2)Data(#%s %ss) url=%s"%(cnt+1,timeout,url)) |
173 import socket | 197 h = httplib2.Http(cache=cache, timeout=float(timeout), disable_ssl_certificate_validation=insecure) |
174 socket.setdefaulttimeout(float(timeout)) | 198 if username: |
175 response = urllib2.urlopen(url) | 199 h.add_credentials(username, password) |
176 else: | 200 |
177 # timeout as parameter | 201 resp, data = h.request(url) |
178 response = urllib2.urlopen(url,timeout=float(timeout)) | 202 return data |
179 # check result? | 203 |
180 break | 204 except httplib2.HttpLib2Error, e: |
181 except urllib2.HTTPError, e: | 205 logging.error("getHttp(lib2)Data: HTTP error(%s): %s"%(e.code,e)) |
182 logging.error("getHttpData: HTTP error(%s): %s"%(e.code,e)) | 206 errmsg = str(e) |
183 errmsg = str(e) | 207 # stop trying |
184 # stop trying | 208 break |
185 break | 209 |
186 except urllib2.URLError, e: | 210 else: |
187 logging.error("getHttpData: URLLIB error(%s): %s"%(e.reason,e)) | 211 # use urllib2 |
188 errmsg = str(e) | 212 response = None |
189 # stop trying | 213 for cnt in range(num_tries): |
190 #break | 214 try: |
191 | 215 logging.debug("getHttpData(#%s %ss) url=%s"%(cnt+1,timeout,url)) |
192 if response is not None: | 216 if sys.version_info < (2, 6): |
193 data = response.read() | 217 # set timeout on socket -- ugly :-( |
194 response.close() | 218 import socket |
195 return data | 219 socket.setdefaulttimeout(float(timeout)) |
220 response = urllib2.urlopen(url) | |
221 else: | |
222 # timeout as parameter | |
223 response = urllib2.urlopen(url,timeout=float(timeout)) | |
224 # check result? | |
225 data = response.read() | |
226 response.close() | |
227 return data | |
228 | |
229 except urllib2.HTTPError, e: | |
230 logging.error("getHttpData: HTTP error(%s): %s"%(e.code,e)) | |
231 errmsg = str(e) | |
232 # stop trying | |
233 break | |
234 except urllib2.URLError, e: | |
235 logging.error("getHttpData: URLLIB error(%s): %s"%(e.reason,e)) | |
236 errmsg = str(e) | |
237 # stop trying | |
238 #break | |
196 | 239 |
197 if noExceptions: | 240 if noExceptions: |
198 return None | 241 return None |
199 | 242 |
200 raise IOError("ERROR fetching HTTP data from %s: %s"%(url,errmsg)) | 243 raise IOError("ERROR fetching HTTP data from %s: %s"%(url,errmsg)) |