[ckan-dev] Error executing new ckan extension

Isabel Ruiz isaruizmellado at gmail.com
Wed Jan 14 13:40:14 UTC 2015


Hi,

I am developing a ckan extension and I need execute it in a paster command.

I have followed ckan extension tutorial steps:
* Execute paster create command.
* python setup.py develop
* Add plugin in .ini file and restart apache2

This is the code from my commands.py

#############################
from ckan.lib.cli import CkanCommand
from ckan.lib.base import render

class Gen(CkanCommand):
summary = ""
max_args = 2
min_args = 2

def generar(self):

cmd = self.args[0]
 import sys

data = render(args[0],load_class=None)

try:
with open(args[1], 'w') as f:
f.write(data.encode('utf-8'))
print "OK"
except IOError, ioe:
return "error " + str(ioe)
#############################

I have create a plugin.py too, but I am not sure about if it is necessary.
This is plugin.py code:

#############################
import ckan.plugins as p

class GenPlugin(p.SingletonPlugin):

    p.implements(p.IConfigurer)
    p.implements(p.ITemplateHelpers)
    p.implements(p.IRoutes, inherit=True)

    def update_config(self, config):
        # add template directory that contains our snippet
p.toolkit.add_template_directory(config,
'/usr/lib/ckan/default/src/ckanext-extension/ckanext/extension/theme/templates')
p.toolkit.add_public_directory (config,
'/usr/lib/ckan/default/src/ckanext-extension/ckanext/extension/public')

    def get_helpers(self):
return {}
#############################

I have activated virtual environment.

When I execute paster commands: paster generar agr1 arg2
--config=myinifile.ini

It returns:

Traceback (most recent call last):
  File "/usr/lib/ckan/default/bin/paster", line 9, in <module>
    load_entry_point('PasteScript==1.7.5', 'console_scripts', 'paster')()
  File
"/usr/lib/ckan/default/local/lib/python2.7/site-packages/paste/script/command.py",
line 104, in run
    invoke(command, command_name, options, args[1:])
  File
"/usr/lib/ckan/default/local/lib/python2.7/site-packages/paste/script/command.py",
line 143, in invoke
    exit_code = runner.run(args)
  File
"/usr/lib/ckan/default/local/lib/python2.7/site-packages/paste/script/command.py",
line 238, in run
    result = self.command()
  File
"/home/ckan/ckan/lib/default/src/ckanext-extension/ckanext/extension/commands.py",
line 18, in command
    data = render(self.args[1], loader_class=None)
  File "/home/ckan/ckan/lib/default/src/ckan/ckan/lib/base.py", line 177,
in render
    if 'Pragma' in response.headers:
  File
"/usr/lib/ckan/default/local/lib/python2.7/site-packages/paste/registry.py",
line 137, in __getattr__
    return getattr(self._current_obj(), attr)
  File
"/usr/lib/ckan/default/local/lib/python2.7/site-packages/paste/registry.py",
line 197, in _current_obj
    'thread' % self.____name__)
TypeError: No object (name: response) has been registered for this thread


If I change "data = render(args[0],load_class=None)" for "print "hello
world" ", then console returns "hello world", so setup.py, etc, work.

So I suppose I have created, developed and configured ckan extension
correctly.

What can be wrong?

Thanks.

-- 
Isabel M. Ruiz Mellado
http://about.me/isabelruiz
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.okfn.org/pipermail/ckan-dev/attachments/20150114/d510f114/attachment-0002.html>


More information about the ckan-dev mailing list