: (IntegrityError) update or delete on table ""vocabulary"" violates
foreign key constraint ""tag_vocabulary_id_fkey"" on table ""tag""
DETAIL: Key (id)=(21421955-7560-467c-af30-9f790b73e6ae) is still referenced from table ""tag"".
'DELETE FROM vocabulary WHERE vocabulary.id = %(id)s' {'id': u'21421955-7560-467c-af30-9f790b73e6ae'}
URL: http://33.33.33.10:5000/api/action/vocabulary_delete
The error makes sense, but I'm wondering if it would be useful to extend the API to also allow the deletion of
non-empty vocabularies, possibly via a parameter (not sure what best practice in API design is). At the very least, it
would be cool if the error message coming back in the response had more information in it.",seanh
811,Extra field editing form layout breaks when there are long field names,ckan,,ckan-backlog,defect,,new,2010-11-17T11:53:32Z,2011-12-06T11:18:09Z,The layout of the editing section for extra fields breaks when a field name is slightly too long. Field names jump over to the right. See http://ckan.net/package/edit/dbpedia for examples.,cygri
812,Package edit form only allows three extra fields,ckan,,ckan-backlog,defect,,new,2010-11-17T11:56:50Z,2011-07-20T15:48:37Z,"= Rationale =
The package edit form is restricted to three extra fields. To enter more than three fields, one has to save the package and hit edit again (or hit preview).
= Implementation =
A mechanism similar to the one for resources (where you can add lines as you go) would solve this. So, have a button that adds more extra field rows via JS. (Extra fields don't need up/down buttons that the Resource table has)
Nice to have: a blank field is added when you tab from the last filled-in field in the table.",cygri
895,Add version number (or simular) to css/js includes query string,ckan,,ckan-backlog,defect,,new,2011-01-06T19:49:42Z,2012-06-15T15:36:33Z,"Updates to css after a new deploy don't come through without a hard refresh. Adding the version number to the include urls will solve this e.g.
mycssfile.css?v=12345678",memespring
1182,"Comments from deleted packages appear in ""Recent Comments"" feed",ckan,,ckan-backlog,defect,,new,2011-06-09T22:24:11Z,2012-06-15T15:31:59Z,"When a package has been deleted, say for spam moderation, comments still appear in the recent comments section.
This is a problem because non-admin users will be shown a warning that they're not authorised to view the package if they click on the link.
At CKAN.net currently, this affects the most recent comment.",timmcnamara
1185,Administrators can't delete packages from web UI,ckan,,ckan-backlog,defect,,new,2011-06-15T04:23:38Z,2012-06-15T15:31:29Z,"Administrators have ""View"", ""Edit"" and ""History"" tabs. However, I can't see a way to delete a package from the web UI.
Version: CKAN.net as of today",timmcnamara
1203,"Moderated edits: html code shows as ""changed"" although it is not",ckan,,ckan-backlog,defect,johnglover,new,2011-06-28T15:29:30Z,2011-08-15T09:46:19Z,"I've installed the Moderated Edits extension (ckanext-moderatededits) and am editing a package imported from IATIregistry.org, with an extra field which contains a bit of HTML.
The editor indicates the field has changed, although the content hasn't (see screenshot). All I can find so far is a minor difference: in the field content, there is a code — and in the rendered table that is an —",rolf
1355,Package extras property does not include the newly created ones,ckan,,ckan-backlog,defect,,new,2011-09-26T10:48:46Z,2012-06-15T15:27:36Z,"The extras in the package object sent to the extensions after editing (https://bitbucket.org/okfn/ckan/src/01efd5649c10/ckan/logic/action/update.py#cl-226) do not include the newly added.
",amercader
1642,Extra link generators generate garbled HTML,ckan,,ckan-backlog,defect,,new,2012-01-12T15:29:31Z,2012-06-15T15:26:07Z,"I had a package descriptions with URLs that contain ""group:foo"". This produces garbled output as the system tries to generate two sets of links: the outer link and an inner link.
Need to fix the parser.
Text:
Webdienst basierende Bereitstellung von Geobasisdaten der Freien und Hansestadt Hamburg. Folgende Geobasisdaten werden als WebMapTileService (WMT-S) für die Dauer des Wettbewerbs netzbasiert unter der Creative Commons Lizenz zur Verfügung gestellt: Digitale Orthophotos 40 cm Auflösung (Layer: apps4d_DOP40), Digitale Stadtkarte (Layer: apps4d_DISK), Digitale Regionalkarte (Layer: apps4d_DIRK), Digitale Karte 1:5000 (Layer: apps4d_DK5).
Metadateneinträge zu den Daten im PortalU:
* [apps4d_DOP40](http://www.portalu.de/trefferanzeige?docuuid=D6082285-6CAC-49C5-B7ED-B5A72BC17DEC&plugid=/kug-group:kug-iplug-udk-db_hh)
* [apps4d_DISK](http://www.portalu.de/trefferanzeige?docuuid=D2DA3359-3DC9-4CA4-AE9B-7C63D53B220F&plugid=/kug-group:kug-iplug-udk-db_hh)
* [apps4d_DIRK](http://www.portalu.de/trefferanzeige?docuuid=B7DDD599-F677-4C80-BED5-F11D82D5D1DD&plugid=/kug-group:kug-iplug-udk-db_hh)
* [apps4d_DK5](http://www.portalu.de/trefferanzeige?docuuid=2AE6D23E-48A5-4D85-BC0A-160737E0C8D2&plugid=/kug-group:kug-iplug-udk-db_hh)
One fix is quoting the URLs",pudo
1668,repoze version discrepency,ckan,,ckan-backlog,defect,,new,2012-01-17T12:02:26Z,2012-01-17T12:02:26Z,"There's a discrepency in repoze.who versions between the source and package installs:
* repoze.who - package 1.0.18 vs source 1.0.19
* repoze.who-friendlyform - package 1.0b3 vs source 1.0.8
We get a test failure [1] with the 1.0b3 version (from the ubuntu 10.04 python-repoze.who-plugins package). But we've not noticed any problems on s057 instances (br, no, ie etc) which have the package versions of repoze.who.
The reason the package install uses the earlier packaged versions rather than the ones we'd like is that repoze uses all sorts of horrendous import hacks, making it too difficult to put into our 'ckan-conflict' source package.
James suggests we 'do something horrible like dynamically patch repoze on CKAN import'.
[1] http://buildbot.okfn.org/builders/builder-ckan/builds/1371/steps/shell/logs/stdio
ERROR: ckan.tests.functional.test_user.TestUserController.test_user_create_unicode",dread
2197,Storage Metadata API: add/update not working with local file storage (Pairtree),ckan,,ckan-backlog,defect,,assigned,2012-02-28T09:29:37Z,2012-09-03T08:48:48Z,"If OFS is configured with Pairtree to use a local file storage, all POST requests to add/update metadata ( /api/storage/metadata/{label} ) will fail.
This is due to the use of [https://github.com/okfn/ofs/blob/master/ofs/remote/botostore.py BotoOFS] specific ''private'' methods in [https://github.com/okfn/ckan/blob/master/ckan/controllers/storage.py StorageAPIController.set_metadata()], eg: self.ofs.'''_require_bucket'''(bucket), self.ofs.'''_get_key'''(b, label), self.ofs.'''_update_key_metadata'''(k, metadata) ... those methods can't be found in [https://github.com/okfn/ofs/blob/master/ofs/local/pairtreestore.py POTFS] and this causes errors.
The API should use only [https://github.com/okfn/ofs/blob/master/ofs/base.py OFSInterface] methods, or should conditionally make calls based off the actual type of ''self.ofs''.
''PS: I did set ""ckan"" as ""Component"" in the ticket because storage has been integrated back into the core in CKAN 1.6''",zydio
2486,Should be able to use . in dataset names,ckan,,ckan-backlog,defect,,new,2012-06-02T16:46:23Z,2012-06-15T14:36:18Z,,seanh
2607,'Upload a file' appears on resource form when storage not enabled,ckan,,ckan-backlog,defect,,assigned,2012-06-27T13:30:08Z,2012-09-03T09:09:43Z,"if the user tries to upload a file they will get ""Failed to get credentials for storage upload. Upload cannot proceed""
Maybe add a test for it this time, this bug has appeared and reappeared before",seanh
1096,[super] CKAN Hosted,ckan,,ckan-future,defect,rufuspollock,new,2011-04-19T17:44:22Z,2012-06-15T15:34:44Z,"Many users of CKAN want to have their own instance without much effort. Setting these up in separate places is a maintenance nightmare, we should much rather have some tenant separation in core CKAN. Some ideas:
* introduce model.Site and c.site
* site has: custom CSS, extra_template_path, title, languages list, package_form, group_form (all configured via web UI)
* Subdomain detector to activate sites.
* use site in Authorizer instead of System, have a NullSite for global things
* allow cross-site search
* packages are in a list of sites, m:n rather than 1:n
* list of sites is string-based, can contain sites not in site table to express harvested external material which is not editable locally. ",pudo
1457,Bug with DataNL instance,ckan,,ckan-future,defect,,new,2011-11-10T11:37:21Z,2011-11-10T11:37:21Z," ""when logging into http://register.data.overheid.nl/ with OpenID, the /user/me page gives a 404. CKAN version 1.3.4.""
n the manual it says an API key kan be created via http://test.ckan.net/user/me /. However, when I try the corresponding http://register.data.overheid.nl/user/me, I get a 404 error (not found). ",jilly.mathews
2762,test_related.py crashes,ckan,,ckan-v1.8,defect,,new,2012-07-26T11:55:53Z,2012-07-26T11:55:53Z,"/home/seanh/Projects/ckan/ckan/ckan/tests/functional/test_related.py
ImportError (cannot import name assert_regexp_matches)",seanh
2919,Remove IController from docs,ckan,,ckan-v1.8,defect,,new,2012-09-12T14:47:33Z,2012-09-12T14:47:33Z,Still in docs but seems gone from code,seanh
2936,Updating a group via the API clears its packages,ckan,,ckan-v1.8,defect,,new,2012-09-19T09:47:46Z,2012-09-19T09:47:46Z,"If the group dict that you post to the API does not have any 'packages' key then all the group's packages get removed. I think it would be better if you could just update e.g. the group's description without having to also post the list of packages, and apparently this is how other update API actions work.
Might be worth checking all the update API actions for this behaviour, and making sure they're all consistent",seanh
2958,Uploading files with unicode characters in filename fails in CKAN 1.7 and 1.8,ckan,,ckan-v1.8,defect,,new,2012-10-04T09:29:36Z,2012-10-04T09:29:36Z,"e.g. 2012_08(주요국가).xls
I tested in CKAN 2.0 and it seemed to work fine there.",seanh
2965,Stats extension broken on 1.8,ckan,,ckan-v1.8,defect,,new,2012-10-15T10:15:41Z,2012-10-15T10:15:57Z," * Graphs not showing (looks like a flot related file is missing)
* Wrong groups counts (e.g. Data Explorer Examples show 1800 datasets when it onlu has 8)",amercader
2763,Multilingual tests failing,ckan,,ckan-v1.8.1,defect,,new,2012-07-26T11:56:59Z,2012-10-15T12:24:24Z,"test_multilingual_plugin.TestDatasetTermTranslation.test_dataset_index_translation, test_multilingual_plugin.TestDatasetTermTranslation.test_group_read_translation both failing for me on master",seanh
2815,"db_to_form_package_schema() strips tracking summary, isopen",ckan,,ckan-v1.8.1,defect,seanh,new,2012-08-08T16:47:07Z,2012-10-15T12:23:41Z,"If an IDatasetForm plugin with a db_to_form_schema() based on db_to_form_package_schema() (which is in turn based on default_package_schema()) is in use then the 'tracking_summary' dict and the 'isopen' bool get stripped from package dicts during validation, e.g. during package_show(), and these values are then not available to templates.",seanh
2846,Organizations allows you to set an organization as the parent organization of itself,ckan,,ckan-v1.8.1,defect,,new,2012-08-13T12:22:16Z,2012-10-15T12:24:04Z,that doesn't make any sense,seanh
2881,Remove or improve 'Domain Model' docs page,ckan,,ckan-v1.8.1,defect,,new,2012-08-21T09:05:17Z,2012-08-22T09:00:56Z,"http://docs.ckan.org/en/ckan-1.8/domain-model.html
Currently not very useful. Also these pages:
http://docs.ckan.org/en/latest/domain-model-dataset.html
http://docs.ckan.org/en/latest/domain-model-resource.html
http://docs.ckan.org/en/latest/domain-model-task-status.html
This just seems very incomplete to me (surely there is more to the domain model the dataset, resource and task status?) and very likely to not get updated as changes are mode to the code. Would anyone seriously refer to this rather than just looking at the source code?
If we want to have something along these lines in the docs, I suggest adding docstrings to packages, modules, classes and methods and then using autodoc to pull them into sphinx.",seanh
2882,Remove User Stories Overview from docs?,ckan,,ckan-v1.8.1,defect,,new,2012-08-21T09:18:43Z,2012-08-21T09:18:43Z,"Why is this here? Is it up to date? Is anyone keeping it up to date? Does this belong in some sort of CKAN planning or roadmap document rather than in the documentation?
http://docs.ckan.org/en/latest/user-stories.html",seanh
2884,Lock icon shown next to unknown licenses,ckan,,ckan-v1.8.1,defect,,new,2012-08-21T16:01:13Z,2012-08-21T16:01:13Z,Set the license of a dataset to blank (the first option) or to 'License Not Specified' or 'Other (Non-Commercial)' and a lock icon appears next to the license on the dataset read page. Shouldn't this be a question mark or something?,seanh
2891,Update or remove DataStore google presentation,ckan,,ckan-v1.8.1,defect,,new,2012-08-28T10:23:43Z,2012-08-28T11:42:57Z,"Currently this page:
http://docs.ckan.org/en/ckan-1.8/datastore.html
has an embedded Google docs presentation about data store which contains some outdated information, e.g. links to datastoreclient which was merged into ckanclient.
Suggest moving the google presentation into the documentation proper, so it works with grep etc.",seanh
2892,IDatasetForm's form_to_db_schema() breaks API?,ckan,,ckan-v1.8.1,defect,,new,2012-08-28T11:42:05Z,2012-08-28T11:42:43Z,"It looks like when an IDatasetForm plugin with a form_to_db_schema() method is active, then the posted data dict is validated against the schema even if the user is posting to an API endpoint like /api/action/package_update etc. This breaks the API, for example 'name' and 'title' are optional keys for package_update (you can supply only the 'id'), but the schema validation will fail if either are not present in the posted dict.
It may be we need different schema for package create and package update, currently IDatasetForm has just the one form_to_db_schema() method.",seanh
2893,Tags missing from form_to_db_package_schema(),ckan,,ckan-v1.8.1,defect,,new,2012-08-28T12:11:04Z,2012-08-28T12:11:04Z,"With an IDatasetForm plugin active with a form_to_db_package_schema() method that returns a schema based on ckan/logic/schema.py:form_to_db_package_schema() I'm getting validation errors like this:
[ckan.controllers.api] Validation error: ""{'__type': 'Validation Error', '__junk': [u'The input field __junk was not expected.']}""
They seem to be caused when a data dict with key 'tags' is passed to e.g. the package_update API, for example in ckan/tests/functional/api/model/test_vocabulary.py there are various tests that get this error when they call package_update (if you run the tests with a suitable IDatasetForm plugin active).
In ckan/logic/schema.py:form_to_db_package_schema() 'tags' is for some reason deliberately removed from the schema.",seanh
2894,Empty lists get stripped from package dicst in package_show(),ckan,,ckan-v1.8.1,defect,,new,2012-08-28T12:40:34Z,2012-08-28T12:40:34Z,"If there's an IDatasetForm plugin active with a form_to_db_schema(), then packages with e.g. no extras get the 'extras' key entirely stripped by the validation in package_show, which causes some tests to crash, e.g. in ckan/tests/functional/api/test_activity.py (if the tests are run with a suitable IDatasetForm plugin active).
If a package has no extras the dict returned by package_show should still have an 'extras' key with an empty list as the value.
Suspect this also effects packages with no tags, no groups, etc.",seanh
2896,resource_create crashes on ValidationErrors with KeyError: 'resources',ckan,,ckan-v1.8.1,defect,,new,2012-08-29T16:29:14Z,2012-08-29T16:29:14Z,"ckan/logic/action/create.py:resource_create():
try:
pkg_dict = _get_action('package_update')(context, pkg_dict)
except ValidationError, e:
errors = e.error_dict['resources'][-1]
raise ValidationError(errors)
This assumes that package_update always returns an error dict with 'resources' in it. This assumption doesn't hold.",seanh
2897,db_to_form_package_schema() crashes historical dataset page,ckan,,ckan-v1.8.1,defect,,new,2012-08-30T12:41:35Z,2012-08-30T12:41:35Z,"If there's an IDatasetForm plugin active with a db_to_form_schema() method based on db_to_form_package_schema(), then viewing historical versions of datasets (e.g. http://127.0.0.1:5000/dataset/dasd%402012-08-30T12%3A26%3A18.524191) crashes.
Reason is that revison_id and revision_timestamp need to be added to db_to_form_package_schema(), something like:
schema.update({'revision_id': [validators.ignore_missing, unicode]})
schema.update({'revision_timestamp':
[validators.ignore_missing, unicode]})
",seanh
2900,snippets/package_list.html template crashes on dataset that has no 'notes',ckan,,ckan-v1.8.1,defect,,new,2012-08-30T14:00:07Z,2012-08-30T14:09:48Z,"Sometimes a dataset dict comes through package_show() with 'notes': None and then the 'notes' key gets stripped from the dict when validation happens (validation only happens if there's an IDatasetForm plugin with a db_to_form_schema() method) and then package_list.html template crashes, e.g. on user profile pages.
Fix in the template? Or in the schema?
The template also crashes on packages with no tags (empty list gets stripped from dict) and probably other empty fields as well",seanh
2912,ckanext/organizations: Neither public or private initially selected when adding dataset,ckan,,ckan-v1.8.1,defect,,new,2012-09-10T09:57:56Z,2012-10-15T12:24:57Z,"When adding a dataset with the organizations extension on, neither the Public or the Private radio button is initially selected. Public should be selected.",seanh
2914,Add form_to_db_schema_options() to IDatasetForm and IGroupForm,ckan,,ckan-v1.8.1,defect,,new,2012-09-12T10:29:55Z,2012-10-15T12:25:28Z,"This optional method is supported when creating or updating groups and packages and is used in DefaultGroupForm and DefaultPackageForm, but seems to be missing from the interfaces. Should be added with docstring.",seanh
2335,Unicode characters don't work in CKAN ini files,ckan,,ckan-v1.9,defect,seanh,assigned,2012-04-30T12:42:06Z,2012-06-25T11:43:55Z,"You get a UnicodeDecodeError, looks like it tries to decode the ini file as ascii. This is a problem because someone might try to set their site description to something with an umlaut in it, for example.",seanh
2406,Errors in source install doc,ckan,,ckan-v1.9,defect,kindly,new,2012-05-21T10:11:33Z,2012-06-25T15:06:44Z,"There are a few errors or unclarities in the source install doc - see
http://lists.okfn.org/pipermail/ckan-dev/2012-May/002203.html
http://lists.okfn.org/pipermail/ckan-dev/2012-May/002204.html
",markw
2415,Confusing message on attempting to register new account with upper case,ckan,,ckan-v1.9,defect,kindly,new,2012-05-23T13:19:49Z,2012-07-02T22:31:44Z,"On registering a new account, if you try to use a capital letter in your 'Login', you get the unhelpful error message:
""The form contains invalid entries: Name: Url must be purely lowercase alphanumeric (ascii) characters and these symbols: -_""
What does 'Name' or 'Url' have to do with anything? It means 'Login must be ...'
But even better would be to make the login case-insensitive and allow capitals to be entered.
",markw
2485,Encourage leak containment by limiting the number of requests a CKAN process serves,ckan,,ckan-v1.9,defect,icmurray,new,2012-06-01T11:47:09Z,2012-06-25T14:53:48Z,"CKAN has [ticket:1345 memory leaks]. They can be contained by limiting the time-to-live of a ckan process. An easy way to achieve this is to limit the number of requests a ckan server process can serve before it gets killed and replaced.
One should ...
* research ways to limit requests-per-process with the different web servers (see below for a start);
* explain these safeguards in the CKAN documentation and encourage users to apply them;
* consider the helper script '''[https://github.com/okfn/ckan/blob/master/ckan_deb/usr/bin/ckan-create-instance ckan-create-instance]''' to generate Apache configs with '''WSGIDaemonProcess ... maximum-requests=XY''' being active instead of [https://github.com/okfn/ckan/blob/master/ckan_deb/usr/lib/ckan/common.sh#L262 commented out]. Or at least let it warn the user to use '''!MaxRequestsPerChild''';
* Investigate current CKAN deployments whether they suffer from mem leaks, and if so contain them.
----
How to limit requests-per-process
* Apache:
* Use '''WSGIDaemonProcess''' with '''maximum-requests=50''' or whatever limit is appropriate. We did this sucessfully on [http://trac.okfn.org/ticket/904 datahub.io] and the [http://trac.okfn.org/ticket/1245 ckan farm]
* (This need to be verified) Without WSGIDaemonProcess, '''!MaxRequestsPerChild 50''' should achieve the same.
* nginx/supervisord: to be researched.
",nils.toedtmann
2520,Document undocumented config options,ckan,,ckan-v1.9,defect,seanh,assigned,2012-06-13T11:52:48Z,2012-06-25T11:48:28Z,"There are 21 undocumented config options in CKAN, some of which are not mentioned in the config file template either:
ckan.admin.name
ckan.admin.email
ckan.default.group_type
ckan.page_cache_enabled
ckan.cache_enabled
ckan.cache_expires
ckan.extra_resource_fields
ckan.extra_resource_group_fields
ckan.storage.key_prefix
ckan.storage.max_content_length
ckan.feeds.authority_name *
ckan.feeds.date *
ckan.feeds.author_name *
ckan.feeds.author_link *
ckan.mail_from
ckan.gravatar_default *
ckan.plugins
ckan.api_url
ckan.auth.profile
ckan.datastore.enabled
ckan.tracking_enabled
There are also some options that are in the default deployment.ini even though they're deprecated:
ckan.async_notifier
carrot_messaging_library
ckan.build_search_index_synchronously
See email to ckan-dev from David Read: http://lists.okfn.org/pipermail/ckan-dev/2012-June/002447.html
It'd be best if the docs could be automatically pulled from the source into sphinx using autodoc, see #1358",seanh
2721,deleted groups should not show on 'Add to Groups' dropdown,ckan,,demo phase 4,defect,toby,new,2012-07-22T09:17:12Z,2012-08-09T20:30:14Z,"Groups previously deleted still show up in the add dataset process in step 3 'Additional info'
http://s031.okserver.org:2375/dataset/new_metadata/ff",shevski
2728,deleted group shows on search index - for admins,ckan,,demo phase 4,defect,toby,new,2012-07-22T09:53:04Z,2012-08-15T09:45:44Z,"'test-group', which has been deleted,shows up on main search page under groups - and can be filtered by - see http://s031.okserver.org:2375/dataset?groups=test-group",shevski
2857,no UI to follow another user although option on dashboard,ckan,,demo phase 4,defect,toby,new,2012-08-15T16:59:43Z,2012-08-16T08:51:37Z,"e.g. second option in left hand sidebar is follow another user' http://s031.okserver.org:2375/user/dashboard but if you click on that and then any user, there's no follow button
to me the dashboard user stuff is highly unfinished and probably should not be included unless someone is very keen for it",shevski
2863,non-admin users can edit other's draft datasets,ckan,,demo phase 4,defect,toby,new,2012-08-16T10:54:39Z,2012-08-17T11:05:02Z,edit button shows up for daniel lewis for http://s031.okserver.org:2375/dataset/ff ,shevski
2869,user profile not linked on disqus until page refresh,ckan,,demo phase 4,defect,,new,2012-08-16T10:58:34Z,2012-08-16T10:58:34Z,"Reported by Daniel:
Problem: DISQUS comments don't appear with profile details (inc. username).
How to reproduce:
1) Go to a dataset, e.g. I went to http://s031.okserver.org:2375/dataset/ff
2) I logged into DISQUS using the Google Authentication, e.g. in my case that is okfn.daniel.lewis@gmail.com
3) I made a comment and submitted
4) It comes up with the comment, but no linked profile until the page gets refreshed",shevski
2873,ckanext-qa: dataset summary incorrect,ckan,,demo phase 4,defect,toby,assigned,2012-08-16T14:13:49Z,2012-08-17T12:58:03Z,"
For example see: http://s031.okserver.org:2375/qa/dataset/five_stars
Which has: Example dataset as a score of: 4 After examination of the dataset ( http://s031.okserver.org:2375/dataset/example-dataset ) it is made up of a CSV and an HTML file.
",danieljohnlewis
2820,English Language: Visualization -> Visualisation,ckan,,demo phase 5,defect,,new,2012-08-09T09:27:35Z,2012-08-09T09:27:35Z,"Problem: In the English version (which has a UK flag, indicating British English), the word ""Visualization"" is used. For an example see the ""Filter by type"" drop down on the /apps page.
Expected: This should be ""Visualisation"" in British English. Any instances of ""Visualize"" should be changed to ""Visualise"" too.
",danieljohnlewis
2898,Looses data entered on step 1 of create dataset after login,ckan,,demo phase 5,defect,,new,2012-08-30T13:08:14Z,2012-08-30T13:08:40Z,"To reproduce:
1. Enter details for new dataset without being logged in
2. Hit login page for just before step 2
3. Once logged in you end up back at the empty add dataset form (instead of expected 2nd step of dataset edit)",johnmartin
2582,Do not hide notes / readme on dataset pages,ckan,,ckan-v1.9,enhancement,,new,2012-06-21T20:59:00Z,2012-06-25T11:50:09Z,"Current we hide most of readme and then let users reveal it. Stop doing this and if necessary add a quick link down to resources section. (Maybe also rename resources to Data and Resources ...?)
Aside: believe I have mentioned this somewhere a month + ago but could not find the ticket.",rgrp
2766,prevent draft datasets making it to activity stream,ckan,,demo phase 4,enhancement,seanh,assigned,2012-07-26T16:06:35Z,2012-08-09T20:13:13Z,"The new ckan creates datasets as part of a 3 phase process. To allow for this partially created datasets can have a state that is 'draft' or 'draft-complete'. These datasets should not be seen as active by the activity stream.
If we click 'add dataset' and then complete the first phase of adding a dataset then we end up having a activity stream created. When we add a resource in the next phase (add data) again an activity stream item xxx added resource to dataset is created
We do not want these adding. Essentially if a dataset has a state.startswith('draft') then we want the activity stream to ignore all actions involving it.
finally when the state is changed form state.startswith('draft') to state=='active' we want a xxx has created dataset ... to be added to the stream.
The best way to do this would be to branch from 2375-demo-theme-stable and get it to work there.
Let me know if you need any help with this ticket or a better explanation of the problem.",shevski
1198,Publisher hierarchy,ckan,,ckan-backlog,enhancement,,new,2011-06-23T09:16:32Z,2012-06-15T15:30:00Z,"'Publisher' entities in the model. They are hierarchical.
'User-Publisher' connections with one or more roles (e.g. drafter, moderator).
Authorization settings can control who can set what values in a 'published by' type field.
Publishers and User-Publishers available to read in the API.
Future tickets will provide:
* API to write Publishers and User-Publishers
* UI to edit Publishers and User-Publishers
(This feature deprecates authorization groups)",dread
1466,Need to support https login for multiple instances as part of the CKAN package install,ckan,,ckan-backlog,enhancement,,new,2011-11-15T16:52:58Z,2012-02-06T11:51:02Z,,thejimmyg
1832,dataset purge API,ckan,,ckan-backlog,enhancement,,assigned,2012-02-24T10:02:25Z,2012-06-15T15:21:46Z,"Purging datasets (deleting them fully, not just changing the state to 'deleted') is important for users testing dataset creation over the API on a test CKAN instance.
Without this, they need to resort to more difficult methods such as:
* cleaning and reloading the database
* setting the test datasets to state 'deleted' and also appending a suffix '_00' and incrementing the number until there is no clash of names.
Requested for NHSIC.
== Implementation ==
* This could slot into the Action API.
* Of course we would need to ensure the user's had been given the specific right to purge.
* I suggest we log the full details of the dataset being purged.",dread
2751,check translations for full demo site,ckan,,demo phase 5,enhancement,toby,new,2012-07-25T11:40:43Z,2012-08-06T08:50:46Z,need to check everything gets translated - sean did this before so will have info,toby
1244,Notes field carriage-returns converted to CRLF,ckan,,,enhancement,,assigned,2011-07-26T14:10:56Z,2012-06-20T11:20:53Z,"When you edit a package in the web form, if the notes field had {{{\n}}} as the End Of Line symbol, it gets lost when you preview or save the package, and the notes field is displayed all on one line.
This can be seen when editing annakarenina (as created by 'paster create-test-data'). The diff shows for example:
{{{
- Some test notes
+ Some test notes
? +
}}}
but it would more clearly be shown as:
{{{
- Some test notes\n
+ Some test notes
? ++
}}}
This is a significant problem with DGU, since a lot comes in via the API.
It's not clear what we should do about it. We could standardise on \n or \r\n when the form submission comes in. Do different browsers on different platforms do different things with EOLs?
== Analysis ==
Displaying the package: the Markdown processor respects both EOLs when displaying the field, putting each line in a tag.
Creating the package edit form: placed into .
Browser displaying package edit form: displays \n and \r\n as EOL. But \n\n gets compressed to one EOL. But on submission, both are returned as \r\n.
Receiving the edited package: Somewhere along the line the EOL gets converted to \n\n.
",dread
1322,Action API improvements,ckan,,,enhancement,,assigned,2011-09-08T09:39:09Z,2012-06-20T11:18:08Z,"Focusing on improving Action API as the v3 API:
* have an optional parameter of the data_dict called ""options"". Options would contain items that would get passed into the context. e.g. {{{{""options"" : {""ref_package_by"": ""id""}}. }}}
* instead of using API version to change the way packages are referenced, use the ref_package_by.
* All package_show, group_show etc. to accept an object 'name' as an alternative to object 'id'.
* Action API is v3 of api, replacement for v1 & v2. Default for most urls is still v1, but if url is /api/action then default to v3.
Next steps:
* Add search API (package, resource,
* Add Util API
* Clarify JSONP still applies
* Add doc strings, clarifying parameters",dread
1460,Improve extensions documentation,ckan,,,enhancement,,assigned,2011-11-12T16:15:23Z,2012-06-20T11:16:41Z,"Current extensions documentation needs some work: http://docs.ckan.org/en/latest/plugins.html
* Queue extension section may now be out of date (?)
* Think about how it integrates with https://github.com/okfn/ckanext-example (especially tutorial and example extension)
* Document all plugin points (auto-extract from CKAN source??)",rgrp
1689,List deleted datasets in API,ckan,,,enhancement,kindly,assigned,2012-01-20T12:23:34Z,2012-06-20T11:00:40Z,"The admin extension allows deleted datasets to be viewed, but there is no equivalent in the API. The package_list API call filters to just 'state=active' datasets.
'state' could be a parameter on the package_list call
* Easy to call and implement
* But getting permissions right for the different state values may not be easy - maybe a separate logic function is better?
",dread
2635,Non-destructive SOLR reindex,ckan,,,enhancement,,new,2012-07-09T10:23:14Z,2012-07-09T10:23:14Z,"You can't run the search-index reindex on a live server because it will give us bad results for 2 to 3 hours while it runs. Can there be an option that doesn't delete the entire index at the start?
Instead it could just delete any items that don't exist any more, then delete them and regenerate them one by one. So the total number of datasets doesn't change much.",dread
3011,Recline fixes and updates for CKAN 2.0,ckan,,ckan 2.0,enhancement,johnglover,new,2012-11-07T11:40:55Z,2012-11-07T11:40:55Z,Fixes and updates to Recline / Datapreview for CKAN 2.0.,johnglover
3017,New stable branch for the demo server,ckan,,ckan 2.0,enhancement,johnglover,new,2012-11-13T15:04:48Z,2012-11-13T15:04:48Z,,johnglover
1041,Start Using the CKAN Wiki for Tutorial-style documentation,ckan,,ckan-backlog,enhancement,thejimmyg,assigned,2011-03-16T14:11:55Z,2011-08-03T11:52:47Z,"For example, I will document the following:
* A specific guide on using mercurial when working with our branching and merging policy
* DONE - http://wiki.ckan.net/Becoming_a_CKAN_Developer
* Policy document on how we use tickets, plan sprints and make releases
* DONE - http://wiki.ckan.net/Becoming_a_CKAN_Developer
* How to package software as .deb file for project deployment
I'd love if someone else would write:
* An authorisation tutorial covering the core model, the command line tools and examples of every possible way of using the system
* A HOWTO guide with screenshots for adding a package
",thejimmyg
1163,Improvements to Storage Extension,ckan,,ckan-backlog,enhancement,rgrp,new,2011-05-26T11:19:38Z,2011-07-08T14:03:28Z,"Storage is now working but there are
* Integrate with Resources (e.g. create a resource for each file upload and give option to associate with a package)
* Should we introduce rule that files *not* associated with a Resource are periodically deleted?
* Allow setting of a file name/path before upload
* Allow for file overwriting/deleting etc (how should this work -- do we want to allow this sort of thing)
* Integrate local file upload stuff in api/auth/*
== Different Backend Issues ==
Local file store is rather different from 'remote' storage in various ways:
* For remote you don't want to use many buckets as there are bucket limits while for local you want to. Should we there have a single path that users provide which we then partition differently for different backends.
",rgrp
1168,Test system for deb packaging,ckan,,ckan-backlog,enhancement,thejimmyg,assigned,2011-05-26T20:33:14Z,2012-03-05T23:33:43Z,"Get buildbot to:
* build the deb packages
* install them into a fresh virtual machine
* run smoke tests on the installed ckan",dread
1257,Anti-Spam tools,ckan,,ckan-backlog,enhancement,,new,2011-08-02T11:12:45Z,2012-06-15T15:28:49Z,"We are getting more and more spam on ckan.net and we need to improve our strategy of combating it. It is bad because google ranks who we link to (which we do want for legitimate links), and our front page contains the latest package edits, so spam is immediately very visible.
Spam:
* Package creation
* Package edit
* User creation
* Group creation
Systems to consider:
* Automatic
* captcha
* bayesian scoring
* Sysadmin
* a tool to quickly analyse and remove packages, edits and users
* Helpful users
* button to click indicating spam, leading to any/all of:
* add TODO item (which emails package admin and sysadmins)
* quarantine the package/user so it doesn't show up on the front page and a warning is shown when you view it
General thoughts:
* We should learn from the wikipedia tools, as they are the experts
* This is a serious problem that is only going to get worse and is a threat to the whole site.",dread
1262,"Enforce ""create-user"" permission",ckan,,ckan-backlog,enhancement,,new,2011-08-03T12:41:36Z,2011-12-05T13:01:52Z,"This does not seem to have any implications at the moment, it should lock down registration and remove all related links. ",pudo
1286,Remove remaining formalchemy stuff,ckan,,ckan-backlog,enhancement,,new,2011-08-23T16:29:56Z,2012-07-16T11:00:20Z,"Stuff I've spotted:
* forms/*
* template/group/edit_form.html
* template/package/edit_form.html
This can go once new DGU form is in.",rgrp
1311,Modal user register and login form,ckan,,ckan-backlog,enhancement,rgrp,new,2011-09-06T08:20:27Z,2011-09-06T08:20:27Z,"Subticket of: #1294
Rather than having to visit a dedicated page it would be good if registration and login could be done from a modal form (separate or combined ...).
== Why ==
* It could be used from dataset creation page in situations where user needs to be registered / logged in to create a dataset (so we could allow someone to start creating a dataset and only get them to login at the end ...)
* It allows for quicker and easier logging in
== Implementation ==
* See Friedrich's work on the datahub",rgrp
1343,"[super] User related improvements (login, user pages etc)",ckan,,ckan-backlog,enhancement,rgrp,new,2011-09-14T16:18:18Z,2011-10-13T17:48:58Z," * Disallow account creation via openid - #1386
* Require email field - #1319
* Require email confirmation to be activated (?)
* Improvements to user page (e.g. show activity and more info about user) - #1396
* Modal user login - #1311",rgrp
1352,Use logic functions instead of as_dict when indexing entities,ckan,,ckan-backlog,enhancement,,new,2011-09-21T14:29:57Z,2012-06-15T15:28:06Z,"The current search implementation uses the output of the the as_dict method of the domain Package object to update the index
https://bitbucket.org/okfn/ckan/src/56c79e3fc44c/ckan/lib/search/index.py#cl-48
It also uses package_to_api1 in the SynchronousSearch plugin:
https://bitbucket.org/okfn/ckan/src/f9dfb0506594/ckan/lib/search/__init__.py#cl-93
This prevents extensions from being able to index custom properties (e.g. faceting by custom extras not included in the model).
The search should use the logic function to get the package properties:
{{{
get_action('package_show')(context,data_dict)
}}}
",amercader
1439,Action API discoverablility,ckan,,ckan-backlog,enhancement,,new,2011-11-01T15:39:30Z,2012-01-02T03:29:34Z,"A good service API needs to be discoverable, so you are not always having to refer to the documentation html.
Maybe /api/action should return a list of actions available? (Currently this returns a 404.)
* It would be nice to sort these into get/create/update/delete.
* #1438 Parameters for each of the actions must be discoverable too
/api/action/{action_name} should also return the help text / parameters allowable. (Currently this returns 400 error)",dread
1489,Updating example theme/extension,ckan,,ckan-backlog,enhancement,,assigned,2011-11-24T12:32:00Z,2011-12-19T10:59:44Z,"ckanext-example needs updating for CKAN 1.5:
* theme changes
* new forms
About: 'ckanext-exampletheme' was created in Spring 2011 as an example CKAN extension that showed how to customise the look & operation of CKAN. This moved to github and renamed 'ckanext-example'. ",dread
1534,Change revisions to record userid rather than username,ckan,,ckan-backlog,enhancement,,new,2011-12-07T17:26:30Z,2012-05-28T11:37:30Z,"The use of username is problematic because username's can change.
* Change all revision creation code to use user id (simplest is to change c.author field in lib/base.py (?))
* (?) Add a field ipaddr for ip address of anonymous users? (or just keep putting this in author field on Revision and then acception that those won't match when we do a look up against user table)
* Change user view page to look up against user id rather than name
* Perform migration on existing Revision objects
* Match should probably be against both openid and username when searching Revisions' author field (especially true on CKAN where some people have already changed their username from being their openid)",rgrp
1542,Buttons to purge spam datasets and groups,ckan,,ckan-backlog,enhancement,,new,2011-12-08T17:22:10Z,2012-06-15T15:26:40Z,"A sysadmin should be able to easily examine a suspect group or package, determine if it was created by a spammer (as opposed to being a legitimate object that has been graffitied by a spammer) and purge it.
The existing two-stage revision delete is currently unreliable and perhaps too laborious.
Olav and Richard have needs along this line.",dread
1584,QA report improvements - 2.5d,ckan,,ckan-backlog,enhancement,johnglover,new,2011-12-21T09:23:53Z,2012-06-06T11:26:15Z,"Super: #1594
* qa/{username}
* qa/{groupname}
* paginate QA results
* search / filter QA results
* ~~list organisation report by default, but can disable via config option~~ (done)
* UX tidy up of report pages - hide border if no sidebar, etc",johnglover
1588,QA - Give SPARQL endpoints a 4 star rating,ckan,,ckan-backlog,enhancement,johnglover,new,2011-12-21T15:13:25Z,2012-01-02T03:32:58Z,"Super: #1594
From Richard Cyganiak on the CKAN Discuss list:
Besides considering the media type of resources, it would also make sense to check for the presence of a SPARQL endpoint. SPARQL endpoints are recorded for more than 300 datasets on the Data Hub using the pseudo-type ""api/sparql"". A few more are recorded with the format ""SPARQL"". I suggest that datasets with such resources should also be considered for the fourth star.",johnglover
1589,QA - Give 5 star rating to datasets with link metadata,ckan,,ckan-backlog,enhancement,johnglover,new,2011-12-21T15:16:40Z,2012-01-02T03:31:35Z,"Super: #1594
From Richard Cyganiak on the CKAN Discuss list:
Regarding the fifth star (is the dataset linked to others?). This cannot be automatically determined just by looking at the format. It either requires inspection of the actual data, or information about links in the metadata. As you're probably aware, we've established conventions for recording information on data links in CKAN [1], as part of the work of the lodcloud group on the Data Hub. Link information is captured for hundreds of datasets. I would claim that we have the majority of four-star datasets covered there, and hence you can determine if they should get the fifth star by checking for the presence of a links:xxx field.",johnglover
1827,'Register' link should be hidden if you not allowed to register,ckan,,ckan-backlog,enhancement,,new,2012-02-22T15:35:39Z,2012-06-15T15:22:10Z,"{{{
I have just deny visitors the create-user permission:
sudo -u ckanstd paster --plugin=ckan roles deny reader create-user -c /etc/ckan/std/std.ini
sudo -u ckanstd paster --plugin=ckan roles deny anon_editor create-user -c /etc/ckan/std/std.ini
and after restarting, the register link is *not* hidden, but now when you access the register page, it shows you this message ""Unauthorized to create a user"" (when not logged in). But anyway that is an improvement.
}}}",dread
989,Extending the model from plugins,ckan,,ckan-future,enhancement,kindly,new,2011-02-14T13:22:04Z,2012-06-18T15:45:11Z,"We need to support extending the model from plugins. This could involve:
* Adding a plugin hook to extend the mapper
* Adding an upgrade hook for plugin schema migrations
* Documenting how this is to be done
* Find a way to avoid conflicts ",pudo
1235,[super] Search Improvements,ckan,,ckan-future,enhancement,,new,2011-07-20T17:24:01Z,2011-07-20T17:24:01Z,"Child tickets:
* #234 UI Review - Autocomplete package names & tags in search
* #193 Searching by time-related field
* #191 Searching by modification date
* #905 Unable to search with accented characters in package names
* #906 Ability to search without accents for accented words
* #924 Search box has no search button
Broadly speaking though we need to choose PostgreSQL, Solr or something else. We don't want to invest our time maintaining two search backends with a limited abstraction layer between the two.",thejimmyg
1438,Action API - parameter discovery/checking,ckan,,ckan-future,enhancement,,new,2011-11-01T15:38:10Z,2012-05-28T11:37:30Z,"Many actions in the Action API require parameters. What params are needed should be listed and checked. Because currently, if you get them wrong you simply get a useless 500 error.
Currently they are listed in the docs, extracted from the code manually.
So you could GET /action/api/package_list to receive not only the help text, but a list of arguments.
And if you send an extra or missing argument then an intelligent error message can be returned.
= implementation =
How about some sort of decorator on the action function:
{{{
@logic_params(id, offset, limit)
def get_package_list(context, data_dict):
...
}}}
This would do the param checking, and is there a way to extract these params from the function? Or do a registration of the logic function?
I'd certainly like to keep the list of the list of params for the function with the function, for ease of reading the code.
Another good thing would be to pass in the params named as themselves, rather than having them contained in the data_dict.",dread
1818,Spatial metadata editor,ckan,,ckan-future,enhancement,amercader,new,2012-02-20T18:52:21Z,2012-05-28T11:06:35Z,"Estimate 2.5d
Right now users need to manually enter a geojson value in the 'spatial' extra field in order to define a geometry for a dataset.
We need a map widget on the edit form that allows users to draw the geometry on top of a map. This will be based on the draw functions offered by OpenLayers [1], [2].
Things to take into account:
* Integration with the form sections.
* Allow some degree of configuration (default extent, limit geometry types...)
[1] http://openlayers.org/dev/examples/draw-feature.html
[2] http://openlayers.org/dev/examples/modify-feature.html
",amercader
2279,Write tutorial for our DataStore API / Data Explorer,ckan,,ckan-v1.8,enhancement,rgrp,new,2012-04-03T19:44:23Z,2012-05-28T11:43:46Z,"Unfortunately ES is a little bit complex / opaque to newcomers. Need to write a simple tutorial walking through this.
This is documentation / example only (no code!)",rgrp
2363,Documentation of best caching practice.,ckan,,ckan-v1.8,enhancement,toby,new,2012-05-01T16:16:57Z,2012-06-19T09:56:34Z,Need better documentation on best practices in making page loads faster for non logged in users.,kindly
2430,Look into marking tickets as dependent on other tickets in trac,ckan,,ckan-v1.9,enhancement,seanh,accepted,2012-05-25T11:58:06Z,2012-07-02T13:05:46Z,,seanh
2431,Trac git integration,ckan,,ckan-v1.9,enhancement,seanh,accepted,2012-05-25T11:58:48Z,2012-07-02T13:06:02Z,,seanh
2733,Datastore logic functions,ckan,,ckan-v1.9,enhancement,johnglover,new,2012-07-23T15:54:46Z,2012-07-30T13:48:25Z,"== Where does the data go? ==
In a postgres database configured by the ckan.datastore_write_url config option which is a sqlalchemy url.
The user should have rights to create tables.
== Whats the api like? ==
We will just implement it as logic functions like the rest of CKAN and will part of core. After that we may add some nicer api functions that use these but that is a secondary concern.
== What are the initial logic functions? ==
* datastore_create
* datastore_delete
* datastore_show
== What is the JSON input format for datastore_create ==
To begin with it can have the following keys. It is fairly consistent with Max Ogdens' gut servers. Except adds resource_id.
{{{
{
resource_id: resource_id # the data is going to be stored against.
fields: a list of dictionaries of fields/columns and their extra metadata.
records: a list of dictionaries of the data eg [{""dob"": ""2005"", ""some_stuff"": ['a', b']}, ..]
}
}}}
* The first row will be used to guess types not in the fields and the guessed types will be added to the headers permanently. Consecutive rows have to conform to the field definitions.
* rows: can be empty so that you can just set the fields
* fields are optional but needed if you want to do type hinting or add extra information for certain columns or to explicitly define ordering.
eg: [{""id"": ""dob"", ""type"": ""timestamp"" }, {""id"": ""some_stuff"", ""type"": ""text""}, ...].
A header items values can not be changed after it has been defined nor can the ordering of them be changed. They can be extended though.
* Any error results in total failure!! For now pass back the actual error.
* Should be transactional
== What json does datastore_delete take? ==
{{{
{
resource_id: resource_id # the data is going to be deleted.
filters: dictionary of matching conditions to delete
e.g {'key1': 'a. 'key2': 'b'} this will be equivalent to ""delete from table where key1 = 'a' and key2 = 'b' "".
No filters (either not present or not defined) then delete the table. If we want truncate then add truncate: true to truncate the table.
}
}}}
== What json does datastore_search take? ==
{{{
{
resource_id: resource_id # the data is going to be selected.
filters : dictionary of matching conditions to select
e.g {'key1': 'a. 'key2': 'b'} this will be equivalent to ""select * from table where key1 = 'a' and key2 = 'b' ""
q: full text query
limit: limit the amount of rows to size default 100
offset: offset the amount of rows
fields: list of fields return in that order, defaults (empty or not present) to all fields in fields order.
sort: comma separated field names with ordering e.g ""fieldname1, fieldname2 desc""
}
}}}
Some free code: https://gist.github.com/3163864
== What json does datastore_search return? ==
{{{
{
fields: same type as datastore_create accepts (i.e. with metadata)
offset: The same offset that was supplied in datastore_show
limit: The original limit
filters: The filters that were applied in data_show
total: # total matching records without size or offset
records: [same as data_create] # list of matching results
}
}}}
On error will return:
{{{
{
__error__: … sql error …
}
}}}
== What types are allowed? ==
Aim to support as many postgres/postgis types that have string representations.
http://www.postgresql.org/docs/9.1/static/datatype.html
http://www.postgresql.org/docs/9.1/static/sql-createdomain.html
== IDs ==
Each row in a table will be given an _id column which has an id generated by us which you can use in queries.
== Other Features ==
Each row will store the _full_text index of all the data in the row. At some later point there will most likely be a way to index fields add constraints etc.",johnglover
2790,logic.action.user_show is slow,ckan,,demo phase 4,enhancement,kindly,new,2012-08-01T20:21:23Z,2012-08-15T09:42:14Z,"This is a very slow call it would benefit from the sort of speed-ups that package-search received
for me locally this is taking 6 seconds for rufus using the datahub data I have. I think a lot of this is the dataset retrival/dictization
can we just grab json blobs from solr?
also is it possible to specify a sort order/paging?
I've put this as a demo-theme ticket as it is an big issue on the demo we are at 25 second page loads - which i can get down to about 8.8 secs so this is the main pain point now",toby
2357,Create build script for front-end resources,ckan,,demo phase 5,enhancement,aron.carroll,accepted,2012-05-01T15:29:41Z,2012-07-25T12:48:44Z,Should minify and concatenate JavaScript and CSS as part of #2354,aron.carroll
2641,Adapt spatial widgets to new theme,ckan,,demo phase 5,enhancement,johnmartin,assigned,2012-07-09T15:02:27Z,2012-11-11T18:34:14Z,"Dataset extent map and spatial filter need to adapted to the new theme, as they are not showing up now",amercader
2673,simplify set of options for resources,ckan,,,enhancement,,new,2012-07-14T21:15:59Z,2012-07-14T21:15:59Z,Far too many resource options. Lets restrict back to data file and API. Visualizations etc can either get linked in description or in the Related items.,rgrp
2947,Redirect to the resource page from /resource/{res-id},ckan,,,enhancement,,new,2012-10-01T13:15:25Z,2012-10-01T13:15:25Z,"Use story:
As a user of the datasore I want to be able to put the resource id without the dataset name in a url and see the resource page.
Proposed redirect:
/resource/{res-id} -> dataset/foo-bar/resource/{res-id}",dominik
3026,Support icons on nav_named_link,ckan,,,enhancement,amercader,new,2012-11-30T18:51:56Z,2012-11-30T18:51:56Z,nav_named_link won't include the nice icon even when passing the icon keyword param.,amercader
1171,Citation instructions on dataset and resource view pages,ckan,,ckan 2.0,enhancement,mark.wainwright,assigned,2011-06-01T09:33:19Z,2012-09-11T10:18:25Z,"Some sort of citation helper. Something small on the dataset and resource page that would show how to cite.
wwaites: Some related thoughts on this from opb: http://homepages.inf.ed.ac.uk/opb/papers/ssdbm2006.pdf
timclicks: I'm looking at Dataverse for the first time[0]. It seems very popular in the social sciences. I noticed that there is a recommended citation for each dataset. For example, [1] is has this one: ""Targeted Input Programme (TIP) 2000-01"", http://hdl.handle.net/1902.1/SSC-MWI-TIP2000-01-M1 V1 [Version]""
== Implementation ==
Add a small box at bottom of dataset / resource page (or in sidebar on dataset page) with title ""Cite this"" with contents like:
%title. %author. Retrieved %date. %site_title.
For resource: %title = %dataset_title. %resource_name.
Could also add export to ref managers (e.g. to bibtex) but that is for later.",dread
2831,Create a limited subset of markdown that's supported,ckan,,ckan 2.0,enhancement,,new,2012-08-09T11:41:07Z,2012-08-09T11:41:07Z,"Allowing people to use the full range of markdown results in extremely messy output across the site. I'd suggest limiting support to only a subset of common use cases.
* Allow all inline elements, this allows bold, italic, code and links.
* Allow lists.
Disallow
* Horizontal Rules
* Headings
* Block quote and code (this may turn out to be useful and so could be included)
This way you get markdowns paragraph handling and a few inline styles without breaking the entire layout of the page.
Here's the full syntax if anyone is interested http://daringfireball.net/projects/markdown/syntax",aron.carroll
2951,Paster command for building css from less,ckan,,ckan 2.0,enhancement,,new,2012-10-01T19:12:20Z,2012-10-02T10:50:30Z,"With the latest template, css and js changes in 2.0, there are a number of things that need preparation prior to a production deployment. One of these is:
- the less files should be compiled to css (main.css, not just main.debug.css)
This ticket is to provide a paster command which will compile the .less into the main.css file. The idea of the paster command is that it will be run by developers, and they will check in the resulting .css files. It will also provide a convenient mechanism for production scenarios with node.js installed on the production server, as they will be able to compile the .less there as well.
## Background
The .css files that need to be served are built using `less`. The css files that are generated *are* checked-in to the repo; but they are a build artifact. So the general workflow is:
- commit changes to the less files
- build the main.css file and commit
This paster command slots into the above workflow for convenience.
## Notes
- doc/frontend-development.rst
- bin/less
to run this paster command, `Node` will be required. So that dependency should be checked.
## The paster command
This is the proposed behaviour of the paster command:
- ensure `custom.less` does not exist
- for each colour in{fuchsia,green,maroon,red}:
- generate a `custom.less` file for $colour. There's a paster command that does this already: `paster color .
- generate the `css` from the `less` files. ie - the equivelant of running `bin/less --production`.
- this will generate a `main.css` file, which should be renamed to `$color.css`.
- ensure `custom.less` does not exist
- generate the `css` from the `less` files. This will create a `main.css` with the default colour scheme.
- call the paster command that minifies css and js files. (This command does not exist yet, see #2950)",icmurray
2952,incorporate javascriopt translations into translations workflow,ckan,,ckan 2.0,enhancement,seanh,new,2012-10-01T19:15:45Z,2012-10-01T19:15:45Z,"There are now javascript translations. There's a paster command, `trans js`. This is a ticket to ensure that using `trans js` is documented in the normal ckan translation workflow (which is followed after a feature freeze, prior to release). And to see if there's any need for further incorporation into the current translation process.",icmurray
2996,Fix behaviour of View Profile button in user popover when already on user's profile,ckan,,ckan 2.0,enhancement,,new,2012-10-17T14:30:38Z,2012-10-17T14:30:38Z,"The user popovers that appear when you hover the mouse over a user in an activity stream include a View Profile button that takes you to that user's profile page. If you are already on that user's profile page then it simply reloads the same page, but it sends you to the Datasets tab if you were on another tab.
Possible solutions:
Don't show button if already on user's page?
Button just makes popover disappear, if already on user's page?
Button does reload the page, but reloads the same tab (datasets, followers, activity stream) that you were on.
Marking this low priority",seanh
143,Most active users listed on homepage,ckan,,ckan-backlog,enhancement,thejimmyg,assigned,2009-10-08T13:59:33Z,2011-08-03T11:53:01Z,Display league of users' recent activity on homepage.,dread
924,Search box has no search button,ckan,,ckan-backlog,enhancement,,new,2011-01-24T11:12:13Z,2011-12-06T11:20:36Z,"The search box at the top-right of CKAN's page doesn't have a 'go' button. I feel that a larger percentage of users expect a 'go' or 'search' button on the right-hand side of the box to press to start searching. Techies tend to know the keyboard shortcut of pressing 'carriage-return' but it might be better to follow standard practise on this.
Examples with 'search' button: Internet Explorer, Firefox, Google, Amazon, trac
Examples without: ?",dread
1259,"""Add a row"" for Extras on Package form",ckan,,ckan-backlog,enhancement,johnglover,new,2011-08-02T16:31:33Z,2011-08-09T16:24:16Z,"The default package form offers 4 empty extras fields. Like the resource section, it should have an ""add more"" button to add another row. ",pudo
1314,ckanclient search - generator improvements,ckan,,ckan-backlog,enhancement,,assigned,2011-09-07T11:36:50Z,2012-06-20T11:20:33Z,"Apparently the search generator always makes two requests, even if you don't want to see the search results, which might be slow. Can this be optimised?
Maybe we should also provide a second search function that doesn't use the generator - the original simple search function (that leaves the user to deal with limit & offset).",dread
1326,Write a set of auth plugin functions to integrate with Druapl,ckan,,ckan-backlog,enhancement,,new,2011-09-12T09:51:24Z,2011-09-12T09:51:24Z,Ticket #787 described join auth between CKAN and Drupal. The authentication part is live and implemented. This ticket is a placeholder for work that will be needed in the new auth system to link authorization functions to Drupal. It is dependent on the groups refactor.,thejimmyg
1393,Don't skip search tests,ckan,,ckan-backlog,enhancement,johnglover,assigned,2011-10-13T11:30:53Z,2011-11-01T13:19:50Z,"Now we don't use postgres search, all the tests involving search now don't need to be skipped when running on sqlite. Should help coders spot earlier if these tests break. ",dread
1424,Openness notice should be clearer,ckan,,ckan-backlog,enhancement,,new,2011-10-26T16:54:49Z,2011-10-26T16:54:49Z,"ckan-discuss discussion suggests changes to the 'openness' indicator
( http://lists.okfn.org/pipermail/ckan-discuss/2011-October/001786.html )
Dataset view page:
* If there is an explicit but non-OKD compliant license, such as CC-BY-NC, then this should be stated explicitly, perhaps: “This dataset is Not Open. License: Creative Commons Attribution Noncommerical. This is not an open license as it does not meet the Open Knowledge Definition.”
* If the license is marked as “Other::License Not Specified”, then this should be stated explicitly, perhaps:
“This dataset is Not Open. It is published without an explicit license, the publisher reserves all rights to the dataset.”
* 3. If the license field was left empty by the contributor of the Data Hub record, then again this should be stated explicitly, perhaps: “This dataset is Not Open. The license of this dataset is unknown or unspecified. Start an enquiry on IsItOpenData »
* There is a bug so that non-open licenses doesn't have an openness notice.
* If downloadable resources are not available, this should not affect 'openness' - check this has been removed.",dread
2247,Resource preview glitch in some browsers,ckan,,ckan-backlog,enhancement,,new,2012-03-20T12:30:14Z,2012-03-20T12:30:14Z,"From Ira:
Preview for google spreadsheets are not displaying correctly for me in Firefox v.10.0.02, fine in Chrome.
http://i.imgur.com/KJaqz.png",zephod
2310,Refactor the search-query construction in feeds.py,ckan,,ckan-backlog,enhancement,icmurray,new,2012-04-16T16:01:31Z,2012-05-16T09:09:46Z,"The feeds controller, used to construct atom feeds, duplicates code found in the package controller's search action (in order to construct the custom feed).
Refactor this to remove duplication.",icmurray
763,Read-only mode - Setup,ckan,,ckan-future,enhancement,,assigned,2010-10-26T11:11:46Z,2012-05-28T11:56:44Z,"Admin configures entering read-only mode in one of two places:
* CKAN config file (e.g. ckan.ini)
* environment variable from Apache config
Once enabled, no writes can occur to the database (including user ratings and other usage stats).",dread
948,Highlight (to a sysadmin) which packages are deleted,ckan,,ckan-future,enhancement,,assigned,2011-02-02T11:32:49Z,2012-05-28T11:58:00Z,"When a customer logs in as a sysadmin then he/she see all packages, including deleted and pending ones. These are hidden to the average user, but the sysadmin has no idea of this until he clicks on the package and sees at the bottom 'state: deleted'.
It should be more obvious than that on the search view - an icon, message or crossed-out name to packages are deleted.",dread
1285,Errors cause emails,ckan,,ckan-future,enhancement,,assigned,2011-08-23T16:29:04Z,2012-05-28T11:55:51Z,"Currently a sysadmin gets an email when an exception is not caught. But there are occasions when we DO want to catch an exception so we can fail nicely for the user, but the sysadmin STILL gets an email to know to fix something.
e.g. if there is an exception when search indexes a package. You want to catch the exception and still run any other notify calls.
",dread
1581,Blog post about Google Analytics extension for CKAN,ckan,,ckan-future,enhancement,mark.wainwright@…,new,2011-12-20T17:40:00Z,2012-01-02T03:17:54Z,"The CKAN Google Analytics extension has been updated to work with the latest version of CKAN, could make for a nice blog post.
Can ping John Glover in January for any details required.
Key link is: http://thedatahub.org/analytics/dataset/top though this should probably move to be under stats (e.g. http://thedatahub.org/stats/usage)",johnglover
2301,Replace old-style string formatting with format() method (at least in strings marked for translation),ckan,,ckan-future,enhancement,seanh,new,2012-04-16T12:27:44Z,2012-06-25T14:50:12Z,"Some strings in CKAN are passed to gettext with more than one %s in them, this is no good as translators may need to change the order of substituted words.
Strings should not use the old style % substitution, they should use the new format method in Python 2.6+, e.g.:
'This {food} is {adjective}.'.format(food='spam', adjective='absolutely horrible')
http://docs.python.org/release/2.6.8/tutorial/inputoutput.html#fancier-output-formatting
We should probably only change strings that are marked for translation and that contain multiple %s, don't want to make too much work or cause too many strings to change and need to be re-translated.",seanh
2326,dataset permalinks,ckan,,ckan-future,enhancement,toby,new,2012-04-25T16:39:06Z,2012-05-28T13:46:39Z,"create permalinks
eg \dataset\~a5-DQ\nice-name
~XXXXX defines the permalink the nice-name is ignored
* packages table needs a new field for this data
* existing datasets need updating
* new datasets need the identifier creating
* routing needs updating
* needs to work for all urls like edit
Once this is implemented we can decide when we will use permalinks vs the normal urls.",toby
2348,Java client library for CKAN,ckan,,ckan-future,enhancement,,assigned,2012-05-01T13:46:20Z,2012-09-03T11:00:24Z,"Start a Java library for interacting with the CKAN Action API.
Currently requires support for Groups, Tags, Resources, and Search.
An example app would be very useful.",ross
2203,Data Viewer support for PDF,ckan,,ckan-v1.9,enhancement,kindly,assigned,2012-03-04T11:24:53Z,2012-09-25T10:29:21Z," * Boot viewer for format/mimetype: application/pdf, application/x-pdf, application/acrobat, applications/vnd.pdf, text/pdf, text/x-pdf
* propose we use pdf.js - https://github.com/mozilla/pdf.js
* We could also try iframing for browsers with native support but this seems more complex",rgrp
2243,Fix ckanext-example,ckan,,ckan-v1.9,enhancement,seanh,reopened,2012-03-19T15:58:30Z,2012-06-25T14:49:28Z,,seanh
2298,Add sort-by controls to the search results page,ckan,,ckan-v1.9,enhancement,icmurray,new,2012-04-16T09:39:22Z,2012-06-25T14:52:27Z,"Sort-by functionality was exposed through the package controller in [1]. But no controls were added to the search-page.
* What should the sortBy controls/widget look like?
* Which fields should be exposed?
The above commit is in the release-1.6.1 branch, so this work is dependant upon release-1.6.1 from being merged into master.
[1] https://github.com/okfn/ckan/commit/8685c6000d1cb211928b4dbc63990fb72d884f8c",icmurray
2341,Fix Jenkins issue when testing branches that contain model changes,ckan,,ckan-v1.9,enhancement,seanh,accepted,2012-05-01T12:46:36Z,2012-06-25T15:51:12Z,,seanh
2342,Fix Jenkins issue when testing branches with different solr schema versions,ckan,,ckan-v1.9,enhancement,seanh,accepted,2012-05-01T12:47:25Z,2012-06-25T15:51:34Z,,seanh
2350,Hooks in package controller for validating form data,ckan,,ckan-v1.9,enhancement,icmurray,new,2012-05-01T14:16:01Z,2012-06-25T14:52:46Z,"When the validation schema was moved from the package controller into the logic layer, the schema's role was changed from that of processing a form and validating data; to just validating data. Whilst is makes sense to have a schema for validating data as it comes in and leaves the logic layer; there's no longer the hook available to PackageController subclasses to do form validation/processing.
Add a hook into _save_new() and save_edit() prior to the logic-layer call which subclasses can then override.
NB - form processing/validation *is* different to validating data. For example, many data can be inferred from a user's input; or there may be aspects of the form that need to be filled in, but do not make sense to pass as data into the logic-layer, eg. agreeing to T&Cs.
- [ ] Add hooks
- [ ] Use in ckanext-example",icmurray
2530,DataHub purge fails on some revisions,ckan,,ckan-v1.9,enhancement,kindly,new,2012-06-15T08:54:58Z,2012-07-02T22:31:20Z,"See http://datahub.io/ckan-admin/trash and try to purge revisions (*not* datasets). It will fail on some of the revisions with errors like:
Problem purging revision 391db9e8-df57-4e0e-8fe6-d4e0c2318344: (IntegrityError) update or delete on table ""revision"" violates foreign key constraint ""group_extra_revision_revision_id_fkey"" on table ""group_extra_revision"" DETAIL: Key (id)=(391db9e8-df57-4e0e-8fe6-d4e0c2318344) is still referenced from table ""group_extra_revision"". 'DELETE FROM revision WHERE revision.id = %(id)s' {'id': u'391db9e8-df57-4e0e-8fe6-d4e0c2318344'}",rgrp
2679,Change default behaviour of TemplateController.view to 404.,ckan,,ckan-v1.9,enhancement,icmurray,new,2012-07-16T10:55:33Z,2012-07-16T10:55:33Z,"The current behaviour of TemplateController.view() (which is the fallback controller should all others fail) is to attempt to render (as a genshi template) the requested file.
Although this may be a feature that some instances want. In general, it leads to:
- 500s when attempting to access a normal template (eg - http://datahub.io/importer/preview)
- A way of inadvertantly serving things you may not want to serve. (Small risk, as it needs to be renderable as a genshi template).
Solution:
- Change the controller to 404
- Ensure there's a way for existing ckan instances to override that behaviour should they need it.",icmurray
2336,Move Jenkins' install script into ckan core so it can be versioned,ckan,,ckanbuild,enhancement,seanh,accepted,2012-04-30T13:35:14Z,2012-06-25T15:53:57Z,,seanh
2446,Create demo dataset history/comparison page,ckan,,demo phase 4,enhancement,johnmartin,assigned,2012-05-28T13:12:18Z,2012-11-11T18:33:39Z,"This is a low priority for the demo site.
Discussion:
https://okfn.basecamphq.com/projects/9558659-demo-ckan-front-end/posts/62414120/comments
Implementation:
http://s031.okserver.org:2375/dataset/history/adur_district_spending",aron.carroll
2457,Create demo tags list page,ckan,,demo phase 4,enhancement,johnmartin,assigned,2012-05-28T13:28:55Z,2012-11-11T18:34:38Z,"This includes the tag page as well for now.
Discussion:
https://okfn.basecamphq.com/projects/9558659-demo-ckan-front-end/posts/62998445/comments
Implementation:
http://s031.okserver.org:2375/en/tag",aron.carroll
2461,Create demo revisions page,ckan,,demo phase 4,enhancement,toby,assigned,2012-05-28T13:34:15Z,2012-08-09T20:23:58Z,"I believe this is to be merged in with site activity.
Discussion:
https://okfn.basecamphq.com/projects/9558659-demo-ckan-front-end/posts
Implementation:
http://s031.okserver.org:2375/en/revision",aron.carroll
2698,markdown preview,ckan,,demo phase 4,enhancement,toby,assigned,2012-07-18T14:01:25Z,2012-08-09T20:14:12Z,for description / other fields with markdown support,shevski
2775,Add bin/less to paster serve command,ckan,,demo phase 4,enhancement,toby,new,2012-07-30T22:01:26Z,2012-08-09T20:26:02Z,"Ideally the ./bin/less command would be run when the server is started.
* Also it would be good to have a paster command to build the production CSS with {{{ ./bin/less --production }}
* The command could also detect missing node binaries and redirect to the documentation.",aron.carroll
2822,Resource additional info titles format/i18n,ckan,,demo phase 4,enhancement,toby,new,2012-08-09T09:30:20Z,2012-08-09T20:26:25Z,"the title for additional info should be translated
capitalised etc",toby
2834,Defer all publish calls until all modules have been initialised,ckan,,demo phase 4,enhancement,,new,2012-08-09T17:08:13Z,2012-08-13T11:18:12Z,"Currently if a module uses sandbox.publish() in its initilaize() function then any modules initialised afterwards will miss the event.
We should queue all calls to .publish() in the pubsub module in an array until all modules have loaded then iterate over and execute them.",aron.carroll
2850,Add JSON support for IE7,ckan,,demo phase 4,enhancement,,new,2012-08-14T10:38:12Z,2012-08-14T10:38:12Z,"The JavaScript just isn't going to work without it. Look into either the newer JSON3:
http://bestiejs.github.com/json3/
or the old faithful:
https://github.com/douglascrockford/JSON-js/",aron.carroll
2416,Normalise resource/data types,ckan,,demo phase 5,enhancement,toby,accepted,2012-05-23T17:09:06Z,2012-07-18T13:23:22Z,"Currently we have far too many types that are essentially the same format. The new demo theme is using icons for common types. So we need to normalise the common formats into pretty strings. e.g. application/json, JSON, .json and json all should be output as “json”
See the following Basecamp thread for UI examples and discussion.
https://okfn.basecamphq.com/projects/9558659-demo-ckan-front-end/posts/61906351/comments#comment_179681056",aron.carroll
2451,Create demo user list page,ckan,,demo phase 5,enhancement,johnmartin,assigned,2012-05-28T13:20:13Z,2012-11-11T18:35:02Z,"Discussion:
https://okfn.basecamphq.com/projects/9558659-demo-ckan-front-end/posts/62268474/comments
Implementation:
http://s031.okserver.org:2375/user",aron.carroll
2493,Demo site 404 needs some love,ckan,,demo phase 5,enhancement,aron.carroll,accepted,2012-06-06T12:34:41Z,2012-07-24T13:16:55Z,"templates/error_document_template.html
I've converted the 404 page to the new style but we probably want to serve this as a 'full page' ie content is 100% page width not sidebar and primary content
just go to a non-existant url to see
Discusion:
https://okfn.basecamphq.com/projects/9558659-demo-ckan-front-end/posts/63374042/
Implementation:
http://s031.okserver.org:2375/404",toby
2555,Demo site needs a breadcrumb helper,ckan,,demo phase 5,enhancement,toby,new,2012-06-18T13:43:03Z,2012-07-18T13:33:04Z,Something to make building breadcrumbs a bit nicer,aron.carroll
2644,user dashboard for demo theme,ckan,,demo phase 5,enhancement,shevski,assigned,2012-07-10T09:00:21Z,2012-08-06T12:23:56Z,"we now have a user dashboard that needs theming not sure if we need sam to look at it
http://localhost:5000/user/dashboard",toby
2785,Allow resources to be re-ordered,ckan,,demo phase 5,enhancement,johnmartin,assigned,2012-08-01T10:22:03Z,2012-08-29T10:25:16Z,"Not sure where this functionality should be added, possibly in one of the sidebar widgets when editing a resource?
Ira, what are your thoughts?",aron.carroll
2823,resource additional info title order,ckan,,demo phase 5,enhancement,toby,new,2012-08-09T09:32:53Z,2012-08-09T09:32:53Z,"Order the items so that none user fields are first from ticket #2707
",toby
2833,Load module templates before calling .initialize(),ckan,,demo phase 5,enhancement,,new,2012-08-09T17:05:39Z,2012-08-09T17:05:39Z,"I think this would be a nice feature for remote loading templates if the options.template value ends in "".html"".
{{{
ckan.module('my-module', {
options: {
template: 'my-template.html'
},
initialize: function () {
this.template // This is the loaded template.
}
});
}}}",aron.carroll
2835,Client module needs a template loading method,ckan,,demo phase 5,enhancement,,new,2012-08-09T17:10:33Z,2012-08-09T17:10:33Z,"{{{
Client#getTemplate(name, params, success, error);
}}}
Where params, success and error are optional arguments. test/index.html already has an implementation called loadFixture().",aron.carroll
2901,Language Dropdown bug in footer with IE7,ckan,,demo phase 5,enhancement,,new,2012-09-04T10:31:14Z,2012-09-04T10:31:14Z,"The language dropdown in Internet Explorer 7 behaves oddly. Essentially I think the problem is with the way that the dropdown decides to go into ""drop-up mode"" (e.g there aint enough screen space below the initial state so it has to drop up).",johnmartin
1260,Remove duplicate functions from _util.html,ckan,,ckan-backlog,enhancement,,new,2011-08-03T10:17:32Z,2011-08-15T09:44:59Z,"There seems to be both a list view for dictized and non dictized data structures for all entities in _util.html at the moment. Probably in the back of someone's mind already, but cleanup here would be nice. ",pudo
1647,add links to ckan discuss & dev to thedatahub,ckan,,ckan-backlog,enhancement,,new,2012-01-16T00:30:52Z,2012-01-16T09:49:43Z,In the footer as well as more clearly & directly on the About page,shevski
1823,Spring clean bin directory,ckan,,ckan-backlog,enhancement,,new,2012-02-20T21:28:51Z,2012-05-28T11:12:34Z,Huge number of accumulated (and likely unnecessary) scripts in /bin directory.,rgrp
285,Paginate list of packages on tag read page,ckan,,,enhancement,,assigned,2010-04-07T18:23:26Z,2012-06-25T13:45:23Z,"Is this worth doing? On hmg.ckan.net start to have a lot of packages with a given tag ...
",rgrp
301,Package discussion pages,ckan,,,enhancement,,assigned,2010-04-26T16:57:13Z,2012-06-25T13:47:35Z,"A package discussion page is like a wikipedia discussion page: an editable free text page for people to have discussion/post comments about a given package.
It provides a way for people to make suggestions about a package without needing access to main package.",rgrp
1069,Stub datasets (request for datasets),ckan,,,enhancement,tobes,assigned,2011-04-01T14:08:39Z,2012-06-25T13:50:15Z,"Idea is to have stubs for datasets that someone wants but don't yet exist (or haven't been discovered) in the way one has stub pages on a wiki.
We could do this within the existing model by a slight 'abuse' - create a dataset and mark it with a special tag e.g. todo.does-not-yet-exist or similar ...
(Just as we have datasets listed that exist but aren't available ...)
Alternative would be to have a request for datasets subsystem.
I prefer the stub dataset model because it's simpler, provides a simple workflow (as a dataset is found or comes into existence), and the package page provides a natural space in which to accumulate information about what is wanted and what exists.
== Implementation ==
* Agree a new dedicated tag. e.g. todo.does-not-exist
== Related ==
* This ticket has clear links to http://getthedata.org/",rgrp
1130,First time users,ckan,,,enhancement,,assigned,2011-05-09T10:59:21Z,2012-06-25T14:11:54Z,Send users to FAQ first time on CKAN,lucychambers
2535,SSL certificate for DataHub + https by default,ckan,,,enhancement,,assigned,2012-06-15T11:00:27Z,2012-09-03T08:48:02Z,"DataHub is increasingly used and we should ensure it uses ssl as part of general security.
See also #1446 (Need to support https login for multiple instances as part of the CKAN package install)",rgrp
2683,Add no-cache header to _tracking API call's response to make sure it doesn't get cached,ckan,,,enhancement,,new,2012-07-16T13:49:37Z,2012-07-16T13:49:37Z,,seanh
2688,Allow ordering of groups in WUI,ckan,,,enhancement,,new,2012-07-17T10:27:55Z,2012-07-17T10:27:55Z,"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)",ross
2709,Atom feeds are undocumented,ckan,,,enhancement,icmurray,new,2012-07-18T15:11:50Z,2012-07-18T15:43:32Z,There doesn't seem to be any documentation yet for Atom feeds.,markw
2731,Some sites permanently 'down for maintenance',ckan,,,enhancement,,new,2012-07-23T12:06:08Z,2012-07-23T13:53:28Z,"A large number of XXX.ckan.net sites give the following message:
""This Site is Down for Maintenance
We apologize for the inconvenience.
~ The Open Knowledge Foundation sysadmins.""
The message is unhelpful and patently false - the sites do not exist. Some of them were supposed to have been redirected to a relevant group at thedatahub.org in this ticket (now closed):
http://trac.okfn.org/ticket/933
However, the redirection only seems to have worked in one case, http://si.ckan.net.
The problem still affects the following sites - the first 4 of which have supposedly been merged:
* http://lt.ckan.net
* http://hu.ckan.net
* http://be.ckan.net
* http://gr.ckan.net
* http://nz.ckan.net
* http://bg.ckan.net
* http://fi.ckan.net
* http://katalogdanych.centrumcyfrowe.pl
* http://pl.ckan.net
* http://southampton.ckan.net
* http://sl.ckan.net
Please sort this out by redirecting, removing the sites, giving a more helpful (and accurate) failure message, etc, as appropriate.",markw
2777,bug: user attributes,ckan,,,enhancement,,new,2012-07-31T09:19:23Z,2012-07-31T09:19:23Z,,icmurray
2796,Need a datahub one-pager,ckan,,,enhancement,mark.wainwright,new,2012-08-02T16:28:36Z,2012-08-16T15:04:55Z,"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.
",ross
2814,Demo: upload file behaves oddly,ckan,,,enhancement,shevski,assigned,2012-08-08T10:06:00Z,2012-09-03T11:06:21Z,"3. Uploading a file behaves counter-intuitively (I would suggest wrongly).
When adding a new resource by uploading a file, I select a file called
say create-group.png. I expect the following to happen:
* the pathname of that file is filled in the box;
* nothing is actually uploaded till I hit 'add' (confirming that I've got the right file etc).
Instead of this,
* the file is immediately and, seemingly, irrevocably uploaded;
* the box is filled with a mysterious URL (https://commondatastorage.googleapis.com/ckan-demo ...)
* the mysterious URL is so long I can't even see the final element, which is my file name.
",markw
2844,SQL-only (no solr) version of CKAN,ckan,,,enhancement,,new,2012-08-13T11:59:28Z,2012-08-20T09:22:07Z," * ~~Search needs to run of local DB (again)~~
* paster db clean attemps to connect to SOLR (still works as does db first but then excepts which is not nice UX)",rgrp
2851,Preview of PDF tries to connect to datastore,ckan,,,enhancement,,new,2012-08-15T12:12:46Z,2012-08-15T12:12:46Z,"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.",ross
2870,1.8 tag_list not defined,ckan,,,enhancement,seanh,new,2012-08-16T10:58:52Z,2012-08-16T10:58:52Z,"From:
Date: Thu, Aug 16, 2012 at 3:20 AM
Subject: WebApp Error: : ""tag_list"" not defined
To: ckan-sysadmin@okfn.org, kindly@gmail.com
URL: http://ckan.net/dataset/uk-postboxes
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:155 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:131 in __call__
<< r'\1', oldpath)
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:239 in __call__
<< try:
res = WSGIController.__call__(self, environ, start_response)
finally:
model.Session.remove()
>> res = 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 ckan.controllers.package:322 in read
<< template = template[:template.index('.') + 1] + format
return render(template, loader_class=loader)
def comments(self, id):
>> return render(template, loader_class=loader)
Module ckan.lib.base:153 in render
<< try:
return cached_template(template_name, render_template,
loader_class=loader_class)
except ckan.exceptions.CkanUrlException, e:
raise
>> loader_class=loader_class)
Module pylons.templating:249 in cached_template
<< return content
else:
return render_func()
>> return render_func()
Module ckan.lib.base:102 in render_template
<< if loader_class == NewTextTemplate:
return literal(stream.render(method=""text"", encoding=None))
return literal(stream.render(method=method, encoding=None,
>> return literal(stream.render(method=""text"", 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:569 in __call__
<< def __call__(self, stream):
strip_markup = self.strip_markup
for event in stream:
if event[0] is TEXT:
data = event[1]
>> for event in stream:
Module genshi.core:288 in _ensure
<< # unchanged
yield event
for event in stream:
yield event
>> for event in stream:
Module genshi.core:288 in _ensure
<< # unchanged
yield event
for event in stream:
yield event
>> for event in stream:
Module genshi.filters.transform:686 in _unmark
<< def _unmark(self, stream):
for mark, event in stream:
kind = event[0]
if not (kind is None or kind is ATTR or kind is BREAK):
>> for mark, event in stream:
Module genshi.filters.transform:1145 in __call__
<< :param stream: The marked event stream to filter
""""""
for mark, event in stream:
yield mark, event
if mark is ENTER:
>> for mark, event in stream:
Module genshi.filters.transform:714 in __call__
<< stream = iter(stream)
next = stream.next
for mark, event in stream:
if mark is None:
yield mark, event
>> for mark, event in stream:
Module genshi.filters.transform:682 in _mark
<< def _mark(self, stream):
for event in stream:
yield OUTSIDE, event
>> for event in stream:
Module genshi.core:288 in _ensure
<< # unchanged
yield event
for event in stream:
yield event
>> for event in stream:
Module genshi.filters.transform:686 in _unmark
<< def _unmark(self, stream):
for mark, event in stream:
kind = event[0]
if not (kind is None or kind is ATTR or kind is BREAK):
>> for mark, event in stream:
Module genshi.filters.transform:1145 in __call__
<< :param stream: The marked event stream to filter
""""""
for mark, event in stream:
yield mark, event
if mark is ENTER:
>> for mark, event in stream:
Module genshi.filters.transform:714 in __call__
<< stream = iter(stream)
next = stream.next
for mark, event in stream:
if mark is None:
yield mark, event
>> for mark, event in stream:
Module genshi.filters.transform:682 in _mark
<< def _mark(self, stream):
for event in stream:
yield OUTSIDE, event
>> for event in stream:
Module genshi.core:288 in _ensure
<< # unchanged
yield event
for event in stream:
yield event
>> for event in stream:
Module genshi.filters.transform:686 in _unmark
<< def _unmark(self, stream):
for mark, event in stream:
kind = event[0]
if not (kind is None or kind is ATTR or kind is BREAK):
>> for mark, event in stream:
Module genshi.filters.transform:1145 in __call__
<< :param stream: The marked event stream to filter
""""""
for mark, event in stream:
yield mark, event
if mark is ENTER:
>> for mark, event in stream:
Module genshi.filters.transform:714 in __call__
<< stream = iter(stream)
next = stream.next
for mark, event in stream:
if mark is None:
yield mark, event
>> for mark, event in stream:
Module genshi.filters.transform:682 in _mark
<< def _mark(self, stream):
for event in stream:
yield OUTSIDE, event
>> for event in stream:
Module genshi.core:288 in _ensure
<< # unchanged
yield event
for event in stream:
yield event
>> for event in stream:
Module genshi.filters.transform:686 in _unmark
<< def _unmark(self, stream):
for mark, event in stream:
kind = event[0]
if not (kind is None or kind is ATTR or kind is BREAK):
>> for mark, event in stream:
Module ckanext.googleanalytics.plugin:93 in download_adder
<< [downloaded %s times]'''
count = None
for mark, (kind, data, pos) in stream:
if mark and kind == START:
href = data[1].get('href')
>> for mark, (kind, data, pos) in stream:
Module genshi.filters.transform:714 in __call__
<< stream = iter(stream)
next = stream.next
for mark, event in stream:
if mark is None:
yield mark, event
>> for mark, event in stream:
Module genshi.filters.transform:682 in _mark
<< def _mark(self, stream):
for event in stream:
yield OUTSIDE, event
>> for event in stream:
Module genshi.core:288 in _ensure
<< # unchanged
yield event
for event in stream:
yield event
>> for event in stream:
Module genshi.filters.transform:686 in _unmark
<< def _unmark(self, stream):
for mark, event in stream:
kind = event[0]
if not (kind is None or kind is ATTR or kind is BREAK):
>> for mark, event in stream:
Module genshi.filters.transform:1175 in __call__
<< """"""
callable_value = hasattr(self.value, '__call__')
for mark, (kind, data, pos) in stream:
if mark is ENTER:
if callable_value:
>> for mark, (kind, data, pos) in stream:
Module genshi.filters.transform:714 in __call__
<< stream = iter(stream)
next = stream.next
for mark, event in stream:
if mark is None:
yield mark, event
>> for mark, event in stream:
Module genshi.filters.transform:682 in _mark
<< def _mark(self, stream):
for event in stream:
yield OUTSIDE, event
>> for event in stream:
Module genshi.core:288 in _ensure
<< # unchanged
yield event
for event in stream:
yield event
>> for event in stream:
Module genshi.filters.transform:686 in _unmark
<< def _unmark(self, stream):
for mark, event in stream:
kind = event[0]
if not (kind is None or kind is ATTR or kind is BREAK):
>> for mark, event in stream:
Module genshi.filters.transform:1145 in __call__
<< :param stream: The marked event stream to filter
""""""
for mark, event in stream:
yield mark, event
if mark is ENTER:
>> for mark, event in stream:
Module genshi.filters.transform:714 in __call__
<< stream = iter(stream)
next = stream.next
for mark, event in stream:
if mark is None:
yield mark, event
>> for mark, event in stream:
Module genshi.filters.transform:682 in _mark
<< def _mark(self, stream):
for event in stream:
yield OUTSIDE, event
>> for event in stream:
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.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 ?:51 in
<<
Tags
${tag_list(c.pkg_dict.get('tags', ''))}
>> ${tag_list(c.pkg_dict.get('tags', ''))}
Module genshi.template.eval:309 in lookup_name
<< val = BUILTINS.get(name, val)
if val is UNDEFINED:
val = cls.undefined(name)
return val
>> val = cls.undefined(name)
Module genshi.template.eval:410 in undefined
<< """"""Raise an ``UndefinedError`` immediately.""""""
__traceback_hide__ = True
raise UndefinedError(key, owner=owner)
>> raise UndefinedError(key, owner=owner)
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 'Apache/2.2.22 (Ubuntu) Server at ckan.net Port 80\n'
SERVER_SOFTWARE 'Apache/2.2.22 (Ubuntu)'
WSGI Variables
application
beaker.cache
beaker.get_session >
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 (, '')
paste.registry
paste.throw_errors True
pylons.action_method >
pylons.controller
pylons.environ_config {'session': 'beaker.session', 'cache': 'beaker.cache'}
pylons.pylons
pylons.routes_dict {'action': u'read', 'controller': u'package', 'id': u'uk-postboxes'}
repoze.who.logger
repoze.who.plugins {'openid': , 'friendlyform': , 'ckan.lib.authenticator:UsernamePasswordAuthenticator': , 'auth_tkt': , 'ckan.lib.authenticator:OpenIDAuthenticator': }
routes.route
routes.url
webob._parsed_query_vars (GET([]), '')
webob.adhoc_attrs {'language': 'en-us'}
wsgi process 'Multi process AND threads (?)'
wsgi.file_wrapper
wsgi.version (1, 1)
wsgiorg.routing_args (, {'action': u'read', 'controller': u'package', 'id': u'uk-postboxes'})
",ross
2874,Clean up bin directory,ckan,,,enhancement,rgrp,assigned,2012-08-17T08:01:48Z,2012-08-17T08:01:55Z,Full of obsolete material,rgrp
2877,Bugs with datastore v2,ckan,,,enhancement,kindly,assigned,2012-08-18T00:33:22Z,2012-08-30T09:53:15Z,"In progress
1. ~~[major] q does not seem to work reliably. e.g. using the setup from this gist https://gist.github.com/1930806 and doing a ?q=DE yields no results (does not work with ""q=de"" either)~~
* ~~q=second does work ...~~
1. [major] q does not work with 2 values (see below)
2. Query on search with limit 0 results in total of 0 (should either be null or correct total). Queries with other limits yield correct total AFAICT
* Also weird fact that limit is returned but as as as string - should it not be an integer
3. Types on fields: could these not be canonical and as per recline (or is it important to allow exact sql types ...)
=== Multiple query values ===
Try a query such as: ""second UK"" and you will get 500 error:
http://localhost:5000/api/3/action/datastore_search?resource_id=4f1299ab-a100-4e5f-ba81-e6d234a2f3bd&q=second%20UK
{{{
ProgrammingError: (ProgrammingError) syntax error in tsquery: ""second UK"" 'select ""_id"", ""id"", ""date"", ""x"", ""y"", ""z"", ""country"", ""title"", ""lat"", ""lon"", count(*) over() as ""_full_count""\n from ""4f1299ab-a100-4e5f-ba81-e6d234a2f3bd"" where _full_text @@ to_tsquery(%s) limit 100 offset 0' (u'second UK',)
}}}
=== Suggestions ===
Filter support: should think in more detail about this (may want to follow recline style)
Simple filters in query parameters would be nice too ...",rgrp
2888,Datapreview in Iframe,ckan,,,enhancement,,new,2012-08-23T18:11:01Z,2012-08-23T18:11:01Z,Try and put datapreview in Iframe.,kindly
2895,QA pages (e.g. broken resource links) are not paginated,ckan,,,enhancement,,new,2012-08-28T17:38:05Z,2012-08-28T17:38:05Z,And as a result timeout on e.g. the datahub ...,rgrp
2911,Internal documentation of Organization Groups,ckan,,,enhancement,,new,2012-09-06T14:23:04Z,2012-09-06T14:23:04Z,A summary/user story doc of how organizations and groups are expected to work.,kindly
2934,Webtests for CKAN,ckan,,,enhancement,,new,2012-09-18T11:10:47Z,2012-09-19T13:10:01Z,"The tests in CKAN only test single pages (functional tests) or single methods (unit tests). In order to make sure that the whole system still works as expected, we need tests that cover whole processes.
An example user story to be tested would be:
""As a user with create permissions I want to be able to log in, create a new resource, save it and then make sure that it is in the system.""
or:
""As a user I want to use the search functionality and open a resource from the search page.""
These user stories require a different testing system with interaction and processes. ",Dominik
2938,Explain bundling in doc/resources.rst,ckan,,,enhancement,Toby,new,2012-09-24T12:13:55Z,2012-09-24T12:13:55Z,"Since it makes sense to bundle resources into one js file that are commonly used together, there should be some explanations on how separate js scripts are merged into one file for production.
Explanations could include how groups are handled or different resource files.",dominik
2939,Orgs are groups,ckan,,,enhancement,toby,new,2012-09-25T09:07:14Z,2012-09-25T09:07:14Z,holder for ticket number,toby
2943,Chrome does not resize preview,ckan,,,enhancement,,new,2012-10-01T11:08:06Z,2012-10-01T11:25:59Z,Chrome does not resize iframe after a full refresh/ on first load,dominik
2944,Recline preview does not work in Opera,ckan,,,enhancement,,new,2012-10-01T11:26:42Z,2012-10-01T11:26:42Z,Opera cannot show a recline preview. I shows 0 records.,dominik
2945,Pdf preview does not load in IE,ckan,,,enhancement,,new,2012-10-01T11:27:49Z,2012-10-01T11:27:49Z,The pdf preview does not load in IE 9.,dominik
2948,Negative range breaks datastore backend,ckan,,,enhancement,,new,2012-10-01T14:30:54Z,2012-10-01T14:31:05Z,Recline allows negative ranges. The backend returns an error 500 for that which breaks the recline preview.,dominik
2992,Delete resource should send me back to edit dataset page,ckan,,,enhancement,,new,2012-10-16T17:19:16Z,2012-10-16T17:19:16Z,,johnmartin
3012,data.gov auth,ckan,,,enhancement,toby,new,2012-11-08T16:50:09Z,2012-11-08T16:50:09Z,,toby
3020,Update CKAN coding standards,ckan,,,enhancement,,new,2012-11-16T20:11:51Z,2012-11-16T20:11:51Z,,seanh
3021,Logout doesn't work without JS,ckan,,,enhancement,johnmartin,accepted,2012-11-20T11:19:10Z,2012-11-20T11:46:08Z,"Essentially, the functionality should be as follows:
- Add logout link that has `.js-hide` attached to it within the header that isn't hidden within a dropdown
See http://plus.google.com/ (when logged in) with and without JS to see an example of the actual sign-out working without JS",johnmartin
3023,New methods on IPackageController to provide access to the data_dict,ckan,,,enhancement,amercader,new,2012-11-22T17:00:57Z,2012-11-22T17:00:57Z,Extension hooking into the edit and create methods of the IPackageController interface receive the package object. This may not include all the fields that came from the form. The new extension points will pass the validated data_dict so extensions can have access to it,amercader
3025,Add requests to core requirements,ckan,,,enhancement,amercader,new,2012-11-27T21:35:24Z,2012-11-27T21:35:24Z,Because yes please,amercader
3027,solr for 2.0,ckan,,,enhancement,kindly,new,2012-12-04T02:22:09Z,2012-12-04T02:22:09Z,"change mm
support solr 3 and 4
add *_date field",kindly
3030,clean up helper functions,ckan,,,enhancement,,new,2012-12-18T12:33:58Z,2012-12-18T12:33:58Z,,toby
2329,Add back in RSS/Atom links on relevant pages,ckan,,ckan 2.0,enhancement,,assigned,2012-04-26T12:15:40Z,2012-09-03T09:24:31Z,"E.g. on dataset page, on revision page, on user page and on search results.",rgrp
2654,UI support for ordering groups on group_read page,ckan,,ckan 2.0,enhancement,,assigned,2012-07-10T18:11:31Z,2012-09-03T08:49:16Z,"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",ross
2886,Configurable related items,ckan,,ckan 2.0,enhancement,,new,2012-08-22T08:55:18Z,2012-08-22T08:55:18Z,"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.",ross
2902,genshi is used in Group controller,ckan,,ckan 2.0,enhancement,,new,2012-09-04T18:10:30Z,2012-09-04T18:10:30Z,"The Group controller uses the genshi module where it may be better for it to use Markup() in the template.
See https://github.com/okfn/ckan/pull/117/files#r1524863",ross
2917,Organization admins can delete themselves,ckan,,ckan 2.0,enhancement,johnmartin,new,2012-09-12T12:10:43Z,2012-09-12T13:13:56Z,Organization administrators can delete themselves from the user management pages. We should disable this on the front-end as well as the back-end.,ross
2926,I*Form tests for per-type templates,ckan,,ckan 2.0,enhancement,,new,2012-09-13T16:01:21Z,2012-09-13T16:01:21Z,"Finish the tests for the per-package-type custom template support in IPackageForm, IGroupForm and IOrganizationForm (i.e. the new_template(), read_template() etc. methods).
The new way that template inheritance works in jinja looks like it should allow this to be tested nicely without duplicating entire templates in the example extensions.",seanh
2927,Test new package/group/organization type URLs support,ckan,,ckan 2.0,enhancement,,new,2012-09-13T16:02:33Z,2012-09-13T16:02:33Z,"IPackageForm, IGroupForm and IOrganizationForm allow you to define e.g. new package types with new top-level URLs, but the example extensions don't have tests for this yet.",seanh
2928,Run CKAN tests with example_i*form extensions enabled,ckan,,ckan 2.0,enhancement,,new,2012-09-13T16:05:34Z,2012-09-13T16:05:34Z,"Before releasing CKAN 2.0 we need to run all the CKAN tests with a modified test-core.ini with the example_idatasetform, example_igroupform and example_iorganizationform plugins enabled. If any tests fail, fix the bugs. This needs to be done for each release so add it to the release process.",seanh
2929,Remove is_fallback() from I*Form extension interfaces?,ckan,,ckan 2.0,enhancement,,new,2012-09-13T16:09:57Z,2012-09-13T16:09:57Z,"If a plugin wants to take over the default package type for example, it can return ['dataset'] from its package_types() method. I don't see how there can be a package type that is not the default 'package' and is not returned by the package_types() method of a plugin, because the URLs for such a package type would not be mapped. Am I missing something or is is_fallback() not needed?
Same for IGroupForm and IOrganizationForm",seanh
2931,Better docstring for app_globals.py,ckan,,ckan 2.0,enhancement,,new,2012-09-17T14:13:14Z,2012-09-17T14:16:18Z,"''' The application's Globals object ''' is not very informative.
",seanh
2932,Add docstring to system_info.py,ckan,,ckan 2.0,enhancement,,new,2012-09-17T14:50:29Z,2012-09-17T14:50:29Z,"What is the system_info table for? It looks like a way to override config file settings in the database, perhaps so that admins can use a web interface to change site title etc. Could do with a docstring explaining the intended purpose of the table.",seanh
2933,Update theming docs,ckan,,ckan 2.0,enhancement,,new,2012-09-17T15:21:12Z,2012-09-17T15:21:12Z,"There's quite a lot of custom stuff going on, with all the custom jinja extensions, and the use of Fanstatic plus custom fanstatic extensions. People who are new to CKAN wanting to write CKAN themes are likely to be confused. I think the whole lot could do with documentation, maybe in the Theming and Customizing chapter in the sphinx docs.
I suggest completely replacing the contents of doc/theming.rst, and putting a 'legacy theming' link at the bottom linking to a doc/legacy_theming.rst file with the old contents.",seanh
2956,Allow for resource editing in CKAN 2.0,ckan,,ckan 2.0,enhancement,shevski,assigned,2012-10-03T15:11:40Z,2012-10-04T10:27:22Z,On the edit dataset page... there needs to be a way for users to be able to see all the resources associated to the dataset and edit them individually.,johnmartin
2961,Preview plugin endpoint,ckan,,ckan 2.0,enhancement,dominik,assigned,2012-10-08T11:39:27Z,2012-10-18T16:33:10Z,"Users could write ckan extensions that offer previews for a certain datatype.
Advantages:
- We can say that you can add your own previews
- Every preview would have to define it's own dependencies
- External development (community creates new extensions?)
Questions to answer:
- Specification of the interface
- Precedence of previews for the same data types
- Plugins only define the datatype that they are responsible for or do we call a function that returns whether the extension is responsible.
As far as I can see, this should be fairly easy to implement by following these instructions: http://docs.ckan.org/en/latest/writing-extensions.html#writing-a-plugin-interface",dominik
2966,'Add' button text is wrong when editing organization members,ckan,,ckan 2.0,enhancement,,new,2012-10-15T10:15:49Z,2012-10-15T10:15:49Z,e.g. if I just changed a member's capacity I am not adding anything 'save' is better maybe,seanh
2971,"""Are ytou sure you want to delete this member?"" should say which member",ckan,,ckan 2.0,enhancement,,new,2012-10-15T10:27:20Z,2012-10-15T10:27:20Z,when deleting members from groups and orgs,seanh
2972,Remove any imports of authz.py and delete file,ckan,,ckan 2.0,enhancement,,new,2012-10-15T10:37:22Z,2012-10-15T10:37:22Z,it is no longer used,seanh
2973,Move new_authz.py into logic/auth/__init__.py,ckan,,ckan 2.0,enhancement,,new,2012-10-15T10:39:05Z,2012-10-15T10:39:05Z,"Makes sense to keep all auth stuff under logic/auth.
Also decide which functions from new_authz.pu should be marked private with _.
Also decide which functions from new_authz.py are really helpers for the auth functions in get.py, update.py and delete.py, and should maybe moved to another file, e.g. logic/auth/helpers.py",seanh
2974,General of all auth functions,ckan,,ckan 2.0,enhancement,,new,2012-10-15T10:40:12Z,2012-10-15T10:40:12Z,"From Toby:
A general cleanup of all auth functions (in logic/auth) to check their fitness, error messages, etc.",seanh
2975,Tests for auth functions and new actions,ckan,,ckan 2.0,enhancement,,new,2012-10-15T10:41:00Z,2012-10-15T10:41:00Z,"From Toby: tests around the auth functions and new actions - probably needs an improved testing mechanism and things like test data creation on via actions
",seanh
2976,Polish group and organization member pages,ckan,,ckan 2.0,enhancement,,new,2012-10-15T10:41:49Z,2012-10-15T10:41:49Z,"From Toby: A little polish to the member pages and probably a little hardening of
the controller and logic actions",seanh
2977,Fix user autocomplete on group and organization member pages,ckan,,ckan 2.0,enhancement,,new,2012-10-15T10:42:29Z,2012-10-15T10:42:29Z,"From Toby: @johnmartin the user autocomplete on
member add needs fixing it gets data but does not understand what to do
with it
",seanh
2978,Tests for permissions for organizations and groups,ckan,,ckan 2.0,enhancement,,new,2012-10-15T10:43:26Z,2012-10-15T10:43:26Z,"From Toby: checking the logic around the who can do what from the user stories -
via some tests may be a good approach
",seanh
2979,Requesting membership to groups and organizations,ckan,,ckan 2.0,enhancement,,new,2012-10-15T10:44:04Z,2012-10-15T10:44:04Z,"From Toby: The requesting membership user stories and implementation remain needed
",seanh
2988,UI functional tests for CKAN 2.0,ckan,,ckan 2.0,enhancement,,new,2012-10-15T11:02:15Z,2012-10-15T11:02:15Z,Afaik the new CKAN 2.0 frontend has no functional tests,seanh
2989,"""Add dataset to organization"" should auto-select the organization",ckan,,ckan 2.0,enhancement,,new,2012-10-15T11:04:12Z,2012-10-15T11:04:12Z,"'Add dataset to organization' button, when you get through to the third stage of the new dataset form the organization you came from is not selected.
I don't see any option to choose the group when adding or updating a dataset, but if I add a dataset via the ""Add dataset to group"" button on a group's page, then the dataset seems to get added to that group. (And I can also add/remove existing datasets by editing the group.) I wonder if organizations should work the same way, instead of having an Organization drop-down when creating or updating a dataset. The add dataset page needs to somehow indicate that you're adding a dataset to a certain group or organization though, doesn't currently.",seanh
2990,Fix descriptions of groups and organizations on /groups and /organizations pages,ckan,,ckan 2.0,enhancement,,new,2012-10-15T11:04:51Z,2012-10-15T11:04:51Z,,seanh
2991,Add blocks to header.html template,ckan,,ckan 2.0,enhancement,,new,2012-10-16T11:10:20Z,2012-10-16T11:10:20Z,"Currently if you want to customise the header.html template you have to copy the whole thing, it isn't broken up into blocks like other templates are.",seanh
2994,Add dataset and user popovers throughout the site,ckan,,ckan 2.0,enhancement,,new,2012-10-17T14:26:04Z,2012-10-17T14:26:04Z,"If you hover the mouse over a dataset or user in an activity stream, you now get a popover with some info about that dataset or user and a follow/unfollow button.
These popovers should appear wherever datasets or users are listed, throughout the site.",seanh
2995,"Popovers for resources, groups, organizations, tags...",ckan,,ckan 2.0,enhancement,,new,2012-10-17T14:27:21Z,2012-10-17T14:27:21Z,"If you hover the mouse over a dataset or user in an activity stream, you now get a popover with some info about that dataset or user and a follow/unfollow button.
It would be nice to add similar popovers for other types of object in CKAN, e.g. resources, groups, organizations, tags...",seanh
2997,Add activity streams to dataset pages,ckan,,ckan 2.0,enhancement,,new,2012-10-17T14:31:46Z,2012-10-17T14:31:46Z,"Add an activity stream tab to dataset pages, like we have on user profile pages. Dataset activity streams are already implemented in the backend.",seanh
2998,Add activity streams to group pages,ckan,,ckan 2.0,enhancement,,new,2012-10-17T14:33:14Z,2012-10-17T14:33:14Z,Before we do this we should implement smarter group activity streams (i.e. what activities should appear in a group's activity stream?) and following of groups.,seanh
2999,Add activity streams to organization pages,ckan,,ckan 2.0,enhancement,,new,2012-10-17T14:34:17Z,2012-10-17T14:34:17Z,"Before we do this we need to merge the organizations branch into master, we need to implement smarter activity streams for organizations, and we need to implement following of organizations.",seanh
3000,Add number of followers to dataset pages,ckan,,ckan 2.0,enhancement,,new,2012-10-17T14:36:00Z,2012-10-17T14:36:00Z,"User profile pages now show some interesting stats about the user: num. datasets, num. edits and num. followers. Would be nice to add some similar info to dataset pages. At least num. followers can be done (already implemented in backend).",seanh
3005,"Add following/unfollowing of groups: model, API, frontend, tests",ckan,,ckan 2.0,enhancement,seanh,new,2012-10-23T17:35:44Z,2012-10-23T17:35:44Z,,seanh
3007,Adding a dataset creates multiple activities,ckan,,ckan 2.0,enhancement,,new,2012-10-29T13:15:07Z,2012-10-29T13:23:39Z,"Adding a new dataset creates multiple activity stream activities, e.g. seanh created the dataset foo, seanh add the resource bar to the dataset foo, and seanh updated the dataset foo are all created when I add a new dataset. I wonder if these can be collapsed into a single activity.",seanh
3010,Pin images don't appear in data explorer,ckan,,ckan 2.0,enhancement,,new,2012-10-31T17:45:06Z,2012-10-31T17:45:06Z,"When minified files are in use (set debug = false in ini file) the pin images for points don't show up in the data explorer map view when viewing a resource with geolocation data.
set debug = true will fix the problem by using unminified files instead but also turns on a bunch of debug stuff you wouldn't want on a production site.
middleware.py, around line 73, is where the decision to turn minified files on or off based on the debug setting is made. This can be hacked on a production site to run with unminified files but otherwise run on production mode thereby getting around the issue with the pins. But that doesn't fix the underlying bug.",seanh
3016,CKAN 2.0 template tweaks,ckan,,ckan 2.0,enhancement,johnmartin,new,2012-11-13T13:30:17Z,2012-11-13T13:30:17Z,Just a ticket to keep track of a few suggested template changes.,johnmartin
3018,Load more in activity streams,ckan,,ckan 2.0,enhancement,johnmartin,new,2012-11-14T13:34:11Z,2012-12-10T12:02:30Z,Activity streams should be able to load more than 15 items within them. Suggest the default amount of loading is around 30 and then click to load more.,johnmartin
3028,Feature: dashboard activity stream filtering,ckan,,ckan 2.0,enhancement,seanh,new,2012-12-10T12:07:24Z,2012-12-10T12:07:24Z,https://github.com/okfn/ckanext-pdeu/issues/13,seanh
140,News section on front page,ckan,,ckan-backlog,enhancement,,new,2009-10-07T08:02:21Z,2010-02-08T10:32:39Z,"Have a news section (suggest as a sidebar item).
News section will link to latest 3/4 blog posts on CKAN from blog.okfn.org.
Details:
* Suggest pulling via rss or similar.
* Will want to cache this ...
Cost: 4h?",rgrp
253,Package relationships,ckan,,ckan-backlog,enhancement,,assigned,2010-02-22T16:05:21Z,2012-06-15T15:38:46Z,"= Overview =
Functionality to formally associate packages. We see a need for specific parent-child, inheriting or dependency relations. Not only should this help navigation between packages in the web interface, but it also provides a mechanism to automatically pull dependencies when downloading a data package, in a similar manner as we see in software package management.
= Examples =
1. There are 27 packages in data.gov.uk to do with the Data4NR's Health Poverty Index. There is currently no common link between these, unless you search for 'HPI' (which also brings up House Price Index), or look under tag 'health' (which also has 600 other results). There should be a link on each HPI package page to navigate to the other 'sibling' HPI packages, and to a 'root' package that has info about the set. This could be partially achieved using the existing tag or group concepts, but a more explicit/official/obvious marking of their relationship could be beneficial.
2. In ckan.net is freedict, a collection of translation dictionaries. You could make each dictionary a child package and use this system. But it would probably be better to make each dictionary a different resource in the same package. (There are other ideas to denote a resource as the data making up a 'portion' of package, or a 'whole' of the package, to help people downloading datasets in the software package style.)
3. OSM has had some Naptan data imported (bus stops), with special permission - i.e. a more liberal license. It would be useful to show this link on both OSM and Naptan packages in CKAN: OSM 'derives from' Naptan with a comment about the license change. I'm not sure this is useful to an automatic download or use of these datasets, but may aid exploration on the CKAN website and understanding the provenance of the bus stop data on it.
4. IPCC collection of data linked / mirrored. Not sure if there are useful relationships here?
5. Dracos gets postbox locations from crowd sourcing and OSM. We could say Dracos 'derives from' OSM.
See more examples discussed here: http://trac.ckan.org/ticket/253
= Implementation =
This is split into four tickets:
* Model: ticket:254
* Read in WUI: ticket:255
* Edit in WUI: ticket:256
* API: ticket:257
No need for write access to be provided API for the moment.
This ticket also encompasses ticket:169 (Package derivations) and ticket:176 (Package dependencies).",dread
277,Set some config options / settings in WUI (extension),ckan,,ckan-backlog,enhancement,zephod,assigned,2010-03-22T16:21:01Z,2011-10-10T11:45:21Z,"== Use case ==
As a ckan administrator I want to easily change options about the CKAN install.
== Implementation ==
=== Settings to be in DB ===
Suggested:
{{{
## Title of site (using in several places including templates and tag
ckan.site_title = CKAN
## Logo image to use (replaces site_title string on front page if defined)
ckan.site_logo = http://assets.okfn.org/p/ckan/img/ckan_logo_box.png
## Site tagline / description (used on front page)
ckan.site_description =
## Used in creating some absolute urls (such as rss feeds, css files) and
## dump filenames
ckan.site_url =
## Favicon (default is the CKAN software favicon)
ckan.favicon = http://assets.okfn.org/p/ckan/img/ckan.ico
## An 'id' for the site (using, for example, when creating entries in a common search index)
## If not specified derived from the site_url
# ckan.site_id = ckan.net
## API url to use (e.g. in AJAX callbacks)
## Enable if the API is at a different domain
# ckan.api_url = http://www.ckan.net
## html content to be inserted just before