From 1d641d2aaaffd1b955011c3cecedb9ed0854eef4 Mon Sep 17 00:00:00 2001 From: Ian Murray Date: Thu, 13 Sep 2012 13:23:33 +0100 Subject: [PATCH 1/4] [#2375] Remove duplication in helpers.unselected_facet_items Implement unselected_facet_items as call to get_facet_items_dict. The only difference should be that the returned facet dicts will have an extra key, `active`. This is backward compatible. --- ckan/lib/helpers.py | 23 +---------------------- 1 file changed, 1 insertion(+), 22 deletions(-) diff --git a/ckan/lib/helpers.py b/ckan/lib/helpers.py index 8d8ecbcaa0c..6a07bf947c4 100644 --- a/ckan/lib/helpers.py +++ b/ckan/lib/helpers.py @@ -519,28 +519,7 @@ def unselected_facet_items(facet, limit=10): limit -- the max. number of facet items to return. ''' - # TODO if we agree to propossed change then we can just wrap - # get_facet_items_dict() - - #return get_facet_items_dict(facet, limit=limit, exclude_active=True) - if not c.search_facets or \ - not c.search_facets.get(facet) or \ - not c.search_facets.get(facet).get('items'): - return [] - facets = [] - for facet_item in c.search_facets.get(facet)['items']: - if not len(facet_item['name'].strip()): - continue - if not (facet, facet_item['name']) in request.params.items(): - facets.append(facet_item) - facets = sorted(facets, key=lambda item: item['count'], reverse=True) - if c.search_facets_limits: - limit = c.search_facets_limits.get(facet) - if limit: - return facets[:limit] - else: - return facets - + return get_facet_items_dict(facet, limit=limit, exclude_active=True) def facet_title(name): # FIXME this looks like an i18n issue From bb2925d9f775966b666babc1ca7ed5ed9e87be65 Mon Sep 17 00:00:00 2001 From: Ian Murray Date: Thu, 13 Sep 2012 13:42:39 +0100 Subject: [PATCH 2/4] [#2375] Include docstring for deprecated helper function --- ckan/lib/helpers.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/ckan/lib/helpers.py b/ckan/lib/helpers.py index 6a07bf947c4..55b49404d58 100644 --- a/ckan/lib/helpers.py +++ b/ckan/lib/helpers.py @@ -522,6 +522,13 @@ def unselected_facet_items(facet, limit=10): return get_facet_items_dict(facet, limit=limit, exclude_active=True) def facet_title(name): + '''Returns a title for the given facet name. + + If a mapping is declared in the config, this is used. Otherwise it falls + back to capitalizing the given name. + + This function is deprecated, use `get_facet_title` instead. + ''' # FIXME this looks like an i18n issue return config.get('search.facets.%s.title' % name, name.capitalize()) From 3ca91d789f7bcbee3a8bc1d75214b6441320ea9f Mon Sep 17 00:00:00 2001 From: Ian Murray Date: Thu, 13 Sep 2012 13:29:22 +0100 Subject: [PATCH 3/4] [#2375] Deprecate facet_title helper function. In favour of get_facet_title, which has improved i18n support. --- ckan/lib/helpers.py | 3 ++- ckan/templates_legacy/facets.html | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/ckan/lib/helpers.py b/ckan/lib/helpers.py index 55b49404d58..b296a8d1e81 100644 --- a/ckan/lib/helpers.py +++ b/ckan/lib/helpers.py @@ -521,6 +521,7 @@ def unselected_facet_items(facet, limit=10): ''' return get_facet_items_dict(facet, limit=limit, exclude_active=True) +@deprecated('Please use get_facet_title(name) for i18n improvements.') def facet_title(name): '''Returns a title for the given facet name. @@ -1318,7 +1319,7 @@ def format_resource_items(items): 'subnav_link', 'subnav_named_route', 'default_group_type', - 'facet_title', + # 'facet_title', # deprecated # am_authorized, # deprecated 'check_access', 'linked_user', diff --git a/ckan/templates_legacy/facets.html b/ckan/templates_legacy/facets.html index 717029192eb..ec1387c4c4a 100644 --- a/ckan/templates_legacy/facets.html +++ b/ckan/templates_legacy/facets.html @@ -32,7 +32,7 @@ -->
-

${h.facet_title(title)}

+

${h.get_facet_title(title)}

    ${facet_li(name, limit=limit, label_function=label_function, if_empty=None, count_label=count_label)}
@@ -78,7 +78,7 @@

${h.facet_title(title)}

- ${h.facet_title(field)} + ${h.get_facet_title(field)} ${c.translated_fields[(field,value)]} From 076008fcf9c8172b10056e637459917df1928f2b Mon Sep 17 00:00:00 2001 From: Ian Murray Date: Thu, 13 Sep 2012 13:34:22 +0100 Subject: [PATCH 4/4] [#2375] Cast integer-looking strings to ints, not floats. Minor improvement to the `format_resource_items` helper function to case int-like strings to integers, not floats. --- ckan/lib/helpers.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/ckan/lib/helpers.py b/ckan/lib/helpers.py index b296a8d1e81..cda89f90fd0 100644 --- a/ckan/lib/helpers.py +++ b/ckan/lib/helpers.py @@ -1280,7 +1280,8 @@ def format_resource_items(items): output = [] # regular expressions for detecting types in strings reg_ex_datetime = '^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d{6})?$' - reg_ex_number = '^-?\d{1,}\.?\d*$' # int/float + reg_ex_int = '^-?\d{1,}$' + reg_ex_float = '^-?\d{1,}\.\d{1,}$' for key, value in items: if not value or key in blacklist: continue @@ -1292,8 +1293,10 @@ def format_resource_items(items): if re.search(reg_ex_datetime, value): datetime_ = date_str_to_datetime(value) value = formatters.localised_nice_date(datetime_) - elif re.search(reg_ex_number, value): + elif re.search(reg_ex_float, value): value = formatters.localised_number(float(value)) + elif re.search(reg_ex_int, value): + value = formatters.localised_number(int(value)) elif isinstance(value, int) or isinstance(value, float): value = formatters.localised_number(value) key = key.replace('_', ' ')