Skip to content

Instantly share code, notes, and snippets.

@oventura
Created May 23, 2012 09:48
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save oventura/73f4838448c86b71f0c4 to your computer and use it in GitHub Desktop.
Save oventura/73f4838448c86b71f0c4 to your computer and use it in GitHub Desktop.
Has no member named "resources"
class DatalocaleDatasetForm(SingletonPlugin):
"""
- ``IConfigurer`` allows us to override configuration normally
found in the ``ini``-file. Here we use it to specify where the
form templates can be found.
- ``IDatasetForm`` allows us to provide a custom form for a dataset
based on the type_name that may be set for a package. Where the
type_name matches one of the values in package_types then this
class will be used.
- ``IGenshiStreamFilter`` hook into Pylons template rendering.
- ``IActions`` Allow adding of actions to the logic layer (API).
"""
implements(IDatasetForm, inherit=True)
implements(IConfigurer)
def update_config(self, config):
"""
This IConfigurer implementation causes CKAN to look in the
```templates``` directory when looking for the package_form()
"""
here = os.path.dirname(__file__)
rootdir = os.path.dirname(os.path.dirname(here))
template_dir = os.path.join(rootdir, 'ckanext',
'datalocale', 'theme', 'templates')
config['extra_template_paths'] = ','.join([template_dir,
config.get('extra_template_paths', '')])
def package_form(self):
return 'forms/dataset_form.html'
def new_template(self):
return 'package/new.html'
def comments_template(self):
return 'package/comments.html'
def search_template(self):
return 'package/search.html'
def read_template(self):
return 'forms/read.html'
def history_template(self):
return 'package/history.html'
def is_fallback(self):
return True
def package_types(self):
return ["dataset"]
def setup_template_variables(self, context, data_dict, package_type=None):
from pylons import config
''' Translation '''
ckan_lang = pylons.request.environ['CKAN_LANG']
ckan_lang_fallback = pylons.config.get('ckan.locale_default', 'fr')
c.groups_available = c.userobj and c.userobj.get_groups('organization') or []
c.licences = [('', '')] + base.model.Package.get_license_options()
c.is_sysadmin = authz.Authorizer().is_sysadmin(c.user)
c.publishers_available = c.groups_available
c.contributor = c.userobj
def db_to_form_schema(data, package_type=None):
schema = logic.schema.package_form_schema()
schema.update({
'id': [ignore_missing, unicode],
'tags': {
'__extras': [keep_extras, free_tags_only]
},
'isopen': [ignore_missing]
})
schema['groups'].update({
'name': [not_empty, unicode],
'title': [ignore_missing],
'capacity': [ignore_missing, unicode]
})
schema['resources'].update({
'created': [ignore_missing],
'position': [not_empty],
'last_modified': [ignore_missing],
'cache_last_updated': [ignore_missing],
'webstore_last_updated': [ignore_missing]
})
return schema
def check_data_dict(self, data_dict):
return
-------------------- Restarting --------------------
Starting server in PID 4618.
serving on 0.0.0.0:5000 view at http://127.0.0.1:5000
2012-05-23 11:46:23,855 INFO [ckan.new_authz] Using auth profile at ckan.logic.auth.publisher
/home/atos/pyenv/lib/python2.6/site-packages/sqlalchemy/sql/expression.py:1802: SAWarning: The IN-predicate on "term_translation.term" was invoked with an empty sequence. This results in a contradiction, which nonetheless can be expensive to evaluate. Consider alternative strategies for improved performance.
return self._in_impl(operators.in_op, operators.notin_op, other)
Error - <class 'genshi.template.eval.UndefinedError'>: {u'maintainer': u'', u'name': u'test2', 'isopen': False, u'author': u'', u'author_email': u'', u'notes': u'', u'title': u'test2', u'maintainer_email': u'', u'url': u'', u'state': u'active', u'version': u'', 'groups': [{u'title': u'Atos', u'capacity': u'public', u'id': u'b917850d-53fa-4c8c-a0df-2b4ff239c9e7', u'name': u'atos'}], u'license_id': u'', u'id': u'1881914f-995d-4588-8521-fc32eec25aa5', 'extras': [{u'value': '"oceane"', u'key': u'dct:contributor', '__extras': {u'revision_id': u'e69b657b-6282-42df-94bd-5e8b8274b6c7', u'package_id': u'1881914f-995d-4588-8521-fc32eec25aa5'}}, {u'value': '""', u'key': u'dct:creator', '__extras': {u'revision_id': u'e69b657b-6282-42df-94bd-5e8b8274b6c7', u'package_id': u'1881914f-995d-4588-8521-fc32eec25aa5'}}, {u'value': '""', u'key': u'dct:publisher', '__extras': {u'revision_id': u'e69b657b-6282-42df-94bd-5e8b8274b6c7', u'package_id': u'1881914f-995d-4588-8521-fc32eec25aa5'}}, {u'value': '""', u'key': u'dct:temporal', '__extras': {u'package_id': u'1881914f-995d-4588-8521-fc32eec25aa5', u'revision_id': u'e69b657b-6282-42df-94bd-5e8b8274b6c7'}}, {u'value': '""', u'key': u'dcterms:references', '__extras': {u'revision_id': u'e69b657b-6282-42df-94bd-5e8b8274b6c7', u'package_id': u'1881914f-995d-4588-8521-fc32eec25aa5'}}, {u'value': '""', u'key': u'maj', '__extras': {u'package_id': u'1881914f-995d-4588-8521-fc32eec25aa5', u'revision_id': u'e69b657b-6282-42df-94bd-5e8b8274b6c7'}}]} has no member named "resources"
URL: http://192.168.56.101:5000/user/oceane
File '/usr/lib/pymodules/python2.6/weberror/errormiddleware.py', line 162 in __call__
app_iter = self.application(environ, sr_checker)
File '/usr/lib/pymodules/python2.6/beaker/middleware.py', line 73 in __call__
return self.app(environ, start_response)
File '/usr/lib/pymodules/python2.6/beaker/middleware.py', line 152 in __call__
return self.wrap_app(environ, session_start_response)
File '/usr/lib/pymodules/python2.6/routes/middleware.py', line 130 in __call__
response = self.app(environ, start_response)
File '/usr/lib/pymodules/python2.6/pylons/wsgiapp.py', line 125 in __call__
response = self.dispatch(controller, environ, start_response)
File '/usr/lib/pymodules/python2.6/pylons/wsgiapp.py', line 324 in dispatch
return controller(environ, start_response)
File '/home/atos/pyenv/src/ckan/ckan/lib/base.py', line 218 in __call__
res = WSGIController.__call__(self, environ, start_response)
File '/usr/lib/pymodules/python2.6/pylons/controllers/core.py', line 221 in __call__
response = self._dispatch_call()
File '/usr/lib/pymodules/python2.6/pylons/controllers/core.py', line 172 in _dispatch_call
response = self._inspect_call(func)
File '/usr/lib/pymodules/python2.6/pylons/controllers/core.py', line 107 in _inspect_call
result = self._perform_call(func, args)
File '/usr/lib/pymodules/python2.6/pylons/controllers/core.py', line 60 in _perform_call
return func(**args)
File '/home/atos/pyenv/src/ckan/ckan/controllers/user.py', line 109 in read
return render('user/read.html')
File '/home/atos/pyenv/src/ckan/ckan/lib/base.py', line 145 in render
return cached_template(template_name, render_template, loader_class=loader_class)
File '/usr/lib/pymodules/python2.6/pylons/templating.py', line 249 in cached_template
return render_func()
File '/home/atos/pyenv/src/ckan/ckan/lib/base.py', line 99 in render_template
return literal(stream.render(method=method, encoding=None, strip_whitespace=True))
File '/home/atos/pyenv/lib/python2.6/site-packages/genshi/core.py', line 183 in render
return encode(generator, method=method, encoding=encoding, out=out)
File '/home/atos/pyenv/lib/python2.6/site-packages/genshi/output.py', line 57 in encode
return _encode(''.join(list(iterator)))
File '/home/atos/pyenv/lib/python2.6/site-packages/genshi/output.py', line 339 in __call__
for kind, data, pos in stream:
File '/home/atos/pyenv/lib/python2.6/site-packages/genshi/output.py', line 670 in __call__
for kind, data, pos in stream:
File '/home/atos/pyenv/lib/python2.6/site-packages/genshi/output.py', line 771 in __call__
for kind, data, pos in chain(stream, [(None, None, None)]):
File '/home/atos/pyenv/lib/python2.6/site-packages/genshi/output.py', line 586 in __call__
for ev in stream:
File '/home/atos/pyenv/lib/python2.6/site-packages/genshi/core.py', line 288 in _ensure
for event in stream:
File '/home/atos/pyenv/lib/python2.6/site-packages/genshi/template/base.py', line 618 in _include
for event in tmpl.generate(ctxt, **vars):
File '/home/atos/pyenv/lib/python2.6/site-packages/genshi/template/base.py', line 618 in _include
for event in tmpl.generate(ctxt, **vars):
File '/home/atos/pyenv/lib/python2.6/site-packages/genshi/template/base.py', line 618 in _include
for event in tmpl.generate(ctxt, **vars):
File '/home/atos/pyenv/lib/python2.6/site-packages/genshi/template/base.py', line 605 in _include
for event in stream:
File '/home/atos/pyenv/lib/python2.6/site-packages/genshi/template/markup.py', line 378 in _match
ctxt, start=idx + 1, **vars):
File '/home/atos/pyenv/lib/python2.6/site-packages/genshi/template/markup.py', line 327 in _match
for event in stream:
File '/home/atos/pyenv/lib/python2.6/site-packages/genshi/template/base.py', line 565 in _flatten
result = _eval_expr(data, ctxt, vars)
File '/home/atos/pyenv/lib/python2.6/site-packages/genshi/template/base.py', line 277 in _eval_expr
retval = expr.evaluate(ctxt)
File '/home/atos/pyenv/lib/python2.6/site-packages/genshi/template/eval.py', line 178 in evaluate
return eval(self.code, _globals, {'__data__': data})
File '/home/atos/pyenv/src/ckan/ckan/templates/_util.html', line 63 in <Expression u"h.snippet('snippets/package_list.html', packages=packages)">
${h.snippet('snippets/package_list.html', packages=packages)}
File '/home/atos/pyenv/src/ckan/ckan/lib/helpers.py', line 767 in snippet
return base.render_snippet(template_name, **kw)
File '/home/atos/pyenv/src/ckan/ckan/lib/base.py', line 58 in render_snippet
output = render(template_name, extra_vars=kw, cache_force=cache_force)
File '/home/atos/pyenv/src/ckan/ckan/lib/base.py', line 145 in render
return cached_template(template_name, render_template, loader_class=loader_class)
File '/usr/lib/pymodules/python2.6/pylons/templating.py', line 249 in cached_template
return render_func()
File '/home/atos/pyenv/src/ckan/ckan/lib/base.py', line 99 in render_template
return literal(stream.render(method=method, encoding=None, strip_whitespace=True))
File '/home/atos/pyenv/lib/python2.6/site-packages/genshi/core.py', line 183 in render
return encode(generator, method=method, encoding=encoding, out=out)
File '/home/atos/pyenv/lib/python2.6/site-packages/genshi/output.py', line 57 in encode
return _encode(''.join(list(iterator)))
File '/home/atos/pyenv/lib/python2.6/site-packages/genshi/output.py', line 339 in __call__
for kind, data, pos in stream:
File '/home/atos/pyenv/lib/python2.6/site-packages/genshi/output.py', line 670 in __call__
for kind, data, pos in stream:
File '/home/atos/pyenv/lib/python2.6/site-packages/genshi/output.py', line 771 in __call__
for kind, data, pos in chain(stream, [(None, None, None)]):
File '/home/atos/pyenv/lib/python2.6/site-packages/genshi/output.py', line 586 in __call__
for ev in stream:
File '/home/atos/pyenv/lib/python2.6/site-packages/genshi/core.py', line 288 in _ensure
for event in stream:
File '/home/atos/pyenv/lib/python2.6/site-packages/genshi/template/base.py', line 605 in _include
for event in stream:
File '/home/atos/pyenv/lib/python2.6/site-packages/genshi/template/markup.py', line 327 in _match
for event in stream:
File '/home/atos/pyenv/lib/python2.6/site-packages/genshi/template/base.py', line 585 in _flatten
stream = _apply_directives(data[1], data[0], ctxt, vars)
File '/home/atos/pyenv/lib/python2.6/site-packages/genshi/template/base.py', line 262 in _apply_directives
stream = directives[0](iter(stream), directives[1:], ctxt, **vars)
File '/home/atos/pyenv/lib/python2.6/site-packages/genshi/template/directives.py', line 400 in __call__
value = _eval_expr(self.expr, ctxt, vars)
File '/home/atos/pyenv/lib/python2.6/site-packages/genshi/template/base.py', line 277 in _eval_expr
retval = expr.evaluate(ctxt)
File '/home/atos/pyenv/lib/python2.6/site-packages/genshi/template/eval.py', line 178 in evaluate
return eval(self.code, _globals, {'__data__': data})
File '/home/atos/pyenv/src/ckan/ckan/templates/snippets/package_list.html', line 18 in <Expression u'package.resources'>
<py:if test="package.resources">
File '/home/atos/pyenv/lib/python2.6/site-packages/genshi/template/eval.py', line 324 in lookup_attr
val = cls.undefined(key, owner=obj)
File '/home/atos/pyenv/lib/python2.6/site-packages/genshi/template/eval.py', line 410 in undefined
raise UndefinedError(key, owner=owner)
UndefinedError: {u'maintainer': u'', u'name': u'test2', 'isopen': False, u'author': u'', u'author_email': u'', u'notes': u'', u'title': u'test2', u'maintainer_email': u'', u'url': u'', u'state': u'active', u'version': u'', 'groups': [{u'title': u'Atos', u'capacity': u'public', u'id': u'b917850d-53fa-4c8c-a0df-2b4ff239c9e7', u'name': u'atos'}], u'license_id': u'', u'id': u'1881914f-995d-4588-8521-fc32eec25aa5', 'extras': [{u'value': '"oceane"', u'key': u'dct:contributor', '__extras': {u'revision_id': u'e69b657b-6282-42df-94bd-5e8b8274b6c7', u'package_id': u'1881914f-995d-4588-8521-fc32eec25aa5'}}, {u'value': '""', u'key': u'dct:creator', '__extras': {u'revision_id': u'e69b657b-6282-42df-94bd-5e8b8274b6c7', u'package_id': u'1881914f-995d-4588-8521-fc32eec25aa5'}}, {u'value': '""', u'key': u'dct:publisher', '__extras': {u'revision_id': u'e69b657b-6282-42df-94bd-5e8b8274b6c7', u'package_id': u'1881914f-995d-4588-8521-fc32eec25aa5'}}, {u'value': '""', u'key': u'dct:temporal', '__extras': {u'package_id': u'1881914f-995d-4588-8521-fc32eec25aa5', u'revision_id': u'e69b657b-6282-42df-94bd-5e8b8274b6c7'}}, {u'value': '""', u'key': u'dcterms:references', '__extras': {u'revision_id': u'e69b657b-6282-42df-94bd-5e8b8274b6c7', u'package_id': u'1881914f-995d-4588-8521-fc32eec25aa5'}}, {u'value': '""', u'key': u'maj', '__extras': {u'package_id': u'1881914f-995d-4588-8521-fc32eec25aa5', u'revision_id': u'e69b657b-6282-42df-94bd-5e8b8274b6c7'}}]} has no member named "resources"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment