[FIX] website: seo, url encode params, + handle connection breaks
authorDenis Ledoux <dle@odoo.com>
Mon, 11 Aug 2014 08:32:08 +0000 (10:32 +0200)
committerDenis Ledoux <dle@odoo.com>
Mon, 11 Aug 2014 08:32:08 +0000 (10:32 +0200)
addons/website/controllers/main.py

index 2ab0013..97962d4 100644 (file)
@@ -306,9 +306,13 @@ class Website(openerp.addons.web.controllers.main.Home):
 
     @http.route(['/website/seo_suggest/<keywords>'], type='http', auth="public", website=True)
     def seo_suggest(self, keywords):
-        url = "http://google.com/complete/search?ie=utf8&oe=utf8&output=toolbar&q="
-        req = urllib2.Request("%s?%s" % (url, keywords))
-        request = urllib2.urlopen(req)
+        url = "http://google.com/complete/search"
+        try:
+            req = urllib2.Request("%s?%s" % (url, werkzeug.url_encode({
+                'ie': 'utf8', 'oe': 'utf8', 'output': 'toolbar', 'q': keywords})))
+            request = urllib2.urlopen(req)
+        except (urllib2.HTTPError, urllib2.URLError):
+            return []
         xmlroot = ET.fromstring(request.read())
         return json.dumps([sugg[0].attrib['data'] for sugg in xmlroot if len(sugg) and sugg[0].attrib['data']])