[ckan-dev] Most Recent Dataset
Stéphane Guidoin
stephane at opennorth.ca
Mon May 5 14:54:39 UTC 2014
I might be wrong but the query returns a structure that is more than just
the packages. The packages is a substructure named "results".
snippets/package_list.html expects to receive only the results, not the
full result of the query. Passing the invalid structure might trigger the
error message you received.
Stéphane
On Mon, May 5, 2014 at 5:10 AM, Fabrizio Fornari <ckanappoggio at gmail.com>wrote:
> basically, how can I pass argument to package_list.html? It seems that
> this way doesn't work. In snippets/package_list.html it says that the
> format should be:
>
> {% snippet 'snippets/package_list.html', packages=c.datasets %}
>
> and that "packages is a list of packages to display."
>
> It seems to me that I should do something like:
> plugins.toolkit.render_snippet('snippets/package_list.html',
> packages=myListOfPackages)
>
> but it still gives me Error - <type 'exceptions.ValueError'>: invalid
> literal for int() with base 10: ''; what should I assign to
> myListOfPackages?
>
>
>
> On Sat, May 3, 2014 at 1:50 PM, Fabrizio Fornari <ckanappoggio at gmail.com>wrote:
>
>> Hi guys,
>>
>> I am running ckan 2.2 and I was trying to display in the home page of
>> ckan a list of the most recent datasets. I found an example of this at
>> here<https://github.com/anibalpacheco/ckanext-agesic/blob/9addb1fc964637997f18780a9a6f10db6814f0a2/ckanext/agesic/plugin.py> then
>> I tried to modify one of my extension to add this feature.
>> The problem is that I get the error: Error - <type
>> 'exceptions.ValueError'>: invalid literal for int() with base 10: '' and I
>> don't know how to solve it.
>>
>> I added the following lines to the file plugin.py of my extension:
>>
>> from ckan.model import Session, Package
>>
>> plugins.implements(plugins.ITemplateHelpers)
>>
>> def most_recent(self):
>> """
>> Most recent datasets, based on the metadata_modified attr.
>> Return HTML that can be rendered in the templates calling
>> {{ h.most_recent() }}
>> """
>> packages = []
>> for package in Session.query(Package).filter(Package.state ==
>> 'active',
>> Package.private == False).order_by(
>> Package.metadata_modified.desc()).limit(4):
>> packages.append(package.as_dict())
>> data = {'packages': packages, 'list_class': "unstyled
>> dataset-list",'item_class': "dataset-item module-content", 'truncate': 120,
>> 'hide_resources': True}
>> return plugins.toolkit.render_snippet('snippets/package_list.html',
>> data)
>>
>> def get_helpers(self):
>> return {'most_recent': self.most_recent}
>>
>> Then in a html file I used {{ h.most_recent() }} to execute the function.
>> The problem seems to be with the row "return
>> plugins.toolkit.render_snippet('snippets/package_list.html', data)" because
>> I printed the variable "data" and It displays the correct values but it
>> gives me Error - <type 'exceptions.ValueError'>: invalid literal for int()
>> with base 10: ''.
>>
>> Do you know what may cause this error?
>>
>>
>
> _______________________________________________
> ckan-dev mailing list
> ckan-dev at lists.okfn.org
> https://lists.okfn.org/mailman/listinfo/ckan-dev
> Unsubscribe: https://lists.okfn.org/mailman/options/ckan-dev
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.okfn.org/pipermail/ckan-dev/attachments/20140505/a942535f/attachment-0003.html>
More information about the ckan-dev
mailing list