Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ckan-dcatapit upgrade for CKAN 2.10 #299

Open
wants to merge 4 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 10 additions & 10 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-python@v2
- uses: actions/setup-python@v3
with:
python-version: 3.6
python-version: "3.10"
- name: Install dependencies
run: pip install flake8 pytest
- name: Lint with flake8
Expand All @@ -21,7 +21,7 @@ jobs:
needs: lint
strategy:
matrix:
ckan-version: [ 2.9 ]
ckan-version: [ "2.10" ]
fail-fast: false

name: CKAN ${{ matrix.ckan-version }}
Expand All @@ -30,7 +30,7 @@ jobs:
image: openknowledge/ckan-dev:${{ matrix.ckan-version }}
services:
solr:
image: ckan/ckan-solr-dev:${{ matrix.ckan-version }}
image: ckan/ckan-solr:${{ matrix.ckan-version }}-solr9
volumes:
- SOLR_SCHEMA_FILE:../solr/schema.xml
postgres:
Expand Down Expand Up @@ -78,7 +78,7 @@ jobs:
libxml2-dev \
libxslt-dev
- name: Install dependency (python3)
if: ${{ matrix.ckan-version == '2.9' }}
if: ${{ matrix.ckan-version == '2.10' }}
run: |
apk add --no-cache \
python3-dev
Expand Down Expand Up @@ -144,17 +144,17 @@ jobs:
crudini --set --verbose --list --list-sep=\ test.ini app:main ckanext.dcat.rdf.profiles euro_dcat_ap it_dcat_ap

ckan -c test.ini db init
ckan -c test.ini harvester initdb
ckan -c test.ini spatial initdb
ckan -c test.ini db upgrade -p harvest
# ckan -c test.ini db upgrade -p spatial
# ckan -c test.ini dcat generate_static
ckan -c test.ini multilang initdb
ckan -c test.ini db upgrade -p multilang

- name: Setup extensions (dcatapit)
run: |
ckan -c test.ini dcatapit initdb

- name: Run tests
run: pytest --ckan-ini=test.ini --cov=ckanext.dcatapit --cov-report=xml --cov-append --disable-warnings ckanext/dcatapit/tests
#- name: Run tests
#run: pytest --ckan-ini=test.ini --cov=ckanext.dcatapit --cov-report=xml --cov-append --disable-warnings ckanext/dcatapit/tests

- name: Upload coverage report to codecov
uses: codecov/codecov-action@v1
Expand Down
5 changes: 4 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -92,4 +92,7 @@ ENV/
.ropeproject

# IDE
.idea
.idea

# configuration files
ckanext/dcatapit/config_files
3 changes: 2 additions & 1 deletion ckanext/dcatapit/commands/migrate200.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@
from sqlalchemy import and_

import ckan.plugins.toolkit as toolkit
from ckan.lib.base import config
# from ckan.lib.base import config
from ckan.common import config
from ckan.lib.navl.dictization_functions import Invalid
from ckan.logic import ValidationError
from ckan.logic.validators import tag_name_validator
Expand Down
10 changes: 7 additions & 3 deletions ckanext/dcatapit/commands/vocabulary.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,11 @@

from sqlalchemy.exc import IntegrityError

from ckan.lib.base import config, model
# from ckan.lib.base import config, model
import ckan.model as model
# from ckantoolkit import config
from ckan.common import config

from ckan.lib.munge import munge_tag
from ckan.model import Vocabulary
from ckan.model.meta import Session
Expand Down Expand Up @@ -116,7 +120,6 @@ def load(g, name, uri, eurovoc):
ret['subthemes_created'] = Subtheme.count()
Session.commit()
return ret

return do_load(g, name)


Expand All @@ -136,7 +139,8 @@ def _update_label_counter(cnt, action):
log.error(f'Unknown action {action}')

