From b261cdfe458631cfd9ef4773f7e73bca523b33a7 Mon Sep 17 00:00:00 2001 From: Benjamin Dauvergne Date: Fri, 25 Mar 2016 19:46:49 +0100 Subject: [PATCH 1/2] decode remote data source using qommon.misc.json_loads (#10447) --- wcs/data_sources.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/wcs/data_sources.py b/wcs/data_sources.py index a72e466..0f55e9a 100644 --- a/wcs/data_sources.py +++ b/wcs/data_sources.py @@ -15,7 +15,6 @@ # along with this program; if not, see . import collections -import json import urllib2 import xml.etree.ElementTree as ET @@ -84,15 +83,18 @@ class DataSourceSelectionWidget(CompositeWidget): r += widget.render_content() return r.getvalue() + def get_items(data_source): structured_items = get_structured_items(data_source) - tupled_items = [(site_encode(x.get('id')), - site_encode(x.get('text')), - site_encode(x.get('key'))) for x in structured_items] - if tupled_items and tupled_items[0][2] is None: # no key - tupled_items = [tuple(x[:2]) + (x[0],) for x in tupled_items] + tupled_items = [] + for item in structured_items: + # skip malformed items + if not item.get('id') or not item.get('text'): + continue + tupled_items.append((str(item['id']), str(item['text']), str(item.get('key', item['id'])))) return tupled_items + def get_structured_items(data_source): data_source = get_real(data_source) if data_source.get('type') == 'formula': @@ -138,10 +140,8 @@ def get_structured_items(data_source): if '[' in url: vars = get_publisher().substitutions.get_context_variables() url = get_variadic_url(url, vars) - charset = get_publisher().site_charset try: - results = [] - entries = json.load(urllib2.urlopen(url)) + entries = qommon.misc.json_loads(urllib2.urlopen(url).read()) if type(entries) is not dict: raise ValueError('not a json dict') if type(entries.get('data')) is not list: -- 2.1.4