{22} Trac tickets (2647 matches)
Results (1001 - 1100 of 2647)
Id | Type | Owner | Reporter | Milestone | Status | Resolution | Summary | Description | Posixtime | Modifiedtime | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
#1047 | defect | sebbacon | sebbacon | ckan-v1.4-sprint-4 | closed | fixed | Package edit form claims you're not logged in at the end when you are |
At the bottom, it says something like Author: Bob Bumgardner Since you have not signed in this will just be your IP address. Click here to sign in before saving (opens in new window). |
1300384556000000 | 1300387309000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1048 | enhancement | dread | dread | ckan-v1.4-sprint-4 | closed | fixed | Complete making groups versioned |
|
1300387655000000 | 1300702752000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1051 | defect | sebbacon | sebbacon | ckan-v1.4-sprint-4 | closed | fixed | Ability to set custom favicon |
Allow deployers to set a URL pointing to their own favicon |
1300703160000000 | 1301305079000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1052 | defect | dread | dread | ckan-v1.4-sprint-4 | closed | fixed | Authz holes |
No authz on:
|
1300709144000000 | 1300895410000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1053 | defect | dread | dread | ckan-v1.5 | closed | fixed | Deletion in Model API |
Currently in the API if you DELETE a package/group/user (and you have the required permissions) then it purges the object, when it should probably just set the state to deleted. There is no way to delete objects at the moment - changes to 'state' are ignored in the API. Do we need an alternative way to purge objects in the API? |
1300790039000000 | 1310126546000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1054 | defect | kindly | dread | ckan-v1.4-sprint-4 | closed | fixed | Ordering of resources |
Changing an old resource and creating a new resource on the end results in the old resource moving to the end in the ordering. This breaks tests:
You can make a ckan test break with this patch: diff -r e6643cf1324c ckan/tests/models/test_resource.py --- a/ckan/tests/models/test_resource.py Wed Mar 23 13:25:52 2011 +0000 +++ b/ckan/tests/models/test_resource.py Wed Mar 23 19:22:35 2011 +0000 @@ -297,6 +297,8 @@ 'url':self.urls[1], 'format':u'OTHER FORMAT', 'description':self.description, 'hash':self.hash, 'id':original_res_ids[2]}, + { #new + 'url':'new'}, ] pkg.update_resources(res_dicts) model.repo.commit_and_remove() There seems to be a problem with vdm creating a replacement Resource for the old resource - because it has a duplicate position it is put to the end by the SQLAlchemy ordering_list function. |
1300969236000000 | 1301305615000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1055 | defect | dread | dread | ckan-v1.4-sprint-4 | closed | fixed | @search_related tests not running |
Tests marked decorated "@search_related" should only be run against postgresql, but in fact they don't get run at all. |
1300985228000000 | 1300992395000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1056 | defect | dread | pudo | ckan-v1.4-sprint-6 | closed | fixed | User links for OpenID users are broken |
Use case:
Solutions:
|
1301060249000000 | 1302882616000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1057 | defect | dread | closed | fixed | JSONP parameter isn't escaped |
$ curl "http://127.0.0.1:5000/api/rest/package/annakarenina?callback=<script>jsoncallback" gives: <script>jsoncallback({"id": "c10ebd31-5b45-4f6f-885d-dca9b18caec4", "name": "annakarenina", "title": "A Novel By Tolstoy", which could run script code in the client who made the call. One idea for filtering: http://tav.espians.com/sanitising-jsonp-callback-identifiers-for-security.html Maybe just better to have a restricted whitelist of characters to be even more sure. Same as: https://trac.dataco.coi.gov.uk/projects/datagov/ticket/906 |
1301078389000000 | 1329150236000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1058 | defect | dread | dread | ckan-v1.4-sprint-4 | closed | fixed | Give 400 error (not 500) for invalid locale or package_form |
Examples which prompt annoying exception emails: http://ckan.net/locale?locale=ja Module ckan.i18n:21 in set_session_locale assert locale in _KNOWN_LOCALES A bot has caused these: http://ca.ckan.net/package/new?package_form=gov Module ckan.forms.registry:32 in get_fieldset raise ValueError('Could not find package_form name %r in those found: \n%r' % (package_form, [en.name for en in entrypoints])) ValueError: Could not find package_form name u'gov)' in those found: ['gov', 'standard', 'ca'] |
1301302303000000 | 1301303315000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1059 | defect | dread | dread | ckan-v1.4-sprint-5 | closed | fixed | Loader coping better with poor search indexing |
Loader currently checks for same name, but also should check for name_, name etc. |
1301310596000000 | 1301312516000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1060 | defect | dread | ckan-v1.4-sprint-5 | closed | fixed | Spreadsheet importer tries to import readonly keys |
e.g. we just added notes_rendered and that is read in as an extra field. Tests failing in ckanext-importlib Also related: we are missing lost metadata_created and metadata_modified in the dumps. |
1301312210000000 | 1301312487000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1063 | defect | sebbacon | sebbacon | closed | fixed | Groups listing widget on package screen shouldn't show group name by default |
I've been asked if we can do something about the overflow of the Group name in the right hand column on this page:
The reason is that the list display for groups is in the form "group_tltie (group_name)", and of course group_name can't have spaces and so can't wrap nicely. I was wondering if there's a good reason why we don't only display group_title (if it exists) and group_name only when there's not a title? |
1301408459000000 | 1302514033000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1065 | enhancement | zephod | johnlawrenceaspden | ckan-v1.6 | closed | fixed | [super] Change Authorization System |
Child tickets
Old ticket description:
More info on Hierarchy changee.g. UserGroup? NHS contains the User nhsysadmin, as well as the UserGroups? SURREY and BERKS, which themselves contain users. One user in SURREY is Simon the Sysadmin, who has permissions on the whole system. His permissions should not leak out to other users or groups, and user permissions generally should not. Each Group has permissions over various objects. A user has permissions in his own right, and also has the permissions of his own group, and of all the groups contained in his group, and so on recursively. Algorithm: possible(user, action, package):
|
1301508331000000 | 1324550041000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1066 | enhancement | dread | dread | ckan-v1.4-sprint-5 | closed | fixed | Default reader role too permissive |
The definition of the 'reader' role includes creating packages, which is too permissive for some CKAN instances (e.g. DGU). 'Reader' suggests only reading, so I think this role should avoid creating and editing. All projects so far want all roles to be able to create users, so this stays as a Reader action for now, as a convenience. Implementation:
|
1301645250000000 | 1301932136000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1067 | enhancement | dread | dread | ckan-v1.4-sprint-5 | closed | fixed | CLI for loading/dumping complete databases |
Use 'db dump' and 'db load' for 'pg_dump' and 'psql -f' of a database. Use pylons config to find out database options. |
1301645463000000 | 1302186503000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1068 | defect | dread | dread | ckan-v1.4-sprint-5 | closed | fixed | metadata_modified problem |
This test has been failing since the clocks changed: ====================================================================== FAIL: ckan.tests.models.test_package.TestPackageRevisions.test_02_metadata_created_and_modified ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/dread/hgroot/pyenv-ckan2/lib/python2.6/site-packages/nose-0.11.3-py2.6.egg/nose/case.py", line 186, in runTest self.test(*self.arg) File "/home/dread/hgroot/ckan2/ckan/tests/models/test_package.py", line 283, in test_02_metadata_created_and_modified assert out == exp, (out, exp) AssertionError: (datetime.datetime(2011, 4, 1, 10, 45, 50, 875509), datetime.datetime(2011, 4, 1, 9, 45, 50, 875509)) ---------------------------------------------------------------------- |
1301652085000000 | 1302109505000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1070 | enhancement | rgrp | rgrp | ckan-v1.5 | closed | fixed | Plan a new domain model and layer architecture for CKAN |
See http://wiki.ckan.net/Domain_Model especially section on v2.
|
1301910940000000 | 1310117129000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1071 | defect | dread | dread | ckan-v1.4-sprint-5 | closed | fixed | Package history API moved to /api/rest/package/revisions |
api/rest/package_history is not RESTful or follow API naming conventions. Therefore move it to /api/rest/package/revisions Also, API docs incomplete. |
1301937882000000 | 1301943180000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1072 | enhancement | dread | dread | ckan-v1.4-sprint-5 | closed | fixed | Add filters to authztool |
It takes several minutes to print the 'rights' on DGU, which is annoying when you only want to grep for a few lines. Much quicker than grepping is to filter in the query. |
1302106311000000 | 1302106474000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1073 | enhancement | dread | dread | ckan-v1.4-sprint-5 | closed | fixed | Search index checker |
Tool that checks which packages have not been indexed. Required for DGU: https://trac.dataco.coi.gov.uk/projects/datagov/ticket/940 |
1302185444000000 | 1302185825000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1074 | enhancement | rgrp | rgrp | ckan-v1.5 | closed | fixed | Refactor authz web user interface to have common code and templating |
Currently repeat the same template and code across Package Authz, Group Authz, and Authz Group authz. Having now implemented a new, cleaner setup in ckanext-admin we should port this back into core.
Will also deliver a significant improvement in the form of ajax user lookup. |
1302271586000000 | 1314303581000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1075 | enhancement | johnlawrenceaspden | rgrp | ckan-v1.4-sprint-6 | closed | fixed | Administrative dashboard - Edit Authorization related to System object |
Roles on System object are important because admin role on system equates to being a 'sysadmin' (i.e. able to do anything).
Related Tickets
|
1302279799000000 | 1303227982000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1076 | enhancement | johnlawrenceaspden | rgrp | ckan-v1.4 | closed | fixed | Improve revision and package purge system |
Purging Revisions
Purging Packages
Current system
|
1302283442000000 | 1303236302000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1078 | enhancement | kindly | rgrp | ckan-v1.5 | closed | fixed | Refactors WUI controllers and forms to use logic layer |
|
1302509347000000 | 1305828973000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1079 | enhancement | kindly | rgrp | ckan-v1.4-sprint-5 | closed | fixed | Refactor API to use new logic layer and dictization |
|
1302509530000000 | 1302777504000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1081 | defect | johnlawrenceaspden | johnlawrenceaspden | closed | fixed | can't remove user from authz group |
I've found that if I make an authorization group I sometimes can't remove myself from it. I've no idea why. I can add and remove other users. I'll investigate, just making a note of it here. |
1302541056000000 | 1303489474000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1082 | defect | johnlawrenceaspden | closed | fixed | language changes behave strangely |
Set language to Greek, flash message says 'Language set to: English', but page is now about half in Greek. Set language back to English causes server error: AttributeError?: 'NoneType?' object has no attribute 'path' Module ckan.controllers.error:29 in document view
However going to a new page reveals that it's back to English |
1302541989000000 | 1315917217000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1083 | defect | johnlawrenceaspden | johnlawrenceaspden | ckan-v1.5-sprint-1 | closed | fixed | userobjectroles added twice can't be deleted |
the add_user_to_role/remove_user_from_role functions are asymmetrical in that the add function is happy to add the same role twice but the remove asserts that it's only in the table once and crashes if that's not true. an attempt has been made to guard against this, but fails, I think because the add functions rely on the caller committing the change to the db. same problem affects corresponding authorization_group functions I'll try to sort this out. Making a note here. |
1302550660000000 | 1305537827000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1084 | task | wwaites | wwaites | ckan-v1.4-sprint-6 | closed | fixed | ckan.net RDF links changed |
need to make some changes for the links to semantic.ckan.net. it should use http://semantic.ckan.net/record/<package_id> now append .rdf, .ttl, .nt, .dot, .json (even .html for an ugly table) to taste (or just leave off the suffix and let content negotiation take care of it) the base url is changed, but it now uses id not name. see for example: |
1302616717000000 | 1304934534000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1085 | defect | dread | johnlawrenceaspden | closed | fixed | local development copy of ckan depends on existence of ckan.net |
ckan.net appears to have either gone down or be running ultra slowly. this means that ckan copies running locally on my machine run very slowly indeed. is this behaviour desirable? This command finds lots of http://~~~ckan.net references in python, html and javascript files: find ~/pyenv/src \( -name "*.py" -or -name "*.html" -or -name "*.js" \) -print0 | xargs -0 -e grep --color -nH -e "http://.*ckan.net" output for reference: /home/okfn/pyenv/src/ckan/ckan/init__.py:5:Network (CKAN) site: http://www.ckan.net. /home/okfn/pyenv/src/ckan/ckan/lib/create_test_data.py:346:<http://ckan.net/> /home/okfn/pyenv/src/ckan/ckan/lib/rdf.py:3:DOMAIN = 'http://ckan.net' /home/okfn/pyenv/src/ckan/ckan/lib/rdf.py:4:CKAN_NAMESPACE = 'http://ckan.net/#' /home/okfn/pyenv/src/ckan/ckan/lib/talis.py:60: 'ckan':'http://ckan.net/ns#', /home/okfn/pyenv/src/ckan/ckan/public/scripts/bookmarklet.js:2: f='http://ckan.net/package/new?url='+encodeURIComponent(window.location.href)+'&title='+encodeURIComponent(document.title); /home/okfn/pyenv/src/ckan/ckan/public/scripts/test_bookmarklet.html:16: addtockan.src='http://ckan.net/scripts/bookmarklet.js'; /home/okfn/pyenv/src/ckan/ckan/public/scripts/test_bookmarklet.html:27: <p><strong>Proper bookmarklet (compressed -- need to escape &):</strong> <a href="javascript:(function(){f='http://ckan.net/package/new?url='+encodeURIComponent(window.location.href)+'&title='+encodeURIComponent(document.title);if((n=document.getElementsByName('description')[0])&&(d=n.content)){f+='&notes='+encodeURIComponent(d);}a=function(){if(!window.open(f)){location.href=f;}};if(/Firefox/.test(navigator.userAgent)){setTimeout(a,0)}else{a()}})()">Add to CKAN</a> /home/okfn/pyenv/src/ckan/ckan/templates/home/license.html:31: For convenience, all material - including all package, tag and revision information - is available in bulk, in the form of a full dump of the CKAN database. This (gzipped) dump file is updated daily and can be downloaded from <a href="http://www.ckan.net/dump/">http://www.ckan.net/dump/</a>. /home/okfn/pyenv/src/ckan/ckan/tests/dictization.py:71: 'notes': u'Some test notes\n\n### A 3rd level heading\n\nSome bolded text.\n\n*Some italicized text.*\n\nForeign characters:\nu with umlaut \xfc\n66-style quote \u201c\nforeign word: th\xfcmb\n \nNeeds escaping:\nleft arrow <\n\n<http://ckan.net/>\n\n', /home/okfn/pyenv/src/ckan/ckan/tests/dictization.py:137: 'notes': u'Some test notes\n\n### A 3rd level heading\n\nSome bolded text.\n\n*Some italicized text.*\n\nForeign characters:\nu with umlaut \xfc\n66-style quote \u201c\nforeign word: th\xfcmb\n \nNeeds escaping:\nleft arrow <\n\n<http://ckan.net/>\n\n', /home/okfn/pyenv/src/ckan/ckan/tests/dictization.py:447: 'notes': u'Some test notes\n\n### A 3rd level heading\n\nSome bolded text.\n\n*Some italicized text.*\n\nForeign characters:\nu with umlaut \xfc\n66-style quote \u201c\nforeign word: th\xfcmb\n \nNeeds escaping:\nleft arrow <\n\n<http://ckan.net/>\n\n', /home/okfn/pyenv/src/ckan/ckan/tests/dictization.py:458: 'notes': u'Some test notes\n\n### A 3rd level heading\n\nSome bolded text.\n\n*Some italicized text.*\n\nForeign characters:\nu with umlaut \xfc\n66-style quote \u201c\nforeign word: th\xfcmb\n \nNeeds escaping:\nleft arrow <\n\n<http://ckan.net/>\n\n', /home/okfn/pyenv/src/ckan/ckan/tests/functional/api/base.py:178: assert '"ckan_url": "http://test.ckan.net/package/annakarenina"' in msg, msg /home/okfn/pyenv/src/ckanclient/ckanclient/init__.py:116: api e.g. http://ckan.net/api rather than http://ckan.net/api/rest) /home/okfn/pyenv/src/ckanclient/ckanclient/init__.py:261: :param base_location: default *http://www.ckan.net/api* /home/okfn/pyenv/src/ckanclient/ckanclient/init__.py:267: base_location = 'http://www.ckan.net/api' |
1302620434000000 | 1302625314000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1087 | enhancement | wwaites | ckan-sprint-2011-11-21 | closed | fixed | version and contact info api call |
a simple api call that returns data like this: { "version": ckan_software_version, "contact": { "name": "Some Admin", "mbox": "[email protected]" }, "description": "Site Description", "url": "http://canonical.name.ckan.net/" |
1302628944000000 | 1320866159000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1088 | defect | wwaites | ckan-v1.4 | closed | fixed | content-type autonegotiation is wonky |
in ckan/controllers/package.py around line 130 it does some strange things... perhaps replace with https://github.com/wwaites/autoneg and handle redirection of these content types: application/rdf+xml application/turtle text/plain text/x-graphviz |
1302630261000000 | 1303035487000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1089 | enhancement | dread | dread | ckan-v1.4-sprint-6 | closed | fixed | Check for "--ckan" when running nosetests |
(because if you forget, you get difficult to understand errors, and more than one person has tripped up on this) |
1302631189000000 | 1302631733000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1090 | defect | dread | dread | ckan-v1.4-sprint-6 | closed | fixed | Visitor can't create packages on new CKAN install |
Default visitor roles in default config is reader, not anon_editor. Problem caused by changes in #1066 (released in 1.3.3) New installs will be affected, although simple to just increase permissions when the installer realises a visitor can't create packages. The solution to the config getting out of sync with the code like this is to not have the default_roles in the config - refer to the code in the configuration instructions. |
1302635219000000 | 1302635699000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1092 | defect | kindly | kindly | ckan-v1.4-sprint-6 | closed | fixed | refactor logic layer to seperate out api, form logic |
The logic layer is a bit too api centric. Make the reusable parts separate in preparation for the wui refactor. |
1302777929000000 | 1305570822000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1093 | defect | dread | dread | ckan-v1.4-sprint-6 | closed | fixed | 500 errors on GET to api/rest/licenses |
CKAN gets its license list from a license service, which can be a local file, but is often the http://licenses.opendefinition.org/2.0/ckan_original server. This server is currently flakey, but I think we only request the list on start up. The problem is we query it much more often than required. It is queried for every request to api/rest/licenses, and we are returning lots of 500 errors when the license server is timing out. |
1302862261000000 | 1302865470000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1095 | defect | kindly | kindly | closed | fixed | add way to pass in schema to logic layer. |
We need a way to pass in schemas to the logic layer to deal with edge cases. |
1303221854000000 | 1310134959000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1097 | enhancement | dread | dread | ckan-v1.4-sprint-6 | closed | fixed | Sidebar hideable |
The web interface has a sidebar (#primary) which should be hidden in some pages. This is for QA extension and useful for package new and edit pages. Must be compatible with DGU theme. |
1303293416000000 | 1303293476000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1098 | task | dread | dread | ckan-v1.4-sprint-6 | closed | fixed | --ckan-migration tests not initialised correctly |
Only tests with failing --ckan-migration fail, due to authz not being initialised. |
1303377336000000 | 1303406017000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1100 | defect | dread | ckan-v1.4-sprint-6 | closed | fixed | Get buildbot running on ckan branches |
Need some changes to pip-requirements files in release branches. |
1303385267000000 | 1303406103000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1104 | defect | dread | johnlawrenceaspden | ckan-v1.4-sprint-7 | closed | fixed | create-test-data doesn't index the packages it creates |
With the default test data created by paster db clean paster db init paster create-test-data going to the front page shows two recently changed packages A Wonderful Story A Novel by Tolstoy But none of those words "Wonderful", etc produce search hits. In fact as far as I can tell, nothing produces any search hits. That isn't true on ckan.net, where searching seems to work. |
1303494635000000 | 1303920791000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1106 | defect | rgrp | rgrp | ckan-v1.4-sprint-6 | closed | fixed | Bugs related to routes arising from API refactor + removal of default routes |
Various bugs I've been encountering:
Latter issue was masked by existence of 'default' routes: map.connect('/{controller}', action='index') map.connect('/:controller/{action}') map.connect('/{controller}/{action}/{id}') Having these is, I think, bad practice as it is better to be explicit and we should therefore remove asap. In addition I think we should be cautious about 'default' routes in core such as: map.connect('/api/rest/:register', controller='api', action='list', conditions=dict(method=['GET']) ) As it makes it harder for extensions to introduce their own APIs (here one could perhaps add something at /api/rest/{my-object} but only by using before_map rather than after_map). |
1303747360000000 | 1303834069000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1107 | refactor | tidy-up bitesize | rgrp | closed | fixed | Move package autocomplete from package controller and move to API |
Currently autocomplete method on package controller. This method should be in API (like other autocomplete methods). Will need to update client code (just forms atm I think). |
1303808480000000 | 1340632612000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1108 | enhancement | zephod | pudo | ckan-sprint-2011-09-12 | closed | fixed | Create a more modern theme for CKAN |
CKAN looks a bit aged, it should be styled more modernly and some elements could be re-arranged:
Inpiration: quora.com, github.com, Google Projects, Google Refine, etc. CKAN.net or CKAN general theme?To be decided. Suggest we start with ckan.net specific and then backwards integrate (?). Existing ckan.net theme repo: |
1303830790000000 | 1315140879000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1109 | defect | kindly | kindly | closed | fixed | When extras has a value other than a string an integrity error occurs in the api. |
This is a regression that happened after refactoring the api. It was shown by |
1303839943000000 | 1305124697000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1111 | task | lucychambers | lucychambers | closed | fixed | FAQ - For CKAN |
Write CKAN FAQ (Basis can be: http://wiki.ckan.net/FAQ) Post preliminary questions on: |
1303906561000000 | 1305881039000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1112 | enhancement | dread | dread | ckan-v1.4-sprint-7 | closed | fixed | Allow searching for all packages |
GET api/search/package?q= returns all packages. This is so you can filter them e.g. by openness, which is not currently possible. |
1304007852000000 | 1304358643000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1113 | defect | kindly | kindly | closed | fixed | lists in extras serialized wrongly on get with the api. |
Lists are being converted to unicode and then translated into a json when getting from the api. |
1304017353000000 | 1304024611000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1114 | enhancement | dread | dread | ckan-v1.4-sprint-7 | closed | fixed | CLI for viewing search index of a package |
To see what lexemes are generated for debug purposes. |
1304078353000000 | 1304085484000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1116 | defect | dread | dread | ckan-v1.4-sprint-7 | closed | fixed | api search loses boolean q options |
filter_by_openness and filter_by_downloadable options don't work when specified as URI parameters. (They do work in qjson parameters) |
1304086823000000 | 1304358664000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1119 | enhancement | rgrp | rgrp | ckan-v1.4-sprint-7 | closed | fixed | Fully functional storage extension with file upload |
Previous work in #877 and #879 + #853 (storage API). In this ticket:
|
1304094382000000 | 1305037201000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1123 | requirement | dread | nils.toedtmann | closed | fixed | Please re-package CKAN packages as "noarch" |
... or, if the CKAN packages do contain architecture-specific binary code, build packages for i386 too. Currently, http://apt-alpha.ckan.org/debian only offers packages for amd64, but e.g. "m1.small" EC2 instances are i386. We would need this in order to migrate the community instances to a packaged based CKAN. Rufus, pls prioritise. |
1304530050000000 | 1311863806000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1124 | enhancement | thejimmyg | nils.toedtmann | ckan-sprint-2011-12-05 | closed | fixed | push apt package python-ckanext-solr into our debian repository |
python-ckanext-solr is already available in http://apt-alpha.ckan.org/datanl-dev, but not yet in http://apt-alpha.ckan.org/debian (that is why we had to [pip-install it for DataGM). Please push into main repo. |
1304537793000000 | 1323168156000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1125 | enhancement | dread | nils.toedtmann | closed | fixed | Debian package "ckan" should not depend on "postgresql" |
The debian package "ckan" with the two scripts "ckan-create-instance" and "ckan-instance-maintenance" depends against "postgresql". But "ckan-create-instance" is quite handy even when the DB is remote: it creates all the data dirs with the correct permissions, and the ckan and apache configs. Please add a flag "--without-local-db" to "ckan-create-instance" and remove the postgres dependancy from the debain package. |
1304538095000000 | 1310134813000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1126 | enhancement | dread | dread | ckan-v1.4-sprint-7 | closed | fixed | Exceptions arising from error page |
I'm not completely clear what the use case is for loading the error page in this way, but somehow original_request is None and that creates an unnecessary exception with the logic refactor. http://ckan.net/error/document?__cache=39020485 ... Module ckan.controllers.error:29 in document << original_response = request.environ.get('pylons.original_response') # Bypass error template for API operations. if original_request.path.startswith('/api'): return original_response.body # Otherwise, decorate original response with error template. >> if original_request.path.startswith('/api'): AttributeError: 'NoneType' object has no attribute 'path' |
1304586683000000 | 1304587078000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1127 | CREP | sebbacon | closed | fixed | CREP0001: Formalise new feature discussion and definition using CREPs |
Proposer: Seb Bacon AbstractWhen adding major new features to CKAN, a longer, more formal discussion will improve software design quality and documentation, better engage the wider community, and ensure the core team are up to date with latest developments. I propose a formal process (CREP -- CKAN Revision and Enhancement Proposal) for making this happen. The ProblemThe current workflow for introducing major new features into CKAN is very informal, typically based around one person's great idea, which they've discussed with one or two other people in the team. The originator of the idea is typically the only person with access to all the input they've had through such discussions. Often, the only location of this information is in that person's head. However, there is a lot of experience embodied in the CKAN community which should be drawn on before making large design decisions. This will lead to better software. Additionally, building consensus in the community around a proposal before implementation ensures positive community engagement and buy-in to new features, making them more likely to be a success. We aren't great at documenting new features. Documentation after coding is complete is an unrewarding experience for most programmers. Requiring skeleton documentation before code is written is a good discipline that can form the basis of better documentation in the future (e.g. by a writer rather than a programmer). SpecificationMinor features don't require a CREP, and can just be entered in the issue tracking system as a bug or feature. As a rule of thumb, a feature is major if it will take more than a day to implement, or is likely to involve matters of opinion in its design. A developer may decide that a CREP is too formal and long-winded. The decision to write a CREP is at at their discretion; however, new features MUST always be proposed via email, even if this is just a couple of sentences. If a feature requires a CREP, the proposer should find a seconder for their idea. This sanity check step happens before a CREP is written to ensure at least the possibility of consensus on the CREP. Next the proposer should write a CREP, starting by copying and pasting the template on the wiki into a new Trac ticket. This will be with a status of "new" and Type of "CREP". The proposer should notify the ckan-dev mailing list, and possibly the ckan-discuss list for less technical CREPs. The draft can be discussed via email, verbally, or via the trac ticket. In any case, it is the proposer's responsibility to keep the CREP updated to reflect the current consensus. Once consensus has been reached, the ticket should be marked with the "accepted" status and assigned to a CKAN release milestone. When an accepted CREP has been implemented, it should be resolved as "fixed". If no consensus can be reached on a draft CREP, or for some reason an accepted CREP doesn't get completed, it should be marked as or "wontfix". If a completed CREP becomes obsolete, it should be marked as "invalid", with a note pointing to the obsoleting ticket(s) Why do it this wayGiven the distributed nature of the core team plus other volunteers, some kind of written procedure is necessary to ensure a fully documented and discussed proposal. The idea of "Enhancement Proposals" which can be semi-formally proposed and discussed prior to implementation is common in the Open Source world (PEPs, DEPs, PLIPs, to name three). Existing historic proposals exist, called CEPs. The proposed system is called CREP (CKAN revision or enhancement proposal) to disambiguate it from the legacy proposals, and from the delicious fungus Boletus Edulis. Giving a formal structure to the proposal is useful as it gives the community a means to identify a CREP that's not had sufficient thought or discussion. An informal email thread can easily be lost and important questions (such as backwards compatibility) overlooked. The use of the proposed template empowers any community member to ask the proposer to expand on rationale, deliverables, etc. The structure chosen is somewhere between Debian's and Plone's. It aims to give a structure to the debate, a clear start at documentation, and also prompt some thinking about implementation and timescales. All this policy about structure should not be construed as mandatory. In particular, the later fields in the CREP template regarding Implementation Plan may be omitted if the author doesn't find them helpful. Some projects (e.g. Debian) keep their enhancement proposals in a versioning repository; others (e.g. Plone) keep them in an issue tracking system. Trac is proposed for CKAN because we already use it for small feature proposals and for team planning. It seems unlikely that change tracking on an individual CREP will be useful; a CREP that changes sufficiently from its original form should probably be marked "obselete" and a new CREP started. Using an issue tracking system also means we can easily track CREPs by state. Backwards CompatibilitySome [https://bitbucket.org/okfn/ceps/src/76b274888bcf/cep/ legacy enhancement proposals], called CEPs, have previously been started. They are currently all marked as "active". Any which require discussion should be altered by the proposer to match the new CREP specification and submitted to trac. The original CEP should be updated with a banner at the top pointing a reader to the new CREP. Any that are now obselete should be clearly marked as such in a banner at the top, pointing a reader to the trac for new CREPs. Implementation planDeliverables
Risks and mitigations
ParticipantsSeb Bacon: as current Documentation Czar (May 2011), responsible for ensuring CREPs are up to date. ProgressThis document is the entire proposal. |
1304601313000000 | 1305622850000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1128 | task | dread | dread | ckan-sprint-2011-10-28 | closed | fixed | Upload Scotland gov data |
Upload to ckan.net: https://sites.google.com/site/scotlandsdata/ |
1304712293000000 | 1310568028000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1129 | CREP | kindly | ckan-v1.5 | closed | fixed | CREP0002: Moderated Edits |
Proposer: David Raznick Abstract.We are trying to achieve these goals.
In order to achieve this, a feature which lets anyone edit a package but only let the moderator/owner accept it. The moderator should be able to look at a list of changes and accept the ones that This cep is not about 'if' we need such a feature, it is about 'how' we go about implementing it. Another cep may needed for the 'if' case. The ProblemWe need the following to be possible.
Solutions.
This method requires there to be a change in the way we use VDM, so that we manage statefulness ourselves. We will need to add other states such as 'waiting for approval'.
Implementation details.1.
2.
ParticipantsDavid Raznick to do it. Progress.Decided to go with option 2. However we will change the revisioning system to be like the schema attached. This gets rid of difficult querying problems caused by querying the revision tables by adding an end date, meaning you can do range queries. The better and more normalized version of a revisioning system is outlined https://docs.google.com/drawings/d/1Y7nMgVsrs081Pame2RdbZHlCAlV33ddTZ8VAsab1j-0/edit?hl=en_GB&authkey=CJfd8vsB. We will be a step closer to that, with this change, but we will keep the current vdm more or less, intact. |
1304851498000000 | 1325268100000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1131 | defect | dread | dread | ckan-v1.4-sprint-7 | closed | fixed | Search param validation exception not caught |
Example request: http://nl.ckan.net/api/2/search/package?q=delft&order_by=&offset=&limit=&tags= Gives 500 error: <type 'exceptions.ValueError'>: invalid literal for int() with base 10: '' |
1304942023000000 | 1305537897000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1139 | enhancement | lucychambers | lucychambers | ckan-backlog | closed | fixed | Create CKAN Theme Gallery |
Take screenshots of existing ckan instances esp those mentioned <http://wiki.ckan.net/Theming> and put on flickr in ckan or ckan-theme group so we can create a gallery ... (both to illustrate theming but also to show ckan instances that are around -- could add to http://wiki.ckan.net/Instances) |
1305645859000000 | 1306941356000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1140 | defect | dread | ckan-v1.5 | closed | fixed | Adding the package to the group is not search indexed |
To reproduce:
|
1305718290000000 | 1312537257000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1141 | CREP | johnglover | ckan-backlog | closed | fixed | [super] Moderated Edits User Interface |
Proposer: John Glover AbstractWe are trying to achieve these goals:
This feature allows anyone to edit a package and create a new revision, but requires an owner/moderator to approve a revision before it is are made "official". There have been a lot of discussions around the revisioning system side of this ticket (CREP 0002) and I think these are now largely resolved. We now want to discuss the user interface. The ProblemWe require the following functionality:
Extra features:
SpecificationUI/UXUI Mockup: Revisions:
On the Edit page:
Technical Details
Why do it this wayThis hopefully provides a clear and consistent mechanism allowing both a community member to make new revisions and a moderator to view and approve revisions, with largely the same UI/UX. Implementation planDeliverablesA new CKAN extension, consisting of:
ParticipantsJohn Glover to do it. ProgressJohn has implemented the bulk of this UI. Just some things to tidy up before it is complete:
I've split these two off into a new ticket #1604. Related ProgressThe Todo extension is written and available at: https://bitbucket.org/johnglover/ckanext-todo. In the section 'The Problem', under extra features, we mention a need for the sysadmin to be able to purge a revision already. This is already done. See also#1129 Backend work |
1305721003000000 | 1325352507000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1142 | enhancement | annapowellsmith | rgrp | ckan-v1.5 | closed | fixed | [super] Major Overhaul and Extension of CKAN Documentation |
Child tickets:
Previous super ticket (from 3m ago): http://trac.ckan.org/ticket/927
Also now a wiki page with more detail: http://wiki.ckan.net/Documentation_Plans Minor Items |
1305727452000000 | 1313775665000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1143 | enhancement | dread | dread | ckan-v1.5-sprint-2 | closed | fixed | Improve stats page |
|
1305734836000000 | 1307024681000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1146 | enhancement | kindly | kindly | ckan-v1.5-sprint-1 | closed | fixed | make logic layer control its own state |
Logic layer should not use any vdm defined state and should manage it itself. |
1305829117000000 | 1307957527000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1147 | enhancement | kindly | kindly | ckan-v1.5-sprint-1 | closed | fixed | Add expired_id to all revision tables. |
Revision tables need expired_id to make querying history AND pending changes more efficient. This involves making a session extension and a large table migration. |
1305839833000000 | 1307957556000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1148 | refactor | kindly | kindly | ckan-v1.5-sprint-1 | closed | fixed | test speed improvements and cleanup |
The tests have been running slower recently and need fixing. They also could do with a bit more consistency to them. |
1305969223000000 | 1305969925000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1149 | enhancement | kindly | kindly | ckan-v1.5-sprint-1 | closed | fixed | Change domain object modification plugin to use Session extension. |
This should make it more efficient as it currently does a lot of repeating work. i.e if you change a package and a resource in the same commit it sends out 2 notifications and should only really send out 1. |
1305969863000000 | 1306090663000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1150 | defect | johnglover | timmcnamara | ckan-sprint-2011-10-28 | closed | fixed | Non-ASCII chars prevent data preview |
Characters outside of ASCII range are not supported within data previews. Steps to reproduce:
|
1306019914000000 | 1311774141000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1153 | enhancement | lucychambers | lucychambers | ckan-backlog | closed | fixed | Update CKAN wiki front page |
Update CKAN wiki front page - a la OpenSpending?: http://wiki.openspending.org/Main_Page Sections should relate to different types of people using the site: Developers, Users etc.. |
1306155211000000 | 1306941386000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1154 | enhancement | johnglover | nils.toedtmann | ckan-sprint-2011-10-28 | closed | fixed | Make ckan robust against solr failure |
According to pudo, a ckan with activated solr extension throws a 5xx when solr is unreachable. Instead, it should behave more like a ckan without ckanext-solr when this happens. |
1306254472000000 | 1314287519000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1155 | enhancement | pudo | pudo | pdeu-1 | closed | fixed | Harvester for data.london.gov.uk |
Write a harvester for data.london.gov.uk to import catalogue metadata into PDEU. API (or at least documentation) is available at: http://sourceforge.net/projects/londondatastore/files/ |
1306337318000000 | 1306773174000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1156 | enhancement | pudo | pudo | pdeu-1 | closed | fixed | Scraping harvesters for Paris and Vienna Catalogues |
Import metadata from both sources into PDEU via the Harvesting framework but by scraping their respective catalogue pages. |
1306337428000000 | 1306855111000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1157 | enhancement | pudo | pudo | pdeu-1 | closed | fixed | A simple theme for publicdata.eu, CKAN |
Change the visual style of CKAN to be more like these sites:
This does not include major UX work. |
1306337573000000 | 1309804029000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1158 | enhancement | pudo | pudo | pdeu-1 | closed | fixed | Put PDEU into read-only mode and remove unneeded functions |
PDEU should be in a mode where:
|
1306337786000000 | 1309804060000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1159 | enhancement | pudo | pudo | pdeu-1 | closed | fixed | Add RDFa to CKAN package pages |
RDFa can be used as a simple way to expose linked data or at least sameAs the API version of the data but we need to make sure we do not expose anything different from the "official" representation. |
1306337907000000 | 1307615133000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1162 | enhancement | amercader | amercader | pdeu-1 | closed | fixed | Define a common extra for storing the geographic extent |
We need a common extra across the different harvested sources that defines the extent of the data. We will have mainly national level catalogues, but also at a lower level (region, city). Relevant discussion: http://lists.okfn.org/pipermail/ckan-discuss/2011-May/001245.html |
1306408704000000 | 1308647187000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1164 | enhancement | amercader | amercader | pdeu-1 | closed | fixed | Cloropleth Map of European Data Availability for PDEU |
A nice map in the homepage showing the availability of data across Europe |
1306408824000000 | 1308647224000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1166 | enhancement | amercader | amercader | ckan-sprint-2011-10-10 | closed | fixed | Less stringent filters for displaying the WMS preview |
Right now, for the "View available WMS layers" link to be displayed, the package needs to have an "INSPIRE=True" extra, a "resource-type=service" extra and a resource of type "WMS". This is due to DGU (the project this was developed for) related reasons, but for a generic support, the resource type should probably be enough. (The repository for this is ckanext-spatial, but it's not on the list) |
1306422646000000 | 1317381932000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1167 | task | nils.toedtmann | closed | fixed | Create a standard CKAN system image for Amazon EC2 (AMI) |
We should create a public AMI with CKAN pre-installed and configured such that users can easily create their own EC2 machine with a running CKAN to play with. There are three phases:
I am happy to do first and last. Who is installing and configuring CKAN? Unfortunately AMIs are specific to region, architecture and storage type. We cannot maintain too many images, so a number of choices have to be made:
|
1306423016000000 | 1311178516000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1169 | enhancement | dread | dread | ckan-v1.5-sprint-2 | closed | fixed | Link to csv/json dumps on ckan.net | 1306749768000000 | 1306754833000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1170 | defect | dread | dread | ckan-v1.5-sprint-2 | closed | fixed | Production deployment docs out of date |
Need to cover pip-requirements.txt on different branches in the doc/deployment.rst. Also could do with tidying up upgrade.txt into this document too. |
1306864171000000 | 1306864422000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1172 | defect | dread | thejimmyg | ckan-sprint-2011-10-28 | closed | fixed | Remove all try: except: blocks that don't re-raise the original exception |
The current codebase has one or two try: except; blocks that don't catch specific exceptions. Under no circumstances should any broad try: except: blocks be allowed unless the exceptions they catch are immediately re-raised. Uncaught exceptions are wasting us quite a lot of time when trying to track down problems. |
1306926049000000 | 1314118883000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1173 | enhancement | amercader | amercader | pdeu-1 | closed | fixed | Offer a DCat representation for packages in the API |
/api/rest/package/foo.rdf should return a DCat representation of the package. To create it, we will use the functions in ckanext-rdf. |
1306939639000000 | 1307615271000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1176 | defect | thejimmyg | dread | ckan-sprint-2011-10-28 | closed | fixed | unicode_body exception |
We seem to occasionally get this exception on ckan.net. User agents causing this include:
Module ckan.controllers.error:32 in document << return original_response.body # Otherwise, decorate original response with error template. c.content = literal(original_response.unicode_body) or cgi.escape(request.GET.get('message', '')) c.prefix=request.environ.get('SCRIPT_NAME', ''), c.code=cgi.escape(request.GET.get('code', str(original_response.status_int))), >> c.content = literal(original_response.unicode_body) or cgi.escape(request.GET.get('message', '')) AttributeError: 'NoneType' object has no attribute 'unicode_body' |
1307351562000000 | 1314273012000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1177 | defect | fccoelho | closed | fixed | routes.util.GenerationException |
I have done a recent update to mu ckan install, and I am now getting this error for all my packages: URL: http://ckan.emap.fgv.br/package/dengue-net Module weberror.errormiddleware:162 in __call__ << __traceback_supplement__ = Supplement, self, environ sr_checker = ResponseStartChecker(start_response) app_iter = self.application(environ, sr_checker) return self.make_catching_iter(app_iter, environ, sr_checker) except: >> app_iter = self.application(environ, sr_checker) Module beaker.middleware:73 in __call__ << self.cache_manager) environ[self.environ_key] = self.cache_manager return self.app(environ, start_response) >> return self.app(environ, start_response) Module beaker.middleware:152 in __call__ << headers.append(('Set-cookie', cookie)) return start_response(status, headers, exc_info) return self.wrap_app(environ, session_start_response) def _get_session(self): >> return self.wrap_app(environ, session_start_response) Module routes.middleware:130 in __call__ << environ['SCRIPT_NAME'] = environ['SCRIPT_NAME'][:-1] response = self.app(environ, start_response) # Wrapped in try as in rare cases the attribute will be gone already >> response = self.app(environ, start_response) Module pylons.wsgiapp:125 in __call__ << controller = self.resolve(environ, start_response) response = self.dispatch(controller, environ, start_response) if 'paste.testing_variables' in environ and hasattr(response, >> response = self.dispatch(controller, environ, start_response) Module pylons.wsgiapp:324 in dispatch << if log_debug: log.debug("Calling controller class with WSGI interface") return controller(environ, start_response) def load_test_env(self, environ): >> return controller(environ, start_response) Module ckan.lib.base:118 in __call__ << # available in environ['pylons.routes_dict'] try: return WSGIController.__call__(self, environ, start_response) finally: model.Session.remove() >> return WSGIController.__call__(self, environ, start_response) Module pylons.controllers.core:221 in __call__ << return response(environ, self.start_response) response = self._dispatch_call() if not start_response_called: self.start_response = start_response >> response = self._dispatch_call() Module pylons.controllers.core:172 in _dispatch_call << req.environ['pylons.action_method'] = func response = self._inspect_call(func) else: if log_debug: >> response = self._inspect_call(func) Module pylons.controllers.core:107 in _inspect_call << func.__name__, args) try: result = self._perform_call(func, args) except HTTPException, httpe: if log_debug: >> result = self._perform_call(func, args) Module pylons.controllers.core:60 in _perform_call << """Hide the traceback for everything above this method""" __traceback_hide__ = 'before_and_this' return func(**args) def _inspect_call(self, func): >> return func(**args) Module ?:2 in read Module ckan.lib.cache:167 in wrapper << log = __import__("logging").getLogger("proxy_cache") def wrapper(func, *args, **kwargs): result = func(*args, **kwargs) pylons = get_pylons(args) >> result = func(*args, **kwargs) Module ckan.controllers.package:208 in read << #render the package PackageSaver().render_package(c.pkg) return render('package/read.html') def comments(self, id): >> return render('package/read.html') Module ckan.lib.base:74 in render << return cached_template(template_name, render_template, cache_key=cache_key, cache_type=cache_type, cache_expire=cache_expire) #, ns_options=('method'), method=method) >> cache_type=cache_type, cache_expire=cache_expire) Module pylons.templating:249 in cached_template << return content else: return render_func() >> return render_func() Module ckan.lib.base:63 in render_template << stream = item.filter(stream) return literal(stream.render(method=method, encoding=None)) if 'Pragma' in response.headers: >> return literal(stream.render(method=method, encoding=None)) Module genshi.core:183 in render << method = self.serializer or 'xml' generator = self.serialize(method=method, **kwargs) return encode(generator, method=method, encoding=encoding, out=out) def select(self, path, namespaces=None, variables=None): >> return encode(generator, method=method, encoding=encoding, out=out) Module genshi.output:57 in encode << _encode = lambda string: string if out is None: return _encode(''.join(list(iterator))) for chunk in iterator: out.write(_encode(chunk)) >> return _encode(''.join(list(iterator))) Module genshi.output:339 in __call__ << for filter_ in self.filters: stream = filter_(stream) for kind, data, pos in stream: cached = cache_get((kind, data)) if cached is not None: >> for kind, data, pos in stream: Module genshi.output:670 in __call__ << _gen_prefix = _gen_prefix().next for kind, data, pos in stream: output = cache_get((kind, data)) if output is not None: >> for kind, data, pos in stream: Module genshi.output:771 in __call__ << push_text = textbuf.append pop_text = textbuf.pop for kind, data, pos in chain(stream, [(None, None, None)]): if kind is TEXT: >> for kind, data, pos in chain(stream, [(None, None, None)]): Module genshi.output:586 in __call__ << def __call__(self, stream): prev = (None, None, None) for ev in stream: if prev[0] is START: if ev[0] is END: >> for ev in stream: Module genshi.core:288 in _ensure << # unchanged yield event for event in stream: yield event >> for event in stream: Module genshi.template.base:618 in _include << tmpl = self.loader.load(href, relative_to=event[2][0], cls=cls or self.__class__) for event in tmpl.generate(ctxt, **vars): yield event except TemplateNotFound: >> for event in tmpl.generate(ctxt, **vars): Module genshi.template.base:618 in _include << tmpl = self.loader.load(href, relative_to=event[2][0], cls=cls or self.__class__) for event in tmpl.generate(ctxt, **vars): yield event except TemplateNotFound: >> for event in tmpl.generate(ctxt, **vars): Module genshi.template.base:618 in _include << tmpl = self.loader.load(href, relative_to=event[2][0], cls=cls or self.__class__) for event in tmpl.generate(ctxt, **vars): yield event except TemplateNotFound: >> for event in tmpl.generate(ctxt, **vars): Module genshi.template.base:605 in _include << from genshi.template.loader import TemplateNotFound for event in stream: if event[0] is INCLUDE: href, cls, fallback = event[1] >> for event in stream: Module genshi.template.markup:378 in _match << for event in self._match(self._flatten(template, ctxt, **vars), ctxt, start=idx + 1, **vars): yield event >> ctxt, start=idx + 1, **vars): Module genshi.template.markup:327 in _match << break for event in stream: # We (currently) only care about start and end events for matching >> for event in stream: Module genshi.template.base:565 in _flatten << elif kind is EXPR: result = _eval_expr(data, ctxt, vars) if result is not None: # First check for a string, otherwise the iterable test >> result = _eval_expr(data, ctxt, vars) Module genshi.template.base:277 in _eval_expr << if vars: ctxt.push(vars) retval = expr.evaluate(ctxt) if vars: ctxt.pop() >> retval = expr.evaluate(ctxt) Module genshi.template.eval:178 in evaluate << __traceback_hide__ = 'before_and_this' _globals = self._globals(data) return eval(self.code, _globals, {'__data__': data}) >> return eval(self.code, _globals, {'__data__': data}) Module ?:16 in <Expression u"h.subnav_link(c, h.icon('comments') + _('Comments & Questions'), controller='package', action='comments', id=c.pkg.name)"> << </li> <li py:if="g.has_commenting"> ${h.subnav_link(c, h.icon('comments') + _('Comments & Questions'), controller='package', action='comments', id=c.pkg.name)} </li> <li>${h.subnav_link(c, h.icon('page_white_stack') + _('History'), controller='package', action='history', id=c.pkg.name)}</li> >> ${h.subnav_link(c, h.icon('comments') + _('Comments & Questions'), controller='package', action='comments', id=c.pkg.name)} Module ckan.lib.helpers:126 in subnav_link << return link_to( text, url_for(action=action, **kwargs), class_=('active' if c.action == action else '') ) >> url_for(action=action, **kwargs), Module routes.util:280 in url_for << raise GenerationException( "url_for could not generate URL. Called with args: %s %s" % \ (args, kargs)) return url >> (args, kargs)) GenerationException: url_for could not generate URL. Called with args: () {'action': 'comments', 'controller': 'package', 'id': 'dengue-net'} CGI Variables AUTH_TYPE 'cookie' DOCUMENT_ROOT '/etc/apache2/htdocs' GATEWAY_INTERFACE 'CGI/1.1' HTTP_ACCEPT 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' HTTP_ACCEPT_CHARSET 'ISO-8859-1,utf-8;q=0.7,*;q=0.7' HTTP_ACCEPT_ENCODING 'gzip, deflate' HTTP_ACCEPT_LANGUAGE 'pt-br,pt;q=0.8,en-us;q=0.5,en;q=0.3' HTTP_CONNECTION 'keep-alive' HTTP_COOKIE '__utma=4669863.1260802706.1295364409.1306935693.1306960483.86; __utmz=4669863.1295364409.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); SESS61faf7f7d2406929b2f9eb4cbfff17d2=a3306f5d1194cf0d8a51dbf7b42c1259; ckan=d4951177ef995d92f0f987d481bd9180aa0f89e4518921db9cd9b6ac75fdd3fab4a25d06; auth_tkt="c6c3c3e0b3fe7bb765356659992760b24da43221flavio!userid_type:unicode"; auth_tkt="c6c3c3e0b3fe7bb765356659992760b24da43221flavio!userid_type:unicode"; ckan_user="flavio"; ckan_display_name="Fl\xc3\xa1vio Code\xc3\xa7o Coelho"; ckan_apikey="c139718d-918f-4a2b-b219-e33cb05cbe23"; __utmc=4669863' HTTP_HOST 'ckan.emap.fgv.br' HTTP_KEEP_ALIVE '115' HTTP_REFERER 'http://ckan.emap.fgv.br/' HTTP_USER_AGENT 'Mozilla/5.0 (X11; Linux x86_64; rv:2.0.1) Gecko/20100101 Firefox/4.0.1' PATH_INFO '/package/dengue-net' PATH_TRANSLATED '/home/flavio/var/srvc/ckan.emap.fgv.br/pyenv/bin/ckan.emap.fgv.br.py/package/dengue-net' REMOTE_ADDR '10.250.48.110' REMOTE_PORT '47624' REMOTE_USER u'flavio' REMOTE_USER_DATA 'userid_type:unicode' REMOTE_USER_TOKENS [''] REQUEST_METHOD 'GET' REQUEST_URI '/package/dengue-net' SCRIPT_FILENAME '/home/flavio/var/srvc/ckan.emap.fgv.br/pyenv/bin/ckan.emap.fgv.br.py' SERVER_ADDR '10.252.2.60' SERVER_ADMIN '[no address given]' SERVER_NAME 'ckan.emap.fgv.br' SERVER_PORT '80' SERVER_PROTOCOL 'HTTP/1.1' SERVER_SIGNATURE '<address>Apache/2.2.16 (Debian) Server at ckan.emap.fgv.br Port 80</address>\n' SERVER_SOFTWARE 'Apache/2.2.16 (Debian)' WSGI Variables application <beaker.middleware.CacheMiddleware object at 0x7f051c802690> beaker.cache <beaker.cache.CacheManager object at 0x7f051c802750> beaker.get_session <bound method SessionMiddleware._get_session of <beaker.middleware.SessionMiddleware object at 0x7f051c8026d0>> beaker.session {'locale': u'pt_BR', '_accessed_time': 1307358102.6266389, '_creation_time': 1302605470.0245121} mod_wsgi.application_group 'dck093|' mod_wsgi.callable_object 'application' mod_wsgi.handler_script '' mod_wsgi.input_chunked '0' mod_wsgi.listener_host '' mod_wsgi.listener_port '80' mod_wsgi.process_group 'ckan' mod_wsgi.request_handler 'wsgi-script' mod_wsgi.script_reloading '1' mod_wsgi.version (3, 3) paste.cookies (<SimpleCookie: SESS61faf7f7d2406929b2f9eb4cbfff17d2='a3306f5d1194cf0d8a51dbf7b42c1259' __utma='4669863.1260802706.1295364409.1306935693.1306960483.86' __utmc='4669863' __utmz='4669863.1295364409.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)' auth_tkt='c6c3c3e0b3fe7bb765356659992760b24da43221flavio!userid_type:unicode' ckan='d4951177ef995d92f0f987d481bd9180aa0f89e4518921db9cd9b6ac75fdd3fab4a25d06' ckan_apikey='c139718d-918f-4a2b-b219-e33cb05cbe23' ckan_display_name='Fl\xc3\xa1vio Code\xc3\xa7o Coelho' ckan_user='flavio'>, '__utma=4669863.1260802706.1295364409.1306935693.1306960483.86; __utmz=4669863.1295364409.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); SESS61faf7f7d2406929b2f9eb4cbfff17d2=a3306f5d1194cf0d8a51dbf7b42c1259; ckan=d4951177ef995d92f0f987d481bd9180aa0f89e4518921db9cd9b6ac75fdd3fab4a25d06; auth_tkt="c6c3c3e0b3fe7bb765356659992760b24da43221flavio!userid_type:unicode"; auth_tkt="c6c3c3e0b3fe7bb765356659992760b24da43221flavio!userid_type:unicode";... __utmc=4669863') paste.registry <paste.registry.Registry object at 0x7f051d7e5710> paste.throw_errors True pylons.action_method <bound method PackageController.read of <ckan.controllers.package.PackageController object at 0x7f051d7e5b10>> pylons.controller <ckan.controllers.package.PackageController object at 0x7f051d7e5b10> pylons.environ_config {'session': 'beaker.session', 'cache': 'beaker.cache'} pylons.pylons <pylons.util.PylonsContext object at 0x7f051d7e5a50> pylons.routes_dict {'action': u'read', 'controller': u'package', 'id': u'dengue-net'} repoze.who.identity <repoze.who identity (hidden, dict-like) at 139659946193344> repoze.who.logger <logging.Logger instance at 0x7f051c801128> repoze.who.plugins {'openid': <OpenIdIdentificationPlugin 139659931643152>, 'friendlyform': <FriendlyFormPlugin 139659929725584>, 'ckan.lib.authenticator:UsernamePasswordAuthenticator': <ckan.lib.authenticator.UsernamePasswordAuthenticator object at 0x7f051c9e7610>, 'auth_tkt': <AuthTktCookiePlugin 139659931643280>, 'ckan.lib.authenticator:OpenIDAuthenticator': <ckan.lib.authenticator.OpenIDAuthenticator object at 0x7f051c9dcfd0>} routes.route <routes.route.Route object at 0x7f051c69fd50> routes.url <routes.util.URLGenerator object at 0x7f051d7e57d0> webob._parsed_cookies ({'ckan': 'd4951177ef995d92f0f987d481bd9180aa0f89e4518921db9cd9b6ac75fdd3fab4a25d06', '__utmz': '4669863.1295364409.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)', 'auth_tkt': 'c6c3c3e0b3fe7bb765356659992760b24da43221flavio!userid_type:unicode', 'ckan_display_name': 'Fl\xc3\xa1vio Code\xc3\xa7o Coelho', 'ckan_apikey': 'c139718d-918f-4a2b-b219-e33cb05cbe23', 'ckan_user': 'flavio', '__utma': '4669863.1260802706.1295364409.1306935693.1306960483.86', '__utmc': '4669863', 'SESS61faf7f7d2406929b2f9eb4cbfff17d2': 'a3306f5d1194cf0d8a51dbf7b42c1259'}, '__utma=4669863.1260802706.1295364409.1306935693.1306960483.86; __utmz=4669863.1295364409.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); SESS61faf7f7d2406929b2f9eb4cbfff17d2=a3306f5d1194cf0d8a51dbf7b42c1259; ckan=d4951177ef995d92f0f987d481bd9180aa0f89e4518921db9cd9b6ac75fdd3fab4a25d06; auth_tkt="c6c3c3e0b3fe7bb765356659992760b24da43221flavio!userid_type:unicode"< wbr>; auth_tkt="c6c3c3e0b3fe7bb765356659992760b24da43221flavio!... __utmc=4669863') 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 0x7f051cc1ad50> wsgi.version (1, 1) wsgiorg.routing_args (<routes.util.URLGenerator object at 0x7f051d7e57d0>, {'action': u'read', 'controller': u'package', 'id': u'dengue-net'}) |
1307358586000000 | 1307374897000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1178 | defect | fccoelho | closed | fixed | Local storage issue with ckanext-storage |
I have followed the instruction for installation a configuration of ckanext-storage, but I am getting this error when I try to access the /storage/upload url: URL: http://ckan.emap.fgv.br/storage/upload Module weberror.errormiddleware:162 in call << traceback_supplement = Supplement, self, environ
Module beaker.middleware:73 in call << self.cache_manager)
Module beaker.middleware:152 in call << headers.append(('Set-cookie', cookie))
Module routes.middleware:130 in call << environSCRIPT_NAME? = environSCRIPT_NAME?[:-1]
Module pylons.wsgiapp:124 in call << return % paste.registry.restorer.get_request_id(environ)?
Module pylons.wsgiapp:263 in resolve << if self.log_debug:
Module ckan.config.environment:39 in find_controller << # Check to see if its a dotted name
Module pkg_resources:1954 in load << def load(self, require=True, env=None, installer=None):
Module ?:87 in <module> << class StorageAPIController(BaseController?):
Module ?:88 in StorageAPIController << class StorageAPIController(BaseController?):
Module ?:69 in get_ofs << continue
Module ofs.local.pairtreestore:26 in init << self.hashing_type = hashing_type
Module ofs.local.pairtreestore:30 in _open_store << def _open_store(self):
Module pairtree.pairtree_client:91 in init << self._decode = re.compile(r"\(..)", re.U)
Module pairtree.pairtree_client:264 in _init_store << self.uri_base = prefix
NotAPairtreeStoreException: CGI Variables AUTH_TYPE 'cookie' DOCUMENT_ROOT '/etc/apache2/htdocs' GATEWAY_INTERFACE 'CGI/1.1' HTTP_ACCEPT 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' HTTP_ACCEPT_CHARSET 'ISO-8859-1,utf-8;q=0.7,*;q=0.7' HTTP_ACCEPT_ENCODING 'gzip, deflate' HTTP_ACCEPT_LANGUAGE 'pt-br,pt;q=0.8,en-us;q=0.5,en;q=0.3' HTTP_CONNECTION 'keep-alive' HTTP_COOKIE 'utma=4669863.1260802706.1295364409.1306935693.1306960483.86; utmz=4669863.1295364409.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); SESS61faf7f7d2406929b2f9eb4cbfff17d2=a3306f5d1194cf0d8a51dbf7b42c1259; ckan=d4951177ef995d92f0f987d481bd9180aa0f89e4518921db9cd9b6ac75fdd3fab4a25d06; auth_tkt="c6c3c3e0b3fe7bb765356659992760b24da43221flaviouserid_type:unicode"; auth_tkt="c6c3c3e0b3fe7bb765356659992760b24da43221flaviouserid_type:unicode"; ckan_user="flavio"; ckan_display_name="Fl\xc3\xa1vio Code\xc3\xa7o Coelho"; ckan_apikey="c139718d-918f-4a2b-b219-e33cb05cbe23"; utmc=4669863; hide_welcome_message=1' HTTP_HOST 'ckan.emap.fgv.br' HTTP_KEEP_ALIVE '115' HTTP_USER_AGENT 'Mozilla/5.0 (X11; Linux x86_64; rv:2.0.1) Gecko/20100101 Firefox/4.0.1' PATH_INFO '/storage/upload' PATH_TRANSLATED '/home/flavio/var/srvc/ckan.emap.fgv.br/pyenv/bin/ckan.emap.fgv.br.py/storage/upload' REMOTE_ADDR '10.250.48.110' REMOTE_PORT '57426' REMOTE_USER u'flavio' REMOTE_USER_DATA 'userid_type:unicode' REMOTE_USER_TOKENS [] REQUEST_METHOD 'GET' REQUEST_URI '/storage/upload' SCRIPT_FILENAME '/home/flavio/var/srvc/ckan.emap.fgv.br/pyenv/bin/ckan.emap.fgv.br.py' SERVER_ADDR '10.252.2.60' SERVER_ADMIN '[no address given]' SERVER_NAME 'ckan.emap.fgv.br' SERVER_PORT '80' SERVER_PROTOCOL 'HTTP/1.1' SERVER_SIGNATURE '<address>Apache/2.2.16 (Debian) Server at ckan.emap.fgv.br Port 80</address>\n' SERVER_SOFTWARE 'Apache/2.2.16 (Debian)' WSGI Variables application <beaker.middleware.CacheMiddleware? object at 0x7fc2999a6cd0> beaker.cache <beaker.cache.CacheManager? object at 0x7fc2999a6d90> beaker.get_session <bound method SessionMiddleware?._get_session of <beaker.middleware.SessionMiddleware? object at 0x7fc2999a6d10>> beaker.session {'locale': u'pt_BR', '_accessed_time': 1307373458.4790759, '_creation_time': 1302605470.0245121} mod_wsgi.application_group 'dck093|' mod_wsgi.callable_object 'application' mod_wsgi.handler_script mod_wsgi.input_chunked '0' mod_wsgi.listener_host mod_wsgi.listener_port '80' mod_wsgi.process_group 'ckan' mod_wsgi.request_handler 'wsgi-script' mod_wsgi.script_reloading '1' mod_wsgi.version (3, 3) paste.cookies (<SimpleCookie: SESS61faf7f7d2406929b2f9eb4cbfff17d2='a3306f5d1194cf0d8a51dbf7b42c1259' __utma='4669863.1260802706.1295364409.1306935693.1306960483.86' __utmc='4669863' __utmz='4669863.1295364409.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)' auth_tkt='c6c3c3e0b3fe7bb765356659992760b24da43221flavio!userid_type:unicode' ckan='d4951177ef995d92f0f987d481bd9180aa0f89e4518921db9cd9b6ac75fdd3fab4a25d06' ckan_apikey='c139718d-918f-4a2b-b219-e33cb05cbe23' ckan_display_name='Fl\xc3\xa1vio Code\xc3\xa7o Coelho' ckan_user='flavio' hide_welcome_message='1'>, 'utma=4669863.1260802706.1295364409.1306935693.1306960483.86; utmz=4669863.1295364409.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); SESS61faf7f7d2406929b2f9eb4cbfff17d2=a3306f5d1194cf0d8a51dbf7b42c1259; ckan=d4951177ef995d92f0f987d481bd9180aa0f89e4518921db9cd9b6ac75fdd3fab4a25d06; auth_tkt="c6c3c3e0b3fe7bb765356659992760b24da43221flavio!userid _type:unicode"; auth_tkt="c6c3c3e0b3fe7bb765356659992760b24da43221fla...lcome_message=1') paste.registry <paste.registry.Registry object at 0x7fc299de4f50> paste.throw_errors True pylons.environ_config {'session': 'beaker.session', 'cache': 'beaker.cache'} pylons.pylons <pylons.util.PylonsContext? object at 0x7fc299e27d50> pylons.routes_dict {'action': u'index', 'controller': u'ckanext.storage.controller:StorageController'} repoze.who.identity <repoze.who identity (hidden, dict-like) at 140473773131872> repoze.who.logger <logging.Logger instance at 0x7fc2999a3b48> repoze.who.plugins {'openid': <OpenIdIdentificationPlugin? 140473779397008>, 'friendlyform': <FriendlyFormPlugin? 140473777417040>, 'ckan.lib.authenticator:UsernamePasswordAuthenticator': <ckan.lib.authenticator.UsernamePasswordAuthenticator? object at 0x7fc299b93a50>, 'auth_tkt': <AuthTktCookiePlugin? 140473779397136>, 'ckan.lib.authenticator:OpenIDAuthenticator': <ckan.lib.authenticator.OpenIDAuthenticator object at 0x7fc299b934d0>} routes.route <routes.route.Route object at 0x7fc299864090> routes.url <routes.util.URLGenerator object at 0x7fc299e27ed0> 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 0x7fc299dae4e0> wsgi.version (1, 1) wsgiorg.routing_args (<routes.util.URLGenerator object at 0x7fc299e27ed0>, {'action': u'index', 'controller': u'ckanext.storage.controller:StorageController'}) Reply Reply to all Forward Reply to all paste@localhost to fccoelho show details 10:17 (2 hours ago)
CGI Variables AUTH_TYPE 'cookie' DOCUMENT_ROOT '/etc/apache2/htdocs' GATEWAY_INTERFACE 'CGI/1.1' HTTP_ACCEPT 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' HTTP_ACCEPT_CHARSET 'ISO-8859-1,utf-8;q=0.7,*;q=0.7' HTTP_ACCEPT_ENCODING 'gzip, deflate' HTTP_ACCEPT_LANGUAGE 'pt-br,pt;q=0.8,en-us;q=0.5,en;q=0.3' HTTP_CONNECTION 'keep-alive' HTTP_COOKIE 'utma=4669863.1260802706.1295364409.1306935693.1306960483.86; utmz=4669863.1295364409.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); SESS61faf7f7d2406929b2f9eb4cbfff17d2=a3306f5d1194cf0d8a51dbf7b42c1259; ckan=d4951177ef995d92f0f987d481bd9180aa0f89e4518921db9cd9b6ac75fdd3fab4a25d06; auth_tkt="c6c3c3e0b3fe7bb765356659992760b24da43221flaviouserid_type:unicode"; auth_tkt="c6c3c3e0b3fe7bb765356659992760b24da43221flaviouserid_type:unicode"; ckan_user="flavio"; ckan_display_name="Fl\xc3\xa1vio Code\xc3\xa7o Coelho"; ckan_apikey="c139718d-918f-4a2b-b219-e33cb05cbe23"; utmc=4669863; hide_welcome_message=1' HTTP_HOST 'ckan.emap.fgv.br' HTTP_KEEP_ALIVE '115' HTTP_USER_AGENT 'Mozilla/5.0 (X11; Linux x86_64; rv:2.0.1) Gecko/20100101 Firefox/4.0.1' PATH_INFO '/storage/upload' PATH_TRANSLATED '/home/flavio/var/srvc/ckan.emap.fgv.br/pyenv/bin/ckan.emap.fgv.br.py/storage/upload' REMOTE_ADDR '10.250.48.110' REMOTE_PORT '57429' REMOTE_USER u'flavio' REMOTE_USER_DATA 'userid_type:unicode' REMOTE_USER_TOKENS [] REQUEST_METHOD 'GET' REQUEST_URI '/storage/upload' SCRIPT_FILENAME '/home/flavio/var/srvc/ckan.emap.fgv.br/pyenv/bin/ckan.emap.fgv.br.py' SERVER_ADDR '10.252.2.60' SERVER_ADMIN '[no address given]' SERVER_NAME 'ckan.emap.fgv.br' SERVER_PORT '80' SERVER_PROTOCOL 'HTTP/1.1' SERVER_SIGNATURE '<address>Apache/2.2.16 (Debian) Server at ckan.emap.fgv.br Port 80</address>\n' SERVER_SOFTWARE 'Apache/2.2.16 (Debian)' WSGI Variables application <beaker.middleware.CacheMiddleware? object at 0x7fc2999a6cd0> beaker.cache <beaker.cache.CacheManager? object at 0x7fc2999a6d90> beaker.get_session <bound method SessionMiddleware?._get_session of <beaker.middleware.SessionMiddleware? object at 0x7fc2999a6d10>> beaker.session {'locale': u'pt_BR', '_accessed_time': 1307373466.085686, '_creation_time': 1302605470.0245121} mod_wsgi.application_group 'dck093|' mod_wsgi.callable_object 'application' mod_wsgi.handler_script mod_wsgi.input_chunked '0' mod_wsgi.listener_host mod_wsgi.listener_port '80' mod_wsgi.process_group 'ckan' mod_wsgi.request_handler 'wsgi-script' mod_wsgi.script_reloading '1' mod_wsgi.version (3, 3) paste.cookies (<SimpleCookie: SESS61faf7f7d2406929b2f9eb4cbfff17d2='a3306f5d1194cf0d8a51dbf7b42c1259' __utma='4669863.1260802706.1295364409.1306935693.1306960483.86' __utmc='4669863' __utmz='4669863.1295364409.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)' auth_tkt='c6c3c3e0b3fe7bb765356659992760b24da43221flavio!userid_type:unicode' ckan='d4951177ef995d92f0f987d481bd9180aa0f89e4518921db9cd9b6ac75fdd3fab4a25d06' ckan_apikey='c139718d-918f-4a2b-b219-e33cb05cbe23' ckan_display_name='Fl\xc3\xa1vio Code\xc3\xa7o Coelho' ckan_user='flavio' hide_welcome_message='1'>, 'utma=4669863.1260802706.1295364409.1306935693.1306960483.86; utmz=4669863.1295364409.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); SESS61faf7f7d2406929b2f9eb4cbfff17d2=a3306f5d1194cf0d8a51dbf7b42c1259; ckan=d4951177ef995d92f0f987d481bd9180aa0f89e4518921db9cd9b6ac75fdd3fab4a25d06; auth_tkt="c6c3c3e0b3fe7bb765356659992760b24da43221flavio!userid _type:unicode"; auth_tkt="c6c3c3e0b3fe7bb765356659992760b24da43221fla...lcome_message=1') paste.registry <paste.registry.Registry object at 0x7fc29a9da850> paste.throw_errors True pylons.environ_config {'session': 'beaker.session', 'cache': 'beaker.cache'} pylons.pylons <pylons.util.PylonsContext? object at 0x7fc29a9ef950> pylons.routes_dict {'action': u'index', 'controller': u'ckanext.storage.controller:StorageController'} repoze.who.identity <repoze.who identity (hidden, dict-like) at 140473790084352> repoze.who.logger <logging.Logger instance at 0x7fc2999a3b48> repoze.who.plugins {'openid': <OpenIdIdentificationPlugin? 140473779397008>, 'friendlyform': <FriendlyFormPlugin? 140473777417040>, 'ckan.lib.authenticator:UsernamePasswordAuthenticator': <ckan.lib.authenticator.UsernamePasswordAuthenticator? object at 0x7fc299b93a50>, 'auth_tkt': <AuthTktCookiePlugin? 140473779397136>, 'ckan.lib.authenticator:OpenIDAuthenticator': <ckan.lib.authenticator.OpenIDAuthenticator object at 0x7fc299b934d0>} routes.route <routes.route.Route object at 0x7fc299864090> routes.url <routes.util.URLGenerator object at 0x7fc29a9efcd0> 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 0x7fc29a9d7d50> wsgi.version (1, 1) wsgiorg.routing_args (<routes.util.URLGenerator object at 0x7fc29a9efcd0>, {'action': u'index', 'controller': u'ckanext.storage.controller:StorageController'}) |
1307373810000000 | 1308045351000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1180 | defect | dread | dread | ckan-v1.5-sprint-3 | closed | fixed | Links in markdown can be badly formed |
User can insert bad anchor tags into the User-About and Package-Notes fields and when you view them (web interface) it causes a 500 error. Need to improve filtering for anchors in markdown. <a href="http://xxxsex.com>nasty/website Also check this related exception: Module ckan.controllers.user:59 in read << c.is_myself = user.name == c.user c.api_key = user.apikey c.about_formatted = self._format_about(user.about) revisions_q = model.Session.query(model.Revision ).filter_by(author=user.name) >> c.about_formatted = self._format_about(user.about) Module ckan.controllers.user:167 in _format_about << def _format_about(self, about): about_formatted = ckan.misc.MarkdownFormat().to_html(about) return genshi.HTML(about_formatted) def _get_form_password(self): >> return genshi.HTML(about_formatted) WebApp Error: <class 'genshi.input.ParseError'>: junk characters in start tag: u'\u201dhttp://www.settingu': line 1, column 3 |
1307469037000000 | 1307544223000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1181 | defect | dread | dread | closed | fixed | Link spam vulnerability in Notes and User-About fields |
When viewing a user and a package, the about/notes fields contain Markdown, which may have links. These should have rel="nofollow" to discourage link spam. |
1307523160000000 | 1307532816000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1183 | defect | johnglover | nickstenning | ckan-sprint-2011-10-28 | closed | fixed | Downloads "Preview" button doesn't preview. |
The "Preview" button is a nice idea, but it doesn't seem to actually "preview" anything if the file MIME type would ordinarily cause the browser to download the file. If so, the browser does indeed just download the file. This is notable in the context of most hosted file services (including Google Storage) which will deliberately serve a MIME type of application/x-some-junk-here in order to force a download. |
1307701669000000 | 1311771069000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1186 | enhancement | dread | closed | fixed | Password reset facility |
You can register a user with password and (optional) email address. But if you forget the password you can't then log in again. We need a password reset facility that sends and email with a new password. |
1308142766000000 | 1310556519000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1187 | enhancement | dread | dread | ckan-v1.5-sprint-3 | closed | fixed | Stop spam users with links in the 'about' field |
When you edit a user, you should be stopped from putting links in the 'about' field, because this is a common tactic by spammers. |
1308142999000000 | 1308143605000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1190 | enhancement | rgrp | rgrp | ckan-v1.5 | closed | fixed | [super] CREP 0004 Data API and Data Processing System |
For some time (e.g. 1y+!) we have known that we want to integrate some kind of datastore / data processing system with CKAN. We've had a CREP in progress on this for some months (may copy that here at some point): We can distinguish 3 modules that are needed:
Suggestion is this would be sqlite based with a simple sql based API. http://ckan.net/api/data/{user|org}/{datastore_name}?q={some-read-sql-query}
get a long way with simple javascript running in the browser for development with this javascript then run offline using something like nodejs. Alternatively one could allow one to specify a url to e.g. a python file which would then be run in a sandbox (with access to some specified set of python modules) - #1432 More info |
1308227611000000 | 1323270522000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1191 | defect | dread | dread | ckan-v1.5-sprint-3 | closed | fixed | Unicode in user password gives 500 error on user registration |
Create/register a user with a unicode character in the password. It creates the user, but the redirect to the user page doesn't work and results in 500 error. |
1308312895000000 | 1308650930000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1192 | task | annapowellsmith | annapowellsmith | ckan-sprint-2011-10-28 | closed | fixed | Convert CKAN Sphinx docs into admin/reference manual |
As part of the general documentation overhaul (ticket:1142) we (APS and RGRP) want to convert the current Sphinx docs into:
The current chapters of the Sphinx docs should be moved as follows:
|
1308324593000000 | 1312191462000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1193 | enhancement | kindly | kindly | closed | fixed | bug with new formalchemy causing all resouces to be deleted |
The new formalchemy stores dict in a new format. |
1308525655000000 | 1309768960000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1194 | defect | dread | closed | fixed | "Welcome back" message for newly registered user |
|
1308563392000000 | 1317053688000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1195 | defect | rgrp | dread | ckan-sprint-2011-10-28 | closed | fixed | Storage extension to handle incorrect routes better |
We've seen exceptions caused by people getting the file storage link wrong, adding a slash to the end. e.g. http://ckan.net/storage/f/file/e696d857-e997-41c8-be08-408697168ca8/ We should aim to handle all requests better than causing exception. 404 (or even 302 in this case) is better than 500. |
1308576769000000 | 1311964374000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1196 | defect | dread | dread | ckan-v1.5-sprint-3 | closed | fixed | Markdown logging ignores config settings |
Markdown produces Debug logging, even when the pylons logging config is set to level of Info or Warning. This clogs up the logfile. |
1308743476000000 | 1308743857000000 |