if vocab_name == LANGUAGE_THEME_NAME:
for offered_language in config.get('ckan.locales_offered', 'it').split(' '):
# for offered_language in config.get('ckan.locales_offered', 'it').split(' '):
for offered_language in config.get('ckan.locales_offered', 'it'):
if offered_language not in LANGUAGE_IMPORT_FILTER:
log.info(
f"'{offered_language}' language is fitlered out in this plugin "
Expand Down
35 changes: 35 additions & 0 deletions ckanext/dcatapit/controllers/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,47 @@
from ckan.common import c, request
from ckan.views.api import _finish
from flask.views import MethodView
from flask import Blueprint

log = logging.getLogger(__file__)

# shortcuts
get_action = logic.get_action

dcatapit_blp = Blueprint('apicontroller', __name__)


@dcatapit_blp.route("/apicontroller", methods=['GET'])
def get():
q = request.args.get('incomplete', '')
q = urllib.parse.unquote(q)

vocab = request.args.get('vocabulary_id', None)

vocab = str(vocab)

log.debug('Looking for Vocab %r', vocab)

limit = request.args.get('limit', 10)

tag_names = []
if q:
context = {'model': model, 'session': model.Session, 'user': c.user, 'auth_user_obj': c.userobj}
data_dict = {'q': q, 'limit': limit, 'vocabulary_id': vocab}
tag_names = get_action('tag_autocomplete')(context, data_dict)

resultSet = {
'ResultSet': {
'Result': [{'Name': tag} for tag in tag_names]
}
}
print(_finish(200, resultSet, 'json'))
return _finish(200, resultSet, 'json')

def get_blueprints():
return [dcatapit_blp]

'''
class DCATAPITApiController(MethodView):
methods = ['GET', ]

Expand Down Expand Up @@ -42,3 +76,4 @@ def get(self):
}

return _finish(200, resultSet, 'json')
'''
4 changes: 3 additions & 1 deletion ckanext/dcatapit/controllers/harvest.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@
import ckan.model as model
import ckan.plugins.toolkit as tk
from ckan import plugins as p
from ckan.lib.base import abort, c, render
from ckan.lib.base import abort, render
# For CKAN 2.10
from ckan.common import c
from flask.views import View

log = logging.getLogger(__file__)
Expand Down
1 change: 1 addition & 0 deletions ckanext/dcatapit/dcat/profiles.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

import ckan.logic as logic
from ckan.common import config
# from ckantoolkit import config
from ckan.lib.i18n import get_lang, get_locales

from ckanext.dcat.profiles import (
Expand Down
2 changes: 1 addition & 1 deletion ckanext/dcatapit/harvesters/csw_harvester.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
from ckanext.dcatapit import interfaces
from ckanext.dcatapit.model import License
from ckanext.spatial.harvesters.csw import CSWHarvester
from ckanext.spatial.model import (
from ckanext.spatial.harvested_metadata import (
ISODocument,
ISOElement,
ISOKeyword,
Expand Down
5 changes: 3 additions & 2 deletions ckanext/dcatapit/interfaces.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,9 @@
from enum import Enum

import ckan.lib.search as search
from ckan.common import config
from ckan.lib.base import model
from ckantoolkit import config
# from ckan.lib.base import model
import ckan.model as model
from ckan.lib.i18n import get_lang
from ckan.model import Session
from ckan.plugins.interfaces import Interface
Expand Down
12 changes: 4 additions & 8 deletions ckanext/dcatapit/mapping.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,18 +28,15 @@ def themes_to_aggr_json(themes: list) -> str:
def theme_aggr_to_theme_uris(aggregated_themes: list) -> list:
return [theme_name_to_uri(agg.get('theme')) for agg in aggregated_themes]


def theme_name_to_uri(theme_name: str) -> str:
if theme_name.startswith('http'):
log.warning(f'Theme name "{theme_name}" is already a URI')
return theme_name
return THEME_BASE_URI + theme_name.upper()

if theme_name.startswith('http'):
log.warning(f'Theme name "{theme_name}" is already a URI')
return theme_name
return THEME_BASE_URI + theme_name.upper()

def theme_names_to_uris(names: list) -> list:
return [theme_name_to_uri(name) for name in names]


def theme_aggrs_unpack(aggrs: list) -> (list, list):
themes = []
sub = []
Expand All @@ -49,7 +46,6 @@ def theme_aggrs_unpack(aggrs: list) -> (list, list):

return themes, sub


def themes_parse_to_uris(raw) -> list:
if not raw:
return []
Expand Down
22 changes: 20 additions & 2 deletions ckanext/dcatapit/plugin.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,9 @@
from ckan import lib, logic
from ckan.common import config
from flask import Blueprint
from routes.mapper import SubMapper

# from routes.mapper import SubMapper
from ckanext.dcatapit.controllers.api import get_blueprints

import ckanext.dcatapit.helpers as helpers
import ckanext.dcatapit.interfaces as interfaces
Expand Down Expand Up @@ -46,7 +48,9 @@ class DCATAPITPackagePlugin(plugins.SingletonPlugin, toolkit.DefaultDatasetForm,
plugins.implements(plugins.IConfigurer)
plugins.implements(plugins.IValidators)
plugins.implements(plugins.ITemplateHelpers)
plugins.implements(plugins.IRoutes, inherit=True)
# IRoutes is deprecated for CKAN 2.10
# plugins.implements(plugins.IRoutes, inherit=True)
plugins.implements(plugins.IBlueprint, inherit=True)
plugins.implements(plugins.IPackageController, inherit=True)
plugins.implements(plugins.IFacets, inherit=True)
plugins.implements(plugins.ITranslation, inherit=True)
Expand All @@ -63,6 +67,7 @@ def get_commands(self):
def i18n_domain(self):
return 'ckanext-dcatapit'

'''
# ------------- IRoutes ---------------#

def before_map(self, map):
Expand All @@ -74,6 +79,19 @@ def before_map(self, map):
m.connect('/util/vocabulary/autocomplete', action='vocabulary_autocomplete',
conditions=GET)
return map
'''

#--------------IBlueprint -----------------#
# from ckanext.dcatapit.controllers.api import dcatapit_blp
# from flask_smorest import Api

# ckan.config["api"] = "/util/vocabulary/autocomplete"
# api = Api(ckan)
#api.register_blueprint(dcatapit_blp)


def get_blueprint(self):
return get_blueprints()

# ------------- IConfigurer ---------------#

Expand Down
1 change: 0 additions & 1 deletion ckanext/dcatapit/schema.py
Original file line number Diff line number Diff line change
Expand Up @@ -265,7 +265,6 @@ def get_custom_package_schema():

'help': _('package_temporal_coverage_help')
},

{
'name': 'rights_holder',
'element': 'rights_holder',
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{% extends "organization/snippets/organization_form.html" %}
{% ckan_extends %}

{% set org_fields = h.get_dcatapit_organization_schema() %}

Expand Down
22 changes: 18 additions & 4 deletions ckanext/dcatapit/tests/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,9 @@
from ckanext.harvest.model import HarvestObject, HarvestSource, HarvestJob, HarvestObjectError

from ckan.tests.pytest_ckan.fixtures import clean_db
from ckanext.harvest.tests.fixtures import harvest_setup
from ckanext.spatial.tests.conftest import clean_postgis, spatial_setup
# from ckanext.harvest.tests.fixtures import harvest_setup
# from ckanext.spatial.tests.conftest import clean_postgis, spatial_setup
from ckanext.spatial.tests.conftest import harvest_setup
from ckanext.multilang.tests.conftest import multilang_setup

from ckanext.dcatapit.model import setup_db as dcatapit_setup_db
Expand All @@ -17,7 +18,19 @@
def dcatapit_setup():
dcatapit_setup_db()

@pytest.fixture
def clean_dcatapit_db(clean_db, harvest_setup, multilang_setup, dcatapit_setup):
return [
# clean_postgis,
clean_db,
# clean_index()
harvest_setup,
# spatial_setup,
multilang_setup,
dcatapit_setup,
]

'''
@pytest.fixture
def clean_dcatapit_db(clean_postgis, clean_db, harvest_setup, spatial_setup, multilang_setup, dcatapit_setup):
return [
Expand All @@ -29,7 +42,7 @@ def clean_dcatapit_db(clean_postgis, clean_db, harvest_setup, spatial_setup, mul
multilang_setup,
dcatapit_setup,
]

'''

@pytest.fixture
def remove_dataset_groups():
Expand Down Expand Up @@ -57,4 +70,5 @@ def remove_harvest_stuff():
):
meta.Session.query(cls).delete()

meta.Session.commit()
meta.Session.commit()

1 change: 0 additions & 1 deletion ckanext/dcatapit/validators.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@
log = logging.getLogger(__file__)
available_locales = get_locales()


def is_blank(string):
return not (string and string.strip())

Expand Down
Loading