From c738f0a66e9ddad77d0e9749d1c4090e7fa3dc07 Mon Sep 17 00:00:00 2001 From: Fuhu Xia Date: Mon, 8 Jul 2024 11:25:06 -0400 Subject: [PATCH 1/5] optional ckanext.datagovtheme.harvest_next for catalog-next --- README.md | 8 +++++++- ckanext/datagovtheme/helpers.py | 19 ++++++++++++++++--- .../datagovtheme/templates/package/read.html | 2 +- 3 files changed, 24 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 032dc5af..00cda429 100644 --- a/README.md +++ b/README.md @@ -47,7 +47,13 @@ CKAN version | Compatibility ### Configuration [Optional] -`ckanext.datagovtheme.js_recent_view = true` +`ckanext.datagovtheme.harvest_next = false` + +By default, this setting is `false`. The template relies on `ckanext-harvest` to display Harvest Object and Harvest Source information in the **Metadata Source** block. For catalog-next, datasets are added via API calls, eliminating the need for the `ckanext-harvest` dependency. Set this to `true` for the harvest_next version of the **Metadata Source** block. + + +[Optional] +`ckanext.datagovtheme.js_recent_view = false` This defaults to `false`. If displaying the recent view count slows down page loading, the optional parameter can be set to `true` to make the recent view count an AJAX call, improving page loading speed. If the recent view count information (package['tracking_summary']) is already present, the AJAX call is disabled to reduce overhead. Therefore, the built-in recent view count rendering must be disabled for this mechanism to take effect. For catalog.data.gov, it means set setting `ckanext.datagovcatalog.add_packages_tracking_info` to false. diff --git a/ckanext/datagovtheme/helpers.py b/ckanext/datagovtheme/helpers.py index d4d79f65..7839dda6 100644 --- a/ckanext/datagovtheme/helpers.py +++ b/ckanext/datagovtheme/helpers.py @@ -261,7 +261,14 @@ def render_datetime_datagov(date_str): return value -def get_harvest_object_formats(harvest_object_id): +def get_harvest_object_formats(harvest_object_id, dataset_is_datajson=False): + # simplified return for harvest_next + harvest_next = asbool(config.get('ckanext.datagovtheme.harvest_next', 'false')) + if harvest_next: + return { + 'object_format': 'data.json' if dataset_is_datajson else 'ISO-19139' + } + try: obj = p.toolkit.get_action('harvest_object_show')({}, {'id': harvest_object_id}) except p.toolkit.ObjectNotFound: @@ -321,7 +328,11 @@ def get_harvest_source_link(package_dict): if harvest_source_id and harvest_source_title: msg = p.toolkit._('Harvested from') - url = h.url_for('harvest_read', id=harvest_source_id) + harvest_next = asbool(config.get('ckanext.datagovtheme.harvest_next', 'false')) + if harvest_next: + url = h.url_for(f'/harvest/{harvest_source_id}') + else: + url = h.url_for('harvest_read', id=harvest_source_id) link = '{msg} {title}'.format(url=url, msg=msg, title=harvest_source_title) return p.toolkit.literal(link) @@ -679,8 +690,10 @@ def get_pkg_dict_extra(pkg_dict, key, default=None): if k == key: return value + harvest_next = asbool(config.get('ckanext.datagovtheme.harvest_next', 'false')) # Also include harvest information if exists - if key in ['harvest_object_id', 'harvest_source_id', 'harvest_source_title']: + if key in ['harvest_object_id', 'harvest_source_id', 'harvest_source_title'] \ + and not harvest_next: harvest_object = model.Session.query(HarvestObject) \ .filter(HarvestObject.package_id == pkg_dict['id']) \ diff --git a/ckanext/datagovtheme/templates/package/read.html b/ckanext/datagovtheme/templates/package/read.html index 98706dbb..e01d926b 100644 --- a/ckanext/datagovtheme/templates/package/read.html +++ b/ckanext/datagovtheme/templates/package/read.html @@ -232,7 +232,7 @@

{{ _('Dates') }}

{% set harvest_object_id = h.get_pkg_dict_extra(pkg, 'harvest_object_id', None) %} {% if harvest_object_id %} - {% set ho_formats = h.get_harvest_object_formats(harvest_object_id) %} + {% set ho_formats = h.get_harvest_object_formats(harvest_object_id, dataset_is_datajson=dataset_is_datajson) %} {% if ho_formats.object_format %}

{{ _('Metadata Source') }}

