{22} Trac tickets (2647 matches)
Results (2001 - 2100 of 2647)
Id | Type | Owner | Reporter | Milestone | Status | Resolution | Summary | Description | Posixtime | Modifiedtime | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
#2422 | defect | kindly | ross | closed | invalid | Paster rights command appears broken |
Reported in IRC by @floapps In previous ckan versions i could use paster commands to remove reader rights from visitors on all packages and this would then throw the user to login screen when trying to see a dataset but, when i did this in ckan 1.7, i could still see all datasets as a visitor Using http://docs.ckan.org/en/latest/authorization.html#permissions-publisher-mode
Also has an empty list of roles in config for default visitor roles I tested on my local install and could replicate with that command doing nothing. Neither affects existing or newly created datasets. |
1337937993000000 | 1337945204000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#2471 | enhancement | johnmartin | ross | closed | invalid | ckan.org bug |
If you go to http://ckan.org/features/geospatial/ there is a problem with the pop up tag shown (and zoomed in) - missing status and description. |
1338229749000000 | 1352206679000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#2512 | enhancement | toby | ross | ckan-sprint-2012-06-25 | closed | fixed | Bad link on demo site. |
On the group read page http://s031.okserver.org:2375/group/nhs the add dataset button goes to the edit group page instead of the add dataset url. |
1339518597000000 | 1339576809000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#2513 | enhancement | ross | ckan-backlog | assigned | Dataproxy should not default to utf8 |
Unless explicitly told by the source web server the dataproxy should not assume that the content it has can be encoded as UTF-8. Even though the chars from 128 - 255 overlap an attempt to decode some byte array as utf8 will fail whenever a latin1 char whose bitpattern has the MSB set. This will mean that the UTF8Recoder can be more rigid in its acceptance of data, Postel aside. |
1339575820000000 | 1346669646000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#2519 | enhancement | ross | ross | ckan-v1.9 | closed | fixed | Dataproxy (converters) enhancement |
Whilst the error messages returned from the dataproxy are informative, they aren't particularly human readable. It isn't clear to the user whether they should retry, or whether the format of their data is causing the problem etc... Would be lovely if the error messages returned contained a human readable version of the error. |
1339584955000000 | 1345565215000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#2545 | requirement | ross | ross | opendatasuite 1 | closed | fixed | Need to build DataGM site based on ODS |
RequirementsWe need to clone the demo ODS site for DataGM as soon as we have a mostly working demo so that the DataGM team can try it out and comment/feedback on functionality. InterfaceNone User StoriesNone Tasks[ ] Deploy demo DataGM site. Estimates |
1340016640000000 | 1344337973000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#2546 | requirement | ross | ckan-backlog | assigned | ODS Managing homepage content |
RequirementsRequire the ability for users to control some level of content that is visible on the home page of their ODS installation. This may be through RSS/Atom feeds (see #2234) or another mechanism but should result in admins being able to change blocks of text on their homepage. This should not be configuration, but accessible through WUI. InterfaceNone User Stories
Tasks[ ] Analysis Estimates |
1340016842000000 | 1346663437000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#2547 | enhancement | shevski | ross | opendatasuite 2 | assigned | ODS Initial data sets |
RequirementsThe ODS demo site will need data adding, initially as fixtures but it would also be useful if we started evaluating datasets that we can ship with ODS installations (at least in the UK) from places such as DGU and ONS. May wish to create a ticket for making sure the datasets within the system are reset every X hours. Perhaps. InterfaceNone User Stories
Tasks[ ] Identify relevant sources for datasets [ ] Pick datasets [ ] Set them up for import Estimates |
1340016906000000 | 1340705614000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#2548 | enhancement | kindly | ross | datahub-july | assigned | Object ownership for groups/package |
RequirementsWe need to be able to easily determine who the owner of a dataset or group is. Datasets and Groups should have an Owner, who may change over time but is a specific user within the CKAN instance. It should be easy for CKAN components to determine the user and for the initial version we should ignore the can of worms labelled 'ownership transfer'. At this point migration is likely to be the biggest issue, and would suggest that it is acceptable that the last user to edit a dataset be set as the current owner. More tickets should arise as a result of this work where we may be able to optimise some queries to use the new feature. InterfaceNone User StoriesNone Tasks[ ] Tests [ ] Migration [ ] Code/Schema? changes [ ] Documentation Estimates |
1340017331000000 | 1340706539000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#2549 | enhancement | ross | ross | ckan 2.0 | closed | wontfix | Merge organization logic into groups |
RequirementsMerge the organizations plugin into the core groups functionality. Most of this is templating and a small number of changes to the group controller. Investigate the possibility of removing the Membership model and using FKs. InterfaceThis is likely to consist of:
User StoriesNone Tasks[ ] Code
[ ] Documentation Estimates |
1340017421000000 | 1350562037000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#2550 | enhancement | icmurray | ross | datahub-july | assigned | User types |
RequirementsIn the data hub plugin we require the ability to differentiate users between those that have paid for a service, and those that haven't. The distinction isn't boolean as there may be levels of service for paid users, so it may be that we need a 'type' of user where there are various grades of 'paid' which are likely to be strings (specific to the data hub). Required interfaceOnce changes have been made to the user schema, for a given user we want to be able to:
Care should be taken to ensure that the 'paid' status of the user cannot be set through the API and only by the datahub plugin. User StoriesUser stories related to the management, setting and changing of a user's payment level, as well as historical information on payments should be done as part of the work that includes actually allowing purchases. For now it is adequate that we can manually control these things through paster commands. Payments types should be linear as I don't believe for this type of service a pick-and-mix modular model would work well. Organizations will inherit the payment level of their owner, so currently there is no requirement for it to affect organizations at all.
Tasks[x] Tests [x] Plugin based migration [x] Code
[x] Documentation Estimates |
1340017590000000 | 1346669497000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#2551 | enhancement | johnglover | ross | datahub-oct | closed | fixed | Feature metrics |
RequirementsWould be useful if we could extend the Google Analytics extension to push track events to GA so that we can determine how the system is being used, and where we can optimise the workflow. Assuming it isn't configured to be off, track events should be added to some key action buttons so that the information on what users are doing is logged for analysis. InterfaceThis could possibly just be a list of JS calls to $('x').click(_gaq.push('track'...)) User Stories
For which metrics, as many of the following as possible that are achievable without changing the templates. I think for now it is enough to just record counts of these pages/actions.
Tasks[ ] Code/Config? changes [ ] Documentation Estimates |
1340017689000000 | 1343042712000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#2552 | enhancement | ross | ckan-future | assigned | Controlling access to features |
RequirementsTo provide a freemium service it is necessary to be able to provide differing levels of functionality based on the type of user (see #2550). These levels can be specific to the data hub but may require overriding functionality from core to provide these checks. Initial implementation should focus on limiting access to datastore disk space. InterfaceThese changes are currently only for the data hub and should be kept as much as possible within the data hub extension. User Stories
Tasks[ ] Clarification of requirements/analysis [ ] Tests [ ] Code
[ ] Documentation Estimates |
1340018770000000 | 1346669544000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#2554 | enhancement | ross | ckan-backlog | assigned | Research Virtuoso cartridges |
Look into writing a cartridge for importing CKAN data into a Virtuoso quadstore http://virtuoso.openlinksw.com/dataspace/dav/wiki/Main/VirtSponger#How Does It Work? |
1340026645000000 | 1346670433000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#2577 | enhancement | ross | ross | ckan-v1.9 | closed | fixed | Dataproxy raises 500 when it can't get CSV |
When given a url parameter for a file it cannot fetch, the app raises a 500 instead of something useful. Better error reporting in the JSON would be useful |
1340207124000000 | 1346669735000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#2590 | enhancement | shevski | ross | ckan-backlog | assigned | Publisher dashboard |
Need proper user stories but ... Publisher admins/editors may need a more useful group read page showing things like:
|
1340618617000000 | 1346663416000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#2605 | enhancement | ross | ross | ckan-v1.8 | closed | fixed | Problem with user.get_groups |
From DR at DGU Basically get_groups() appears to cache its results, but this falls down when subsequent calls are in a different session. We get this when saving a dataset. get_groups() first gets called in the controller when it is trying to work out what permissions the user has. It later gets called, and by this time c.userobj is detached, so get_groups() fails. I'm working around this by refreshing c.userobj (from c.user) before calling get_groups(), but I wonder if the get_groups caching could detect the detached session and bypass the cache in this case? diff at https://gist.github.com/3003117 |
1340793006000000 | 1343127369000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#2649 | enhancement | ross | ross | ckan-v1.8 | closed | fixed | Description on resources not rendered as markdown |
When a resource doesn't have a description, it is rendered as markdown from the description of the dataset. If the resource does have a description it isn't rendered as markdown .. |
1341923135000000 | 1342084280000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#2650 | enhancement | ross | ross | ckan-v1.8 | closed | fixed | Description on resources not rendered as markdown |
When a resource doesn't have a description, it is rendered as markdown from the description of the dataset. If the resource does have a description it isn't rendered as markdown .. |
1341923137000000 | 1341943716000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#2651 | enhancement | icmurray | ross | ckan-v1.8 | closed | fixed | Check support for TSV which doesn't appear to work well. |
TSV support doesn't seem to work very well, may be the mimetype ( text/tab-separated-values ) |
1341923318000000 | 1343209784000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#2654 | enhancement | ross | ckan 2.0 | assigned | UI support for ordering groups on group_read page |
The group_index page has no support in WUI for ordering the groups displayed. Should allow sorting by name Add support for this for datahub now, and discuss for new 1.9 UI |
1341943891000000 | 1346662156000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#2688 | enhancement | ross | new | Allow ordering of groups in WUI |
Currently the group_index page just shows the entire list of groups, forcing the ordering to be by name. It would be better if it could be sortable by name (or reversed) or by package_count (or reversed) |
1342520875000000 | 1342520875000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#2732 | enhancement | ross | ckan-backlog | assigned | New file upload functionality |
We should simplify upload and storage of files, initially only to local storage with archiver eventually being fixed to archive data externally. WIP pad is http://ckan.okfnpad.org/uploads Simplifying uploads Currently uploads are too painful/difficult/fiddly to use and/or configure. We want to simplify uploads so that they are done directly to the CKAN server, without support for remote services (S3 etc) and/or the dependencies it introduces. We want to fix:
File uploads Things file upload should do:
Can we do the upload asynchronously and then associate the uploaded key with the resource before the save ? What happens if the user tries to submit before asymc upload finishes ? Should we delay them? The upload workflow should look like...
This should enable:
File storage File storage should be local to the CKAN install, and not a remote service. Any archiving to remove storage providers should be outside of the main request. File storage should:
Somewhere in the DB we should store ...
Generating paths should try and separate the files, perhaps based on username of the owner, or some other mechanism to avoid a single folder full of files. Notifications We need to make sure that it is possible to notify other components within the system that an upload has taken place, or at least make it easy for them to be notified. The primary use case for this is to notify the component that will translate/upload certain formats to the data store. We could do this based on the post-upload update to the file model (i.e. when we record the total received size of the file). |
1343058789000000 | 1346663270000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#2736 | enhancement | ross | ross | ckan-v1.9 | closed | wontfix | Archiver fixes |
We need to check the archiver to make sure it works as we would expect after the changes in #2732:
Maybe this could/should be implemented as a service rather than a celery task? |
1343121237000000 | 1346670097000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#2752 | enhancement | toby | ross | demo phase 2 | closed | fixed | Navigation highlight missing |
When navigating to http://s031.okserver.org:2375/group on the demo server, the Group link in the navbar is not highlighted in the same was as the other links are when visiting those pages. |
1343216582000000 | 1343222618000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#2793 | enhancement | toby | ross | demo phase 3 | closed | fixed | Markdown of resource page not rendered as markdown |
As per #2650 (on master/1.8 now) If the resource has a description it isn't rendered as markdown .. |
1343896663000000 | 1343897811000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#2796 | enhancement | mark.wainwright | ross | new | Need a datahub one-pager |
A one-pager explaining what the datahub is and with howto/examples for new users. This would make it much easier to explain the value in using the datahub for storing data. |
1343924916000000 | 1345129495000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#2851 | enhancement | ross | new | Preview of PDF tries to connect to datastore |
e.g. http://datahub.io/dataset/ccc-gistemp/resource/80ebdbd6-d91b-4fef-9db4-d3dfbd7e868e CKAN attempts to render the PDF as a datastore tabular date even though the mimetype of the PDF is correctly specified. |
1345032766000000 | 1345032766000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#2865 | enhancement | ross | ross | closed | fixed | 1.8 unicode error |
URL: http://thedatahub.org/el/tag/jutatt%C3%A1sok Module weberror.errormiddleware:162 in call << traceback_supplement = Supplement, self, environ
Module beaker.middleware:73 in call << self.cache_manager)
Module beaker.middleware:155 in call << headers.append(('Set-cookie', cookie))
Module routes.middleware:131 in call << r'\1', oldpath)
Module pylons.wsgiapp:125 in call <<
Module pylons.wsgiapp:324 in dispatch << if log_debug:
Module ckan.lib.base:239 in call << try:
Module pylons.controllers.core:221 in call << return response(environ, self.start_response)
Module pylons.controllers.core:172 in _dispatch_call << req.environpylons.action_method? = func
Module pylons.controllers.core:107 in _inspect_call << func.name, args)
Module pylons.controllers.core:60 in _perform_call << """Hide the traceback for everything above this method"""
Module ckan.controllers.template:30 in view << """
Module ckan.lib.base:153 in render << try:
Module pylons.templating:249 in cached_template << return content
Module ckan.lib.base:95 in render_template << template = globsapp_globals?.genshi_loader.load(template_name,
Module genshi.template.loader:223 in load << loadfunc = directory(loadfunc)
Module genshi.template.loader:286 in _load_from_directory << def _load_from_directory(filename):
UnicodeEncodeError?: 'ascii' codec can't encode character u'\xe1' in position 73: ordinal not in range(128) CGI Variables CKAN_CURRENT_URL '/el/tag/jutatt%C3%A1sok' CKAN_LANG 'en' CKAN_LANG_IS_DEFAULT True CKAN_PAGE_CACHABLE True CONTENT_TYPE '; charset=utf-8' DOCUMENT_ROOT '/etc/apache2/htdocs' GATEWAY_INTERFACE 'CGI/1.1' HTTP_ACCEPT '*/*' HTTP_ACCEPT_ENCODING 'gzip,deflate' HTTP_CONNECTION 'close' HTTP_FROM 'googlebot(at)googlebot.com' HTTP_HOST 'thedatahub.org' HTTP_USER_AGENT 'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)' PATH_INFO '/el/tag/jutatt\xc3\xa1sok' PATH_TRANSLATED '/etc/ckan/datahub/apache.wsgi/el/tag/jutatt\xc3\xa1sok' REMOTE_ADDR '127.0.0.1' REMOTE_PORT '49520' REQUEST_METHOD 'GET' REQUEST_URI '/el/tag/jutatt%c3%a1sok' SCRIPT_FILENAME '/etc/ckan/datahub/apache.wsgi' SERVER_ADDR '127.0.0.1' SERVER_ADMIN '[no address given]' SERVER_NAME 'thedatahub.org' SERVER_PORT '80' SERVER_PROTOCOL 'HTTP/1.0' SERVER_SIGNATURE '<address>Apache/2.2.22 (Ubuntu) Server at thedatahub.org Port 80</address>\n' SERVER_SOFTWARE 'Apache/2.2.22 (Ubuntu)' WSGI Variables application <beaker.middleware.CacheMiddleware? object at 0x7f5312a51650> beaker.cache <beaker.cache.CacheManager? object at 0x7f5312a51790> beaker.get_session <bound method SessionMiddleware?._get_session of <beaker.middleware.SessionMiddleware? object at 0x7f5312a516d0>> beaker.session {'_accessed_time': 1345113298.778472, '_creation_time': 1345113298.778472} mod_wsgi.application_group 'ckan.net|' mod_wsgi.callable_object 'application' mod_wsgi.handler_script mod_wsgi.input_chunked '0' mod_wsgi.listener_host mod_wsgi.listener_port '8080' mod_wsgi.process_group 'datahub' mod_wsgi.request_handler 'wsgi-script' mod_wsgi.script_reloading '1' mod_wsgi.version (3, 3) paste.cookies (<SimpleCookie: >, ) paste.registry <paste.registry.Registry object at 0x7f5309add610> paste.throw_errors True pylons.action_method <bound method TemplateController?.view of <ckan.controllers.template.TemplateController? object at 0x7f52b0ea2d10>> pylons.controller <ckan.controllers.template.TemplateController? object at 0x7f52b0ea2d10> pylons.environ_config {'session': 'beaker.session', 'cache': 'beaker.cache'} pylons.pylons <pylons.util.PylonsContext? object at 0x7f52b0ea2b90> pylons.routes_dict {'url': u'el/tag/jutatt\xe1sok', 'action': u'view', 'controller': u'template'} repoze.who.logger <logging.Logger object at 0x7f53127b2b50> repoze.who.plugins {'openid': <OpenIdIdentificationPlugin? 139994769488336>, 'friendlyform': <FriendlyFormPlugin? 139994769488528>, 'ckan.lib.authenticator:UsernamePasswordAuthenticator': <ckan.lib.authenticator.UsernamePasswordAuthenticator? object at 0x7f5312d893d0>, 'auth_tkt': <AuthTktCookiePlugin? 139994771858704>, 'ckan.lib.authenticator:OpenIDAuthenticator': <ckan.lib.authenticator.OpenIDAuthenticator object at 0x7f5312d89350>} routes.route <routes.route.Route object at 0x7f531296ea10> routes.url <routes.util.URLGenerator object at 0x7f5309add810> webob._parsed_query_vars (GET([]), ) webob.adhoc_attrs {'language': 'en-us'} wsgi process 'Multi process AND threads (?)' wsgi.file_wrapper <built-in method file_wrapper of mod_wsgi.Adapter object at 0x7f52d4004990> wsgi.version (1, 1) wsgiorg.routing_args (<routes.util.URLGenerator object at 0x7f5309add810>, {'url': u'el/tag/jutatt\xe1sok', 'action': u'view', 'controller': u'template'}) |
1345114613000000 | 1346670331000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#2866 | enhancement | ross | ross | closed | fixed | 1.8 template error |
URL: http://thedatahub.org/user/reset/3086e91c-fe09-4a98-92e1-19de67a9ac9d?key%3Db4c2d03fa8 Module weberror.errormiddleware:162 in call << traceback_supplement = Supplement, self, environ
Module beaker.middleware:73 in call << self.cache_manager)
Module beaker.middleware:155 in call << headers.append(('Set-cookie', cookie))
Module routes.middleware:131 in call << r'\1', oldpath)
Module pylons.wsgiapp:125 in call <<
Module pylons.wsgiapp:324 in dispatch << if log_debug:
Module ckan.lib.base:239 in call << try:
Module pylons.controllers.core:221 in call << return response(environ, self.start_response)
Module pylons.controllers.core:172 in _dispatch_call << req.environpylons.action_method? = func
Module pylons.controllers.core:107 in _inspect_call << func.name, args)
Module pylons.controllers.core:60 in _perform_call << """Hide the traceback for everything above this method"""
Module ckan.controllers.user:409 in perform_reset << c.reset_key = request.params.get('key')
Module ckan.lib.mailer:100 in verify_reset_link << if not user.reset_key or len(user.reset_key) < 5:
AttributeError?: 'NoneType?' object has no attribute 'strip' CGI Variables CKAN_CURRENT_URL '/user/reset/3086e91c-fe09-4a98-92e1-19de67a9ac9d?key%253Db4c2d03fa8' CKAN_LANG 'it' CONTENT_TYPE '; charset=utf-8' DOCUMENT_ROOT '/etc/apache2/htdocs' GATEWAY_INTERFACE 'CGI/1.1' HTTP_ACCEPT '*/*' HTTP_ACCEPT_ENCODING 'gzip,deflate' HTTP_CONNECTION 'close' HTTP_FROM 'googlebot(at)googlebot.com' HTTP_HOST 'thedatahub.org' HTTP_USER_AGENT 'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)' PATH_INFO '/user/reset/3086e91c-fe09-4a98-92e1-19de67a9ac9d' PATH_TRANSLATED '/etc/ckan/datahub/apache.wsgi/it/user/reset/3086e91c-fe09-4a98-92e1-19de67a9ac9d' QUERY_STRING 'key%3Db4c2d03fa8' REMOTE_ADDR '127.0.0.1' REMOTE_PORT '54634' REQUEST_METHOD 'GET' REQUEST_URI '/it/user/reset/3086e91c-fe09-4a98-92e1-19de67a9ac9d?key%3Db4c2d03fa8' SCRIPT_FILENAME '/etc/ckan/datahub/apache.wsgi' SERVER_ADDR '127.0.0.1' SERVER_ADMIN '[no address given]' SERVER_NAME 'thedatahub.org' SERVER_PORT '80' SERVER_PROTOCOL 'HTTP/1.0' SERVER_SIGNATURE '<address>Apache/2.2.22 (Ubuntu) Server at thedatahub.org Port 80</address>\n' SERVER_SOFTWARE 'Apache/2.2.22 (Ubuntu)' WSGI Variables application <beaker.middleware.CacheMiddleware? object at 0x7f5312a51650> beaker.cache <beaker.cache.CacheManager? object at 0x7f5312a51790> beaker.get_session <bound method SessionMiddleware?._get_session of <beaker.middleware.SessionMiddleware? object at 0x7f5312a516d0>> beaker.session {'_accessed_time': 1345066159.520708, '_creation_time': 1345066159.520708} mod_wsgi.application_group 'ckan.net|' mod_wsgi.callable_object 'application' mod_wsgi.handler_script mod_wsgi.input_chunked '0' mod_wsgi.listener_host mod_wsgi.listener_port '8080' mod_wsgi.process_group 'datahub' mod_wsgi.request_handler 'wsgi-script' mod_wsgi.script_reloading '1' mod_wsgi.version (3, 3) paste.cookies (<SimpleCookie: >, ) paste.parsed_dict_querystring (MultiDict?([('key=b4c2d03fa8', )]), 'key%3Db4c2d03fa8') paste.parsed_querystring ([('key=b4c2d03fa8', )], 'key%3Db4c2d03fa8') paste.registry <paste.registry.Registry object at 0x7f52eba637d0> paste.throw_errors True pylons.action_method <bound method UserController?.perform_reset of <ckan.controllers.user.UserController? object at 0x7f52e49f7a50>> pylons.controller <ckan.controllers.user.UserController? object at 0x7f52e49f7a50> pylons.environ_config {'session': 'beaker.session', 'cache': 'beaker.cache'} pylons.pylons <pylons.util.PylonsContext? object at 0x7f52f5649ad0> pylons.routes_dict {'action': u'perform_reset', 'controller': u'user', 'id': u'3086e91c-fe09-4a98-92e1-19de67a9ac9d'} repoze.who.logger <logging.Logger object at 0x7f53127b2b50> repoze.who.plugins {'openid': <OpenIdIdentificationPlugin? 139994769488336>, 'friendlyform': <FriendlyFormPlugin? 139994769488528>, 'ckan.lib.authenticator:UsernamePasswordAuthenticator': <ckan.lib.authenticator.UsernamePasswordAuthenticator? object at 0x7f5312d893d0>, 'auth_tkt': <AuthTktCookiePlugin? 139994771858704>, 'ckan.lib.authenticator:OpenIDAuthenticator': <ckan.lib.authenticator.OpenIDAuthenticator object at 0x7f5312d89350>} routes.route <routes.route.Route object at 0x7f5312961ad0> routes.url <routes.util.URLGenerator object at 0x7f52de7f6390> webob._parsed_query_vars (GET([('key=b4c2d03fa8', )]), 'key%3Db4c2d03fa8') webob.adhoc_attrs {'language': 'en-us'} wsgi process 'Multi process AND threads (?)' wsgi.file_wrapper <built-in method file_wrapper of mod_wsgi.Adapter object at 0x7f52fc4f1a08> wsgi.version (1, 1) wsgiorg.routing_args (<routes.util.URLGenerator object at 0x7f52de7f6390>, {'action': u'perform_reset', 'controller': u'user', 'id': u'3086e91c-fe09-4a98-92e1-19de67a9ac9d'}) |
1345114641000000 | 1346670324000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#2867 | enhancement | ross | new | 1.8 url_for error |
From: <thedatahub.org@…> Date: Thu, Aug 16, 2012 at 10:30 AM Subject: WebApp? Error: <class 'routes.util.GenerationException?'>: url_for can only return a string, got unicode instead: https://ckannet-storage.commondatastorage.googleapis.com/file/fd3e00d9-eb0d-479b-8303-38909e5400ca?Signature=cmuU3CzRHQ86F3aZ0gljxv%2B3IqQ%3D&Expires=1345109432&AWSAccessKeyId=GOOGC6OU3AYPNY47B66M&x-goog-meta-uploaded-by=d5c8ed25-70de-4035-b29d-ddbe363913c6 To: ckan-sysadmin@…, kindly@… URL: http://ckan.net/storage/f/file/fd3e00d9-eb0d-479b-8303-38909e5400ca Module weberror.errormiddleware:162 in call << traceback_supplement = Supplement, self, environ
Module beaker.middleware:73 in call << self.cache_manager)
Module beaker.middleware:155 in call << headers.append(('Set-cookie', cookie))
Module routes.middleware:131 in call << r'\1', oldpath)
Module pylons.wsgiapp:125 in call <<
Module pylons.wsgiapp:324 in dispatch << if log_debug:
Module ckan.lib.base:239 in call << try:
Module pylons.controllers.core:221 in call << return response(environ, self.start_response)
Module pylons.controllers.core:172 in _dispatch_call << req.environpylons.action_method? = func
Module pylons.controllers.core:107 in _inspect_call << func.name, args)
Module pylons.controllers.core:60 in _perform_call << """Hide the traceback for everything above this method"""
Module ckan.controllers.storage:190 in file << return fapp(request.environ, self.start_response)
Module ckan.lib.helpers:57 in redirect_to << if are_there_flash_messages():
Module ckan.lib.helpers:79 in url_for << # fix ver to include the slash
Module routes.util:265 in url_for << if not isinstance(url, str) and url is not None:
GenerationException?: url_for can only return a string, got unicode instead: https://ckannet-storage.commondatastorage.googleapis.com/file/fd3e00d9-eb0d-479b-8303-38909e5400ca?Signature=cmuU3CzRHQ86F3aZ0gljxv%2B3IqQ%3D&Expires=1345109432&AWSAccessKeyId=GOOGC6OU3AYPNY47B66M&x-goog-meta-uploaded-by=d5c8ed25-70de-4035-b29d-ddbe363913c6 CGI Variables CKAN_CURRENT_URL '/storage/f/file/fd3e00d9-eb0d-479b-8303-38909e5400ca' CKAN_LANG 'en' CKAN_LANG_IS_DEFAULT True CONTENT_TYPE '; charset=utf-8' DOCUMENT_ROOT '/etc/apache2/htdocs' GATEWAY_INTERFACE 'CGI/1.1' HTTP_ACCEPT '*/*' HTTP_ACCEPT_CHARSET 'utf-8;q=0.7,iso-8859-1;q=0.2,*;q=0.1' HTTP_CONNECTION 'close' HTTP_HOST 'ckan.net' HTTP_USER_AGENT 'Mozilla/5.0 (compatible; Ezooms/1.0; ezooms.bot@…)' PATH_INFO '/storage/f/file/fd3e00d9-eb0d-479b-8303-38909e5400ca' PATH_TRANSLATED '/etc/ckan/datahub/apache.wsgi/storage/f/file/fd3e00d9-eb0d-479b-8303-38909e5400ca' REMOTE_ADDR '127.0.0.1' REMOTE_PORT '37236' REQUEST_METHOD 'GET' REQUEST_URI '/storage/f/file/fd3e00d9-eb0d-479b-8303-38909e5400ca' SCRIPT_FILENAME '/etc/ckan/datahub/apache.wsgi' SERVER_ADDR '127.0.0.1' SERVER_ADMIN '[no address given]' SERVER_NAME 'ckan.net' SERVER_PORT '80' SERVER_PROTOCOL 'HTTP/1.0' SERVER_SIGNATURE '<address>Apache/2.2.22 (Ubuntu) Server at ckan.net Port 80</address>\n' SERVER_SOFTWARE 'Apache/2.2.22 (Ubuntu)' WSGI Variables application <beaker.middleware.CacheMiddleware? object at 0x7f5312a51650> beaker.cache <beaker.cache.CacheManager? object at 0x7f5312a51790> beaker.get_session <bound method SessionMiddleware?._get_session of <beaker.middleware.SessionMiddleware? object at 0x7f5312a516d0>> beaker.session {'_accessed_time': 1345109433.273328, '_creation_time': 1345109433.273328} mod_wsgi.application_group 'ckan.net|' mod_wsgi.callable_object 'application' mod_wsgi.handler_script mod_wsgi.input_chunked '0' mod_wsgi.listener_host mod_wsgi.listener_port '8080' mod_wsgi.process_group 'datahub' mod_wsgi.request_handler 'wsgi-script' mod_wsgi.script_reloading '1' mod_wsgi.version (3, 3) paste.cookies (<SimpleCookie: >, ) paste.registry <paste.registry.Registry object at 0x7f5303b05610> paste.throw_errors True pylons.action_method <bound method StorageController?.file of <ckan.controllers.storage.StorageController? object at 0x7f530891fa10>> pylons.controller <ckan.controllers.storage.StorageController? object at 0x7f530891fa10> pylons.environ_config {'session': 'beaker.session', 'cache': 'beaker.cache'} pylons.pylons <pylons.util.PylonsContext? object at 0x7f52f864f850> pylons.routes_dict {'action': u'file', 'controller': u'ckan.controllers.storage:StorageController', 'label': u'file/fd3e00d9-eb0d-479b-8303-38909e5400ca'} repoze.who.logger <logging.Logger object at 0x7f53127b2b50> repoze.who.plugins {'openid': <OpenIdIdentificationPlugin? 139994769488336>, 'friendlyform': <FriendlyFormPlugin? 139994769488528>, 'ckan.lib.authenticator:UsernamePasswordAuthenticator': <ckan.lib.authenticator.UsernamePasswordAuthenticator? object at 0x7f5312d893d0>, 'auth_tkt': <AuthTktCookiePlugin? 139994771858704>, 'ckan.lib.authenticator:OpenIDAuthenticator': <ckan.lib.authenticator.OpenIDAuthenticator object at 0x7f5312d89350>} routes.route <routes.route.Route object at 0x7f531296e690> routes.url <routes.util.URLGenerator object at 0x7f52f82cd450> webob._parsed_query_vars (GET([]), ) webob.adhoc_attrs {'language': 'en-us'} wsgi process 'Multi process AND threads (?)' wsgi.file_wrapper <built-in method file_wrapper of mod_wsgi.Adapter object at 0x7f52f5870cd8> wsgi.version (1, 1) wsgiorg.routing_args (<routes.util.URLGenerator object at 0x7f52f82cd450>, {'action': u'file', 'controller': u'ckan.controllers.storage:StorageController', 'label': u'file/fd3e00d9-eb0d-479b-8303-38909e5400ca'}) |
1345114669000000 | 1345128279000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#2868 | enhancement | ross | ross | closed | fixed | 1.8 SOLR error |
From: <thedatahub.org@…> Date: Wed, Aug 15, 2012 at 8:34 AM Subject: WebApp? Error: <class 'ckan.lib.search.common.SearchError?'>: SOLR returned an error running query: {'sort': 'metadata_modified desc', 'fq': u'groups:"welcome" capacity:"public" +site_id:"www.ckan.net" +state:active', 'facet.mincount': 1, 'rows': 21, 'facet.limit': '50', 'facet': 'true', 'q': '*:*', 'start': -20, 'wt': 'json', 'fl': 'id data_dict'} Error: "'start' parameter cannot be negative" To: ckan-sysadmin@…, kindly@… URL: http://thedatahub.org/feeds/group/welcome.atom?page=0 Module weberror.errormiddleware:162 in call << traceback_supplement = Supplement, self, environ
Module beaker.middleware:73 in call << self.cache_manager)
Module beaker.middleware:155 in call << headers.append(('Set-cookie', cookie))
Module routes.middleware:131 in call << r'\1', oldpath)
Module pylons.wsgiapp:125 in call <<
Module pylons.wsgiapp:324 in dispatch << if log_debug:
Module ckan.lib.base:239 in call << try:
Module pylons.controllers.core:221 in call << return response(environ, self.start_response)
Module pylons.controllers.core:172 in _dispatch_call << req.environpylons.action_method? = func
Module pylons.controllers.core:107 in _inspect_call << func.name, args)
Module pylons.controllers.core:60 in _perform_call << """Hide the traceback for everything above this method"""
Module ckan.controllers.feed:180 in group << data_dictfq? = 'groups:"%s"' % id
Module ckan.controllers.feed:57 in _package_search << # package_search action modifies the data_dict, so keep our copy intact.
Module ckan.logic.action.get:1130 in package_search << query = search.query_for(model.Package)
Module ckan.lib.search.query:350 in run << except SolrException?, e:
SearchError?: SOLR returned an error running query: {'sort': 'metadata_modified desc', 'fq': u'groups:"welcome" capacity:"public" +site_id:"www.ckan.net" +state:active', 'facet.mincount': 1, 'rows': 21, 'facet.limit': '50', 'facet': 'true', 'q': '*:*', 'start': -20, 'wt': 'json', 'fl': 'id data_dict'} Error: "'start' parameter cannot be negative" CGI Variables CKAN_CURRENT_URL '/feeds/group/welcome.atom?page%3D0' CKAN_LANG 'ja' CONTENT_TYPE '; charset=utf-8' DOCUMENT_ROOT '/etc/apache2/htdocs' GATEWAY_INTERFACE 'CGI/1.1' HTTP_ACCEPT '*/*' HTTP_ACCEPT_ENCODING 'gzip,deflate' HTTP_CONNECTION 'close' HTTP_FROM 'googlebot(at)googlebot.com' HTTP_HOST 'thedatahub.org' HTTP_USER_AGENT 'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)' PATH_INFO '/feeds/group/welcome.atom' PATH_TRANSLATED '/etc/ckan/datahub/apache.wsgi/ja/feeds/group/welcome.atom' QUERY_STRING 'page=0' REMOTE_ADDR '127.0.0.1' REMOTE_PORT '33139' REQUEST_METHOD 'GET' REQUEST_URI '/ja/feeds/group/welcome.atom?page=0' SCRIPT_FILENAME '/etc/ckan/datahub/apache.wsgi' SERVER_ADDR '127.0.0.1' SERVER_ADMIN '[no address given]' SERVER_NAME 'thedatahub.org' SERVER_PORT '80' SERVER_PROTOCOL 'HTTP/1.0' SERVER_SIGNATURE '<address>Apache/2.2.22 (Ubuntu) Server at thedatahub.org Port 80</address>\n' SERVER_SOFTWARE 'Apache/2.2.22 (Ubuntu)' WSGI Variables application <beaker.middleware.CacheMiddleware? object at 0x7f5312a51650> beaker.cache <beaker.cache.CacheManager? object at 0x7f5312a51790> beaker.get_session <bound method SessionMiddleware?._get_session of <beaker.middleware.SessionMiddleware? object at 0x7f5312a516d0>> beaker.session {'_accessed_time': 1345016040.884951, '_creation_time': 1345016040.884951} mod_wsgi.application_group 'ckan.net|' mod_wsgi.callable_object 'application' mod_wsgi.handler_script mod_wsgi.input_chunked '0' mod_wsgi.listener_host mod_wsgi.listener_port '8080' mod_wsgi.process_group 'datahub' mod_wsgi.request_handler 'wsgi-script' mod_wsgi.script_reloading '1' mod_wsgi.version (3, 3) paste.cookies (<SimpleCookie: >, ) paste.parsed_dict_querystring (MultiDict?([('page', '0')]), 'page=0') paste.parsed_querystring ([('page', '0')], 'page=0') paste.registry <paste.registry.Registry object at 0x7f5302eef7d0> paste.throw_errors True pylons.action_method <bound method FeedController?.group of <ckan.controllers.feed.FeedController? object at 0x7f52f0341750>> pylons.controller <ckan.controllers.feed.FeedController? object at 0x7f52f0341750> pylons.environ_config {'session': 'beaker.session', 'cache': 'beaker.cache'} pylons.pylons <pylons.util.PylonsContext? object at 0x7f52f0341450> pylons.routes_dict {'action': u'group', 'controller': u'feed', 'id': u'welcome'} repoze.who.logger <logging.Logger object at 0x7f53127b2b50> repoze.who.plugins {'openid': <OpenIdIdentificationPlugin? 139994769488336>, 'friendlyform': <FriendlyFormPlugin? 139994769488528>, 'ckan.lib.authenticator:UsernamePasswordAuthenticator': <ckan.lib.authenticator.UsernamePasswordAuthenticator? object at 0x7f5312d893d0>, 'auth_tkt': <AuthTktCookiePlugin? 139994771858704>, 'ckan.lib.authenticator:OpenIDAuthenticator': <ckan.lib.authenticator.OpenIDAuthenticator object at 0x7f5312d89350>} routes.route <routes.route.Route object at 0x7f5312961e90> routes.url <routes.util.URLGenerator object at 0x7f52f0341210> webob._parsed_query_vars (GET([('page', '0')]), 'page=0') webob.adhoc_attrs {'language': 'en-us'} wsgi process 'Multi process AND threads (?)' wsgi.file_wrapper <built-in method file_wrapper of mod_wsgi.Adapter object at 0x7f52ed4873f0> wsgi.version (1, 1) wsgiorg.routing_args (<routes.util.URLGenerator object at 0x7f52f0341210>, {'action': u'group', 'controller': u'feed', 'id': u'welcome'}) |
1345114696000000 | 1345124503000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#2870 | enhancement | seanh | ross | new | 1.8 tag_list not defined |
From: <thedatahub.org@…> Date: Thu, Aug 16, 2012 at 3:20 AM Subject: WebApp? Error: <class 'genshi.template.eval.UndefinedError?'>: "tag_list" not defined To: ckan-sysadmin@…, kindly@… URL: http://ckan.net/dataset/uk-postboxes Module weberror.errormiddleware:162 in call << traceback_supplement = Supplement, self, environ
Module beaker.middleware:73 in call << self.cache_manager)
Module beaker.middleware:155 in call << headers.append(('Set-cookie', cookie))
Module routes.middleware:131 in call << r'\1', oldpath)
Module pylons.wsgiapp:125 in call <<
Module pylons.wsgiapp:324 in dispatch << if log_debug:
Module ckan.lib.base:239 in call << try:
Module pylons.controllers.core:221 in call << return response(environ, self.start_response)
Module pylons.controllers.core:172 in _dispatch_call << req.environpylons.action_method? = func
Module pylons.controllers.core:107 in _inspect_call << func.name, args)
Module pylons.controllers.core:60 in _perform_call << """Hide the traceback for everything above this method"""
Module ckan.controllers.package:322 in read << template = template[:template.index('.') + 1] + format
Module ckan.lib.base:153 in render << try:
Module pylons.templating:249 in cached_template << return content
Module ckan.lib.base:102 in render_template << if loader_class == NewTextTemplate?:
Module genshi.core:183 in render << method = self.serializer or 'xml'
Module genshi.output:57 in encode << _encode = lambda string: string
Module genshi.output:569 in call << def call(self, stream):
Module genshi.core:288 in _ensure << # unchanged
Module genshi.core:288 in _ensure << # unchanged
Module genshi.filters.transform:686 in _unmark << def _unmark(self, stream):
Module genshi.filters.transform:1145 in call << :param stream: The marked event stream to filter
Module genshi.filters.transform:714 in call << stream = iter(stream)
Module genshi.filters.transform:682 in _mark << def _mark(self, stream):
Module genshi.core:288 in _ensure << # unchanged
Module genshi.filters.transform:686 in _unmark << def _unmark(self, stream):
Module genshi.filters.transform:1145 in call << :param stream: The marked event stream to filter
Module genshi.filters.transform:714 in call << stream = iter(stream)
Module genshi.filters.transform:682 in _mark << def _mark(self, stream):
Module genshi.core:288 in _ensure << # unchanged
Module genshi.filters.transform:686 in _unmark << def _unmark(self, stream):
Module genshi.filters.transform:1145 in call << :param stream: The marked event stream to filter
Module genshi.filters.transform:714 in call << stream = iter(stream)
Module genshi.filters.transform:682 in _mark << def _mark(self, stream):
Module genshi.core:288 in _ensure << # unchanged
Module genshi.filters.transform:686 in _unmark << def _unmark(self, stream):
Module ckanext.googleanalytics.plugin:93 in download_adder << [downloaded %s times]</span>
Module genshi.filters.transform:714 in call << stream = iter(stream)
Module genshi.filters.transform:682 in _mark << def _mark(self, stream):
Module genshi.core:288 in _ensure << # unchanged
Module genshi.filters.transform:686 in _unmark << def _unmark(self, stream):
Module genshi.filters.transform:1175 in call << """
Module genshi.filters.transform:714 in call << stream = iter(stream)
Module genshi.filters.transform:682 in _mark << def _mark(self, stream):
Module genshi.core:288 in _ensure << # unchanged
Module genshi.filters.transform:686 in _unmark << def _unmark(self, stream):
Module genshi.filters.transform:1145 in call << :param stream: The marked event stream to filter
Module genshi.filters.transform:714 in call << stream = iter(stream)
Module genshi.filters.transform:682 in _mark << def _mark(self, stream):
Module genshi.template.base:605 in _include << from genshi.template.loader import TemplateNotFound?
Module genshi.template.base:565 in _flatten << elif kind is EXPR:
Module genshi.template.base:277 in _eval_expr << if vars:
Module genshi.template.eval:178 in evaluate << traceback_hide = 'before_and_this'
Module ?:51 in <Expression u"tag_list(c.pkg_dict.get('tags', ))"> << <li py:if="c.pkg_dict.get('tags')" class="sidebar-section">
Module genshi.template.eval:309 in lookup_name << val = BUILTINS.get(name, val)
Module genshi.template.eval:410 in undefined << """Raise an UndefinedError? immediately."""
UndefinedError?: "tag_list" not defined CGI Variables CKAN_CURRENT_URL '/dataset/uk-postboxes' CKAN_LANG 'en' CKAN_LANG_IS_DEFAULT True CKAN_PAGE_CACHABLE True CONTENT_TYPE '; charset=utf-8' DOCUMENT_ROOT '/etc/apache2/htdocs' GATEWAY_INTERFACE 'CGI/1.1' HTTP_ACCEPT 'text/html,text/plain,text/xml' HTTP_ACCEPT_CHARSET 'ISO-8859-1,utf-8;q=0.7,*;q=0.7' HTTP_ACCEPT_ENCODING 'gzip' HTTP_ACCEPT_LANGUAGE 'vi,en-us;q=0.7,en;q=0.3' HTTP_CONNECTION 'close' HTTP_HOST 'ckan.net' HTTP_USER_AGENT 'coccoc/1.0 ()' PATH_INFO '/dataset/uk-postboxes' PATH_TRANSLATED '/etc/ckan/datahub/apache.wsgi/dataset/uk-postboxes' REMOTE_ADDR '127.0.0.1' REMOTE_PORT '47065' REQUEST_METHOD 'GET' REQUEST_URI '/dataset/uk-postboxes' SCRIPT_FILENAME '/etc/ckan/datahub/apache.wsgi' SERVER_ADDR '127.0.0.1' SERVER_ADMIN '[no address given]' SERVER_NAME 'ckan.net' SERVER_PORT '80' SERVER_PROTOCOL 'HTTP/1.0' SERVER_SIGNATURE '<address>Apache/2.2.22 (Ubuntu) Server at ckan.net Port 80</address>\n' SERVER_SOFTWARE 'Apache/2.2.22 (Ubuntu)' WSGI Variables application <beaker.middleware.CacheMiddleware? object at 0x7f5312a51650> beaker.cache <beaker.cache.CacheManager? object at 0x7f5312a51790> beaker.get_session <bound method SessionMiddleware?._get_session of <beaker.middleware.SessionMiddleware? object at 0x7f5312a516d0>> beaker.session {'_accessed_time': 1345083636.079552, '_creation_time': 1345083636.079552} mod_wsgi.application_group 'ckan.net|' mod_wsgi.callable_object 'application' mod_wsgi.handler_script mod_wsgi.input_chunked '0' mod_wsgi.listener_host mod_wsgi.listener_port '8080' mod_wsgi.process_group 'datahub' mod_wsgi.request_handler 'wsgi-script' mod_wsgi.script_reloading '1' mod_wsgi.version (3, 3) paste.cookies (<SimpleCookie: >, ) paste.registry <paste.registry.Registry object at 0x7f52e47477d0> paste.throw_errors True pylons.action_method <bound method PackageController?.read of <ckan.controllers.package.PackageController? object at 0x7f52e477b810>> pylons.controller <ckan.controllers.package.PackageController? object at 0x7f52e477b810> pylons.environ_config {'session': 'beaker.session', 'cache': 'beaker.cache'} pylons.pylons <pylons.util.PylonsContext? object at 0x7f52e477be90> pylons.routes_dict {'action': u'read', 'controller': u'package', 'id': u'uk-postboxes'} repoze.who.logger <logging.Logger object at 0x7f53127b2b50> repoze.who.plugins {'openid': <OpenIdIdentificationPlugin? 139994769488336>, 'friendlyform': <FriendlyFormPlugin? 139994769488528>, 'ckan.lib.authenticator:UsernamePasswordAuthenticator': <ckan.lib.authenticator.UsernamePasswordAuthenticator? object at 0x7f5312d893d0>, 'auth_tkt': <AuthTktCookiePlugin? 139994771858704>, 'ckan.lib.authenticator:OpenIDAuthenticator': <ckan.lib.authenticator.OpenIDAuthenticator object at 0x7f5312d89350>} routes.route <routes.route.Route object at 0x7f5312955a50> routes.url <routes.util.URLGenerator object at 0x7f52eb8c9090> webob._parsed_query_vars (GET([]), ) webob.adhoc_attrs {'language': 'en-us'} wsgi process 'Multi process AND threads (?)' wsgi.file_wrapper <built-in method file_wrapper of mod_wsgi.Adapter object at 0x7f5308983a80> wsgi.version (1, 1) wsgiorg.routing_args (<routes.util.URLGenerator object at 0x7f52eb8c9090>, {'action': u'read', 'controller': u'package', 'id': u'uk-postboxes'}) |
1345114732000000 | 1345114732000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#2878 | enhancement | icmurray | ross | ckan 2.0 | closed | wontfix | Roles and Permissions for Organisations |
As part of merging Organisations into core, it is necessary that we clarify the capacity field with which the users/datasets are added as members to the group 'subclass'. Rather than the capacity being an opaque string that implies auth but doesn't clearly specify it, we will use role names where roles are defined in the database - with a clearly defined set of standard roles. The Role table is expected to have simply a string name/representation and acts as a container for permissions. Each permission is a string of the form object.action (such as package.add, group.delete) of which several are expected to be associated with a role. This means the permission table will contain a string and a reference to the role. This work will require UI changes to the screens allowing users to be added to a group/organisation so that the list of available roles is available to add those users. [x] Model for Role and Permission [ ] Logic layer changes for managing roles/permissions etc. [ ] Determine default roles, perhaps just admin/editor/viewer [ ] Fix the auth layer to use the permissions/roles - may be better implemented as another ticket. |
1345466266000000 | 1350561906000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#2879 | enhancement | ross | ross | ckan 2.0 | closed | wontfix | Datasets (Package) should have a 'public' field |
The Package model should have a boolean field added to it describing its visibility beyond that supplied via auth. The related permission for viewing packages where public is set to False would be package.view (show, whatever), and *never* visible for unauthenticated users. |
1345466389000000 | 1350562096000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#2880 | enhancement | icmurray | ross | ckan 2.0 | closed | wontfix | Datasets (Package) should have owners |
Each dataset should have an explicit owner that is an organisation. This is the organisation that owns the dataset* and will be used for specifying who can move a dataset out of the default organisation. This should probably be a foreign key link from dataset to organisation (or rather group).
|
1345466535000000 | 1350561968000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#2886 | enhancement | ross | ckan 2.0 | new | Configurable related items |
Related items (Apps & Ideas) have a collection of types, which are currently fixed. Some of these types are ambiguous, such as ideas in that they may not have a link - and if they do it is likely to be to a blog post - another existing type. Whilst the URL is required, and we think this should stay required, we should also allow users to change the types found in Apps & Ideas to a shortened list that suits their requirements. |
1345625718000000 | 1345625718000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#2902 | enhancement | ross | ckan 2.0 | new | genshi is used in Group controller |
The Group controller uses the genshi module where it may be better for it to use Markup() in the template. |
1346782230000000 | 1346782230000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#2916 | enhancement | johnmartin | ross | ckan 2.0 | closed | fixed | User management in orgs needs autocomplete |
The user management in organizations ( http://localhost:5000/organization/users/NAME ) should autocomplete names in the dropdown box so that only valid usernames are added to the table. |
1347451792000000 | 1347970727000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#2917 | enhancement | johnmartin | ross | ckan 2.0 | new | Organization admins can delete themselves |
Organization administrators can delete themselves from the user management pages. We should disable this on the front-end as well as the back-end. |
1347451843000000 | 1347455636000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#2918 | enhancement | johnmartin | ross | ckan 2.0 | closed | fixed | Can't remove users from organizations |
When you remove someone, without adding them, the text box at the bottom (which should probably autocomplete) is empty, and this causes problems on the server. Ideally when you add a user (select from the autocomplete) it would add another row to the table, defaulting the user to editor and setting the names to user{{X}}name and user{{X}}capacity where X is $('tr').size() |
1347455572000000 | 1347970735000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1395 | defect | seanh | closed | fixed | "Import Error: cannot import name UnicodeMultiDict" when installing ckan from source |
At the paster db init command when installing ckan from source I get the error "Import Error: cannot import name UnicodeMultiDict?" (happens with both ckan 1.4.2 and today's latest bleeding edge code, on Ubuntu 10.04.3). UnicodeMultiDict? has been removed in a recent version of python-webob, and the pip install ... lucid_missing.txt causes a too-new version of python-webob to be installed into ckan's virtualenv (the new webob gets installed as a dependency of formalchemy). I manually did pip uninstall webob and then ran paster db init again and it worked. |
1318520183000000 | 1320857823000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1412 | defect | rgrp | seanh | ckan-sprint-2012-02-06 | closed | worksforme | application.js crashes when viewing a dataset with no resources |
Create a new dataset, don't add any resources to the dataset yet, view the dataset in ckan, if you have firebug enabled you'll see the error "resource is undefined" at line 699 of application.js. |
1319450625000000 | 1328226385000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1486 | defect | seanh | seanh | closed | fixed | "allow_partial_update" option does not work with resource lists of packages |
=> All of the package's resource will have their statuses changed to "deleted". The "allow_partial_update" option should apply to the resource lists of packages, but it does not. |
1322061318000000 | 1323172027000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1494 | enhancement | seanh | seanh | ckan-sprint-2012-01-09 | closed | wontfix | API call for getting a user's public activity stream as rendered rtext |
This could be implemented as a separate API call, or the rendered text versions of the activities could be added into the JSON returned by the existing API call. This requires setting up templates for rendering activity streams items and detail items as nice, human-readable text. There are some open questions, e.g.: Do we want the entire activity stream rendered as a block of plain text? As HTML? Or do we want a list of JSON objects, where each object contains its textual and/or HTML representations as fields? Activity stream items and their related detail items are separate objects that each have their own textual representations. For a mockup of the kind of text messages we want, see: but note that this ticket is just for creating the text snippets themselves, not rendering then in an HTML page or RSS feed. Also the mockup only show activity items and not their detail items. |
1322495447000000 | 1326109757000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1495 | enhancement | kindly | seanh | ckan-sprint-2012-01-23 | closed | fixed | API call for getting a user's public activity stream |
An API call that returns a user's public activity stream in JSON format. |
1322495549000000 | 1327576099000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1496 | enhancement | seanh | seanh | ckan-v1.7 | closed | fixed | Render a user's activity stream on her user page | 1322495588000000 | 1334582338000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1510 | enhancement | seanh | seanh | ckan-v1.7 | closed | wontfix | Migrate existing data into activity streams database tables |
See '### Task 2' in this etherpad: http://ckan.okfnpad.org/notifications I have no idea yet about how to do this or how long it might take me. |
1323093901000000 | 1339677620000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1511 | enhancement | kindly | seanh | ckan-sprint-2012-01-23 | closed | fixed | Logic function for getting a user's public activity stream |
Add a function to logic.action.get that returns a user's public activity stream as a list of dicts. |
1323094207000000 | 1327576134000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1515 | enhancement | seanh | seanh | ckan-v1.7 | closed | fixed | [super] Activity Streams |
We want to add "activity streams" (chronological lists of activities) to CKAN. Activity streams standard: http://activitystrea.ms/ Super branch where the feature was initially developed (this has now been merged into master): https://github.com/okfn/ckan/tree/feature-1515-activity-streams Etherpad: http://ckan.okfnpad.org/notifications (most relevant parts inlined here) Friedrich's mockup: http://datahub.pudo.org/pudo Tasks
|
1323105048000000 | 1338204149000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1621 | defect | seanh | seanh | closed | fixed | UnicodeDecodeError when validating user password |
A test case is currently failing for me on master: ERROR: ckan.tests.functional.test_user.TestUserController.test_user_create_unicode ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/seanh/pyenv/lib/python2.6/site-packages/nose/case.py", line 197, in runTest self.test(*self.arg) File "/home/seanh/pyenv/src/ckan/ckan/tests/functional/test_user.py", line 342, in test_user_create_unicode res = res.follow() File "/usr/lib/pymodules/python2.6/paste/fixture.py", line 603, in follow return self.test_app.get(location, **kw) File "/usr/lib/pymodules/python2.6/paste/fixture.py", line 208, in get return self.do_request(req, status=status) File "/usr/lib/pymodules/python2.6/paste/fixture.py", line 389, in do_request **req.environ) File "/usr/lib/pymodules/python2.6/paste/wsgilib.py", line 343, in raw_interactive app_iter = application(basic_environ, start_response) File "/usr/lib/pymodules/python2.6/paste/lint.py", line 170, in lint_app iterator = application(environ, start_response_wrapper) File "/usr/lib/pymodules/python2.6/paste/cascade.py", line 130, in __call__ return self.apps[-1](environ, start_response) File "/usr/lib/pymodules/python2.6/paste/registry.py", line 350, in __call__ app_iter = self.application(environ, start_response) File "/usr/lib/pymodules/python2.6/repoze/who/middleware.py", line 69, in __call__ auth_ids = self.authenticate(environ, classification, ids) File "/usr/lib/pymodules/python2.6/repoze/who/middleware.py", line 201, in authenticate userid = plugin.authenticate(environ, identity) File "/home/seanh/pyenv/src/ckan/ckan/lib/authenticator.py", line 29, in authenticate if user.validate_password(identity.get('password')): File "/home/seanh/pyenv/src/ckan/ckan/model/user.py", line 113, in validate_password hashed_pass = sha1(password_8bit + self.password[:40]) UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 12: ordinal not in range(128) |
1326105806000000 | 1335878161000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1625 | enhancement | seanh | seanh | ckan-sprint-2012-01-23 | closed | fixed | Add activity stream events for new/changed users |
This requires adding a logic function for emitting an activity stream event, and then editing the logic functions for creating or updating users and making them call the new emit event function. This same emit event function can later be used to emit activity stream events for other types of object as well. |
1326187794000000 | 1326736328000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1631 | enhancement | seanh | seanh | ckan-sprint-2012-01-23 | closed | fixed | Add activity stream events for new/changed groups | 1326304020000000 | 1326736381000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1632 | enhancement | seanh | seanh | ckan-v1.7 | closed | wontfix | Render a group's activity stream on its' page |
Add logic functions for getting the activity stream for a group in JSON and rendered HTML formats, add HTML activity stream into group page. |
1326304199000000 | 1335877871000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1633 | enhancement | seanh | seanh | ckan-v1.7 | closed | wontfix | Render a dataset's activity stream on its' page |
Add logic functions for getting the activity stream for a dataset in JSON and rendered HTML formats, add HTML activity stream into dataset page. |
1326304298000000 | 1335877927000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1634 | enhancement | seanh | seanh | ckan-v1.7 | closed | duplicate | Allow users to follow/unfollow activity streams of other users, datasets and groups |
This is a fairly big feature to add. Analysis: http://ckan.okfnpad.org/27 This ticket is related to #1635 (email notifications for activity streams) which is about managing a list of activity streams for which the user receives email notifications. There are decisions to be made about how the two will work together. |
1326304542000000 | 1334587390000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1635 | enhancement | seanh | seanh | ckan-backlog | new | Email notifications (e.g. for activity streams) |
CKAN should be able to send email notifications to users. Maybe have a notifications table in the db, and a server-side job that runs periodically and consumes rows from this table, mailing them to the users. One thing that we may want to send users notifications of is activity stream events. So the activity streams code would have to add rows to the notifications table for the mailer job to consume. But remember that email notifications feature is separate from activity streams - we may want to send notifications of other things as well. Need to implement (at least some of) #1634 before this can be implemented, in order to have something to send notifications about. Analysis here: http://ckan.okfnpad.org/27 |
1326304587000000 | 1355141157000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1636 | enhancement | seanh | seanh | ckan-v1.7 | closed | wontfix | Purge items from activity streams when object (package etc.) purged from CKAN | 1326304754000000 | 1338204258000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1637 | enhancement | seanh | seanh | ckan-v1.6 | closed | fixed | API call for getting the list of activity detail items for a given activty stream item |
(and add test cases for it) |
1326304817000000 | 1326737169000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1638 | enhancement | seanh | seanh | ckan-sprint-2012-01-23 | closed | wontfix | Don't use JsonType in activity streams |
Dump and load JSON explicitly instead. |
1326304935000000 | 1326305570000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1639 | enhancement | seanh | seanh | ckan-sprint-2012-02-06 | closed | fixed | Move activity streams CSS into external file |
The HTML and CSS for the activity streams templates needs to be tidied up. Currently the CSS is inlined in the templates themselves, and there is much unnecessary repetition of CSS. Perhaps put this one in hold until there has been some design discussion about how the activity streams and the user, dataset and group pages with activity streams should look? |
1326305019000000 | 1328526779000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1663 | enhancement | seanh | seanh | ckan-sprint-2012-02-06 | closed | fixed | API call for creating an activity streams event |
The create_activity() logic function already exists, but validation and authorization need to be added before it's hooked up to an API call. |
1326794844000000 | 1328013153000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1664 | enhancement | seanh | seanh | ckan-future | closed | fixed | Smarter group activity streams |
We already have simple activity streams for groups that have new group or group updated events (see #1631). Smarter/more useful group activity streams would also contain the events for things related to the group: users, datasets, other groups, etc. This should just mean using a more complex SQL query in the group_activity_list() logic function. Things might get tricky when a user or dataset joins a group, this may show up as two events (the user or dataset was modified, and the group was modified). We may want to have two separate events for this (one to go in the user or dataset activity stream and one for the group), or maybe we just want one 'user/dataset joined group' event. |
1326795654000000 | 1351863437000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1665 | task | seanh | seanh | closed | fixed | Begin doing research into eurovoc |
How big is it? How are we going to store it? etc. |
1326795828000000 | 1329742600000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1666 | enhancement | seanh | seanh | ckan-sprint-2012-02-06 | closed | fixed | Add activity stream events for tags |
...and show them on the tag pages. This means adding tag_activity_list() and tag_activity_list_html() logic functions, adding the templating to render tags as HTML, and adding the tag HTML into the tag pages. What exactly should go into a tag's activity stream? As with datasets we may want a more complex SQL query, where events from objects related to the tag (datasets, users, etc.) appear in the tag's stream. |
1326795985000000 | 1328527113000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1667 | enhancement | seanh | seanh | ckan-future | new | Add an extension point for rendering activity streams |
Currently rendering of activity stream events to HTML works by looking up a rendering function in a dictionary that maps activity types ('new package', 'changed group', etc.) to rendering functions that take an activity stream event and return the rendered HTML. There needs to be an extension point where extensions can register their own rendering functions for particular activity types. |
1326796151000000 | 1338204295000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1686 | enhancement | seanh | seanh | ckan-sprint-2012-02-06 | closed | fixed | Add activity events for when a dataset is added to or removed from a group | 1326993692000000 | 1328527370000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1694 | enhancement | seanh | seanh | ckan-sprint-2012-02-06 | closed | fixed | Add quick functional test(s) for activity streams HTML rendering |
The activity streams feature is already thoroughly tested via the logic layer and API calls, but there needs to be a quick test of the rendering code, e.g. fetch a user's page (thus testing that ckan doesn't crash while rendering it) and then assert that the expected activity streams HTML is in the fetched HTML. |
1327322248000000 | 1328465254000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1698 | enhancement | seanh | seanh | ckan-v1.7 | closed | fixed | [super] Tag Taxonomies |
Add drupal-like "taxonomies" to CKAN. Etherpad with user stories, feature list, design and implementation discussion: Branch where this is being developed is feature-1698-tag-taxonomies: https://github.com/okfn/ckan/compare/master...feature-1698-tag-taxonomies Tickets related to this have keyword taxonomies. |
1327415756000000 | 1338204433000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1705 | enhancement | seanh | seanh | ckan-sprint-2012-02-20 | closed | fixed | Implement Vocabularies domain model and API |
Add Vocabulary domain class, add logic functions for creating, updating, listing, getting, deleting vocabularies, add tests. |
1327427254000000 | 1329131067000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1706 | enhancement | seanh | seanh | ckan-sprint-2012-02-06 | closed | duplicate | Tag taxonomies package schema |
Enable ckanext's to add new vocabularies to default_package_schema(), use the new vocabularies in templates for dataset view, create, edit pages, helper function for extensions to create a vocabulary schema for a given vocabulary name (must match a vocab already in the db) and add it to default package schema. |
1327427938000000 | 1329131079000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1721 | enhancement | johnglover | seanh | ckan-sprint-2012-02-20 | closed | fixed | Tag taxonomies table migration | 1327944237000000 | 1329133348000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1722 | enhancement | seanh | seanh | ckan-sprint-2012-02-20 | closed | fixed | Update the package model for vocabularies |
See the etherpad for notes: http://ckan.okfnpad.org/22 |
1327950373000000 | 1329303197000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1723 | enhancement | seanh | seanh | ckan-sprint-2012-02-20 | closed | wontfix | Update tests for taxonomies |
In the tag-taxonomies branch tags now (optionally) belong to vocabularies and where tags previously had unique names, a CKAN instance can now have two tags with the same name as long as they belong to different vocabularies. The tests for the tags model should probably be updated to reflect this. Other tests might also need to be updated. |
1327950494000000 | 1329131103000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1724 | enhancement | seanh | seanh | ckan-sprint-2012-02-20 | closed | fixed | Update logic action functions for vocabularies |
ckan/logic/action/get.py:tag_list() Currently (I think) just returns all tags in the CKAN instance that the user has access to. Needs an optional argument to get only tags from a particular vocabulary? When called with no argument, should only return free tags? Also add an optional dataset argument, so you can get tags for a given dataset and/or vocabulary? ckan/logic/action/get.py:tag_autocomplete() Add optional argument to get only tags for a given vocab? When called with no argument, should get only free tags? ckan/logic/action/get.py:tag_search() Again, optional arguments for restricting by vocabulary and/or dataset. |
1327950761000000 | 1329302302000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1729 | enhancement | johnglover | seanh | ckan-sprint-2012-02-20 | closed | duplicate | Helper function for extensions to add vocabularies to a ckan instance |
Add a helper function to make it easy for extensions to add new vocabularies to default_package_schema(). The helper function should take the name or ID of a vocabulary (which should already exist in the db) and add the necessary key: [schema] entry to default_package_schema(), with the necessary validation, authorisation, transformation. |
1328007723000000 | 1329131023000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1730 | enhancement | johnglover | seanh | ckan-sprint-2012-02-20 | closed | fixed | Form field for vocabularies |
A function that takes a vocabulary name or ID as argument and returns a nice select box for selecting items from that given vocabulary. Meant to be used by form templates, to make it easy for them to integrate custom vocabularies. Could use http://harvesthq.github.com/chosen/ |
1328007897000000 | 1328714937000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1732 | enhancement | johnglover | seanh | ckan-v1.8 | closed | fixed | Update CKAN's search for taxonomies |
Initially we'll just add all tags from all vocabularies into the existing tags search facet (this should happen automatically). Later we want to enable templates to use separate search facets for different vocabularies. Also need to make sure that search terms are matched against the texts of the tag names themselves (should happen already) and maybe also against the texts of the vocabulary names? |
1328008169000000 | 1341224357000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1740 | enhancement | seanh | ckan-future | new | Get rid of `from module import ...` |
It's really bad to do from module import * and CKAN has a lot of them. I suggest a three-pronged approach:
We should also get rid of most or all of the from module import foo and from module import foo, bar statements. I think the right thing to do is just import module and then use module.foo in your code. But if you find yourself doing module.foo.bar then you may have a code smell. |
1328094369000000 | 1328094884000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1743 | defect | seanh | seanh | ckan-v1.6 | closed | wontfix | Activity streams still link to deleted things |
For example, after deleting a dataset old activity stream events will still hyperlink to that dataset. |
1328212016000000 | 1328527086000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1746 | enhancement | seanh | ckan-backlog | closed | wontfix | Activity streams pagination |
Currently user, package and group activity streams only return the most recent 15 activities, even though all activities are kept in the db. Do we want to add pagination - to both the API and the HTML pages - to support retrieving older activities? |
1328446488000000 | 1355141062000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1747 | enhancement | seanh | ckan-backlog | new | Expire old activities |
Currently the activity streams database tables just get longer and longer over time. Do we want to eventually delete the oldest activities, to keep the length of the table within limits? |
1328446589000000 | 1339773859000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1748 | enhancement | seanh | seanh | ckan-future | new | Make activity streams conform to http://activitystrea.ms/ standard |
At the very least we should make our JSON output conform to their spec: |
1328450784000000 | 1338204337000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1749 | enhancement | seanh | ckan-future | assigned | Allow creating activity details through API |
Currently the activity_create() logic action function only lets you create top-level activity stream items, and not their related activity details. It should handle activity details via nested dicts. |
1328465406000000 | 1338213933000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1750 | enhancement | seanh | ckan-backlog | new | Move ckan/lib/activity.py into the model |
Move ckan/lib/activity.py moved to into the model - say ckan/model/activity_extension.py, because it's so tightly knit with the model code, whereas most of the lib code is used in the controllers. |
1328465888000000 | 1339773840000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1754 | enhancement | seanh | seanh | ckan-sprint-2012-02-06 | closed | fixed | Add activities for extras |
When an extra is added to or removed from a dataset or is updated, an activity should go in the dataset's and user's activity streams. |
1328528318000000 | 1328528330000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1763 | enhancement | seanh | seanh | ckan-v1.7 | closed | wontfix | Add some simple model-level tests for activity streams | 1328536285000000 | 1338204708000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1764 | enhancement | seanh | seanh | ckan-v1.7 | closed | wontfix | Move activity streams API tests into tests/logic |
Which is where the other API tests have now been moved. |
1328536499000000 | 1335878051000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1765 | enhancement | seanh | seanh | ckan-sprint-2012-02-20 | closed | fixed | Enhance Tag and Package models with vocabularies |
Add a vocabulary column to the tags database table, change tags to have unique (tag_name, vocabulary_id) instrad of unique tag name, update methods in the Tag and Package classes to deal with the fact that tags may belong to vocabularies and that tag names are no longer unique. |
1328537061000000 | 1329131124000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1775 | enhancement | seanh | seanh | ckan-sprint-2012-03-05 | closed | fixed | Enable adding many tags at once to controlled vocabularies via API |
We already have API calls for adding one tag or removing one tag at a time to/from a vocab. Want more convenient ways to add or remove many in one call, or just pass in a list of tags to completely replace a vocab's current list.
|
1328541056000000 | 1329754459000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1776 | enhancement | seanh | seanh | ckan-sprint-2012-02-20 | closed | fixed | Granular editing of vocabulary tags |
Add API calls for adding one or more tags to and removing one or more tags from a vocabulary, without affecting the other tags in that vocabulary and without having to pass the full list of the vocabulary's tags. |
1328541213000000 | 1329302364000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1778 | enhancement | seanh | seanh | ckan-future | assigned | Replace classmethod's with module-level functions |
In many places we have @classmethods where simple module-level functions would do (and would be more idiomatic in Python), e.g. the get() classmethods in the model/ classes. Doing it with module functions lets us type module.function() instead of module.Class.method(). In many cases we're importing classes directly with from module import Class and then doing Class.method(), but from module import foo is bad style: http://docs.python.org/dev/howto/doanddont.html |
1328543614000000 | 1340623743000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1784 | enhancement | seanh | seanh | ckan-v1.7 | closed | wontfix | Links to renamed objects break |
The HTML templates for some activity stream activities link to objects (packages, resources, etc.) by their names, e.g. /dataset/foo, but if the object has since been renamed then the link will be broken. Possible solutions are to use the object ID to find its current name at rendering time and link to that, or link to the object by ID rather than by name. Linking by ID is both simpler to implement and better. Links by ID are ugly, but they are permanent and don't break when an object is renamed. We should be using links by ID everywhere on CKAN, so that when third-party sites copy-paste our URLs and link to us, their links don't break later. Fixing this means fixing the dataset_link(), resource_link(), group_link() etc. functions in ckan/lib/helpers.py which will change the links everywhere in CKAN where those functions are used to link to objects (which should be everywhere where we link to an object). If we want to have nice looking by-name URLs and what them to be permanent, then we need to change CKAN so that objects cannot be renamed. |
1328613555000000 | 1338204797000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1785 | enhancement | seanh | seanh | ckan-v1.9 | accepted | Replace 'Revisions' page with site-wide activity stream |
Replace the /revision page with a /activity page showing a site-wide activity stream of all activities in the site. Or perhaps the site-wide activity stream can go somewhere on the front page of the site instead? |
1328632458000000 | 1340724312000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1789 | enhancement | seanh | ckan-backlog | new | Implement a tag_update() logic action function |
So users can rename a tag and/or move it between vocabularies using the API. Currently we have create_tag() and delete_tag(), but if you were to 'update' a tag by deleting it and then recreating it all the datasets that had that tag will have lost it and you'll have to re-add it to them all. What should happen to datasets that have the tag, if the tag gets moved between vocabularies? All the datasets just keep the tag with the new vocabulary? This will become a problem if/when we support 'radio button'-style vocabularies (where each dataset can only have one tag from the vocabulary). |
1328805413000000 | 1339773812000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1800 | refactor | seanh | ckan-future | new | Tidy up *_list() and *_search() functions in ckan/logic/action/get.py |
For consistency all the *_list() functions should list objects only and not accept an optional search query. There should be *_search() functions whenever search is needed. Currently it is inconsistent, e.g. package_list() and resource_list() do not accept a search query option and there are package_search() and resource_search(), but user_list() does accept a query and there is no user_search(). tag_list() also accepts a query, and there is also a tag_search() that apparently duplicates the search functionality. |
1329405129000000 | 1338204886000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1807 | enhancement | seanh | seanh | ckan-sprint-2012-03-05 | closed | fixed | Recently added/updated datasets for EC portal |
For EC Portal need a page (or HTML snippet embedded in the front page?) listing recently added or updated datasets.
|
1329742326000000 | 1330809641000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1808 | enhancement | seanh | seanh | ckan-sprint-2012-03-19 | closed | fixed | Translation of content on dataset view pages |
All data is that is translatable should be translated when viewed. This includes tag names will be ID codes. When viewing a dataset page, look up the current language of the interface (ckan_lang or something in the environs) and display the string for the tag in that language. Related to the dataset view extension points for translation, recently added by kindly/=. |
1329742530000000 | 1331146804000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1824 | enhancement | seanh | ckan-future | new | Add vocabulary pages |
For a free tag foo you can visit the page at /tag/foo and see a list of all the datasets that have the tag foo, and when the tag appears on dataset view pages etc. it's linked to this tag page. We should do the same thing for vocabulary tags. A tag bar in vocabulary baz should be hyperlinked to a page /tag/baz/bar, or perhaps /vocab/baz/bar. |
1329845089000000 | 1338204958000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1825 | enhancement | seanh | seanh | ckan-sprint-2012-03-05 | closed | fixed | Write docs for vocabularies API |
Done on branch feature-1698-tag-taxonomies |
1329845122000000 | 1330807330000000 |