Skip to main content

Utilities for ckan extensions.

Project description

ckantools

CKAN Python

Utilities and common methods for CKAN extensions.

Overview

A collection of methods, decorators, and anything else that might be useful.

Installation

pip install ckantools

Usage

Actions

Use the @action decorator to add actions:

# logic/actions/module_name.py

from ckantools.decorators import action

schema = {
        'parameter_1': [not_missing, str],
        'parameter_2': [ignore_missing, int_validator]
    }

helptext = 'This action only exists as an example, so does not actually anything.'

@action(schema, helptext)
def example_action(parameter_1, parameter_2):
    # ...

And then load the action(s) in plugin.py:

# plugin.py

from .logic.actions import module_name
from ckantools.loaders import create_actions
from ckan.plugins import implements, interfaces, SingletonPlugin

class ExamplePlugin(SingletonPlugin):
    implements(interfaces.IActions)
    
    # IActions
    def get_actions(self):
        return create_actions(module_name)

Main benefits to using the decorator:

  • injects items defined in schema as function args
  • allows you to define long or complex schemas and helptexts without cluttering up code and/or affecting readability
  • neater and easier to maintain than having to list out all of the actions you want to load, e.g.
          ## IActions
    def get_actions(self):
      return {
          'example_action': module_name.example_action,
          'other_action': module_name.other_action,
          'other_other_action': module_name.other_other_action,
          # etc
      }
    

Auth

Loading auth functions is similar to actions, i.e. use the @auth decorator.

The decorator has three args, all of which are optional:

  • proxy: the name of an existing auth function to call that function first
  • keymapping: if the keys are different between this auth function and the proxy auth function, use this to rename them
  • anon: boolean, if true, apply the toolkit.auth_allow_anonymous_access decorator.
# logic/auth/module_name.py

from ckantools.decorators import auth

# all of the args are optional
@auth(anon=True)
def example_action(context, data_dict):
    # no proxy
    # anonymous access is allowed
    # then the custom auth logic:
    return {'success': data_dict.get('parameter_2') == 'carrots'}

# with args
@auth('example_action', {'param_1': 'parameter_2'})
def other_action(context, data_dict):
    # checks access to example_action first
    # the arg param_1 from this action is the same as parameter_2 in example_action (not all args/parameters have to be mapped, just the relevant ones)
    # anonymous access is not allowed
    # if it passes all that:
    return {'success': True}

The auth functions can then be loaded in plugin.py:

# plugin.py

from .logic.auth import module_name
from ckantools.loaders import create_auth
from ckan.plugins import implements, interfaces, SingletonPlugin

class ExamplePlugin(SingletonPlugin):
    implements(interfaces.IActions)
    
    # IAuthFunctions
    def get_auth_functions(self):
        return create_auth(module_name)

Main benefits to using the decorator:

  • reduces repetition of complex auth logic
  • as with the action decorator, it's neater and easier to maintain than having to list out all of the auth functions to load

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ckantools-0.0.4.tar.gz (21.5 kB view details)

Uploaded Source

Built Distribution

ckantools-0.0.4-py3-none-any.whl (22.5 kB view details)

Uploaded Python 3

File details

Details for the file ckantools-0.0.4.tar.gz.

File metadata

  • Download URL: ckantools-0.0.4.tar.gz
  • Upload date:
  • Size: 21.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.8

File hashes

Hashes for ckantools-0.0.4.tar.gz
Algorithm Hash digest
SHA256 e8ac8fa92a693aab3e1d7092b7d4adcd8326c4fc27916a77144f053f8a7fa9a7
MD5 921adfcf9ada7d486c440389a97dd3e5
BLAKE2b-256 f50181d04deffdf975df8e5d218bf80515d536fd0f855f105429f5d4bac76870

See more details on using hashes here.

File details

Details for the file ckantools-0.0.4-py3-none-any.whl.

File metadata

  • Download URL: ckantools-0.0.4-py3-none-any.whl
  • Upload date:
  • Size: 22.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.8

File hashes

Hashes for ckantools-0.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 58d23ff54ce9782cc733dcfaccbb59ff716c847d91055453189d86ef45cb441b
MD5 b3a1d6b93ae136628d89aa7ac32c88db
BLAKE2b-256 c16e998ab5835137dc79a49c94d9a42df4dff8b37d70324227d41d26e0d281a4

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page