From e197083c7d4046a844168df3a6c774a40c1216b2 Mon Sep 17 00:00:00 2001 From: Jin-Sun-tts Date: Tue, 5 Nov 2024 11:11:00 -0500 Subject: [PATCH 2/5] modified the matadata source links --- ckanext/datagovtheme/helpers.py | 15 ++++++++++++++- ckanext/datagovtheme/templates/package/read.html | 4 +--- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/ckanext/datagovtheme/helpers.py b/ckanext/datagovtheme/helpers.py index 7839dda6..167871d4 100644 --- a/ckanext/datagovtheme/helpers.py +++ b/ckanext/datagovtheme/helpers.py @@ -325,12 +325,13 @@ def format_type(format_name): def get_harvest_source_link(package_dict): harvest_source_id = get_pkg_dict_extra(package_dict, 'harvest_source_id', None) harvest_source_title = get_pkg_dict_extra(package_dict, 'harvest_source_title', None) + harvest_admin_url = config.get('ckanext.datagovtheme.harvest_admin_url') if harvest_source_id and harvest_source_title: msg = p.toolkit._('Harvested from') harvest_next = asbool(config.get('ckanext.datagovtheme.harvest_next', 'false')) if harvest_next: - url = h.url_for(f'/harvest/{harvest_source_id}') + url = f"{harvest_admin_url}/harvest_source/{harvest_source_id}" else: url = h.url_for('harvest_read', id=harvest_source_id) link = '{msg} {title}'.format(url=url, msg=msg, title=harvest_source_title) @@ -339,6 +340,18 @@ def get_harvest_source_link(package_dict): return '' +def get_harvest_metadata_link(package_dict): + harvest_object_id = get_pkg_dict_extra(package_dict, 'harvest_object_id', None) + harvest_admin_url = config.get('ckanext.datagovtheme.harvest_admin_url') + + if harvest_object_id: + url = f"{harvest_admin_url}/harvest_record/{harvest_object_id}/raw" + link = '{title}'.format(url=url, title='Download Metadata') + return p.toolkit.literal(link) + + return '' + + # https://github.com/ckan/ckanext-spatial/blob/011008b9c5c4bf58ddd401c805328a9928bbe4ea/ckanext/spatial/helpers.py def get_reference_date(date_str): ''' diff --git a/ckanext/datagovtheme/templates/package/read.html b/ckanext/datagovtheme/templates/package/read.html index e01d926b..220daea2 100644 --- a/ckanext/datagovtheme/templates/package/read.html +++ b/ckanext/datagovtheme/templates/package/read.html @@ -247,9 +247,7 @@

{{ _('Metadata Source') }}

{{ ho_formats.object_format }} Metadata {% endif %} -

- Download Metadata -

+

{{ h.get_harvest_metadata_link(pkg) }}

{% if ho_formats.original_format %}
  • From ab3eecb2f433d037e73667b12baa1c4db8aec3e4 Mon Sep 17 00:00:00 2001 From: Jin-Sun-tts Date: Tue, 5 Nov 2024 16:30:53 -0500 Subject: [PATCH 3/5] pin pyproj version --- ckanext/datagovtheme/helpers.py | 27 +++++++------------ .../datagovtheme/templates/package/read.html | 2 +- 2 files changed, 11 insertions(+), 18 deletions(-) diff --git a/ckanext/datagovtheme/helpers.py b/ckanext/datagovtheme/helpers.py index 167871d4..dba9027d 100644 --- a/ckanext/datagovtheme/helpers.py +++ b/ckanext/datagovtheme/helpers.py @@ -322,31 +322,24 @@ def format_type(format_name): } -def get_harvest_source_link(package_dict): +def get_harvest_source_link(package_dict, type='source'): harvest_source_id = get_pkg_dict_extra(package_dict, 'harvest_source_id', None) harvest_source_title = get_pkg_dict_extra(package_dict, 'harvest_source_title', None) + harvest_object_id = get_pkg_dict_extra(package_dict, 'harvest_object_id', None) harvest_admin_url = config.get('ckanext.datagovtheme.harvest_admin_url') if harvest_source_id and harvest_source_title: msg = p.toolkit._('Harvested from') harvest_next = asbool(config.get('ckanext.datagovtheme.harvest_next', 'false')) - if harvest_next: - url = f"{harvest_admin_url}/harvest_source/{harvest_source_id}" + if type == 'metadata': + url = f"{harvest_admin_url}/harvest_record/{harvest_object_id}/raw" + link = '{title}'.format(url=url, title='Download Metadata') else: - url = h.url_for('harvest_read', id=harvest_source_id) - link = '{msg} {title}'.format(url=url, msg=msg, title=harvest_source_title) - return p.toolkit.literal(link) - - return '' - - -def get_harvest_metadata_link(package_dict): - harvest_object_id = get_pkg_dict_extra(package_dict, 'harvest_object_id', None) - harvest_admin_url = config.get('ckanext.datagovtheme.harvest_admin_url') - - if harvest_object_id: - url = f"{harvest_admin_url}/harvest_record/{harvest_object_id}/raw" - link = '{title}'.format(url=url, title='Download Metadata') + if harvest_next: + url = f"{harvest_admin_url}/harvest_source/{harvest_source_id}" + else: + url = h.url_for('harvest_read', id=harvest_source_id) + link = '{msg} {title}'.format(url=url, msg=msg, title=harvest_source_title) return p.toolkit.literal(link) return '' diff --git a/ckanext/datagovtheme/templates/package/read.html b/ckanext/datagovtheme/templates/package/read.html index 220daea2..b0191ad9 100644 --- a/ckanext/datagovtheme/templates/package/read.html +++ b/ckanext/datagovtheme/templates/package/read.html @@ -247,7 +247,7 @@

    {{ _('Metadata Source') }}

    {{ ho_formats.object_format }} Metadata {% endif %} -

    {{ h.get_harvest_metadata_link(pkg) }}

    +

    {{ h.get_harvest_source_link(pkg, 'metadata') }}

  • {% if ho_formats.original_format %}
  • From ca29ecb361805fd2fd610e4b0d0a0bc372c51498 Mon Sep 17 00:00:00 2001 From: Fuhu Xia Date: Tue, 19 Nov 2024 15:20:57 -0500 Subject: [PATCH 4/5] introduce collection_info --- ckanext/datagovtheme/templates/package/search.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ckanext/datagovtheme/templates/package/search.html b/ckanext/datagovtheme/templates/package/search.html index 9c7570f0..006b5954 100644 --- a/ckanext/datagovtheme/templates/package/search.html +++ b/ckanext/datagovtheme/templates/package/search.html @@ -10,7 +10,7 @@