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:

  • automatically calls relevant auth function
  • 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.1.0.tar.gz (22.0 kB view details)

Uploaded Source

Built Distribution

ckantools-0.1.0-py3-none-any.whl (23.0 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for ckantools-0.1.0.tar.gz
Algorithm Hash digest
SHA256 e03674fe50f57e454bf5222391900a5902abb05f0facc6dee25c4ba975152111
MD5 ce7bd020c61be545af25fec37feb0d9c
BLAKE2b-256 8cb8038b8065d05204188b92e8c4f0e8da69565be52bfaa37289dbac9d915cde

See more details on using hashes here.

File details

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

File metadata

  • Download URL: ckantools-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 23.0 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.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 65a88963db54d345200e9a6f3918300a2b5c920a1709c2be15226782cbab51e4
MD5 bac118040d1fb68baf3fae4c06a1bb52
BLAKE2b-256 6c0c57dcd030f60921fbc5ecc1e63589de0ac1fa844f40bdb5f1cb767c5c10f2

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