id type owner reporter milestone status resolution summary description PosixTime ModifiedTime 30 enhancement zool rgrp v0.3 closed fixed Tags are added to a package by package owner "== As A == Site User == I Want To == Create/Edit/Update/Delete tags associated with my package == Notes == * Tags are service-wide and '''not''' package specific * Tags should not allow spaces (but allow everything else e.g. ':') * web interface details * should provide a text box where users can add space separated tags (a la delicious). * tag creation should be seemless (so if a tag does not already tag exists it should automatically be created in the background) * would like to provide a list of relevant existing tags. For time being could just list all existing tags below entry box but in long run would like auto-updating/auto-suggesting listing a la delicious " 1155905753000000 1185472559000000 277 enhancement zephod dread ckan-backlog assigned Set some config options / settings in WUI (extension) "== 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 </body> tag (e.g. google analytics code) ## NB: can use html e.g. <strong>blah</strong> ## NB: can have multiline strings just indent following lines # ckan.template_footer_end = }}} NB: these will still need to be stored somewhere for loading on initialization. do this in db init function ... === Settings / Options / KeyValues Table === Columns: * [namespace]: ? only if KeyValues (for settings this would then always be settings) * key * label * value (json) * type (e.g. date and to specify in advance what type should be) * description * tags: ?? (for grouping ...) === Loading settings from DB === Do this in ckan/config/environment.py === WUI === * /ckan-admin/settings * Show label, plus description plus text field == Depends == * Would be part of ckan-admin section and hence build on ticket:833 (Administrative dashboard) " 1269274861000000 1318247121000000 978 enhancement zephod dread ckan-sprint-2012-03-05 closed fixed Edit Resource including Extras in Web UI "Part of super-ticket #1506. Follows on from #826. We can configure some extra fields in resources and can edit them in the Web UI, but we can't create new columns in the Web UI. Update the WUI to handle tis. " 1297429619000000 1330547181000000 1004 defect zephod dread ckan-backlog closed fixed Group creation instructions missing Need instructions on the group page to tell people they need to login to create a group. Someone must have deleted this. 1298559144000000 1323195485000000 1065 enhancement zephod johnlawrenceaspden ckan-v1.6 closed fixed [super] Change Authorization System "Child tickets * #1198 Publisher hierarchy * #1050 Authz lib improvement and refactor of ckan/lib/authztool.py * #1004 Group creation instructions missing * #1099 Strange interactions between two browsers while playing with authz groups * #1115 can have two authzgroups with the same name * #1133 command line rights manipulation doesn't work * #1138 minor navigations behave inconsistently Old ticket description: 1. Change name of AuthzGroup to UserGroup to reflect what it is for 2. Get rid of Roles, and replace them with direct assignment of actions, even though there are many actions, and extensions can add arbitrary ones. * Debatable whether we should cut the number of actions to correspond to the three roles defined by the base system. * Have a method of finding roles (or, in future, actions) relevant to a given protection object (e.g. FILE-UPLOAD(ER) not relevant to Packages) 3. Change UserGroups so that they can have a hierarchical structure, == More info on Hierarchy change == e.g. UserGroup NHS contains the User nhsysadmin, as well as the UserGroups SURREY and BERKS, which themselves contain users. One user in SURREY is Simon the Sysadmin, who has permissions on the whole system. His permissions should not leak out to other users or groups, and user permissions generally should not. Each Group has permissions over various objects. A user has permissions in his own right, and also has the permissions of his own group, and of all the groups contained in his group, and so on recursively. Algorithm: possible(user, action, package): if user has permission for action on package or any of have that permission or any of his groups group-children (but not user-children), and so on recursively have the permission. " 1301508331000000 1324550041000000 1108 enhancement zephod pudo ckan-sprint-2011-09-12 closed fixed Create a more modern theme for CKAN "CKAN looks a bit aged, it should be styled more modernly and some elements could be re-arranged: * Collect user info in top bar * re-add the logo to ckan.net * Remove tags from main menu, replace with /sitemap.xml Inpiration: quora.com, github.com, Google Projects, Google Refine, etc. == CKAN.net or CKAN general theme? == To be decided. Suggest we start with ckan.net specific and then backwards integrate (?). Existing ckan.net theme repo: https://bitbucket.org/okfn/ckan-ckan.net" 1303830790000000 1315140879000000 1264 enhancement zephod rgrp ckan-sprint-2011-10-10 closed fixed Merge ckanext-admin into core "This extension should be in core now -- functionality is basic and very useful. Copy across from here: http://bitbucket.org/okfn/ckanext-admin Suggest this no longer even be an extension." 1312480783000000 1318245716000000 1293 enhancement zephod rgrp ckan-sprint-2011-09-12 closed fixed Rename Package to Dataset throughout WUI, API "== Changes == * All templates * [DONE] Routing: /package/ -> /dataset/ (including API) * [DONE] Tests: self.app.get('/dataset/...') rather than package ... * One test to check redirect works? * Docs == Leave == * Stay with Package in code e.g. stay with 'PackageController' * also leave stuff like pkg = .... (gradual migration) * Leave extensions == Notes == * Package -> Dataset * Data Package -> Dataset * respect capitalization" 1314405700000000 1317649968000000 1296 enhancement zephod rgrp ckan-sprint-2011-09-12 closed fixed Improved resource adding/editing on dataset/page page "Subticket of #1294. * Nice way to edit all resource attributes * Nice way to add new resources * Including file upload (cf #878). * Cf work in ckanjs (this can be a straight integration). " 1314406093000000 1315948224000000 1297 enhancement zephod rgrp ckan-sprint-2011-09-12 closed fixed In-place preview of edited description markdown on edit dataset form "Subticket of #1294. Can integrate from working system on ckanjs." 1314406183000000 1317649974000000 1307 enhancement zephod rgrp ckan-sprint-2011-09-12 closed fixed Implement captcha for signup " * Major issue with spam signup on thedatahub.org * Suggest using recaptcha Est cost: 1d" 1315153860000000 1317649963000000 1309 enhancement zephod zephod ckan-sprint-2011-09-12 closed duplicate Registering new user requires immediate login "Registering a new user directs you to that user's profile page but does not log you in. There is an empty set of ""Recent changes"" and no ability to modify the page. Users must follow the login link in the top-right corner to continue. Registering a new user should immediately log you in." 1315225510000000 1315586335000000 1313 enhancement zephod dread closed duplicate Tweaks to captcha configuration "Awesome to have the captcha implementation and running on thedatahub.org! Here are some further suggestions concerning the config options, before this goes into a release: * Document ""ckan.recaptcha.publickey"" and ""ckan.recaptcha.privatekey"" in doc/configuration.rst * Which one config option defines whether recaptcha is enabled? There is disagreement between the template and the lib. Maybe better to have a third option for this. When setting the syntax for this, I can see us wanting to use captcha for other operations, like package edit, package create, group create etc. so perhaps we'd want to be able to turn each one on/off separately, using the name of the logic action. e.g. {{{ckan.recaptcha.enable = user_create, group_create}}} * We got this exception last night from the template: {{{ Module ?:37 in <Expression u'g.recaptcha_publickey'> << <dd><input type=""password"" name=""password2"" value="""" /></dd> <dd py:if=""g.recaptcha_publickey""> <script type=""text/javascript"" src=""http://www.google.com/recaptcha/api/challenge?k=${g.recaptcha_publickey}""> >> <dd py:if=""g.recaptcha_publickey""> Module genshi.template.eval:324 in lookup_attr << val = obj[key] except (KeyError, TypeError): val = cls.undefined(key, owner=obj) return val >> val = cls.undefined(key, owner=obj) 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: <ckan.lib.app_globals.Globals object at 0xb8f1182c> has no member named ""recaptcha_publickey"" }}} I'm not sure why - might be something to do with the maintenance on the server, but worth double checking, since we don't want exceptions, say if one or other config variable is not defined." 1315395185000000 1317076432000000 1320 enhancement zephod rgrp ckan-sprint-2011-10-10 closed fixed Extend basic markdown to support normal http / https links "It is very annoying that you have to wrap links in <...> and most people don't bother. Extend h.markdown in code and markdown in js to fix this. (We should also support 'package' links etc in javascript?) *ADDITIONAL* * Note that CKAN flavoured markdown will not currently recognise dataset:my_data links (still uses package). * Move the markdown api to /util/markdown " 1315422000000000 1318164603000000 1348 enhancement zephod zephod ckan-sprint-2011-09-26 closed fixed UX polishing (dataset create/view/edit experience) "Tweaking UIs and polishing the work done in #1294. ## Edit Page ## * [Done; cset:49e0b059b6f5] Hide upload if storage not enabled * [Done; cset:81ff13b42dad] Make 'Add resource' links on edit page clearer and more button-like. * [Done; cset:03904fc50cbf] Move edit form tabs to the left * [Done; cset:fde26b87d6ce] API placeholder text should not link to a CSV file * [Done] We used to autocomplete the format field - restore this functionality * Works on live. My local db has an empty 'resource_revision' table; maybe 'paster create-test-data' should insert something here? * [Done; cset:1aab499d73db] Summary should contain 'name' (or, if unavailable, use description. Long term: description is to be deprecated) * [Done] Remove/move instructions where possible (a lot could just be placeholder text on the elements) (other stuff could only show on hover) * NB: reveal_instructions.js already disabled on edit page * [RP] have now done this on create -- think we can leave on edit * [Done; cset:755b1a622199] We have broken 'error' reporting for resource issues. Either need to move that into error summary or somehow not destroy it when we rewrite table on page load ... * [Done; cset:7ad090cb7855] Add slideDown to Resource expanded view * [Done; cset:d3595143e506] Need ability to delete resources * No thought yet given to uploaded resources. Long term re-think probable. * [Done; cset:2430a68a59fc] Empty resource table to resemble view page (""no resources"" text) ## General ## * [Done; cset:cc0ad47293e5] Highlight the package tab I'm on (view/edit/history) * More generally, the presence of the #minornavigation bar is very inconsistent throughout the site. * [Done; cset:d5babc3629cf] Remove 'license' filtered search from backend * [Done] Move script stuff to footer of page " 1316170410000000 1317650043000000 1349 enhancement zephod zephod ckan-sprint-2011-09-26 closed fixed Template tidying "Various things in templates can be tidied up after work has finished on #1294: * remove styling in page in group/index.html (put in css main) * ditto for package/search.html * ditto for home/index.html * Forms.css - to merge into style.css; remove explicit imports elsewhere * @import at the top of style.css @import url(forms.css) * Make a note: Success/failure controllers clash CSS with success/failure flash banners " 1316171025000000 1317650050000000 1350 enhancement zephod zephod ckan-sprint-2011-09-26 closed fixed i18n of new javascript "New js code running produced in the work following #1294 contains various string literals, and needs proper internationalisation. See files: * application.js * templates.js Furthermore, efforts can be made to tidy up strings as described in #1329." 1316172576000000 1317650056000000 1351 enhancement zephod zephod ckan-sprint-2011-09-26 closed fixed Tidy edit-user form; strip preview functionality "The template for editing a user's profile seems to output the same form twice in one page. Furthermore, the page is made needlessly complex by the preview functionality. The neat inline preview used in package will make this page a lot neater. * Fix the duplicate form * Strip the preview functionality from the front-end, replacing it with js editor * Strip the preview functionality from the back-end and test" 1316534753000000 1317650062000000 1358 enhancement zephod rgrp ckan-backlog assigned Generate configuration documentation automatically from the deployment_ini_tmpl file "At the moment documentation of config options is duplicated between source (deployment_ini_tmpl in ckan/config which is used to generate user ini file) and the docs. Suggest we write a script that automatedly generates reference documentation for the config from the source. May be obsoleted by #277 (some config in db)" 1317076350000000 1318257823000000 1360 enhancement zephod rgrp ckan-sprint-2011-09-26 closed fixed Remove support for filter by download and filter by openness in search "Deliver little user benefit and easier just to search and then see what is listed as open and with resources. == Implementation Details == Areas to fix: * UI * lib/search/... * tests * ...? == Cost == Est: 2h" 1317077958000000 1317650018000000 1368 enhancement zephod zephod ckan-sprint-2011-10-24 closed fixed UX polishing and bugfixes "From Ira: PDF of bugs and suggestions is attached. This ticket is included in release v1.5. Post-v1.5 UX improvements are collected in #1404. [[ DONE ]] * [dataset/edit]: Deletions are confirmed with a dialog box * [dataset/edit]: Long URLs break the edit resources tab. Show name (& 'no name') with a pencil icon. * [dataset/edit]: Rearrange the delete resources mechanism; * Use a little minus icon on the far left, followed by a pencil icon for editing. * The 'delete resource' button can become 'hide' * Deletions are confirmed with a dialog box * [dataset/edit]: Rearrange the 'you have unsaved changes' warning; * Delete the little green plus sign on the right; * Try a flash banner instead (more general purpose & beautiful) * [dataset/edit]: Try a pencil icon (+'hide' button) rather than the +/- buttons which look a bit like you're adding a dataset. * [dataset/view]: Subscribe button (& subscribe to history) doesn't work as expected. Modal dialog carrying instructions? * [dataset/view]: Drop the 'add to a group>>' and 'add tag>>'. Needs inline tag-adder. * [markdown editor]: Tab colours confuse the user. Inactive button appears to be greyed out. * [dataset/edit]: The upload file UI mutates and breaks across lines; make it a little more rigid. Verify at different zoom levels. * [groups/add]: Hide unimportant fields * [navigation] Add 3D bevel (@see github) to current tab highlight. * [dataset/create and groups/create]: Slug generator can be tidied. Default: Not editable. @see http://groupspaces.com/a/group/ * [groups/view]: Show description and owner. To match dataset section. * [groups/authz]: Tidy to match admin/authz (pretty buttons & spacing). Add navigation bar. * [groups]: Entire section to use pretty buttons please. * [about]: Get the about page working on test.ckan.org. (Works locally and on live). [[ WONTFIX ]] * ~~[dataset/edit]: Make 'tags' a top level form section; it is too important to go below the fold.~~ (wontfix) * ~~[groups]: Clicking a column heading should sort by that column. Default should be 'size', not 'name'.~~ (ticket #1403) * ~~([groups]: (Investigate) Is it easy to implement a little search-groups feature?)~~ (ticket #1403) * ~~[*/authz]: Add tooltips to explain column headers. (Not required if mechanism is about to be refactored...)~~ (wontfix: we need to rethink this mechanism; authorization refactor is coming) * ~~[general]: 'Authorization' refactor to 'Permissions' on nav-bars.~~ (wontfix, further discussion. authorization might be less techy...) * ~~[search]: (Investigate) Can we quickly & easily reintegrate the faceted search-by-license but present it in the sidebar like the other facets?~~ (wontfix: high cost and maintenance overhead; need compelling user story) " 1317391960000000 1318847910000000 1369 enhancement zephod zephod ckan-sprint-2011-10-10 closed fixed Remove showdown.js from the page download ckan.js can be rearchitected to avoid instantiating showdown.js in the root namespace. That way, layout_base.html doesn't need to import the script (because we don't use the showdown-dependant parts of ckan.js). 1317392516000000 1318165086000000 1377 defect zephod zephod ckan-sprint-2011-10-10 closed fixed Ckan admin repair "Integrating ckanext-admin into core has thrown up a number of problems: * Look & feel does not match the rest of the site * Tests are not passing * On the trash page, clicking 'undelete' triggers a purge * Using the purge functionality is dangerous; deleting and purging the latest revision will corrupt a dataset (& several corrupt datasets have been found on thedatahub.org) * Trash page can contain nested form tags in certain cases (breaking test harness & form redirection) " 1318240018000000 1318245795000000 1378 enhancement zephod zephod ckan-sprint-2011-10-24 closed fixed New to TheDataHub? - StackOverflow style banner Implement a banner across the top of the screen giving newbies a link to the about page, and making them feel welcome. See stackoverflow for reference? 1318247329000000 1324047835000000 1379 defect zephod zephod ckan-sprint-2011-11-07 closed fixed Markdown conversion of linked references broken "eg. http://thedatahub.org/dataset/us-gov-tarp [This Paper][my-paper] is very interesting. [my-paper]: http://somelink.com/paper Write a test to check this markdown feature works - if not, use external markdown lib rather than webhelpers.markdown. Probably need to add markdown lib to list of requirements." 1318247719000000 1320161439000000 1380 enhancement zephod zephod ckan-sprint-2011-11-07 closed fixed Making customizing CSS easier "While integrating the new theme and making a large number of UX tweaks, I've allowed the CSS file to bloat out of control with some very specific rules and subtle hacks, as well as a couple of clearfix <div> objects in the markup which isn't really good practice. In general we want a logical CSS structure which is as easy to modify as possible. You should not find yourself being overwritten by highly specific rules all the time! == Actions == 1. Clean up css 2. Add a config option ckan.template_head_end - arbitrary string inserted at end of <head> tag so you can add custom css etc (may also want to update theming docs to reflect possibility of using this) 3. (While we're at it): Add ckan.template_footer_end config option to deployment.ini_template. (This already exists, we just haven't told anybody) 4. The /users index page isn't linked anywhere. Clean it up and link it in the footer next to Groups etc. 5. package/new, package/edit, group/new and group/edit all include their forms differently. Use h.literal in all cases. 6. Fix the padding on minornavigation. == Background == David Read sent me the following as background: V. basic theming is described here: http://docs.ckan.org/en/latest/theming.html Deep customisation of the templates is done by creating an extension, with this as a template: https://bitbucket.org/okfn/ckanext-exampletheme/overview That's what Augusto and the Brazilians have done http://alpha.dados.gov.br/dados/ and their code is here: hg clone http://dev.dados.gov.br/codigo/dev/tema-ckan <snip> Another thing of interest was us becoming compatible with Wordpress themes last December. Richard Pope worked with Rufus on this. I believe the base theme is 'twentyten' and I'm guessing that one would swap that css file with another to change theme, but I don't know. I don't know if this feature has been dropped since then. http://lists.okfn.org/pipermail/ckan-dev/2010-December/000073.html Dave" 1318263956000000 1324048324000000 1403 enhancement zephod zephod ckan-backlog new Refactor groups index page "Groups are listed alphabetically with paging - not an ideal user experience. We would like to list groups in order of 'popularity': The number of datasets they contain. Following this chain of thought, then, it would be nice to rearrange the groups table by clicking on column headers and having it sort by that column. Furthermore, then, we'd like to implement a full-fledged groups search feature (if this is at all feasible). The forthcoming groups refactor will probably have some bearing on this task. " 1318847512000000 1318847566000000 1404 enhancement zephod zephod ckan-v1.7 closed wontfix Search Page UI improvements "[Refactored] :: Follows on from #1506 UX changes. * Declutter the sidebar. No yellow box. * Facets to go on the left, rather than the right. More logical flow. * Did you know you can search by author? Probably not. Find a nice way of presenting extended search options. * Make Datasets in the search page look more like Datasets on the groups pages (ie. like awesome sexy search results). * Update that look-and-feel to include the new resource icons created in #1506 " 1318847818000000 1338203639000000 1409 enhancement zephod zephod ckan-sprint-2011-11-07 closed fixed Add Gravatars to user profiles "Since we now require email addresses, it's sensible to request users' gravatars to add a little flavour to their user profile (and, potentially, other places eg. comments threads?) [Reopened: Additional] Use gravatars in the HTML generated by helpers.py to create lists of users. Eg. on user/list and dataset/history." 1319200773000000 1324047722000000 1410 enhancement zephod zephod ckan-v1.5 closed duplicate Add Gravatars to user profiles Since we now require email addresses, it's sensible to request users' gravatars to add a little flavour to their user profile (and, potentially, other places eg. comments threads?) 1319200774000000 1319213205000000 1411 enhancement zephod rgrp ckan-backlog new Force resource format to be lower case (also mimetype) "Format should be lowercase. Automatically lower case (for extra points have a bit of javascript to force lower case when entering). * Even more points: do a update on thedatahub repo to make all format lower case (or script this as an update?)" 1319319604000000 1319319604000000 1425 enhancement zephod dread closed fixed Dataset delete button "From Jonathan gray: At the moment to delete a package you have to go to 'state' and change from 'active' to 'deleted'. For me this was not very obvious, and someone recently wrote to me about this too. Its a small issue - but unless you know what 'state: active' refers to, its not obvious what this means, nor that this is where to go if you want to delete a package. From UI perspective this could be replaced by either a trash can or some text that says 'delete', perhaps with some prompt that explains what happens when you delete a package - explaining that non-admins won't be able to see it, and how you purge, etc. " 1319649860000000 1330085282000000 1445 enhancement zephod rgrp ckan-sprint-2011-12-05 closed fixed Resource View page in WUI "Super ticket: #1032 * Locate at: /dataset/{dataset}/resource/{id} See: http://wiki.ckan.org/Dataset_View_Page Implemented in branch feature-1445-resource-view. Still to do: * Add inline data explorer to page" 1320665049000000 1330019916000000 1450 enhancement zephod johnglover ckan-sprint-2011-12-05 closed fixed Simplify dataset view page "See http://wiki.ckan.org/Dataset_and_Resource_Pages_Proposal * Create a collapsible section for the README * Reduce the number of things on the page * Tidy up groups and tags in the sidebar * Resource view becomes a list of search results (additional) * Resource navbar item links to first resource * Resource navbar has a dropdown menu of all resources in the dataset * Edit and Authz navbar items should be in a separate logical group to the right Very rough summary: create more info section and move stuff out (relayout page e.g. README, tags etc)" 1320677788000000 1330019974000000 1506 enhancement zephod rgrp ckan-sprint-2012-03-05 closed fixed [super] UX improvements to dataset edit, create and search + group + user page (Dec 2011) "== Historical Parent Tickets == * ~~Parent-ticket: #1450~~ * ~~Parent-ticket: #1032~~ == Step Zero == * ~~COMPLETELY REDESIGN resource edit process~~ == Dataset Edit-Resources == * ~~Force format field to be lowercase~~ * ~~Modify backend to serve it up in that format~~ * ~~Subticket #978: Add extra fields to resources in Web UI~~ * ~~Fix display of large datasets (http://test.ckan.net/dataset/europeana-lod)~~ * ~~When submitting forms with errors, open the correct resource pane.~~ * ~~No hint is given that the time format for a resource is in ISO, eg 2005-01-01T10:10:10~~ * ~~Resource description field to become the markdown editor we use everywhere else.~~ == Dataset Settings == * ~~Subticket #1648: Clarify edit terminology~~ * ~~Merge Groups and Tags into main Settings section (no point having them on their own and most people will miss this).~~ * ~~Fix (i.e. allow / show) name editing on dataset edit.~~ * ~~Fix the slugify so it does not overwrite if i change title after fixing name.~~ * ~~Make slugify encourage people to use shorter names. Either by cutting off (not so good) or showing a warning and saying something like 'hey you may want to cut this down. Hit edit to customize the dataset name now'~~ * ~~Autocomplete the author/maintainer box (requires API extension?)~~ [WONTFIX what? it's not like that field is linked to users of the site or anything] == Dataset View == * ~~Fix animation glitch in expanding description~~ * ~~Can we make the list of files look more like a table? Lose space between files? Lose rounded corners?~~ * ~~Verify that there are no more (none) placeholder <td> objects (i believe they've been refactored out)~~ == Dataset Create == * ~~""Upload or link data files, APIs and other materials related to your dataset.""~~ * ~~Include the description markdown editor again (keep it small)~~ * ~~Licence should maybe be restored~~ * ~~""(Don't worry if you don't know what your licence is)""~~ * ~~Show the log message field~~ * ~~Beautify~~ * ~~Pre-populate the log message field?~~ * ~~? Show Home Page field when creating dataset~~ [WONTFIX don't push it] * ~~? Do some Guerilla UX to see whether we need to Redirect to Resources directly after dataset creation?~~ [WONTFIX doesnt make sense with new resource editor awesomeness] == User pages == * ~~Improvements to user page UX - 1d - #1396~~ * ~~Broken links for non-Gravatar use icons - 0.25d - #1719~~ == Etc == * Take before and after screenshots" 1323088306000000 1330702859000000 1507 enhancement zephod rgrp ckan-backlog assigned Minor fixes to dataset add on Group edit form - 0.5d "Group edit dataset add form needs some work * Dataset name is not cleared when you add * No way to remove item from list of datasets to be added if I make a mistake * (2nd Apr 2012) It now seems that option to add multiple datasets at once has disappeared (perhaps during the CSS/HTML refactor ...) " 1323088429000000 1338205220000000 1517 defect zephod zephod ckan-sprint-2011-12-05 closed fixed Accessing resource view sometimes auto-downloads the resource "Clicking any of the links to a resource page in the dataset viewer seems to load the page and immediately start downloading the resource file. For example, being here: http://test.ckan.net/dataset/europeana-lod and clicking on any of the links to the first resource." 1323109647000000 1323175957000000 1521 enhancement zephod shevski ckan-sprint-2012-01-23 closed fixed [super] Groups UI and UX improvements in v1.6 from Cygri "Various UX and UI improvements to groups. Etherpad: http://ckan.okfnpad.org/feature-1521-groups-ux == Improved groups == From Richard Cyganiak. This is a set of proposals to make the groups feature more powerful. As a result, currently separate CKAN instances such as http://ie.ckan.net/ could be turned into a simple group on the [http://thedatahub.org Data Hub] without losing their separate identity. * ~~'''Group homepages:''' Make the group pages more attractive and welcoming as homepages. The main Data Hub homepage does a great job at this now – can the group pages be made more like that? They're quite uninformative and bland right now.~~ * '''Subdomains for groups:''' Enable subdomains such as {{{ie.thedatahub.org}}} as aliases for {{{thedatahub.org/group/ireland}}} * ~~'''Search within the group:''' Have a big search box that searches just within the group on the group page, with a look like on http://thedatahub.org/dataset~~ * ~~Have an '''Add a dataset to this group''' link on the group page, perhaps in the sidebar.~~ * ~~'''Navigation within the group:''' Have some more navigation starting points on the group page, e.g., the Tags + Resource Format sidebar from http://thedatahub.org/dataset~~ * ~~'''Group documentation:''' Add the ability to add more “About this group” text, or pages like “FAQ” and “Extra field conventions”.~~ * ~~The only place where one can currently put group-specific text is before the dataset list. Putting much text there is bad as it moves the datasets below the fold.~~ * Can the top-level sections of a group's description be automatically turned into separate pages that are linked from the sidebar? With headlines ''About'', ''Frequently Asked Questions'' and ''How to get involved'', we'd then get three links in the sidebar that point to {{{datahub.org/group/ireland/about}}}, {{{datahub.org/group/ireland/frequently-asked-questions}}}, {{{datahub.org/group/ireland/how-to-get-involved}}} * RP: WONTFIX this is being considered for future (generally useful) but cost/benefit here was low particularly as it wasn't clear what optimal implementation was. == Additional == * ~~Display members of a group as well as admins (if less than 10? If more than 10 display count only ...?)~~ * Better group index page (sort by number of dataset, allow searching ...) - #1403 * Add search to groups: http://thedatahub.org/group * Way to filter by activity, number of datasets * #1597 '''Tag search, filtered by group''' * RP: not worth it in terms of benefit/cost IMO == Steps == * ~~""Add Dataset"" button on action bar~~ * ~~Make it a dropdown? -> New Dataset / Existing Dataset~~ * ~~Redirect Add Existing -> Edit~~ * ~~Check permissions~~ * ~~Expandable ""about this group"" box~~ * ~~Implement simplest search-this-group box~~ * ~~turn the list of datasets into a dynamic list of search results~~ * ~~pagination~~ * ~~Matching set of facets in the sidebar (matches 'real' search page)~~ * ~~Deleteable, displayed facets~~ == Nice-To-Have == * Get rid of the old group_package_show action (confirm with team) * Tabbed ""about this group"" box (extract headers?) * ~~Scrollable group members widget in the sidebar~~" 1323169961000000 1330675930000000 1528 enhancement zephod zephod ckan-backlog closed fixed Gravatar next to My Account link on all pages "Rather than the anonymous 'user' icon in the top-right corner, we could display your gravatar on all pages when you are logged in. This was suggested by Richard Cyganiak: http://lists.okfn.org/pipermail/ckan-discuss/2011-November/001825.html" 1323197931000000 1330020444000000 1530 defect zephod lucychambers ckan-v1.7 closed fixed URL field help text in wrong place "Confusion between entering values in the title and name/url fields in datacatalogs.org. The help text ""Url must be purely lowercase alphanumeric (ascii) characters and these symbols: -_"" applies to the name/url field, yet in Lucy's browser the text that is actually hovering over the title field in my browser. " 1323261984000000 1338202731000000 1583 enhancement zephod johnglover ckan-sprint-2012-02-06 closed fixed Integrate QA into frontend - 1d "Tasks: * ~~On dataset view page, add star rating after each resource view url. Probably similar to current format label after url.~~ * ~~Add star rating to resource view page, along with a way of displaying the reason for the rating and tips to improve. Should be unobtrusive.~~ * ~~Fix the table at http://thedatahub.org/qa/dataset/broken_resource_links - URLs should be truncated to a fixed not-too-long length and the other fields line up (eg by using a table)~ * ~~Handle 404s by showing that 'we think this resource is 404ing'.~~ * ~~Handle the absence of QA data on a resource (currently nothing is displayed. Maybe that's fine.~~ * ~~Do we need to integrate the 'reason for rating' string into the UI?~~ Next Steps: * ~~Use db dump of thedatahub.org for final testing.~~" 1324459327000000 1327582702000000 1603 enhancement zephod rgrp ckan-v1.7 closed duplicate Search query builder "Super ticket: #1745 Ability to build up search query using a nice javascript-y interface. * Add facets by selecting attribute and adding -> search facet options in dropdown -> added to search (with 'x' to remove -- as we currently do). * (a bit like the data.hri.fi) * Some improvements to css * See http://eutr.ep.io/ * Improvements to faceting * Ability to configure faceting and number of items to show (?) * Pure JS search implementation to make it easy to reuse across site" 1325268364000000 1338202654000000 1646 defect zephod dread ckan-sprint-2012-01-23 closed worksforme Resource navigator options display spuriously "When viewing a dataset, the ""Resources"" navigation button contained the Resource titles on the Resource navigator button, instead of in a drop-down mouse-hover menu. http://thedatahub.org/dataset/realtime-birth-data-in-bulgaria/resource/66fc5831-ce01-4954-9beb-e2889ef8a20f Chrome/Linux" 1326452700000000 1327407044000000 1716 enhancement zephod shevski ckan-sprint-2012-02-06 closed fixed move or change save warning on edit dataset page [a:0.1d] To allow navigation between sections to still work, also potentially rephrase to avoid confusion that you have to save every time to add a tag or resource and can't say add description, tag and resource in one go 1327599893000000 1328530370000000 1735 enhancement zephod dread ckan-sprint-2012-02-20 closed wontfix """Unsaved changes"" warning briefly when you click ""Save""" "Super ticket #1744 If you edit a dataset, simply add a tag and click on ""Save"" then you get the message ""You have unsaved changed. Make sure to click 'Save Changes' below before leaving this page."" inserted whilst the submission takes place. (This is because the click moves focus away from the tag field). This (reasonably common) edge-case could usefully be squashed. Also note typo: ""unsaved changed""" 1328009420000000 1328609804000000 1744 enhancement zephod rgrp ckan-sprint-2012-03-05 closed fixed UX improvements to dataset edit as of Dec 2011 "Super ticket: #1506 * ~~Show edit summary form again, at least on edit pages (and prefill it for create to something sensible like: Creating dataset {title} {name})~~ [Done #1506] * ~~Fix drop down for resource types in resource add/edit to limit to fixed set of options (as per http://wiki.ckan.org/Domain_Model/Resource)~~ * ~~See also http://lists.okfn.org/pipermail/ckan-discuss/2011-December/001860.html~~ * ~~Allow reordering of resources (or: and this is somewhat more complex but possibly simpler: allow editing of a resource_order field and we use that to sort resources (this is more like wordpress page_order -- these two options could become the same if we just hijack the existing position field on the join table and get rid of ordereredlist extension))~~ [DONE #1506] * ~~Radically simplify set of licenses~~ [DONE #1359] * ~~""Unsaved changes"" warning briefly when you click ""Save"" #1735~~ * ~~""Unsaved changed"" typo on dataset edit page~~ " 1328224628000000 1330349472000000 1782 enhancement zephod rgrp ckan-future new Improvements to datasets page UX (Feb 2012) " * Relationships in sidebar [WONTFIX yet without some link to documentation or datastructure, something for me to render?] * ~~Icons for *types* of resources in resource list~~ * List of 'Owners' (administrators) at top right of sidebar (a la group page) * Much prefer owner to administrator ..." 1328609441000000 1338205232000000 1788 defect zephod zephod ckan-sprint-2012-03-05 closed fixed IE7 compatibility problems "From Antonia Acuno, via Ira: It appears that the current layout for the datahub does not work in IE7, which would mean a problem for us as most gov uses it and is one of those we have to support...any views? Tested in several gov departments computers, so a common enough issue. http://imgur.com/ip4xa From Rufus: We haven't officially supported IE7 so far but can put engineering effort into this if absolutely needed. I note that IE 7 is now 3y out of date and is likely a security risk. Obviously this is something to ask Antonio about." 1328799250000000 1333133365000000 2223 enhancement zephod rgrp ckan-sprint-2012-03-19 closed fixed Switch to bootstrap from blueprint "Why? * We already use quite a bit of boostrap * We already plan to use bootstrap JS * Bootstrap is excellent and pretty light" 1331384974000000 1332842692000000 2286 enhancement zephod zephod ckan-sprint-2012-04-16 closed fixed Upgrade to boostrap v2.0.2 "I minified bootstrap and apparently downgraded the version. This breaks things in Recline, and creates weird discrepancies (DGU uses 2.0.2 and had some problems importing HTML from TheDataHub core, for example.) * Switch to the latest minifed CSS + JS * QA-sweep the site, especially dataset/edit" 1334251818000000 1338205222000000 2412 defect zephod icmurray ckan-sprint-2012-06-25 assigned More than one resource invalidatiing breaks dataset edit form "When attempting to add more than one resource at once, if more than one resource invalidates, this results in a js error, leaving the form in an inconsistent state. Repro: 1. Go to /dataset/new 2. Add a new resource. Fill in one of the fields with an invalid value. eg - last_modified, or size... 3. Add another resource, doing the same thing: make one of the fields invalid. 4. Try to save the dataset. 5. The entered resource information will be lost, and a js error ""Uncaught Error: Can't add the same model to a set twice,: backbone.js:586"" will be thrown." 1337717148000000 1338203234000000 986 defect wwitzel3 thejimmyg ckan-v1.4-sprint-2 closed fixed Broken link report from the ckanext-qa code "Should have the following features: * A list of all packages with broken links on the resource * Under each packages a description of any resources with broken links to include: * Link * Description * Format * First found to be broken date [If you can't do the last one yet, don't worry]" 1297683994000000 1297812401000000 164 enhancement wwaites dread v1.0 closed fixed Creating RDF data from CKAN "Related to: ticket:90 Link to RDF version of CKAN data and ticket:163 (regularly convert CKAN data to RDF). Convert ckan data to RDF with suitable ontology and put on semantic.ckan.net." 1256052643000000 1271251422000000 449 task wwaites johnbywater closed invalid Start email thread about RDF in CKAN with JF and WW 1282299482000000 1311182945000000 489 story wwaites johnbywater closed fixed Notify RDF service of model events 1282426051000000 1294416189000000 496 requirement wwaites johnbywater ckan-v1.4-sprint-2 closed fixed Provide a mechanism for exporting GEMINII metadata via a CSW interface 1282427307000000 1299164106000000 537 task wwaites wwaites closed duplicate Caching and Performance improvement "There are several places where performance is unacceptably slow. Even in places where it is not, the system could still be more responsive for read requests. Introducing caching has to be done carefully and should be done in a ''standards compliant manner''. == General strategy == * Where possible, cache output within the pylons app (beaker). * Facilitate external caching in an end-user's web browser or a caching proxy * Slightly stale data is not necessarily much of a problem so allow the output to be cached for a relatively short period (e.g. 5-15 minutes). * When cache expiry has been reached, a request will be made to the server. The server should check if its internally cached data is still valid, and serve that, otherwise regenerate the data. == Tasks == These tasks should be broken into sub-tickets: * caching of parts of templates that are expensive to render (package list, tag list, group list) * caching of entire output using beaker particularly for API read operations. * need to perform a check to see if the cache should be invalidated by checking if anything in the output would have changed -- i.e. checking timestamps on package modifications. this is a natural place to introduce the ETag which will help browsers and web caches. * cache infrastructure front end - varnish, squid, etc. To do this right, the controllers need to set the cache control headers appropriately (max-age, must-revalidate). This is a good resource: http://www.mnot.net/cache_docs/#CACHE-CONTROL * Deploy varnish on a host dedicated to this purpose for research. This will be useful for other sites as well * Do not configure varnish to ignore cache control headers or otherwise behave in a non HTTP/1.1 compliant manner == Future Work == * Investigate ckanclient library maintaining a local cache as a web browser would * Investigate using a CDN like Google Storage or Amazon for serving cached data." 1283184362000000 1311178929000000 539 requirement wwaites rgrp ckan-v1.4 closed invalid The system shall improve performance 1283242447000000 1303118486000000 540 story wwaites rgrp closed fixed Implement caching in a systematic manner 1283242705000000 1302694845000000 541 enhancement wwaites rgrp closed fixed Full-page caching even for logged in users "The simplest way to improve performance on specific pages is to implement full page caching. This, however, has challenges on pages with user-specific content. For example, on CKAN when a user is logged at the top of the page we have ""You are logged in as: {username}"". Similarly we change the visibility of some material depending on the status of users: * Visibility of Edit or Authz link on packages and groups" 1283243139000000 1294924872000000 542 task wwaites rgrp closed fixed 'Show and Tell' page customization using cookie + js "To allow for full page caching even on customized pages for logged in users we can use cookie+javascript techniques as described here: http://www.ibm.com/developerworks/web/library/wa-rails2/ In the first place we just need to apply this to: * You are logged in as * Package/group edit/authz tabs" 1283244432000000 1283278942000000 543 task wwaites rgrp closed duplicate Investigate partial page caching and edge-side includes "Edge-side includes or partial page caching are a standard way to deal with caching of pages in which some (usually small) part of the content cannot be cached or should be cached in a different manner (e.g. much more briefly) than the rest of the page. Edge-side includes have the advantage that they integrate with general 3rd-party caching systems such as varnish. Introducing either partial page or ESI will require some overhaul work to change the page render processing somewhat." 1283244784000000 1311178918000000 694 bug wwaites dread closed fixed No postgres tools for current version Database for all CKAN instances upgraded to Postgres 8.4, but none of the eu machines were upgraded with the tools necessary to administer them. 1286977052000000 1287087916000000 754 enhancement wwaites johnbywater ckan-v1.4-sprint-5 closed wontfix Filtering for harvesting sysem This has once again been ruled out for UKLP for the timebeing. 1288040469000000 1303118020000000 766 requirement wwaites johnbywater ckan-v1.3 closed duplicate The system shall support harvesting metadata from ArcGIS "Perhaps 80% of the users of the UKLII may be using ArcGIS." 1288177933000000 1296593519000000 786 requirement wwaites johnbywater ckan-v1.3 closed duplicate The system shall support deleting a registered harvest source 1289210982000000 1294410004000000 789 requirement wwaites johnbywater ckan-v1.3 closed duplicate The harvest source form shall validate location field by positive identification of source type 1289212106000000 1296593257000000 801 enhancement wwaites johnbywater ckan-v1.4-sprint-3 closed duplicate Get/Set last harvested time for a given harvest source Implies that last harvested time must be stored on source by harvesting job (see #802). 1289483546000000 1300196714000000 844 defect wwaites wwaites closed fixed bad mail config ckan.net/ckan.org "ckan.net and ckan.org have no mx record and no listener on port 25. yet they send out mail. this means, when messages it sends bounce for whatever reason, the bounce messages stay in the queue on the remote mail server until they expire. for example: {{{ B30E6D9F 2873 Sat Dec 4 14:05:40 MAILER-DAEMON (delivery temporarily suspended: connect to ckan.net[46.51.189.76]:25: Operation timed out) no-reply@ckan.net }}} both these domains should have an mx record pointing to mail.okfn.org and mail.okfn.org should be configured to handle these addresses correctly, e.g. by sending them to /dev/null" 1291556753000000 1296340486000000 851 defect wwaites wwaites ckan-v1.3-sprint-1 closed fixed Link Checking "revisit link checker from http://knowledgeforge.net/ckan/ckanext/file/tip/ckanext/link_checker.py revisit ollyc's parallel work look at how this gets used in practice (maybe deprecate in favour of curate tool (suitably wrapped to hide details from the user)" 1291722860000000 1293025112000000 853 enhancement wwaites wwaites ckan-v1.3-sprint-1 closed fixed Client upload to storage without having primary storage keys "Reverse engineer boto and work out how to get headers to support upload to google storage without holding api keys. This would lead to an extension to OFS. This analysis should inform (and go hand-in-hand) with the implementation of ticket:879 (Storage Auth API in CKAN). * master ticket #852" 1291723063000000 1294594581000000 856 defect wwaites dread closed invalid Tests for caching Test coverage for ckan.lib.cache is only 40%. Can that be usefully improved? 1291724064000000 1311177085000000 860 defect wwaites wwaites ckan-v1.3 closed fixed full text indexing for semantic.ckan.net ... 1291726029000000 1291726067000000 861 defect wwaites wwaites closed invalid unicode errors creating rdf output http://bitbucket.org/ww/ckanrdf/changeset/63b60d3a253d 1291726125000000 1311168845000000 862 defect wwaites wwaites ckan-v1.3 closed fixed deploy rdf on catalogue.data.gov.uk handle various dgu extras, configure apache for autonegotiation, etc. 1291726237000000 1291726261000000 879 enhancement wwaites rgrp ckan-v1.3 closed fixed Storage auth API "API to provide credentials to allow authorized 3rd parties (ie. one's with CKAN api keys) to make uploads to storage. Implement as a CKAN extension." 1292868509000000 1316030482000000 883 enhancement wwaites wwaites ckan-v1.4 closed fixed uklii harvesting refactor "== master ticket == * #884 implement harvest job delete command for an easier life * #885 move csw code into dedicated ckanext plugin * #886 move forms api into dgu extension module * #887 move harvesting code to use generic harvesting module " 1293277713000000 1300196622000000 885 defect wwaites wwaites ckan-v1.3 closed fixed reimplement csw module to use owslib 1293278099000000 1294253508000000 886 defect wwaites wwaites ckan-v1.3 closed duplicate move uklii forms api to dgu module doesn't belong in ckan core 1293278145000000 1294916538000000 887 enhancement wwaites wwaites ckan-v1.4 closed fixed move harvesting to generic module in concert with pudo's work on harvesting different types of documents. should also make it possible to consume, e.g. dcat 1293278215000000 1300196600000000 894 defect wwaites wwaites ckan-v1.4 closed invalid harvest from http://locationmetadataeditor.data.gov.uk/geonetwork/srv/csw 1294253876000000 1300196388000000 930 defect wwaites dread closed fixed call_timing files created for every request "On a production server we produce literally millions of little files saying how long every single request took to process. They are here: {{{ hmg.ckan.net.2/pylonsdata/call_timing }}} They were added by ckan/lib/base.py in cset:da438a9085d3. I don't believe anyone uses these stats." 1296061721000000 1297066292000000 952 task wwaites pudo ckan-backlog closed invalid CKAN should run under nginx/uswgi " second part of #908" 1296730498000000 1310125204000000 988 task wwaites thejimmyg ckan-v1.4-sprint-2 closed fixed Get a better HTML view of a GEMINI document using XSL 1297685975000000 1299493598000000 1084 task wwaites wwaites ckan-v1.4-sprint-6 closed fixed ckan.net RDF links changed "need to make some changes for the links to semantic.ckan.net. it should use http://semantic.ckan.net/record/<package_id> now append .rdf, .ttl, .nt, .dot, .json (even .html for an ugly table) to taste (or just leave off the suffix and let content negotiation take care of it) the base url is changed, but it now uses id not name. see for example: * http://semantic.ckan.net/record/6058c017-607b-48d9-b3cd-72106ad96e33 * http://semantic.ckan.net/record/6058c017-607b-48d9-b3cd-72106ad96e33.ttl" 1302616717000000 1304934534000000 1206 defect wwaites dread closed fixed """Content-Type json"" header scuppers package POST" "Compare these two requests to create a package: {{{ curl http://test.ckan.net/api/rest/package -d '{name:""test""}' -H 'Content-Type: application/json' -H 'X-CKAN-API-KEY: tester' curl http://test.ckan.net/api/rest/package -d '{name:""test""}' -H 'X-CKAN-API-KEY: tester' }}} The second one gets the payload through (ckan log): {{{ Retrieving request params: UnicodeMultiDict([('{name:""test""}', u'')]) }}} But the first one causes a ServerError because the payload (name:""test"") doesn't make it to request.POST or request.params: {{{ Retrieving request params: UnicodeMultiDict([]) }}} The only difference is the ""ContentType: application/json"" header, which seems a reasonable thing to include. Javascript lib backbone.js (for example) inserts this automatically. So why does this header cause the payload to not get through to the request object?" 1309344348000000 1309450216000000 202 enhancement tonfa dread v0.11 closed fixed Internationalization (i18n) try-out "Try i18n for one language (German) for ckan (de.ckan.net). Basic approach to i18n is well-covered in Pylons book: http://pylonsbook.com/en/1.1/internationalization-and-localization.html However, we need to integrate with our Genshi templates. Details on how to do this in comment: http://wiki.pylonshq.com/display/pylonsdocs/Internationalization+and+Localization == Steps == 1. i18n templates * Extract content using Babel * Get genshi translation working * Do the translation! 2. i18n all strings in controllers (if any) 3. i18n forms" 1260179192000000 1265892368000000 1370 enhancement toby rgrp ckan-sprint-2012-04-30 closed fixed [super] Social sharing for datasets (and resources) "Add a way to share datasets and see mentions of datasets on twitter (and elsewhere) As a visitor I want to share a link to a dataset I have found. I also want to see how many others have shared this (or mentioned it). * Sharing platform: simplest option is probably twitter but could generalize to e.g. sharethis system which supports, facebook, twitter etc etc. * Will need a config option for relevant API key e.g. ckan.sharethis.apikey * Location: Put this at top of sidebar on dataset view (a better suggsetion?) * Should show how many mentions / shares there are. (very important!) == Discussion == * (Tom and Ira and ...): do we really want this, versus e.g. proper follow extension? * What about bringing conversation back in to CKAN. E.g. show all times this dataset (i.e. its url) was mentioned on twitter. If we do this I think this should be definite +1. * Also, given our users, I think just doing twitter (identica) may be sufficient (how many people want to share links to datasets on facebook?) " 1317422686000000 1336045983000000 1387 defect toby johnglover ckan-v1.8 closed fixed Not specifying a protocol in dataset url causes broken link to be served on dataset view page "If a user enters a url with no protocol (eg: www.data.gov.uk) in the 'url' field of a dataset, a broken link is created on the view page. CKAN should probably either put in a http:// if no protocol is given, or validation should fail." 1318428893000000 1343042311000000 1586 enhancement toby dread ckan-v1.7 closed duplicate 'Sort by' field for package search "We default to sort packages search results by ""search rank"", but we can change it to be ""name"", ""title"", ""metadata_modified"" date, ""metadata_created"" date. It works in the API now, so let's have (say) a drop-down in the Web UI for this. Follows on from #191." 1324479588000000 1337079419000000 1653 enhancement toby ross ckan-sprint-2012-03-05 closed fixed Change URLs for multilingual site "To support multiple languages we should have an easy way to specify the language as part of the URL, so that URLs are both specific and we also reduce the dependency on the session. * Analysis [1d] - Find the best way of implementing this and how everyone else does their language URLs. * Write Middleware + update url_for to take account of the language. [2d] * Document the language setup, and how to replicate it. [1d] " 1326710590000000 1329845387000000 1792 enhancement toby kindly ckan-sprint-2012-03-05 closed fixed [super] api to use same validation and logic as wui forms. The api currently uses the default validation schemas regardless of the form you specified on the front end. There should be a way to post through the api using the same validation rules. 1329146487000000 1333037710000000 1803 enhancement toby toby ckan-sprint-2012-03-19 closed fixed clean up routes 1329483497000000 1332333091000000 1804 defect toby dread ckan-sprint-2012-03-05 closed fixed CKAN mounted at URL - changing language problem "e.g. http://189.9.137.65/dados/ clicking on Deutsch link is {{{http://189.9.137.65/dados/locale?locale=de&return_to=%2Fdados%2F&hash=1dc17c315c419df850da0dd3599eefa9da76fbeb}}} and redirect goes to {{{http://189.9.137.65/dados/dados/?__cache=97995106}}} so /dados/dados/ when it should be /dados. Affects CKAN 1.6b only (not yet released)." 1329484956000000 1330347185000000 1806 task toby toby ckan-sprint-2012-03-05 closed fixed make drop down language selector language chooser should look like the ec one 1329741393000000 1331295310000000 2220 enhancement toby toby ckan-sprint-2012-03-19 closed fixed make ckan cacheable "need to sort cookies etc should work with nginx and varnish" 1331228643000000 1338205222000000 2227 enhancement toby toby ckan-sprint-2012-03-19 closed wontfix Tests are slow and broken not all tests run and they take too long :( 1331556570000000 1332843126000000 2244 enhancement toby toby ckan-future new clean up auth "* cache admins etc * aim to move check_access so independent of logic function * general spruce up" 1332177771000000 1338205402000000 2251 enhancement toby kindly ckan-sprint-2012-04-16 closed fixed Internal analytics for ckan. "Page views and Resources clicks need to be tracked. == User Stories == US1 As a Site Admin / Visitor (?) I want to see how often a page has been viewed (every page) and how often resources have been downloaded. US1a Next to a resource or a dataset see how often it has been downloaded / viewed US1b I want to see datasets or resources ranked by most downloaded or viewed US1c See a trend graph for a dataset (and resources) Adminstrative Dashboard (?) * I want to see the traffic breakdown by country to my site ... * Ditto for browser type, language, etc etc * I want to see it graphed over time ... == Implementation Details == 1. How do we store this data in CKAN? 2. How do we track (and store)? 3. How do we display * Config option ckan.status.enabled = False (by default) === Storing Data === How does ckanext-googleanalytics do this? Current table: package_id | count_recent | count_total Move to a new stats_summary table id | item_id | object_type | stats_type (total, month_yyyy_mm, ...) | value Do we store this data into the search (solr) so we can search by it? === Displaying Data === * Helper functions / dictize: * Helper function: h.stats_get(object_type, id, stats_type) * h.stats_top_ranked(object_type, number) -> returns object_dicts or just labels or ... * Change to dictize * Location in the default theme (do we show for example in search results too!) * Support for ranking by most popular in search? === Tracking Data === * Our own solution (just write to site_tracking) * Google analytics (plus extension for retrieving data) <- would need a refactor * Piwiki ==== Own Solution ==== (For later: not as part of this ticket probably) site_tracking table id | url | timestamp | action (page_view, resource_download) | * Make javascript to make request to ckan to store clicks and page views. * Add middleware so these requests do not go through pylons and just store data quickly. " 1332331029000000 1336046155000000 2253 enhancement toby toby closed wontfix CMAP [super] "Somewhere for CMAP stuff not in other tickets need to create some general tickets * template changes * general demo server setup " 1332341133000000 1340038490000000 2254 enhancement toby toby closed fixed better hooks for templates "TD look at issues and then email ckan-dev meeting notes from 21-3-2012 general ideas non specific Problem: * We want to remove the Transformer usage due to performance and its close tie to genshi * Want a standard way for core code and extensions to put code into the templates where *templates request it* (templates control insertion rather than extensions ...) * Stacking versus overwriting on entry points * Relationship to h.requires('jquery', version) - http://codex.wordpress.org/Function_Reference/wp_enqueue_script Options: * placeholders or helper methods * {{user _info}} {{sub_menu}} is this equivalent to <span class=""insert-user-info""></span> * [xyz arguments] -> h.load_snippet('xyz', ...) * ${h.snipit()} " 1332341333000000 1338210316000000 2256 enhancement toby toby closed fixed remove TDH from core make core independent of TDH and make core as minimal app 1332513199000000 1336046098000000 2257 enhancement toby toby ckan-v1.9 new cleanup template vars "look at reducing what is pulled into templates eg ckan.lib.helpers ensure that these changes don't break existing extensions etc" 1332513307000000 1340097071000000 2261 enhancement toby kindly ckan-sprint-2012-04-02 closed fixed All links need to option to change where language is placed in url. "For the ecportal case we need links to be like the following (%host)/open-data/en/data/(.*)[[BR]] (%host)/open-data/fr/data/(.*) " 1332762702000000 1332840112000000 2282 enhancement toby toby ckan-future new log api calls for users "This was part of #2251 but is now it's own ticket. we need clarity on this. The use cases so far have been possible limiting api calls for users. so we want to monitor the user or ip address what about the api calls? do we want to record all calls or just some? do we want to record the type of call and to what level of detail? recording the url just seems to specific to me." 1334074725000000 1338210829000000 2289 defect toby seanh ckan-v1.8 closed fixed Flash messages are not being translated? "There are a couple of flash messages in ckan/controllers/user.py that show up in English, even if another language is in use, and even though the strings are marked for translation with gettext and have translations in the po and mo files: ""[USER NAME] is now logged in"" ""Login failed. Bad username or password. (Or if using OpenID, it hasn't been associated with a user account.)""" 1334255836000000 1341314151000000 2302 enhancement toby ross demo phase 3 closed fixed Simple theming "Needs re-testing after the ODS re-theme. ==== Simple image upload, text changes and css updates for a single instance. All done on a single configuration/admin page See http://ckan.okfnpad.org/simple-themes for user stories [x] Initial version will only take an image_url rather than allowing an upload. [x] New page with form for title, tagline, image loader etc. [x] Allow the user to paste in values for the CSS, do we really want a colour swatch? [x] Generate local CSS override which should *somehow* override colors in the original CSS. [x] Allow user to provide text for an about page. " 1334582628000000 1344012491000000 2311 enhancement toby toby ckan-sprint-2012-04-30 closed fixed disqus - improvements "get working on TDH look at removing stream filters" 1334598853000000 1336046186000000 2326 enhancement toby toby ckan-future new dataset permalinks "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." 1335371946000000 1338212799000000 2355 enhancement toby toby closed fixed [super] make extensions cleaner "* Do an analysis of why upgrades are problematic * What can we do better * Decide what to implement" 1335885051000000 1338212946000000 2362 enhancement toby kindly ckan-v1.9 accepted Improve plugin documentaion, including examples. Improve documentation for plugins and add examples. Could use ckanext-example as a base. 1335888791000000 1342085420000000 2363 enhancement toby kindly ckan-v1.8 new Documentation of best caching practice. Need better documentation on best practices in making page loads faster for non logged in users. 1335889017000000 1340099794000000 2371 enhancement toby toby ckan-v1.9 closed fixed fanstatic integration "aims * allow templates to specify needed css/js * allow split js files to be bundled (including plugin supplied if possible - stage 2) * serve minified in production/ non-minified in dev * possibly look at doing the minification via paster - maybe as different ticket" 1336046411000000 1345209675000000 2375 enhancement toby aron.carroll demo phase 5 closed fixed Create new base theme "As designed by Sam Smith -> https://okfn.basecamphq.com/projects/9558659-demo-ckan-front-end/ Also to be used as the demo theme although I think they will diverge at some point. At the moment they should be implemented as one and the same." 1336469009000000 1343317873000000 2411 enhancement toby markw ckan-future new .ini file is a mess The .ini file needs cleaning up in assorted ways which Toby will expand upon. 1337686900000000 1338210872000000 2416 enhancement toby aron.carroll demo phase 5 accepted Normalise resource/data types "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" 1337792946000000 1342617802000000 2417 enhancement toby aron.carroll closed fixed Clean up output for dataset search results "Currently due to the data structure the search result filters are output incorrectly. Repeating the facet with each tag. See http://s031.okserver.org:2375/dataset?tags=fibre&tags=terrestrial&q=Africa It outputs: Tags: fibre Tags: terrestrial It should be: Tags: fibre terrestrial" 1337793213000000 1337864155000000 2420 enhancement toby toby closed fixed @depreciated decorator "create a depreciated decorator to wrap functions we intend to remove logs a warning maybe check that 'depreciated' is included in the docstring too" 1337858144000000 1337950422000000 2433 defect toby toby ckan-v1.8 new API uses name not id for some version 3 calls see https://github.com/okfn/ckan/pull/5 1337957648000000 1340099820000000 2440 enhancement toby aron.carroll demo phase 1 closed fixed Create demo homepage "Discussion: https://okfn.basecamphq.com/projects/9558659-demo-ckan-front-end/posts/61696765/comments Implementation: http://s031.okserver.org:2375" 1338206405000000 1340373461000000 2445 enhancement toby aron.carroll ckan-sprint-2012-06-25 closed fixed Create demo dataset add related page "Discussion: https://okfn.basecamphq.com/projects/9558659-demo-ckan-front-end/posts/62821386/comments Implementation: http://s031.okserver.org:2375/dataset/adur_district_spending/related/new Needs a new endpoint at /dataset/DATASET/related/new this should have a form containing the following fields. * Title (required) * Type of item (Application|Visualisation) * Description * URL (required) * Image URL When submitted if an item is created it should redirect (303) back to /dataset/DATASET/related with a flash message saying ""Related item was successfully created"". If failed to create it should redirect (303) back to the form and populate the error messages, see add dataset for examples (https://github.com/okfn/ckan/blob/feature-2375-demo-theme/ckan/templates/package/new_package_form.html) " 1338210652000000 1338982754000000 2454 enhancement toby aron.carroll demo phase 5 closed fixed Create demo login page "Discussion: https://okfn.basecamphq.com/projects/9558659-demo-ckan-front-end/posts/62935295/comments Implementation: http://s031.okserver.org:2375/en/user/login" 1338211420000000 1343317795000000 2461 enhancement toby aron.carroll demo phase 4 assigned Create demo revisions page "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" 1338212055000000 1344543838000000 2482 defect toby toby closed fixed related items dataset page 500 error 1338468524000000 1338472932000000 2484 enhancement toby toby ckan-v1.8 closed fixed move follower functionality into helper functions 1338547770000000 1340285964000000 2491 enhancement toby aron.carroll ckan-sprint-2012-06-25 closed fixed Demo related page is missing breadcrumb "The following pages are missing complete breadcrumbs. Add related page: http://s031.okserver.org:2375/dataset/adur_district_spending/related/new Needs to look like. Dataset > {dataset_title} > Related > Create Related Template here: https://github.com/okfn/ckan/blob/feature-2375-demo-theme/ckan/templates/related/pages/form_page.html#L6 Same deal with Edit related. http://s031.okserver.org:2375/dataset/adur_district_spending/related/edit/5f9e665b-3e3c-428f-88b1-8554189cf14a Needs to look like. Dataset > {dataset_title} > Related > Edit Related https://github.com/okfn/ckan/blob/feature-2375-demo-theme/ckan/templates/related/edit.html#L5 " 1338977634000000 1338979614000000 2492 enhancement toby aron.carroll ckan-sprint-2012-06-25 closed fixed Demo create related form has broken error output "See: http://s031.okserver.org:2375/dataset/adur_district_spending/related/new Submit the form to see broken formatting. eg. [u'Missing value'] [[Image(ckan-broken-error.png)]]" 1338977874000000 1338982678000000 2494 enhancement toby aron.carroll ckan-sprint-2012-06-25 closed invalid Demo site has server error for a 404 "Example http://s031.okserver.org:2375/not-here Should show the 404 template." 1338988913000000 1338994890000000 2496 enhancement toby toby closed fixed get debug fixed in demo branch stacktrace 1339067709000000 1339418832000000 2497 enhancement toby toby closed fixed abort loses language settings "if not logged in then go to add dataset url the language is lost check if this is a ckan 1.7 issue" 1339067855000000 1339421305000000 2498 enhancement toby toby closed fixed on loggin redirect to requested page 1339067929000000 1339660986000000 2499 enhancement toby icmurray ckan-v1.8 new Documentation for the internal analytics "There's no docs for setting up the internal analytics, nor what it provides. == Setup == Add: `ckan.tracking_enabled = true` to .ini file Run: `paster tracking -c dev.ini` == Related links == http://trac.ckan.org/ticket/2251" 1339070297000000 1339070297000000 2501 enhancement toby aron.carroll demo phase 1 closed fixed Implement three step dataset creation in demo site "New form should allow three steps. 1. Add basic fields to create a dataset 2. Add a data resource to the dataset (this can be repeated multiple times using ""Save and add another"" 3. Add final metadata to the dataset. It should be possible to jump backward through the steps by clicking the arrows at the top. Errors in fields should be validated for each step when the next button is clicked. Implementation: http://s031.okserver.org:2375/dataset/new" 1339084829000000 1340373057000000 2502 enhancement toby aron.carroll ckan-sprint-2012-06-25 closed fixed Create Jinja block for common helpers Most important is {% snippet %} but {% url_for %} would be great too. 1339084936000000 1339494853000000 2503 enhancement toby aron.carroll ckan-sprint-2012-06-25 closed fixed Look into allowing theme extensions to extend base templates "For example: Creating a template in ckanext-demo/templates/base.html containing something like {{{ {% ckan_extends ""base.html"" %} }}} Will extend ckan/templates/base.html " 1339085096000000 1339580675000000 2512 enhancement toby ross ckan-sprint-2012-06-25 closed fixed Bad link on demo site. On the group read page http://s031.okserver.org:2375/group/nhs the add dataset button goes to the edit group page instead of the add dataset url. 1339518597000000 1339576809000000 2523 enhancement toby toby demo phase 1 closed fixed New package metadata form needs creating "http://localhost:5000/dataset/new_metadata/dataset Controller : package Action : new_metadata template package/snippets/package_metadata_form.html" 1339605176000000 1340368036000000 2532 enhancement toby toby demo phase 1 closed fixed show activity steam for user no js "We should allow the user activity stream to be accessible with no js by passing a param or something. Need to agree how we hide/show basically agree what classes we use. This should be a generalised solution that we can use in other places as needed. I think this just needs discussion" 1339754158000000 1340874456000000 2536 enhancement toby toby ckan-v1.9 closed fixed cleanup activity streams 1339765323000000 1347901915000000 2553 enhancement toby toby demo phase 2 closed fixed Create a get snippet api action "just passes template name ?template_name=..." 1340020613000000 1342090078000000 2555 enhancement toby aron.carroll demo phase 5 new Demo site needs a breadcrumb helper Something to make building breadcrumbs a bit nicer 1340026983000000 1342618384000000 2559 enhancement toby aron.carroll demo phase 2 closed fixed Demo theme add resource has missing functionality " * Show resources in the sidebar * Allow people to go backward and forward * Have a back button on each form * Lose resource type * Add extras as optional metadata * Remove save * Add back/Previous * Add Another" 1340035336000000 1342084940000000 2560 enhancement toby aron.carroll demo phase 2 closed fixed Demo theme add metadata is missing functionality " * Hide remove button when adding new field * Finish takes you to the newly created dataset" 1340035384000000 1342084988000000 2566 enhancement toby shevski demo phase 1 closed fixed add back buttons to create dataset process 1340039366000000 1340373308000000 2569 enhancement toby shevski demo phase 2 closed fixed add other resources to sidebar of resource pages Allow user to navigate directly from one resource page to another via resource box in sidebar 1340039608000000 1342085235000000 2572 enhancement toby toby ckan-v1.9 new clean up stats plugin attempt to disengage the stats plugin from core as much as possible 1340105054000000 1340899524000000 2575 enhancement toby amercader ckan-v1.9 closed fixed Licenses have i18n issues (was Inconsistent language on license dropdown) "License titles at least for some of them need translating. This wants to be done in a more efficient and simple manner than currently exists. the original problem was: The license dropdown on the dataset form shows titles in Swedish by default. Changing the language seems to default to English, but after refreshing the page a couple of times it shows a wrong language again. Thanks to pudo for reporting." 1340125845000000 1343216544000000 2578 defect toby toby demo phase 4 closed fixed demo theme breaks the tests "The demo branch fails huge numbers of tests. many are going to be template based - these need to be sorted - ideally we need to get them to work with legacy/new templates but see how we go on that one anyhow this is not a priority whilst we are branched but needs resolving before we merge into master" 1340276924000000 1347901892000000 2579 enhancement toby toby ckan-v1.9 new move sort_by functions into lib.helpers "make these more available but keep existing functionality so not to break any users remove_field() drill_down_url() etc" 1340281798000000 1340899337000000 2581 enhancement toby toby demo phase 2 closed fixed allow state = 'draft' pass some stuff through the context 1340287298000000 1342074635000000 2583 enhancement toby toby demo phase 5 new make sure that we implement authentication where needed in development many auth checks may have been lost we need to check they are still working etc 1340359478000000 1342086274000000 2586 enhancement toby toby demo phase 1 closed fixed edit dataset - tags broken tags is list not string 1340361630000000 1340380561000000 2588 enhancement toby toby demo phase 1 closed fixed search index for new package when package is added it does not seem to get indexed 1340373145000000 1340817441000000 2589 enhancement toby toby demo phase 2 closed fixed users can view draft datasets need to add some logic for this 1340373194000000 1342172694000000 2591 enhancement toby toby ckan-v1.8 closed fixed postgres unicode problems postgres v9.1.4 "sqlalchemy fails on postgres 9.1.4 when unicode is returned see http://docs.sqlalchemy.org/en/rel_0_7/dialects/postgresql.html " 1340627776000000 1340813161000000 2595 enhancement toby aron.carroll demo phase 2 closed fixed Demo add dataset needs to remember which stages have been visited "For example. 1. Start on stage one 2. Add dataset click next 3. Click previous Expect Stage 1 to be ""active"", stage two to be ""complete"" 1. Start on stage one 2. Add dataset click next 3. Click next 4. Click previous Expect Stage 2 to be ""active"", stage one and three to be ""complete"" 1. Start on stage one 2. Add dataset click next 3. Click next 4. Click previous 5. Click previous Expect Stage 1 to be ""active"", stage two and three to be ""complete""" 1340642246000000 1342086346000000 2596 enhancement toby aron.carroll opendatasuite 1 closed fixed Create demo extension Should have all supported extensions enabled, those that don't work should be disabled and ticketed. Also needs a customised homepage. 1340642315000000 1345209485000000 2597 enhancement toby aron.carroll demo phase 1 closed fixed Demo add dataset throws error if tags are empty " 1. Go to new dataset 2. Add a slug 3. Click next Get error. {{{ URL: http://localhost:5000/dataset/new File '/Users/Aron/.virtualenvs/ckan/lib/python2.7/site-packages/weberror/evalexception.py', line 431 in respond app_iter = self.application(environ, detect_start_response) File '/Users/Aron/.virtualenvs/ckan/lib/python2.7/site-packages/webob/dec.py', line 147 in __call__ resp = self.call_func(req, *args, **self.kwargs) File '/Users/Aron/.virtualenvs/ckan/lib/python2.7/site-packages/webob/dec.py', line 208 in call_func return self.func(req, *args, **kwargs) File '/Users/Aron/.virtualenvs/ckan/lib/python2.7/site-packages/fanstatic/publisher.py', line 234 in __call__ return request.get_response(self.app) File '/Users/Aron/.virtualenvs/ckan/lib/python2.7/site-packages/webob/request.py', line 1053 in get_response application, catch_exc_info=False) File '/Users/Aron/.virtualenvs/ckan/lib/python2.7/site-packages/webob/request.py', line 1022 in call_application app_iter = application(self.environ, start_response) File '/Users/Aron/.virtualenvs/ckan/lib/python2.7/site-packages/webob/dec.py', line 147 in __call__ resp = self.call_func(req, *args, **self.kwargs) File '/Users/Aron/.virtualenvs/ckan/lib/python2.7/site-packages/webob/dec.py', line 208 in call_func return self.func(req, *args, **kwargs) File '/Users/Aron/.virtualenvs/ckan/lib/python2.7/site-packages/fanstatic/injector.py', line 52 in __call__ response = request.get_response(self.app) File '/Users/Aron/.virtualenvs/ckan/lib/python2.7/site-packages/webob/request.py', line 1053 in get_response application, catch_exc_info=False) File '/Users/Aron/.virtualenvs/ckan/lib/python2.7/site-packages/webob/request.py', line 1022 in call_application app_iter = application(self.environ, start_response) File '/Users/Aron/.virtualenvs/ckan/lib/python2.7/site-packages/beaker/middleware.py', line 73 in __call__ return self.app(environ, start_response) File '/Users/Aron/.virtualenvs/ckan/lib/python2.7/site-packages/beaker/middleware.py', line 152 in __call__ return self.wrap_app(environ, session_start_response) File '/Users/Aron/.virtualenvs/ckan/lib/python2.7/site-packages/routes/middleware.py', line 130 in __call__ response = self.app(environ, start_response) File '/Users/Aron/.virtualenvs/ckan/lib/python2.7/site-packages/pylons/wsgiapp.py', line 125 in __call__ response = self.dispatch(controller, environ, start_response) File '/Users/Aron/.virtualenvs/ckan/lib/python2.7/site-packages/pylons/wsgiapp.py', line 324 in dispatch return controller(environ, start_response) File '/Users/Aron/.virtualenvs/ckan/src/ckan/ckan/lib/base.py', line 258 in __call__ res = WSGIController.__call__(self, environ, start_response) File '/Users/Aron/.virtualenvs/ckan/lib/python2.7/site-packages/pylons/controllers/core.py', line 221 in __call__ response = self._dispatch_call() File '/Users/Aron/.virtualenvs/ckan/lib/python2.7/site-packages/pylons/controllers/core.py', line 172 in _dispatch_call response = self._inspect_call(func) File '/Users/Aron/.virtualenvs/ckan/lib/python2.7/site-packages/pylons/controllers/core.py', line 107 in _inspect_call result = self._perform_call(func, args) File '/Users/Aron/.virtualenvs/ckan/lib/python2.7/site-packages/pylons/controllers/core.py', line 60 in _perform_call return func(**args) File '/Users/Aron/.virtualenvs/ckan/src/ckan/ckan/controllers/package.py', line 422 in new return self._save_new(context) File '/Users/Aron/.virtualenvs/ckan/src/ckan/ckan/controllers/package.py', line 703 in _save_new return self.new(data_dict, errors, error_summary) File '/Users/Aron/.virtualenvs/ckan/src/ckan/ckan/controllers/package.py', line 430 in new data['tag_string'] = ', '.join(h.dict_list_reduce(c.pkg_dict['tags'], 'name')) TypeError: string indices must be integers, not str }}}" 1340642399000000 1340644591000000 2606 enhancement toby toby demo phase 1 closed fixed make fanstatic use full path ckan/main not main 1340795985000000 1340799139000000 2609 enhancement toby aron.carroll opendatasuite 1 closed fixed Demo theme errors when creating a dataset without a resource "1. Complete step one of add dataset 2. Click next without adding any resource data. Page errors. {{{ URL: http://localhost:5000/dataset/new_resource/asdasd File '/Users/Aron/.virtualenvs/ckan/lib/python2.7/site-packages/weberror/evalexception.py', line 431 in respond app_iter = self.application(environ, detect_start_response) File '/Users/Aron/.virtualenvs/ckan/lib/python2.7/site-packages/webob/dec.py', line 147 in __call__ resp = self.call_func(req, *args, **self.kwargs) File '/Users/Aron/.virtualenvs/ckan/lib/python2.7/site-packages/webob/dec.py', line 208 in call_func return self.func(req, *args, **kwargs) File '/Users/Aron/.virtualenvs/ckan/lib/python2.7/site-packages/fanstatic/publisher.py', line 234 in __call__ return request.get_response(self.app) File '/Users/Aron/.virtualenvs/ckan/lib/python2.7/site-packages/webob/request.py', line 1053 in get_response application, catch_exc_info=False) File '/Users/Aron/.virtualenvs/ckan/lib/python2.7/site-packages/webob/request.py', line 1022 in call_application app_iter = application(self.environ, start_response) File '/Users/Aron/.virtualenvs/ckan/lib/python2.7/site-packages/webob/dec.py', line 147 in __call__ resp = self.call_func(req, *args, **self.kwargs) File '/Users/Aron/.virtualenvs/ckan/lib/python2.7/site-packages/webob/dec.py', line 208 in call_func return self.func(req, *args, **kwargs) File '/Users/Aron/.virtualenvs/ckan/lib/python2.7/site-packages/fanstatic/injector.py', line 52 in __call__ response = request.get_response(self.app) File '/Users/Aron/.virtualenvs/ckan/lib/python2.7/site-packages/webob/request.py', line 1053 in get_response application, catch_exc_info=False) File '/Users/Aron/.virtualenvs/ckan/lib/python2.7/site-packages/webob/request.py', line 1022 in call_application app_iter = application(self.environ, start_response) File '/Users/Aron/.virtualenvs/ckan/lib/python2.7/site-packages/beaker/middleware.py', line 73 in __call__ return self.app(environ, start_response) File '/Users/Aron/.virtualenvs/ckan/lib/python2.7/site-packages/beaker/middleware.py', line 152 in __call__ return self.wrap_app(environ, session_start_response) File '/Users/Aron/.virtualenvs/ckan/lib/python2.7/site-packages/routes/middleware.py', line 130 in __call__ response = self.app(environ, start_response) File '/Users/Aron/.virtualenvs/ckan/lib/python2.7/site-packages/pylons/wsgiapp.py', line 125 in __call__ response = self.dispatch(controller, environ, start_response) File '/Users/Aron/.virtualenvs/ckan/lib/python2.7/site-packages/pylons/wsgiapp.py', line 324 in dispatch return controller(environ, start_response) File '/Users/Aron/.virtualenvs/ckan/src/ckan/ckan/lib/base.py', line 258 in __call__ res = WSGIController.__call__(self, environ, start_response) File '/Users/Aron/.virtualenvs/ckan/lib/python2.7/site-packages/pylons/controllers/core.py', line 221 in __call__ response = self._dispatch_call() File '/Users/Aron/.virtualenvs/ckan/lib/python2.7/site-packages/pylons/controllers/core.py', line 172 in _dispatch_call response = self._inspect_call(func) File '/Users/Aron/.virtualenvs/ckan/lib/python2.7/site-packages/pylons/controllers/core.py', line 107 in _inspect_call result = self._perform_call(func, args) File '/Users/Aron/.virtualenvs/ckan/lib/python2.7/site-packages/pylons/controllers/core.py', line 60 in _perform_call return func(**args) File '/Users/Aron/.virtualenvs/ckan/src/ckan/ckan/controllers/package.py', line 495 in new_resource get_action('resource_create')(context, data) File '/Users/Aron/.virtualenvs/ckan/src/ckan/ckan/logic/action/create.py', line 240 in resource_create raise ValidationError(errors, _error_summary(errors)) ValidationError: {u'URL': u'Missing value'} }}} http://localhost:5000/dataset/new_resource/asdasd" 1340810211000000 1340900271000000 2618 enhancement toby toby demo phase 4 closed fixed allow nested js resources 1340878063000000 1347901864000000 2620 enhancement toby aron.carroll demo phase 2 closed fixed Pass a related item into the dataset tempate "See the related sidebar box http://s031.okserver.org:2375/dataset/adur_district_spending If a package has related items the first (or a random) related item should be passed into the snippet." 1340897809000000 1342074737000000 2632 enhancement toby toby ckan-v1.9 closed fixed check allowed helpers exist in lib helpers make sure the allowed function lists functions exist or throw an error. 1341827811000000 1342087027000000 2633 enhancement toby toby demo phase 2 closed fixed for dev always look for templates so we find newly created templates 1341828058000000 1341830278000000 2634 enhancement toby toby ckan-v1.8 closed fixed change log - helper function limited in 1.8 make sure documented 1341828248000000 1342085656000000 2638 enhancement toby toby ckan-v1.8 closed fixed add a get from request param helper function 1341844597000000 1342112772000000 2646 enhancement toby toby demo phase 2 closed fixed delete dataset make it so 1341920466000000 1342014170000000 2652 enhancement toby toby demo phase 3 closed fixed get qa working with the demo 1341937315000000 1345106904000000 2653 enhancement toby aron.carroll demo phase 2 closed fixed Requesting file upload authentication fails on demo "Try: http://localhost:5000/api/storage/auth/form/photo-of-a-duck Gets: {{{ File '<string>', line 2 in auth_form File '/Users/Aron/.virtualenvs/ckan/src/ckan/ckan/lib/jsonp.py', line 26 in jsonpify data = func(*args, **kwargs) File '/Users/Aron/.virtualenvs/ckan/src/ckan/ckan/controllers/storage.py', line 407 in auth_form authorize(method, bucket, label, c.userobj, self.ofs) File '/Users/Aron/.virtualenvs/ckan/src/ckan/ckan/controllers/storage.py', line 200 in ofs StorageAPIController._ofs_impl = get_ofs() File '/Users/Aron/.virtualenvs/ckan/src/ckan/ckan/controllers/storage.py', line 71 in get_ofs storage_backend = config['ofs.impl'] File '/Users/Aron/.virtualenvs/ckan/lib/python2.7/site-packages/paste/registry.py', line 146 in __getitem__ return self._current_obj()[key] KeyError: 'ofs.impl' }}}" 1341938467000000 1342005167000000 2655 defect toby shevski closed fixed updating datasets loses data Editing and saving a resource wipes the data from the dataset. Happened with http://demo.ckan.org/dataset/my-tes I clicked on edit, changed a tag, clicked update and the data was gone! 1341999482000000 1342001885000000 2657 enhancement toby shevski demo phase 2 closed fixed hide history button on group pages until retheme History button in top right of http://demo.ckan.org/group/data-explorer goes to http://demo.ckan.org/group/history/data-explorer and needs hiding 1342007213000000 1342008765000000 2662 defect toby shevski demo phase 2 closed fixed adding colons in tags results in server error on demo "changing a tag from ""country-uk"" to ""country:uk"" and updating gives server error otherwise updating metadata / adding tags seem fine either we should allow colons or form should return a message indicating what characters are allowed" 1342017594000000 1342018898000000 2663 enhancement toby toby ckan-v1.9 new h.resource_display_name needs love "This function is shit and needs cleaning up and a doc string description is markdown and should be treated properly either we should truncate all or leave it to the templates but work universally url if no name / desc this is in demo-theme branch" 1342017746000000 1342017746000000 2664 enhancement toby toby demo phase 2 closed fixed tags with : cause crazy error message on add dataset in demo 1342018503000000 1342632478000000 2671 enhancement toby toby ckan-v1.9 closed fixed fix allow_partial_update need to be able to delete stuff explicitly 1342183618000000 1345209579000000 2678 enhancement toby shevski demo phase 2 closed fixed No UI for deleting a related item "Needs to be a way for admins (owners of dataset) to delete related items. I suggest adding a button to the edit page http://s031.okserver.org:2375/dataset/gold-prices/related/edit/d3249863-040a-4f55-a5d8-c86697d0b7b8" 1342436087000000 1342685932000000 2685 enhancement toby toby demo phase 2 closed fixed delete buttons should be form buttons stop bots/browsers etc following links and auto deleting stuff 1342510565000000 1342514443000000 2691 enhancement toby shevski demo phase 2 closed fixed Tag 404 error " 404 Not Found The resource could not be found. " 1342538490000000 1342604273000000 2694 defect toby toby demo phase 2 closed fixed index page 500 error "we need to have proper fix for this - not sure if there is some caching issue this around the group search" 1342605699000000 1342680771000000 2698 enhancement toby shevski demo phase 4 assigned markdown preview for description / other fields with markdown support 1342620085000000 1344543252000000 2701 enhancement toby shevski demo phase 3 closed fixed add comments to datasets disqus?? 1342620406000000 1343949913000000 2703 enhancement toby shevski demo phase 2 closed fixed add new resource to existing dataset with add button on dataset page and in 'data & resource' section when there's no data 1342620885000000 1342687332000000 2707 enhancement toby shevski demo phase 3 closed fixed Tidy up additional info boxes on dataset and resource pages "This currently looks terrible. Some simple things we should do to improve this. * Localise and captitalise known (non custom) keys into human titles. eg. ""size"", ""created_at"", ""mime_type"". * Apply units to values of known keys where possible eg. ""size in appropiate units"" * Convert dates into a more human friendly format. We can avoid localisation hell by using an ISO format like YYYY/MM/DD hh:mm:ss which is still better than ISO8061 * Move the non user fields to the top of the table. " 1342621471000000 1344504846000000 2712 enhancement toby toby demo phase 2 closed fixed delete resource functionality needed we need a delete_resource logic action and enable for resources 1342680517000000 1342690104000000 2715 enhancement toby shevski demo phase 2 closed fixed inactive sidebar widgets hide trackbacks & subscribe wboxes on dataset pages until we add disqus 1342714073000000 1342716931000000 2716 enhancement toby shevski demo phase 2 closed fixed truncate long resource names http://s031.okserver.org:2375/dataset/hi-people/resource/4558c365-fd7a-4f0e-9f2a-90ad47db6b39 1342714182000000 1342716474000000 2718 enhancement toby shevski demo phase 4 new can't add dataset to more than one group "trying to add a dataset to another group means it's no longer part of the first group http://demo.ckan.org/dataset/edit/afterfibre" 1342780550000000 1344544203000000 2721 defect toby shevski demo phase 4 new deleted groups should not show on 'Add to Groups' dropdown "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" 1342948632000000 1344544214000000 2724 enhancement toby shevski demo phase 3 closed fixed Inconsistent labelling / UX on draft datasets "1. One of the datasets here: http://s031.okserver.org:2375/en/user/shevski has [DRAFT] after it. It's not clear why this has been added -> user confusion 2. The draft dataset is not clickable in the dataset list 3. The ff dataset (same as the ff [DRAFT] dataset) in the Activity Steam section a) is clickable and b) does not have [DRAFT] after it" 1342949402000000 1343319009000000 2725 enhancement toby shevski demo phase 5 new Case sensitivity on tags "My feeling is that 'country-US' and 'country-us' should be the same tag. However currently tags with caps are treated differently see http://s031.okserver.org:2375/en/dataset/test-dataset with TEST and test - there also get indexed twice in the search page" 1342949667000000 1343030773000000 2726 enhancement toby shevski demo phase 5 new confusing logic on data preview formats "1. If a user enters the wrong format on a file that can be previewed - it simply won't be previewed (e.g. a CSV or XML file that can be filled in with JSON in format will just not work or check this 2. If I incorrectly edit format to one that data preview will try to preview it will work even for a format that it doesn't accept (sometimes) e.g. this PDF file I changed the metadata to HTML http://s031.okserver.org:2375/en/dataset/test-dataset/resource/9d27a9d9-36ec-460e-9edb-6dff7ba4fc28" 1342949927000000 1343030906000000 2727 enhancement toby shevski demo phase 2 closed fixed long resource name breaks sidebar navigation box "see http://s031.okserver.org:2375/en/dataset/test-dataset/resource_edit/9d27a9d9-36ec-460e-9edb-6dff7ba4fc28 & image attached" 1342950093000000 1343053760000000 2728 defect toby shevski demo phase 4 new deleted group shows on search index - for admins '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 1342950784000000 1345023944000000 2730 defect toby shevski demo phase 2 closed fixed please change pricing footer link "Pricing <ckan.org/datasuite/solutions> needs to go to <ckan.org/datasuite/services> http://ckan.org/datasuite/services/" 1342951353000000 1343032612000000 2734 enhancement toby shevski demo phase 2 closed fixed once format on resource form has errored, no longer submits form "Steps to reproduce: 1. go to edit a resource, e.g. http://s031.okserver.org:2375/dataset/ted/resource_edit/a621a6ad-6f1c-46d1-b858-03cdb7a25c07 2. Change the format field to something it doesn't get. e.g. add a comma ""HTML,"" 3. Get message: ""The form contains invalid entries: Last modified: Date format incorrect Size: Invalid integer"" 4. Format field reverts, try to re-save/submit form - i.e. click on ""update resource"" 5. nothing happens (same if you even try changing the format field" 1343059061000000 1343127101000000 2735 enhancement toby shevski demo phase 5 assigned Dataset order on user page "I think the datasets on user pages http://s031.okserver.org:2375/user/me should be ordered by latest updated (with most recent at the top) instead of in alphabetical order. What do you think?" 1343062877000000 1344349245000000 2737 enhancement toby shevski demo phase 2 closed fixed change help/prefilled text in format field "Should be basic format (which is what the datastore wants & what we display to users) e.g. ""CSV, XML, JSON etc"" http://s031.okserver.org:2375/dataset/new_resource/" 1343121262000000 1343136141000000 2738 enhancement toby shevski closed invalid Data API "Why is datastore not enabled for this resource http://s031.okserver.org:2375/dataset/frere/resource/cdeddb39-b0cb-4762-aa5b-f80fc892d4dd ? Is this going to be a site wide setting? How do new resources get added to datastore? Or are we just using the dataproxy for demo?" 1343123012000000 1343125335000000 2740 enhancement toby shevski demo phase 2 closed fixed misleading breadcrumbs "When adding a resource, the breadcrumb should say ""add data"" or ""add resource"" not ""create dataset"" as you see here: http://s031.okserver.org:2375/dataset/new_resource/frere " 1343123274000000 1343137576000000 2743 enhancement toby shevski demo phase 2 closed fixed add dataset button within group "Currently the 'add dataset' button on a group page http://s031.okserver.org:2375/group/another-group-in-the-wall goes to edit group. This is confusing since the interface for this is no way streamlined or helpful. Can we get this to go to the create dataset process instead (ideally with the group pre-chosen) for now? Further on will need to re-think & plan the workflow for publishers which will be a large part of new work" 1343125202000000 1343131092000000 2746 enhancement toby shevski demo phase 2 closed fixed help bubble on demo homepage missing Hey, this is still missing. It's the one with the add dataset text 1343209387000000 1343214031000000 2747 enhancement toby shevski demo phase 2 closed fixed Breadcrumb should use title not URL of dataset "For example here: http://s031.okserver.org:2375/en/dataset/new_resource/gold-prices The breadcrumb shows ""gold-prices"" which is not the title of the dataset" 1343211742000000 1343215679000000 2750 enhancement toby toby demo phase 3 closed fixed javascript translations need ripping "we need to ensure that translations in .js files are ripper for translation look at what is available as preference to creating our own" 1343216246000000 1343415279000000 2751 enhancement toby toby demo phase 5 new check translations for full demo site need to check everything gets translated - sean did this before so will have info 1343216443000000 1344243046000000 2752 enhancement toby ross demo phase 2 closed fixed Navigation highlight missing When navigating to http://s031.okserver.org:2375/group on the demo server, the Group link in the navbar is not highlighted in the same was as the other links are when visiting those pages. 1343216582000000 1343222618000000 2755 enhancement toby shevski demo phase 3 closed fixed user pages very slow to load navigating to a user page -one's own or http://s031.okserver.org:2375/en/user/ira or http://s031.okserver.org:2375/en/user/shevski, even when signed out is noticeably slower than navigating between other parts of the site; over 2 seconds. Maybe even 3 1343225395000000 1344505304000000 2758 enhancement toby toby ckan-v1.9 new file storage gives error if config not available but no useful user information "We get an error which should be improved the actual problem is this but not passed to user ⇝ KeyError: 'ofs.impl' View as: Interactive (full) | Text (full) | XML (full) Module ckan.controllers.storage:2 in auth_form view Module ckan.lib.jsonp:26 in jsonpify view >> data = func(*args, **kwargs) Module ckan.controllers.storage:407 in auth_form view >> authorize(method, bucket, label, c.userobj, self.ofs) Module ckan.controllers.storage:200 in ofs view >> StorageAPIController._ofs_impl = get_ofs() Module ckan.controllers.storage:71 in get_ofs view >> storage_backend = config['ofs.impl'] Module paste.registry:146 in __getitem__ view >> return self._current_obj()[key] KeyError: 'ofs.impl'" 1343287709000000 1343287709000000 2768 enhancement toby shevski demo phase 5 new normalise excel to xls so that data proxy works 1343319382000000 1344351663000000 2769 enhancement toby shevski demo phase 3 closed fixed add site wide related page "Can we add the related dashboard (http://trac.ckan.org/ticket/2347) to demo - central place to show off all the related stuff added. " 1343323567000000 1343734083000000 2774 enhancement toby aron.carroll demo phase 3 closed fixed Provide a method of passing localised strings into the JavaScript "We need to be able to do the following: * Rip the localised strings from the JavaScript source code. These are strings that look like {{{_('String')}}}, {{{translate('String') }}} and {{{ isPlural('String') }}}. * An endpoint that provides the translations in the correct locale for the user. * The endpoint should provide the locale as JSON (possibly using http://jsgettext.berlios.de/doc/html/po2json.html or similar tool) The JavaScript can then read this file on page load." 1343661072000000 1344351626000000 2775 enhancement toby aron.carroll demo phase 4 new Add bin/less to paster serve command "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." 1343685686000000 1344543962000000 2780 enhancement toby shevski demo phase 4 new way for admins to undelete datasets "Since admins can see deleted datasets - there should be a way for them a) to know they are currently deleted & not viewable by normal users - ticket: #2779 b) way to undelete such datasets - this ticket I suggest a button on the edit form instead of the delete button i.e. remove normal delete button with 'deleted dataset, only admins can view' with undelete button next to the message?" 1343737248000000 1345023811000000 2782 enhancement toby shevski demo phase 3 closed wontfix integrate with leaflet for demo background generation use http://leaflet.cloudmade.com/ properly to generate map backgrounds for demo instances 1343748857000000 1343811113000000 2787 enhancement toby aron.carroll demo phase 5 closed fixed Ensure templates_legacy directory is loaded for extensions Currently the stats plugin has a template and templates_legacy directory. We need to ensure that the templates in templates_legacy are loaded. 1343827782000000 1344543473000000 2793 enhancement toby ross demo phase 3 closed fixed Markdown of resource page not rendered as markdown "As per #2650 (on master/1.8 now) If the resource has a description it isn't rendered as markdown .. " 1343896663000000 1343897811000000 2798 enhancement toby toby demo phase 4 closed fixed Admin Config reset "this want to a) be a link on the left of the form like deletes b) needs a confirm like delete c) wants to work with the autoform" 1344012605000000 1345540010000000 2799 enhancement toby aron.carroll demo phase 3 closed fixed Translations for demo not picking up {% trans %} blocks "Also they seem to be missing the odd {{{ _() }}} block. Such in the new package form. https://github.com/okfn/ckan/blob/2375-demo-theme-development/ckan/templates/package/snippets/package_form.html#L44 " 1344243005000000 1344249253000000 2812 enhancement toby markw demo phase 3 closed invalid Groups description needs improving "The 'What are Groups?' text at <http://demo.ckan.org/group> is a bit naff. Here is a suggested replacement: What are groups? Groups allow you to group users and data together so that they are easier to manage. For example datasets in a group could be visible only to group members, or publicly visible but only editable by group members. Groups can be used to collect together datasets from a single publisher, or related to a particular project, for example. " 1344419953000000 1344524290000000 2813 enhancement toby markw demo phase 5 new Confusing sidebar on demo dataset page "On a dataset page on demo.ckan.org, the left sidebar is confusing. * It starts with some random links. Actually they are links to groups which the dataset is in, but this isn't clear. * The sidebar elements that are actually part of the dataset are 'Datset extent' and 'License', so these should be right at the top (if they belong in the sidebar at all), instead of which they are right at the bottom in the junk part of the page (i.e. probably lower than the bottom of the main page, and hence lower than anyone will scroll)." 1344420206000000 1344445419000000 2816 enhancement toby toby ckan-v1.8 closed fixed DomainObjectOperation not in model "Over-enthusiastic removal of some model items this breaks qa extension" 1344496621000000 1345040471000000 2822 enhancement toby toby demo phase 4 new Resource additional info titles format/i18n "the title for additional info should be translated capitalised etc" 1344504620000000 1344543985000000 2823 enhancement toby toby demo phase 5 new resource additional info title order "Order the items so that none user fields are first from ticket #2707 " 1344504773000000 1344504773000000 2826 defect toby danieljohnlewis demo phase 3 closed fixed Null group image "Problem: Example group ( http://s031.okserver.org:2375/en/group/example-group ) has a broken image, image not found. Link either incorrect, or no image set, if no image set then shouldn't it show a default image? Expected: There should be an image." 1344505546000000 1344528004000000 2828 enhancement toby shevski demo phase 4 new Draft datasets are confusing - tickets need creating "reported as editing datasets incorrect e.g. clicking on edit here http://s031.okserver.org:2375/dataset/ff takes you to create dataset page http://s031.okserver.org:2375/dataset/edit/ff but this is the correct behaviour of a draft dataset We need to show draft datasets correctly proper tickets need making for the different issues after review of issues with them - who can see, where, admins and viewing, orgs too etc" 1344506178000000 1344547324000000 2830 enhancement toby toby demo phase 4 new Need method to undelete groups need controller action and front-end method 1344509408000000 1344547341000000 2836 enhancement toby toby demo phase 3 closed fixed Need extra info for forms "like we have on the form here http://s031.okserver.org:2375/harvest/new you said it partly exists so maybe I just need some training" 1344605931000000 1345023663000000 2847 defect toby shevski demo phase 3 closed fixed 'show inactive sources' checkbox displaying incorrectly "On harvest page: http://s031.okserver.org:2375/harvest the checkbox appears above the text and not clear what it refers to/ Beter to relocate to the left (as on publicdata.eu) see screenshots attached. " 1344864322000000 1345023769000000 2848 defect toby shevski demo phase 3 closed fixed no dataset descriptions on front page http://s031.okserver.org:2375/ 1344938505000000 1344947085000000 2849 defect toby shevski demo phase 4 closed fixed header tagline misalighned "should be left alighned, not right aligned. Otherwise tag line disappears left off the page. See: header here: http://s031.okserver.org:2375/ckan-admin/config" 1344938638000000 1344947130000000 2852 enhancement toby shevski demo phase 3 closed fixed better message for trying to refresh inactive sources in harvest "Currently if you try to refresh (i.e. schedule the harvester to re-run) an inactive source (one who's state is 'withdrawn' - e.g. http://s031.okserver.org:2375/harvest/3feea629-32d8-4431-9957-9f31d32864f1) you get the error message: ""An error occurred: [Can not create jobs on inactive sources]"" This could be better and not red, e.g. and info box (maybe yellow) saying that ""Cannot re-run harvesting on inactive sources. Please first change the status to 'active'""" 1345048317000000 1345106515000000 2853 enhancement toby shevski demo phase 3 closed fixed unclear error message in refreshing harvest source "Tried to refresh the datagm harvest source to get error message: ""An error occurred: [There already is an unrun job for this source]"" This is unclear and not sure why it created an error. We should have something informative such as ""A harvest has already been scheduled for this source"" Do we have a date/time for when this has been scheduled that we can display?" 1345048482000000 1345104231000000 2856 defect toby shevski demo phase 3 closed fixed server error when clicking on deleted app link "1. go to http://s031.okserver.org:2375/user/okfn 2. Click on activity stream 3. Click on 'Deletion test' related item that's linked to in entries 1 & 2 4. Server error" 1345049684000000 1345107503000000 2857 defect toby shevski demo phase 4 new no UI to follow another user although option on dashboard "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" 1345049983000000 1345107097000000 2858 enhancement toby toby demo phase 3 closed fixed Harvester tweaks "I've had a look at the new harvesting theme, it looks great, thanks. I did some minor changes and reworded the errors as per tickets #2852 and #2853, but I kept the messages red, as the only other ones available (""flash_notice"") are blue and are not very prominent. Toby, on the old form there was a list of descriptions for all available harvesters which could be nice to have back. I couldn't find an easy way with the new form macro, so I don't know how easy would be to implement http://i.imgur.com/pzS8z.png" 1345103198000000 1345105842000000 2860 enhancement toby shevski demo phase 3 closed fixed target blank link in qa report can we get the link going to an explanation of the 5 star system on page http://s031.okserver.org:2375/qa/dataset/five_stars to open in new tab? it's leaving demo all together so better to open in new tab than navigate away 1345113826000000 1345120404000000 2861 enhancement toby shevski demo phase 4 new Add qa breadcrumb can we add in the breadcrumb navigation to qa pages so that you can go back to http://s031.okserver.org:2375/qa from sub pages such as http://s031.okserver.org:2375/qa/dataset/five_stars 1345114046000000 1345483270000000 2862 enhancement toby markw demo phase 4 new Revised revised groups description "Revised text for 'What are groups?' box at demo.ckan.org/group (after discussion with IB re #2812): What are groups? Groups allow you to group users and data together so that they are easier to manage. Group owners can assign roles and authorisations, giving each project or department control of its own data publishing. Users can browse or facet by groups, which could be an organisation (for example, the Department of Health) or topic (e.g. Transport, Health), making it easier to find the data they are looking for." 1345114322000000 1345115072000000 2863 defect toby shevski demo phase 4 new non-admin users can edit other's draft datasets edit button shows up for daniel lewis for http://s031.okserver.org:2375/dataset/ff 1345114479000000 1345201502000000 2864 defect toby shevski demo phase 4 closed fixed don't show `create one now` message on other's user pages e.g. I can see 'You haven't created any datasets. Create one now?. ' http://s031.okserver.org:2375/user/kindly when logged in as shevski 1345114552000000 1345471138000000 2873 defect toby danieljohnlewis demo phase 4 assigned ckanext-qa: dataset summary incorrect " 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. " 1345126429000000 1345208283000000 2876 enhancement toby toby demo phase 4 closed fixed Admin Config changes are not forced need to make sure these update everywhere when done 1345208451000000 1345470265000000 2938 enhancement Toby dominik new Explain bundling in doc/resources.rst "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." 1348488835000000 1348488835000000 2939 enhancement toby toby new Orgs are groups holder for ticket number 1348564034000000 1348564034000000 3012 enhancement toby toby new data.gov auth 1352393409000000 1352393409000000 235 enhancement tobes dread ckan-v1.9 assigned Resource format normalization and detection "Try to gather proper MIME information for all package resources in CKAN. This is a shared ticket with dcat-tools (https://bitbucket.org/pudo/dcat-tools), i.e. opendatasearch.org. This can then also be used by ckanrdf, the CKAN RDF conversion service. Sub-tasks: * Create a Google Spreadsheet with two Worksheets: ""MIME-Mappings"", i.e. ""CSV"" -> ""text/csv"" and ""Name mappings"", i.e. ""text/csv"" -> ""Comma-Separated Spreadsheet"". * Collect and map surface forms from all CKANs * Access this via Swiss and apply, store as a PackageResource extra field pending #826 (Resource extras). * Add heuristics for format auto-detections: * Map well-known file extensions * Recognize obvious magic (Zip, Tar) * Peek into Zipfile/Tarfiles * Define a convention for generic data types (many CKAN packages have only ""Spreadsheet"" defined, either detect specific type or set MIME to */tabular-data or similar) * See also: #816 (Autocomplete for the resource format field)" 1263827604000000 1340627624000000 1069 enhancement tobes rgrp assigned Stub datasets (request for datasets) "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/" 1301666919000000 1340632215000000 2710 enhancement tobes toby demo phase 3 closed fixed make the api_info.html not look like shit you know the score 1342624385000000 1343318314000000 1241 task timmcnamara timmcnamara closed wontfix Overview video of http://thedatahub.org Produce a video explaining some of the things which can be done on the datahub.org 1311567813000000 1340632688000000 1107 refactor tidy-up bitesize rgrp closed fixed Move package autocomplete from package controller and move to API "Currently autocomplete method on package controller. This method should be in API (like other autocomplete methods). Will need to update client code (just forms atm I think)." 1303808480000000 1340632612000000 143 enhancement thejimmyg dread ckan-backlog assigned Most active users listed on homepage Display league of users' recent activity on homepage. 1255010373000000 1312372381000000 282 enhancement thejimmyg dread closed wontfix Provide diverts when package name changes When a package's name is changed, references to the old name (in the WUI and REST) are redirected to the new name (assuming the old name is not being reused by another package). 1270659003000000 1338206417000000 294 enhancement thejimmyg dread closed duplicate Add/remove extra fields in Package edit form Currently the package form gives you 3 fields for extras. To get more you have to hit preview. This is obscure. It would be better to have some buttons to add/remove fields, just like with the resources. 1271756591000000 1291830960000000 321 enhancement thejimmyg johnbywater closed duplicate Delegate authentication to Drupal "When CKAN is included in a Drupal front-end, CKAN edit pages are used in a slave-mode, such that authentication is delegated to the Drupal front-end user model. The Drupal front-end shall have: 1. Login page - fixed location, can authenticate users, on successful authentication sets auth cookie and redirects to HTTP_REFERER. 2. Access control resource - fixed location, can authorise users, on receipt of valid auth cookie return message listing account details and permitted actions. 3. Access denied page - fixed location, static resource, gently indicates what has happened, and how to ask for permission. The CKAN slave edit page shall: 1. Try to detect a Drupal session key (passed as cookie or as request param). 2. Redirect to Drupal login page if no session key. 3. Check authorisation if session key is found. 4. Redirect to access denied page if session key not authorised. 5. Present the Package edit page. 6. Reject unauthenticated or unauthorised edit submissions. 7. Snag invalid edit submissions from authenticated and authorised users. 8. Respond to valid edit submissions from authenticated and authorised users, by saving the new package state, and redirecting to Package read page in Drupal front-end. " 1274705234000000 1291831399000000 427 task thejimmyg dread ckan-v1.4-sprint-3 closed fixed Match licenses from GEMINI document " * examples of posting a new package * example license_id - explain" 1281436611000000 1299164063000000 430 task thejimmyg pudo closed wontfix Upgrade CKAN to Pylons 1.0 "Pylons 1.0 has been out for a while and appears to be running stable on a few production sites. It also introduces a few new features, among them the ability to specifiy controllers using the entrypoint mechanism. http://bitbucket.org/pudo/ckanextdeliverance/src/tip/ckanext/deliverance/pylonspatch.py This might be a bit ugly since the default behaviour of some pylons objects, such as tmpl_context, app_globals and redirect has changed. " 1281962485000000 1298283075000000 435 defect thejimmyg dread ckan-v1.4 closed wontfix Switching between ckan instances causes orphaned postgres processes "Analysis using pg_top reveals orphaed processes: https://trac.dataco.coi.gov.uk/projects/datagov/ticket/460#comment:6 This followed switching ckan instances on the dgu machine. Do these hang around forever clogging up a db server? Can switching between instances be smoothed to avoid this?" 1282147736000000 1298284084000000 448 story thejimmyg dread closed invalid [Assist with] editing packages through Drupal 1282299478000000 1294417061000000 453 task thejimmyg johnbywater closed invalid Analysis and planning for UKLII 1282299725000000 1294411374000000 480 requirement thejimmyg johnbywater ckan-v1.4 closed fixed Catalogue service shall conform to specification "Common requirements for running CKAN behind a (e.g Wordpress or Drupal) front-end: 1. Unrestricted total read-only access to catalogue API for general public (e.g. voluntary organisation). - monitored by API key - not monitored by API key 2. Restricted total read-write access to catalogue API for authorized clients (e.g. front-end system, bulk upload clients). - restricted by CKAN access controller - restricted by HTTP Auth - restricted by IP address 3. Restricted total read-write access to catalogue Web UI for authorized users (e.g. site admins). - restricted by CKAN access controller - restricted by HTTP Auth 4. Restricted partial read-write access to catalogue Web UI for authorized users (e.g. group admins). - restricted by CKAN access controller - restricted by HTTP Auth [[Image(fig128130.png)]]" 1282422612000000 1300281551000000 482 story thejimmyg johnbywater ckan-backlog closed wontfix API Rate Limiting 1282422756000000 1298284158000000 499 story thejimmyg johnbywater closed wontfix Registration and management of UKLII related code lists, controlled vocabularies and other forms of reference/static data 1282432571000000 1296593038000000 563 requirement thejimmyg johnbywater closed duplicate Support a minimal CSW server interface or export to GeoNetwork 1284033576000000 1296592472000000 565 requirement thejimmyg johnbywater ckan-v1.3 closed invalid The system shall support UKLP code lists 1284033864000000 1294417752000000 569 requirement thejimmyg johnbywater ckan-v1.4 closed fixed Harvested GEMINI document metadata validation 1284040221000000 1297347214000000 667 defect thejimmyg dread ckan-v1.3 closed wontfix API is slow "See message and script: http://lists.okfn.org/pipermail/ckan-discuss/2010-September/000569.html 1500 requests shouldn't take hours." 1285885228000000 1297069121000000 668 defect thejimmyg Colin Calnan closed invalid Caching issues on API v1 "It seems like the API v1 on CKAN metastable (cset:ec21f8e1c87e) has some caching issues. Steps to test: 1. Modify a dataset on datadotgc.ca, redirects to CKAN 2. On save, redirects to http://www.datadotgc.ca/update/geogratisnat_hydrography_v100 which in turn redirects to http://www.datadotgc.ca/dataset/geogratisnat_hydrography_v100 3. You can see that the Dataset has not updated correctly. Run a check on the API v1 - http://ca.ckan.net/api/1/rest/package/geogratisnat_hydrography_v100 the updates are not present 4. Check the v2 of the API - http://ca.ckan.net/api/rest/package/geogratisnat_hydrography_v100, the updates are present. 5. Setting the headers to 'Cache-control: no-cache' or 'Pragma: no-cache' does not work either." 1285953542000000 1311176649000000 676 requirement thejimmyg johnbywater ckan-v1.3 closed wontfix The system shall support browsing to correct version of the CKAN documentation for a given service 1286276136000000 1295869107000000 679 task thejimmyg dread ckan-v1.3 closed fixed Improve standard package edit form " * Add help text, drawing from: * ca.ckan.net * http://wiki.okfn.org/ckan/doc/package * http://wiki.okfn.org/ckan/doc/faq * Make longer text revealed on click" 1286386050000000 1294166120000000 691 requirement thejimmyg johnbywater ckan-backlog closed duplicate Package Relationships 1286822735000000 1295610145000000 711 requirement thejimmyg johnbywater ckan-v1.3 closed fixed Packages shall support both UK government and location information with a common set of attributes "Previously, a package type attribute was intended to distinguish between package data that came from government depts. and publishers location information (GEMINI). Now there is an intention use a common set of attributes to support data from either source. Hence, there currently a v.3 of the government attributes, a document about extracting the attributes from Gemini document using XPath, and a comparison documents mapping between governemtn attributes and Gemini attributes. That means there are potentially four different list of attributes. I'm not sure how to go about reviewing the lists and converging any differences. But we do want to end up with a list of names, a description of their purpose, and then perhaps the XPath which would reveal the value from a Gemini doc?" 1287580866000000 1296592589000000 739 requirement thejimmyg johnbywater ckan-v1.3 closed fixed The system shall support retrieving a copy of the harvested metadata for a given package ...obviously, not all packages will have a harvested metadata document. 1287779710000000 1296592842000000 740 requirement thejimmyg johnbywater closed duplicate Get copy of harvested metadata for a given package 1287779799000000 1296592889000000 750 enhancement thejimmyg johnbywater closed duplicate Get CSW records modified since given time 1288014402000000 1296592940000000 757 task thejimmyg johnbywater ckan-v1.3 closed duplicate Create migration script to add harvest source filter attribute to existing tables 1288040584000000 1296593448000000 764 enhancement thejimmyg dread ckan-v1.5 closed duplicate Read-only CKAN Web UI "Whilse using CKAN web interface, you are not tempted to edit stuff: * You know at all times this CKAN is read-only * All editing facilities are still seen but greyed-out with an indication why it is." 1288091619000000 1310133334000000 767 task thejimmyg johnbywater ckan-v1.4 closed wontfix Harvest metadata records from ArcGIS CSW API 1288178056000000 1304936413000000 770 defect thejimmyg johnbywater ckan-v1.3 closed wontfix Improve the paster harvester help command "Issue 1. Help command without arguments fails: $paster help --plugin ckan --config development.ini gives: EITHER Command help not recognized OR paster help: error: no such option: --plugin Issue 2: Harvester command with arguments fails. $ paster harvester Traceback (most recent call last): ... cmd = self.args[0] IndexError: list index out of range " 1288190220000000 1296593925000000 778 task thejimmyg dread ckan-v1.3 closed fixed Package edit form - name auto-generated from title 1288630777000000 1294416567000000 779 task thejimmyg dread ckan-v1.3 closed fixed Package edit form - stylesheet in DGU updated 1288630800000000 1294416581000000 780 task thejimmyg dread ckan-v1.3 closed fixed Package edit form - 'preview' button shows preview, with form lower in page This ticket refers to the form shown in Drupal. This doesn't have a preview function, but we don't have a requirement for it right now, so leaving ticket closed. 1288630829000000 1294660720000000 781 task thejimmyg dread ckan-v1.3 closed duplicate Package edit form - 'extra' fields have 'add' and 'delete' buttons "(Just like resource table, but extra fields don't need up/down buttons) Nice to have: a blank field is added when you tab from the last filled-in field in the table." 1288630935000000 1294415081000000 784 task thejimmyg johnbywater ckan-v1.4 closed wontfix End to end testing for UKLP 1289210251000000 1304936251000000 787 task thejimmyg thejimmyg ckan-sprint-2011-09-12 closed fixed Auth API "Auth Proposal Use case: We'd like an authenticated and authorized Drupal user to be able to edit/delete packages using the API To do this a user would need a CKAN API key so we need some way of Drupal telling CKAN who a user is so that they can get their API key. Proposed Implementation ----------------------- A user visits the CKAN API key page to get their key. Because CKAN is at catalogue.data.gov.uk (a subdomain of the Drupal site) it can read Drupal cookies. If there is no ``DRXtrArgs`` or ``DRXtrArgs2`` cookie, we know the user isn't signed in so we redirect them to Drupal to sign in. WISHLIST: It would be really nice if we could pass the URL to redirect back to Drupal so tha Druapl can send them back to the CKAN API key page Either way, they get back to CKAN and now the cookies exist. When the first HTTP request header is sent, CKAN will read the Drupal session ID and then call a Drupal API, server to server. TODO: Implement an API on the drupal server which accepts a Drupal session ID as an argument and returns the username and credentials, but only if the request if from the CKAN server (perhaps we specify an API key in the request) If the session is valid CKAN will set its own auth cookie and show them the page with the API key. CKAN only considers a user signed in if both the CKAN cookie *and* Drupal session ID are present. If at any time they sign out of Drupal the Drupal session disappears so they will be signed out of CKAN too. Now the user has an API key they can use the standard CKAN command line API tools. The API key is the only thing the user will need to use the CKAN API. This poses a problem. What if a user is removed from Drupal but still has a CKAN API key? Two solutions: 1. API keys will be set to only be valid for the length of a Drupal session so that a user will only be able to use the write API for a little time after credentials are revoked 2. CKAN provides an API to allow Drupal to revoke keys Option 1. seems easier to me. If we choose this we will write a ``get_api_key`` command line tool so that Drupal user can write things like this: :: datapkg list_packages --api_key `get_api_key` The ``get_api_key`` function will prompt for username and password and then perform the steps necessary to get an API key." 1289211035000000 1315821118000000 795 story thejimmyg johnbywater ckan-v1.3 closed duplicate """Match up"" GEMINI2 ""metadata point of contact"" with registered entities" "TM wants to know how this will be ""matched up"". I don't know whether this always the data provider, or sometimes the publisher." 1289228025000000 1296593361000000 803 story thejimmyg johnbywater closed invalid Auto-generate next migration version unit and test stub files As a system developer, I want to run 'create next migration version' script, so that I don't have to create migration version tests and files manually. 1289486678000000 1314031451000000 881 defect thejimmyg fccoelho closed invalid http authentication requirement when installing I am having trouble installing Ckan with virtualenv and pip using pip-requirements.txt due to the Authentication requirements to download the source code. 1293021889000000 1296335072000000 884 enhancement thejimmyg wwaites ckan-v1.3 closed fixed harvest job delete operation implement paster subcommand to delete harvest jobs 1293277800000000 1296592140000000 905 defect thejimmyg Stiivi ckan-sprint-2012-02-06 closed worksforme Unable to search with accented characters in package names "I have a package with name: ""Štatistické prehľady agendy cestovných pasov"" and when I try to search for ""Štatistické"" there are no results. CKAN setup: - psql DB with UTF-8 tables - psql search backend - ckan version: 1.3.1b Example: http://verejnedata.sk/package/agenda-cestovnch-pasov try to search for the first word in the package name. " 1294939120000000 1328638536000000 906 enhancement thejimmyg Stiivi ckan-sprint-2012-03-05 closed fixed Ability to search without accents for accented words "In Slovakia users are expecting from sites to be able to search without typing accents, for example if they do not have SK keyboard, just US. For example searching for: 'Obyvateľstvo' and 'obyvatelstvo' (population) or 'štatistika' and 'statistika' (statistics) should yield same results. This should work the other way around as well, as some people might enter entries without accents into CKAN instance and others might search with accents. For SK language simple ASCII transliteration for searched term and indexed words is sufficient (iconv ASCII//TRANSLIT). " 1294939588000000 1330990400000000 920 defect thejimmyg hellmann@… closed fixed empty tags are kind of confusing "http://ckan.net/tag/linguistsic doesn't have a single entry, but is still kept and displayed. It should be purged !!!" 1295355280000000 1300319140000000 941 enhancement thejimmyg rgrp ckan-v1.5 closed wontfix Submit apps or ideas for apps related to datasets (extension) The basic purpose of this extension is provide a way to record 'apps' (applications) that relate to datasets in CKAN. Both existing apps and ideas for apps should be permitted. 1296403099000000 1310134339000000 963 enhancement thejimmyg rgrp ckan-v1.4-sprint-1 closed fixed Package CKAN as a debian package Package CKAN as a debian package so it is easier to install. 1297076364000000 1298284252000000 993 defect thejimmyg jason.kitcat@… ckan-v1.4-sprint-2 closed fixed Link on ckan.net footer needs changing "The link for About > 'Project Home Page' on the CKAN.net footer should be changed to point to: http://ckan.org/ The current link is broken. Thanks, Jason" 1298154006000000 1298373114000000 1035 enhancement thejimmyg dread closed wontfix Form impressions given an ID "To counter Cross Site Request Forgery attacks, each form generated is assigned a random number in its url, which must be passed when you submit the form. (Something to consider for the new form mechanism)" 1299857978000000 1338206251000000 1040 defect thejimmyg dread ckan-v1.4 closed fixed File system mounted Public file path code adds a trailing , and thus adds / as a static file app in the Pylons middleware cascade. 1300213855000000 1328806824000000 1041 enhancement thejimmyg thejimmyg ckan-backlog assigned Start Using the CKAN Wiki for Tutorial-style documentation "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 " 1300284715000000 1312372367000000 1050 enhancement thejimmyg johnlawrenceaspden closed invalid Authz lib improvement and refactor of ckan/lib/authztool.py "Refactor ckan/lib/authztool.py so that the relevant methods are independent of the command line interface. The extracted methods should live in a new file ckan/authz.py. authztool.py should probably move into cli.py and will just do command line parsing and printing and use ckan/authz.py. The updated web gui for authz will also use this code. Tests should be made. There's already a file ckan/tests/test_authz.py, which looks like the appropriate place for new tests. all to go on a branch feature-1050-refactor-authtoolz == Optional extras == * Rename ckan/authz.py to ckan/lib/authz.py or even ckan/logic/authz.py " 1300451937000000 1315394117000000 1086 defect thejimmyg johnlawrenceaspden closed wontfix no way to delete authorization groups from web interface as title. 1302625333000000 1323346552000000 1094 enhancement thejimmyg thejimmyg ckan-v1.5 closed duplicate [super] Refactor the Auth System "Here are some proposed changes related to CKAN's authorization system - they aren't very big, but should provide for some forthcoming use cases including #787. Two man reasons for the changes are: * We have a completely refactored architecture now which introduces a logic layer. These Auth changes are designed to better support the way we work with that layer. * Different CKAN extension apps may need radically different authentication/authorisation so we need to allow whatever we have to be override-able. The first two changes revolve around the is_authorized method, which is called by the logic layer to ask whether a particular user (e.g. Bob) is allowed to do a certain action (e.g. edit) on a certain object (e.g. Package). 1. The first thing the is_authorized method is a hook to a plugin which *overrides* the current call with its own implementation (note: in previous discussions we have considered allowing a chain of plugins, no longer!) Reason: authorization can be completely delegated to another system (or partially) 2. is_authorized method currently takes (username, action, object) but for action=create_package, the object supplied is System, and for action=edit the object supplied is the package. Instead action should always be the string name of a function in the logic layer and object should always be the object passed to that function. This means our auth system is based around the actual actions we are performing (rather than a model them) and with the actual data that forms the action (rather than a related object). You never need a System object in this model. 3. Rename these two classes to better reflect what they are * AuthorizationGroup -> UserGroup * Group -> PackageGroup 4. Rename the Editor role to PriveledgeUser since Editors sometimes can't edit. Although this sounds a bit radical we already have auth extensions. == Read-only CKAN Web UI == (Additional requirement from #764) Whilse using CKAN web interface, you are not tempted to edit stuff: * You know at all times this CKAN is read-only * All editing facilities are still seen but greyed-out with an indication why it is." 1303117973000000 1311173649000000 1117 defect thejimmyg nils.toedtmann closed invalid "Depend deb package ""ckan"" against ubuntu package ""python-pastescript""" ... otherwise the scripts fails. 1304089619000000 1304277240000000 1124 enhancement thejimmyg nils.toedtmann ckan-sprint-2011-12-05 closed fixed push apt package python-ckanext-solr into our debian repository python-ckanext-solr is already available in http://apt-alpha.ckan.org/datanl-dev, but not yet in http://apt-alpha.ckan.org/debian (that is why we had to [pip-install it for DataGM). Please push into main repo. 1304537793000000 1323168156000000 1168 enhancement thejimmyg dread ckan-backlog assigned Test system for deb packaging "Get buildbot to: * build the deb packages * install them into a fresh virtual machine * run smoke tests on the installed ckan" 1306441994000000 1330990423000000 1176 defect thejimmyg dread ckan-sprint-2011-10-28 closed fixed unicode_body exception "We seem to occasionally get this exception on ckan.net. User agents causing this include: * Alexa ia_archiver (3/6/11) * Maxthon browser (17/5/11) {{{ Module ckan.controllers.error:32 in document << return original_response.body # Otherwise, decorate original response with error template. c.content = literal(original_response.unicode_body) or cgi.escape(request.GET.get('message', '')) c.prefix=request.environ.get('SCRIPT_NAME', ''), c.code=cgi.escape(request.GET.get('code', str(original_response.status_int))), >> c.content = literal(original_response.unicode_body) or cgi.escape(request.GET.get('message', '')) AttributeError: 'NoneType' object has no attribute 'unicode_body' }}}" 1307351562000000 1314273012000000 1287 enhancement thejimmyg dread ckan-backlog assigned NAVL validation errors - Junk fields should be listed explicitly "When you create a package, but specify a key that is not allowed (e.g. 'relationships') then you get error message: {{{ {""__junk"": [""The input field __junk was not expected.""]} }}} It should mention the actual key which is not expected. e.g. {{{ {""relationships"": [""The input field 'relationships' was not expected.""]} }}} Kindly said that James' version of NAVL was better in this respect, so this might be best solved by moving to that." 1314203102000000 1330990459000000 1382 defect thejimmyg thejimmyg ckan-backlog new Deleted resources are present for harvested package Perhaps the importer deletes them before re-importing. We shouldn't have deleted resources, so let's investigate. 1318337889000000 1318337889000000 1415 enhancement thejimmyg nils.toedtmann ckan-sprint-2011-12-05 closed fixed Comments on current status of ckan deb packages "This is a scratch pad ticket with some comments on the current status of our ckan deb packages. I know that some of it is the deb packaging roadmap anyway, please forgive me if i mention them here again. Rufus and me re-deployed some community ckan instances onto s022 (see http://trac.okfn.org/ticket/926). We followed the documentation http://docs.ckan.org/en/latest/install-from-package.html * Deb package version number: the version of the deb package is ""python-ckan 1309471251~149be76faabc+lucid-1"", and it's hard to guess from there that it contains a ckan 1.4.2a * When is 1.4.3/1.5.x expected as deb package? * There was a bug in the DB upgrade script /usr/share/pyshared/ckan/migration/versions/029_version_groups.py (line 150) which looks like it was fixed 1.4.1==>1.4.2 but was nevertheless present in this deb package. * The current script /usr/bin/ckan-std-install * does not set the Apache ServerName according to the $INSTANCE variable * automatically configures a ckan extension named after $INSTANCE * depends on local postgres * could be replaced with ""/usr/bin/ckan-deploy --name=ckan-std --domain=ckan-std.localhost (see next point) * (i think this is exactly James' plan): have more generic deployment script /usr/bin/ckan-deploy as part of python-ckan which takes arguments like * --domain=cc.ckan.net * --aliases=$list-of-domains * --name=cc (defaults to ""domain"") * --no-db (does not configure a DB) * --sql-alchemy=$DB_CONFIG_STRING (also runs ""paster --plugin ckan db upgrade --config"") * --extension $list-of-extesions * ..." 1319457069000000 1323167941000000 1467 defect thejimmyg thejimmyg ckan-sprint-2012-01-09 closed worksforme CKAN dumps dgu miss certain publisher information Pawel knows about this so David Read, Pawel and I need to find time to discuss it. 1321376042000000 1326120319000000 1524 enhancement thejimmyg thejimmyg ckan-sprint-2011-12-19 closed fixed New Release of Latest MI Reports 1323172688000000 1323191733000000 2268 enhancement thejimmyg amercader ckan-backlog new UKLP Use same schema as form for harvested records Datasets created via the harvesting (UKLP ones) and the ones created via the form use a different schema. That could lead to problems. We need to discuss the best approach. 1333108606000000 1333108606000000 698 task Stiivi thejimmyg ckan-v1.3-sprint-1 closed fixed CKAN Data API v1 "This proposal is to discuss adding a new API for proxying certain spreadsheet data via JSON-P to make it possible to build simple browser apps directly off the API. See the attached proposal for information." 1287073433000000 1293649815000000 1 enhancement somebody rgrp milestone1 closed fixed Visitor visits service "== Title == Visitor visits service == As a == Visitor (general web user) == I want to == Visit the website of the service (frontpage) == So that == * See the front page and discover information about the service * Perform various activities related to the service such as registering and finding packages, registering as a user and logging in" 1152549417000000 1183636342000000 2 enhancement somebody johnbywater milestone1 closed fixed Register as user on the service "== As a == Visitor == I want to == Be able to register as a user on the service == So that == One can login and be an authenticated user and perform the actions that only authenticated users can perform == Notes == * Registration involves the provisional of a minimal set of user details, namely: 1. username (unique in lifetime of the service) 2. fullname 3. email 4. password " 1152549635000000 1152553157000000 3 enhancement somebody johnbywater milestone1 closed fixed Login to the service "== As a == Visitor == I want to == Login to the service == So that == I am now an authenticated user and may perform the actions that only authenticated users may perform == Notes == * Login by providing username and password * Login screen should also include a link or information about registration * If username do not match (or the username does not exist) a login failure is noted and the visitor is re-presented with the login screen as well as information on how to register " 1152549717000000 1152553322000000 4 enhancement somebody johnbywater v0.7 closed fixed Find a package "== As a == Visitor == I want to == Locate packages that I am, or might be, interested in == So that == I know what packages exist and can read the information associated with those packages == Notes == Find a package by searching by (or some combination thereof): 1. tag 2. string contained in title or description 3. license " 1152549820000000 1223908381000000 6 enhancement somebody johnbywater milestone1 closed fixed View a package "== As a == Visitor == I want to == View the details of an individual package == So that == I know more about the package. Attributes available are detailed in updating a package (../UseCase12) " 1152549960000000 1183648175000000 9 enhancement somebody johnbywater milestone1 closed fixed Register new package "== As a == Authenticated User == I want to == Create/register a package == So that == The package will be listed in the system and visible to users == Notes == * Full package registration process may be broken down into: 1. Creating a package by provision of minimal attributes: 1. name: unique and web-usable 2. auto-generation of default values such as: 1. date-registered (today's date) 2. first owner (one owner should be created corresponding to the authenticated user performing this action) 3. (?) auto-generate a default release 2. updating the created package -> ../UseCase12 " 1152550171000000 1152555104000000 13 enhancement somebody rgrp closed invalid Delete a release 1152550611000000 1218545330000000 18 enhancement somebody johnbywater closed invalid Purge a user (registered person) 1152550871000000 1199787607000000 19 enhancement somebody rgrp closed invalid Undelete a user (registered person) 1152550881000000 1199787631000000 21 enhancement somebody johnbywater v0.11 closed fixed Undelete a package 1152550936000000 1265891796000000 22 enhancement somebody johnbywater closed invalid Update person attributes 1152551014000000 1199787243000000 23 enhancement somebody johnbywater closed invalid Request new password (or a reminder) if old has been lost 1152551256000000 1199786799000000 24 enhancement somebody johnbywater v0.9 closed fixed View list of most recently registered or updated packages on front page 1152551291000000 1246441366000000 26 enhancement somebody johnbywater closed duplicate A registered person creates their own tags for a package 1152551351000000 1152555283000000 28 enhancement somebody johnbywater closed wontfix Provide a dump of all packages listed on the system in XML 1152551416000000 1200902911000000 31 enhancement somebody rgrp closed wontfix Add a comment to a package "== As a == Registered user == I want to == Add a comment to a package == Notes == * The comment should be tagged with the username of the person making the comment * Should we allow comments per release as well as per package? '''No''' for the time being. * Comments will be 'flat' and '''not''' threaded (at least for the present) * Comments should be plain text and so html should be escaped (in the future we might look to use some kind of formatter such as markdown)" 1157374505000000 1185472236000000 34 defect somebody zool closed worksforme Page Not Found - returns with 200 rather than 404 as it should 1163008961000000 1253781550000000 1308 defect shevski dread closed fixed 'create package' user case failure On the CKAN home page there is no suggestion that you can add or register a dataset. The 'Register a dataset' option has been removed at some point! (only visible to users that have registered - why would they do that when the benefits aren't described?) 1315219500000000 1323174312000000 2547 enhancement shevski ross opendatasuite 2 assigned ODS Initial data sets " == Requirements == The ODS demo site will need data adding, initially as fixtures but it would also be useful if we started evaluating datasets that we can ship with ODS installations (at least in the UK) from places such as DGU and ONS. May wish to create a ticket for making sure the datasets within the system are reset every X hours. Perhaps. == Interface == None == User Stories == * As a new system administrator for an ODS instance, I don't want to have a site devoid of any data. Geographically relevant datasets would be welcomed. * As a bizdev person I would like to be able to demonstrate how ODS works with real datasets. == Tasks == [ ] Identify relevant sources for datasets [ ] Pick datasets [ ] Set them up for import == Estimates == " 1340016906000000 1340705614000000 2587 enhancement shevski toby demo phase 1 closed fixed author/maintainer not shown if email missing is this the expected behaviour seems crap to me, should we just see the author but just no link 1340369450000000 1340376975000000 2590 enhancement shevski ross ckan-backlog assigned Publisher dashboard "Need proper user stories but ... Publisher admins/editors may need a more useful group read page showing things like: * The current search * Recent activity * People within the group * Followers * Others? " 1340618617000000 1346663416000000 2612 enhancement shevski shevski demo phase 2 closed fixed Hide options based on auth For example, hide the 'edit' button on user profiles http://s031.okserver.org:2375/user/ross2#activity unless I'm logged in as Ross 1340812165000000 1342714613000000 2642 enhancement shevski amercader demo phase 3 closed fixed Adapt harvest frontend to new theme 1341846196000000 1345113645000000 2644 enhancement shevski toby demo phase 5 assigned user dashboard for demo theme "we now have a user dashboard that needs theming not sure if we need sam to look at it http://localhost:5000/user/dashboard" 1341910821000000 1344255836000000 2648 enhancement shevski aron.carroll demo phase 2 closed fixed Add file upload to the demo site 1341921081000000 1342714659000000 2660 defect shevski shevski demo phase 2 closed fixed server error when updating dataset "same as yesterday: http://demo.ckan.org/dataset/edit/newcastle-city-council-payments-over-500 clicking update/save returns error" 1342010970000000 1342090301000000 2667 enhancement shevski toby demo phase 2 closed fixed edit resource needs form "I thought I'd made this ticket before but can't find it. When we have a fully created dataset we need to be able to edit the resources. template: package/resource_edit.html when you've made a form reassign to me and I'll get it working " 1342170103000000 1343058578000000 2680 enhancement shevski shevski demo phase 3 closed fixed review group deletion "Super admins & owners/creators of groups need a way to delete them Is the auth model in place for all this stuff? May be worth sitting down and going through how this should work Currently can change state from active to deleted - this is not ery user friendly (want a button with a 2 step process maybe?) & I'd like to know who can view this option? Everyone who can edit a group? Who can edit?" 1342436525000000 1344509493000000 2699 enhancement shevski shevski demo phase 5 assigned workflow for associating datasets with groups "needs review & speccing out e.g. datasets created by a user who belongs to a certain publisher (group) get auto added to this group" 1342620176000000 1344507133000000 2702 enhancement shevski shevski demo phase 5 assigned Future Javascript wishlist for demo "tooltip on popular datasets with number of views facets to update automatically creating a dataset without reloading page between steps hover on licences information autocomplete on search terms group filtering social share buttons in lightboxes dataset counts on homepage" 1342620475000000 1344255984000000 2717 enhancement shevski toby demo phase 3 closed fixed French breaks the demo header "when language is french a) the menu overlaps the logo b) much of the logo becomes unclickable @shevski a) seems like you b) is aron" 1342780487000000 1344359846000000 2814 enhancement shevski markw assigned Demo: upload file behaves oddly "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. " 1344420360000000 1346670381000000 2855 defect shevski shevski demo phase 3 closed fixed language box no longer functional e.g. tried changing the lang here: http://s031.okserver.org:2375/ to no effect. Doesn't work on any other pages either. Flags have also dissappeared 1345049152000000 1345104178000000 2956 enhancement shevski johnmartin ckan 2.0 assigned Allow for resource editing in CKAN 2.0 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. 1349277100000000 1349346442000000 576 defect sebbacon wwaites ckan-v1.3 closed fixed CKAN Requires Old Version of SQLAlchemy "Requires 0.4. 0.5 is a maintenance branch, 0.6 is current. VDM appears to work correctly (all the tests pass) with 0.5. CKAN does not -- requires more investigation to determine exactly why. It would actually be nice to be able to run with 0.6 or 0.5, though 0.6 will require some changes to VDM as well" 1284141573000000 1294753848000000 662 defect sebbacon johnbywater ckan-v1.4 closed fixed Can't put entity that is returned by posting to package register "It's because Package carries several out-of-band values, which are snagged on the way back out. Entity get response also can't be posted. However, post response can be re-posted (because it isn't the same as the register-post/entity-get responses. An issue for CKAN too. Sub-ticket of #961 (form, validation, model sync meta-ticket) and depends on that work." 1285410546000000 1301076463000000 868 enhancement sebbacon thejimmyg closed fixed Test improvements "The tests currently take 41 mins to run on most laptops. This slows down development and discourages a test-driven approach. We'd like to see the tests pass in 5 mins or less (but anything would be an improvement!) Some suggestions for achieving this include: * Upgrading the entire codebase to SQLAlchemy 0.6 so that tests could run against an in-memory SQLite database * Not setting up and tearing down the database so frequently. " 1291987811000000 1294753596000000 876 enhancement sebbacon rgrp ckan-v1.3-sprint-2 closed fixed Support sqlite as a database backend for CKAN Among other things this will allow the tests to run much quicker. 1292858711000000 1294753889000000 921 enhancement sebbacon thejimmyg closed fixed Refactor DGU Harvesting "Refactor harvesting code to simplify. " 1295389237000000 1300197629000000 926 enhancement sebbacon sebbacon ckan-v1.4-sprint-1 closed fixed Pick a simpler form framework "The current formalchemy setup conflates view, controller and model code in a way that makes it hard to debug and customise. Review existing (and potentially non-existing) frameworks with a view to porting forms over to something more explicit and lightweight. Implement the current Package forms as an example of how this would work. Document and circulate. Sub-ticket of #961 (form, validation, model sync meta-ticket)" 1295869056000000 1298541597000000 937 enhancement sebbacon rgrp ckan-v1.4-sprint-5 closed fixed Record download stats for resources (extension) "As a User (especially as a Package Owner/Maintainer) I want to know how many times a resource has been downloaded (and when). So let's record download stats (as in clicks on the link for a resource). == Implementation == * Use the existing support for this feature in google analytics or piwiki * For google analytics see: * Integrate to record: http://www.google.com/support/analytics/bin/answer.py?answer=55529 * Accessing analytics data via API (for showing download counts): http://code.google.com/apis/analytics/docs/gdata/gdataDeveloperGuide.html * Limitations only record downloads by browsers with js turned on. * This is OK I think (in any case machine download via e.g. datapkg does not get downloaded) === Old Spec (do it in CKAN) === * Record info of form: resource id (or url?), timestamp * Do this via javascript capturing of onclick event talking to an api * API: /api/resource/{id}/download * POST to increment (how do we stop spamming -- could use a nonce setup with a random string set on each page load for the js) * GET to get data back { total: X, day_count: [ [yyyy-mm-dd, count], ... ] } == Questions == * Do we record ip addresses (to handle de-botting etc)? * Do we count preview clicks as well?" 1296340273000000 1302513831000000 971 enhancement sebbacon sebbacon closed duplicate Support middleware as a plugin I need to completely munge the rendered data coming from the app. There's not currently a plugin hook for this, where I get access to the entire environment. The most generic form of plugin would be WSGI Middleware. I propose adding an IMiddleware plugin hook for inserting abritrary middleware via our plugin system. 1297277473000000 1299245064000000 972 enhancement sebbacon rgrp ckan-v1.5 closed wontfix Merge 'extras' into main package dict rather than having separate key "Rather than have a separate 'extras' key all the extras fields should be consolidated into the main package dict when presenting the package internally or e.g. via the API. Why? Extras are really just an artefact of our internal storage model. Clients of the system (both internal and external) should just see a set of key/values with no distinction between extras and non-extras. == Issues == * Possible breaking change to the API (could enforce backwards compatibility by keepings extras for the time being) Possible subticket of forms refactoring: #961" 1297332282000000 1310134129000000 1011 enhancement sebbacon sebbacon ckan-v1.4-sprint-3 closed fixed Make pluggable AuthzGroups implementation "I have a requirement to allow an external source to define the groups of which a user is a member. I propose to create an IAuthzUserGroups plugin interface that allows an extension to arbitrarily extend the list of AuthzGroups that a user is in." 1298819657000000 1299245206000000 1013 defect sebbacon sebbacon ckan-v1.4-sprint-5 closed fixed Refactor & write tests for Wordpresser extension The Wordpresser extension seems to be working well for DataGM, but needs caching and tests. 1298887392000000 1301909717000000 1014 defect sebbacon sebbacon ckan-v1.4-sprint-3 closed fixed Decouple oAuth repoze extension from DataNO, write tests The current oAuth extension tightly couples repoze.who, ckan, and data.no. These components should be decoupled; they also need more tests 1298887493000000 1299245293000000 1047 defect sebbacon sebbacon ckan-v1.4-sprint-4 closed fixed Package edit form claims you're not logged in at the end when you are "At the bottom, it says something like Author: Bob Bumgardner Since you have not signed in this will just be your IP address. Click here to sign in before saving (opens in new window)." 1300384556000000 1300387309000000 1051 defect sebbacon sebbacon ckan-v1.4-sprint-4 closed fixed Ability to set custom favicon Allow deployers to set a URL pointing to their own favicon 1300703160000000 1301305079000000 1063 defect sebbacon sebbacon closed fixed Groups listing widget on package screen shouldn't show group name by default "I've been asked if we can do something about the overflow of the Group name in the right hand column on this page: http://register.data.overheid.nl/package/europese-aanbestedingen The reason is that the list display for groups is in the form ""group_tltie (group_name)"", and of course group_name can't have spaces and so can't wrap nicely. I was wondering if there's a good reason why we don't only display group_title (if it exists) and group_name only when there's not a title?" 1301408459000000 1302514033000000 1299 enhancement seanh kindly ckan-sprint-2012-01-23 closed fixed Activity streams table migration Migrate tables for activity streams 1314696635000000 1327322739000000 1413 enhancement seanh shevski ckan-backlog closed fixed Ask users to 'add email address' when logged in "I'd like us to display a one-off banner that prompts users who log into thedatahub.org to go and update & their profile & fill in their email address (if we could do it just for those who don't have an email address, then even better) That is, once they log in, they see a banner which says: Please update your profile [here] and add your email address, so you can receive notifications, be able to reset your password and get updates Then when we build notifications or if we decide to survey people, we can actually contact them. Email address should be required as standard DR: Also, mention their Full Name too - v. useful for selecting correct user in group curation" 1319453108000000 1330020486000000 1434 enhancement seanh dread ckan-v1.8 closed fixed Add i18n strings from extensions Decide which extensions are important. 1320145648000000 1341245889000000 1471 enhancement seanh dread ckan-v1.8 closed fixed Be compatible with new ubuntu release in April "Nils flagged up that Ubuntu launches another LTS in April which we should probably move to. This ticket is to get the ball rolling with what we do. We can always include in our package the exact package versions of deps that we want, but it is good to be in line with the release if possible. Here's how to see the packages included with it: http://packages.ubuntu.com/search?keywords=python-pylons&searchon=names&suite=all§ion=all Pylons 0.9.7 -> 1.0-2 Requires a small amount of work SQLAlchemy 0.7.3-2 OK Babel 0.9.6-1 OK Genshi 0.6-2 Perfect Another alternative is to move to another web framework, especially minding that Pylons is not being further developed." 1321552345000000 1340810270000000 1486 defect seanh seanh closed fixed """allow_partial_update"" option does not work with resource lists of packages" "1. Call ckan.logic.action.update:package_update() 2. Pass in a context dict with ""allow_partial_update"":True 3. Pass in a partial data dict containing only the package's ID and those fields that you want to update (e.g. title). => All of the package's resource will have their statuses changed to ""deleted"". The ""allow_partial_update"" option should apply to the resource lists of packages, but it does not." 1322061318000000 1323172027000000 1491 defect seanh dread closed fixed Visible strings need internationalisation "Sean spotted that some strings need internationalising, such as flash messages. Generally all strings that appear on the web front-end should be internationalised. Particular places that need i18n: * ckan/controllers/admin * ckan/lib/base Note: there are some exceptions, such as in i18n.py, very obscure error messages and stuff that only appears on the API. NB: there is a cost in making a string internationalisable (all our volunteers have to translate it), so we should not be too zealous. We should also look at the i18n/ckan.pot to see if any of the existing strings can be reused." 1322481000000000 1330020630000000 1494 enhancement seanh seanh ckan-sprint-2012-01-09 closed wontfix API call for getting a user's public activity stream as rendered rtext "This could be implemented as a separate API call, or the rendered text versions of the activities could be added into the JSON returned by the existing API call. This requires setting up templates for rendering activity streams items and detail items as nice, human-readable text. There are some open questions, e.g.: Do we want the entire activity stream rendered as a block of plain text? As HTML? Or do we want a list of JSON objects, where each object contains its textual and/or HTML representations as fields? Activity stream items and their related detail items are separate objects that each have their own textual representations. For a mockup of the kind of text messages we want, see: http://datahub.pudo.org/pudo but note that this ticket is just for creating the text snippets themselves, not rendering then in an HTML page or RSS feed. Also the mockup only show activity items and not their detail items." 1322495447000000 1326109757000000 1496 enhancement seanh seanh ckan-v1.7 closed fixed Render a user's activity stream on her user page 1322495588000000 1334582338000000 1510 enhancement seanh seanh ckan-v1.7 closed wontfix Migrate existing data into activity streams database tables "See '### Task 2' in this etherpad: http://ckan.okfnpad.org/notifications I have no idea yet about how to do this or how long it might take me." 1323093901000000 1339677620000000 1515 enhancement seanh seanh ckan-v1.7 closed fixed [super] Activity Streams "We want to add ""activity streams"" (chronological lists of activities) to CKAN. Activity streams standard: http://activitystrea.ms/ Super branch where the feature was initially developed (this has now been merged into master): https://github.com/okfn/ckan/tree/feature-1515-activity-streams Etherpad: http://ckan.okfnpad.org/notifications (most relevant parts inlined here) Friedrich's mockup: http://datahub.pudo.org/pudo == Tasks == ~~Strikethrough~~ means the task is done. * ~~New domain objects Activity and ActivityStream [2d] #1298~~ * Migrate existing data into activity streams model [3.5d] #1510 * ~~Generate activities when objects are saved [4d] #1298~~ * ~~Get the activity stream for a given user as a JSONifiable list of dictionaries [1d] #1511~~ * ~~API call for getting a user's public activity stream as JSON [0.5d] #1495~~ * ~~API call for getting a user's public activity stream as rendered text, HTML, etc. [5d] #1494~~ * ~~Render a user's activity stream on her user page [3d] #1496~~ (needs review/page design work) * ~~Generate activities for other types of objects besides users (e.g. packages, groups, tags, extras, and save them in the database.~~ * ~~Logic functions for getting activity streams for packages, groups, and users.~~ * ~~API calls for getting activity streams of packages, groups, and users~~ as JSON. * ~~Rendering activity streams for packages and groups etc. into their pages.~~ (done but disabled pending page design work) * ~~API calls for inserting events into activity streams.~~ (Still need to handle activity details in the API, ticketed). * Conform to activitystrea.ms standard * Enable users to subscribe to and unsubscribe from activity streams, see an aggregated activity stream on their dashboard page. * Generate aggregated activity streams for arbitrary sets of multiple activity sources/streams * Email notifications * Extension point for extensions to register themselves as renderers for different types of activity * Deploy to UAT [0.5d] * Docs and announce [1d]" 1323105048000000 1338204149000000 1621 defect seanh seanh closed fixed UnicodeDecodeError when validating user password "A test case is currently failing for me on master: {{{ ERROR: ckan.tests.functional.test_user.TestUserController.test_user_create_unicode ---------------------------------------------------------------------- Traceback (most recent call last): File ""/home/seanh/pyenv/lib/python2.6/site-packages/nose/case.py"", line 197, in runTest self.test(*self.arg) File ""/home/seanh/pyenv/src/ckan/ckan/tests/functional/test_user.py"", line 342, in test_user_create_unicode res = res.follow() File ""/usr/lib/pymodules/python2.6/paste/fixture.py"", line 603, in follow return self.test_app.get(location, **kw) File ""/usr/lib/pymodules/python2.6/paste/fixture.py"", line 208, in get return self.do_request(req, status=status) File ""/usr/lib/pymodules/python2.6/paste/fixture.py"", line 389, in do_request **req.environ) File ""/usr/lib/pymodules/python2.6/paste/wsgilib.py"", line 343, in raw_interactive app_iter = application(basic_environ, start_response) File ""/usr/lib/pymodules/python2.6/paste/lint.py"", line 170, in lint_app iterator = application(environ, start_response_wrapper) File ""/usr/lib/pymodules/python2.6/paste/cascade.py"", line 130, in __call__ return self.apps[-1](environ, start_response) File ""/usr/lib/pymodules/python2.6/paste/registry.py"", line 350, in __call__ app_iter = self.application(environ, start_response) File ""/usr/lib/pymodules/python2.6/repoze/who/middleware.py"", line 69, in __call__ auth_ids = self.authenticate(environ, classification, ids) File ""/usr/lib/pymodules/python2.6/repoze/who/middleware.py"", line 201, in authenticate userid = plugin.authenticate(environ, identity) File ""/home/seanh/pyenv/src/ckan/ckan/lib/authenticator.py"", line 29, in authenticate if user.validate_password(identity.get('password')): File ""/home/seanh/pyenv/src/ckan/ckan/model/user.py"", line 113, in validate_password hashed_pass = sha1(password_8bit + self.password[:40]) UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 12: ordinal not in range(128) }}} " 1326105806000000 1335878161000000 1625 enhancement seanh seanh ckan-sprint-2012-01-23 closed fixed Add activity stream events for new/changed users This requires adding a logic function for emitting an activity stream event, and then editing the logic functions for creating or updating users and making them call the new emit event function. This same emit event function can later be used to emit activity stream events for other types of object as well. 1326187794000000 1326736328000000 1631 enhancement seanh seanh ckan-sprint-2012-01-23 closed fixed Add activity stream events for new/changed groups 1326304020000000 1326736381000000 1632 enhancement seanh seanh ckan-v1.7 closed wontfix Render a group's activity stream on its' page Add logic functions for getting the activity stream for a group in JSON and rendered HTML formats, add HTML activity stream into group page. 1326304199000000 1335877871000000 1633 enhancement seanh seanh ckan-v1.7 closed wontfix Render a dataset's activity stream on its' page Add logic functions for getting the activity stream for a dataset in JSON and rendered HTML formats, add HTML activity stream into dataset page. 1326304298000000 1335877927000000 1634 enhancement seanh seanh ckan-v1.7 closed duplicate Allow users to follow/unfollow activity streams of other users, datasets and groups "This is a fairly big feature to add. Analysis: http://ckan.okfnpad.org/27 This ticket is related to #1635 (email notifications for activity streams) which is about managing a list of activity streams for which the user receives email notifications. There are decisions to be made about how the two will work together." 1326304542000000 1334587390000000 1635 enhancement seanh seanh ckan-backlog new Email notifications (e.g. for activity streams) "CKAN should be able to send email notifications to users. Maybe have a notifications table in the db, and a server-side job that runs periodically and consumes rows from this table, mailing them to the users. One thing that we may want to send users notifications of is activity stream events. So the activity streams code would have to add rows to the notifications table for the mailer job to consume. But remember that email notifications feature is separate from activity streams - we may want to send notifications of other things as well. Need to implement (at least some of) #1634 before this can be implemented, in order to have something to send notifications about. Analysis here: http://ckan.okfnpad.org/27" 1326304587000000 1355141157000000 1636 enhancement seanh seanh ckan-v1.7 closed wontfix Purge items from activity streams when object (package etc.) purged from CKAN 1326304754000000 1338204258000000 1637 enhancement seanh seanh ckan-v1.6 closed fixed API call for getting the list of activity detail items for a given activty stream item (and add test cases for it) 1326304817000000 1326737169000000 1638 enhancement seanh seanh ckan-sprint-2012-01-23 closed wontfix Don't use JsonType in activity streams Dump and load JSON explicitly instead. 1326304935000000 1326305570000000 1639 enhancement seanh seanh ckan-sprint-2012-02-06 closed fixed Move activity streams CSS into external file "The HTML and CSS for the activity streams templates needs to be tidied up. Currently the CSS is inlined in the templates themselves, and there is much unnecessary repetition of CSS. Perhaps put this one in hold until there has been some design discussion about how the activity streams and the user, dataset and group pages with activity streams should look?" 1326305019000000 1328526779000000 1663 enhancement seanh seanh ckan-sprint-2012-02-06 closed fixed API call for creating an activity streams event The create_activity() logic function already exists, but validation and authorization need to be added before it's hooked up to an API call. 1326794844000000 1328013153000000 1664 enhancement seanh seanh ckan-future closed fixed Smarter group activity streams "We already have simple activity streams for groups that have new group or group updated events (see #1631). Smarter/more useful group activity streams would also contain the events for things related to the group: users, datasets, other groups, etc. This should just mean using a more complex SQL query in the group_activity_list() logic function. Things might get tricky when a user or dataset joins a group, this may show up as two events (the user or dataset was modified, and the group was modified). We may want to have two separate events for this (one to go in the user or dataset activity stream and one for the group), or maybe we just want one 'user/dataset joined group' event." 1326795654000000 1351863437000000 1665 task seanh seanh closed fixed Begin doing research into eurovoc How big is it? How are we going to store it? etc. 1326795828000000 1329742600000000 1666 enhancement seanh seanh ckan-sprint-2012-02-06 closed fixed Add activity stream events for tags "...and show them on the tag pages. This means adding tag_activity_list() and tag_activity_list_html() logic functions, adding the templating to render tags as HTML, and adding the tag HTML into the tag pages. What exactly should go into a tag's activity stream? As with datasets we may want a more complex SQL query, where events from objects related to the tag (datasets, users, etc.) appear in the tag's stream." 1326795985000000 1328527113000000 1667 enhancement seanh seanh ckan-future new Add an extension point for rendering activity streams "Currently rendering of activity stream events to HTML works by looking up a rendering function in a dictionary that maps activity types ('new package', 'changed group', etc.) to rendering functions that take an activity stream event and return the rendered HTML. There needs to be an extension point where extensions can register their own rendering functions for particular activity types." 1326796151000000 1338204295000000 1686 enhancement seanh seanh ckan-sprint-2012-02-06 closed fixed Add activity events for when a dataset is added to or removed from a group 1326993692000000 1328527370000000 1694 enhancement seanh seanh ckan-sprint-2012-02-06 closed fixed Add quick functional test(s) for activity streams HTML rendering The activity streams feature is already thoroughly tested via the logic layer and API calls, but there needs to be a quick test of the rendering code, e.g. fetch a user's page (thus testing that ckan doesn't crash while rendering it) and then assert that the expected activity streams HTML is in the fetched HTML. 1327322248000000 1328465254000000 1698 enhancement seanh seanh ckan-v1.7 closed fixed [super] Tag Taxonomies "Add drupal-like ""taxonomies"" to CKAN. Etherpad with user stories, feature list, design and implementation discussion: http://ckan.okfnpad.org/22 Branch where this is being developed is feature-1698-tag-taxonomies: https://github.com/okfn/ckan/compare/master...feature-1698-tag-taxonomies Tickets related to this have [http://trac.ckan.org/query?status=accepted&status=assigned&status=closed&status=new&status=reopened&group=owner&max=1000&order=milestone&col=id&col=summary&col=status&col=owner&col=milestone&col=keywords&keywords=~taxonomies keyword taxonomies]." 1327415756000000 1338204433000000 1705 enhancement seanh seanh ckan-sprint-2012-02-20 closed fixed Implement Vocabularies domain model and API Add Vocabulary domain class, add logic functions for creating, updating, listing, getting, deleting vocabularies, add tests. 1327427254000000 1329131067000000 1706 enhancement seanh seanh ckan-sprint-2012-02-06 closed duplicate Tag taxonomies package schema Enable ckanext's to add new vocabularies to default_package_schema(), use the new vocabularies in templates for dataset view, create, edit pages, helper function for extensions to create a vocabulary schema for a given vocabulary name (must match a vocab already in the db) and add it to default package schema. 1327427938000000 1329131079000000 1722 enhancement seanh seanh ckan-sprint-2012-02-20 closed fixed Update the package model for vocabularies See the etherpad for notes: http://ckan.okfnpad.org/22 1327950373000000 1329303197000000 1723 enhancement seanh seanh ckan-sprint-2012-02-20 closed wontfix Update tests for taxonomies "In the tag-taxonomies branch tags now (optionally) belong to vocabularies and where tags previously had unique names, a CKAN instance can now have two tags with the same name as long as they belong to different vocabularies. The tests for the tags model should probably be updated to reflect this. Other tests might also need to be updated." 1327950494000000 1329131103000000 1724 enhancement seanh seanh ckan-sprint-2012-02-20 closed fixed Update logic action functions for vocabularies "{{{ckan/logic/action/get.py:tag_list()}}} Currently (I think) just returns all tags in the CKAN instance that the user has access to. Needs an optional argument to get only tags from a particular vocabulary? When called with no argument, should only return free tags? Also add an optional dataset argument, so you can get tags for a given dataset and/or vocabulary? {{{ckan/logic/action/get.py:tag_autocomplete()}}} Add optional argument to get only tags for a given vocab? When called with no argument, should get only free tags? {{{ckan/logic/action/get.py:tag_search()}}} Again, optional arguments for restricting by vocabulary and/or dataset." 1327950761000000 1329302302000000 1743 defect seanh seanh ckan-v1.6 closed wontfix Activity streams still link to deleted things For example, after deleting a dataset old activity stream events will still hyperlink to that dataset. 1328212016000000 1328527086000000 1748 enhancement seanh seanh ckan-future new Make activity streams conform to http://activitystrea.ms/ standard "At the very least we should make our JSON output conform to their spec: http://activitystrea.ms/" 1328450784000000 1338204337000000 1754 enhancement seanh seanh ckan-sprint-2012-02-06 closed fixed Add activities for extras When an extra is added to or removed from a dataset or is updated, an activity should go in the dataset's and user's activity streams. 1328528318000000 1328528330000000 1763 enhancement seanh seanh ckan-v1.7 closed wontfix Add some simple model-level tests for activity streams 1328536285000000 1338204708000000 1764 enhancement seanh seanh ckan-v1.7 closed wontfix Move activity streams API tests into tests/logic Which is where the other API tests have now been moved. 1328536499000000 1335878051000000 1765 enhancement seanh seanh ckan-sprint-2012-02-20 closed fixed Enhance Tag and Package models with vocabularies Add a vocabulary column to the tags database table, change tags to have unique (tag_name, vocabulary_id) instrad of unique tag name, update methods in the Tag and Package classes to deal with the fact that tags may belong to vocabularies and that tag names are no longer unique. 1328537061000000 1329131124000000 1775 enhancement seanh seanh ckan-sprint-2012-03-05 closed fixed Enable adding many tags at once to controlled vocabularies via API "We already have API calls for adding one tag or removing one tag at a time to/from a vocab. Want more convenient ways to add or remove many in one call, or just pass in a list of tags to completely replace a vocab's current list. - Add tags_create() function that calls the existing tag_create() many times? - Also tags_delete()? - Or just let tag_create() and tag_delete() accept a list? - Add tags argument to vocabulary_update() to pass in a list of tags to replace the vocab's current tags? (But it should still be possible to simply rename a vocab without changing its tags and without having to pass in the tag list.)" 1328541056000000 1329754459000000 1776 enhancement seanh seanh ckan-sprint-2012-02-20 closed fixed Granular editing of vocabulary tags Add API calls for adding one or more tags to and removing one or more tags from a vocabulary, without affecting the other tags in that vocabulary and without having to pass the full list of the vocabulary's tags. 1328541213000000 1329302364000000 1778 enhancement seanh seanh ckan-future assigned Replace classmethod's with module-level functions "In many places we have @classmethods where simple module-level functions would do (and would be more idiomatic in Python), e.g. the {{{get()}}} classmethods in the model/ classes. Doing it with module functions lets us type module.function() instead of module.Class.method(). In many cases we're importing classes directly with {{{from module import Class}}} and then doing {{{Class.method()}}}, but {{{from module import foo}}} is bad style: http://docs.python.org/dev/howto/doanddont.html" 1328543614000000 1340623743000000 1784 enhancement seanh seanh ckan-v1.7 closed wontfix Links to renamed objects break "The HTML templates for some activity stream activities link to objects (packages, resources, etc.) by their names, e.g. /dataset/foo, but if the object has since been renamed then the link will be broken. Possible solutions are to use the object ID to find its current name at rendering time and link to that, or link to the object by ID rather than by name. Linking by ID is both simpler to implement and better. Links by ID are ugly, but they are permanent and don't break when an object is renamed. We should be using links by ID everywhere on CKAN, so that when third-party sites copy-paste our URLs and link to us, their links don't break later. Fixing this means fixing the dataset_link(), resource_link(), group_link() etc. functions in ckan/lib/helpers.py which will change the links everywhere in CKAN where those functions are used to link to objects (which should be everywhere where we link to an object). If we want to have nice looking by-name URLs and what them to be permanent, then we need to change CKAN so that objects cannot be renamed." 1328613555000000 1338204797000000 1785 enhancement seanh seanh ckan-v1.9 accepted Replace 'Revisions' page with site-wide activity stream Replace the /revision page with a /activity page showing a site-wide activity stream of all activities in the site. Or perhaps the site-wide activity stream can go somewhere on the front page of the site instead? 1328632458000000 1340724312000000 1807 enhancement seanh seanh ckan-sprint-2012-03-05 closed fixed Recently added/updated datasets for EC portal "For EC Portal need a page (or HTML snippet embedded in the front page?) listing recently added or updated datasets. * Could be generated from the activity streams * Should it list datasets only, or other activities as well? * May be related to #1785 (Replace 'Revisions' page with site-wide activity stream)" 1329742326000000 1330809641000000 1808 enhancement seanh seanh ckan-sprint-2012-03-19 closed fixed Translation of content on dataset view pages "All data is that is translatable should be translated when viewed. This includes tag names will be ID codes. When viewing a dataset page, look up the current language of the interface (ckan_lang or something in the environs) and display the string for the tag in that language. Related to the dataset view extension points for translation, recently added by kindly/=." 1329742530000000 1331146804000000 1825 enhancement seanh seanh ckan-sprint-2012-03-05 closed fixed Write docs for vocabularies API Done on branch feature-1698-tag-taxonomies 1329845122000000 1330807330000000 2199 enhancement seanh seanh ckan-sprint-2012-03-19 closed fixed Translation of content on dataset search pages 1330440107000000 1331146832000000 2200 enhancement seanh seanh ckan-future new Add vocabulary_id option to tag_show() logic action function Currently tag_show() only works with free tags, it's not possible to get a tag_show for a vocabulary tag. 1330533678000000 1338204900000000 2207 defect seanh seanh ckan-sprint-2012-03-19 closed invalid Fix recently changed datasets activity stream on exportal site Apparently it's working when developers run it locally but not on the demo site. 1330961739000000 1332154835000000 2208 enhancement seanh seanh ckan-sprint-2012-06-25 closed fixed Export strings from ckan and ckanext-ecportal to combined pot file All strings from the ckanext-ecportal extension (and from CKAN core) need to be exported to a pot file to send to tenforce. 1330961806000000 1339596371000000 2214 enhancement seanh seanh ckan-sprint-2012-03-19 closed fixed Translation of content on group view pages 1331146864000000 1331147119000000 2215 enhancement seanh seanh ckan-sprint-2012-03-19 closed fixed Translation of content on group list page 1331148579000000 1331653117000000 2216 enhancement seanh seanh ckan-sprint-2012-04-02 closed fixed Translation of selected facets on search pages 1331148648000000 1332956791000000 2217 enhancement seanh seanh ckan-sprint-2012-03-19 closed fixed Translation of content on tag list page 1331148704000000 1331652833000000 2218 enhancement seanh seanh ckan-sprint-2012-03-19 closed fixed Translation of content on tag pages 1331148734000000 1331747842000000 2219 enhancement seanh seanh ckan-sprint-2012-03-19 closed fixed Translation of datasets and tags on user pages User names and descriptions are not translated. 1331148895000000 1331750370000000 2238 enhancement seanh seanh ckan-future closed duplicate Deploy some test vocabs and publishers on test.ckan.net, check tutorial-style instructions for these 1332165311000000 1343392681000000 2241 refactor seanh seanh ckan-sprint-2012-04-02 closed fixed Look into making test_activity.py faster ...but only if it can be done reasonably quickly. 1332172354000000 1332426423000000 2242 enhancement seanh seanh ckan-sprint-2012-04-02 closed fixed Research buildbot possibilities for CKAN 1332172405000000 1333375436000000 2243 enhancement seanh seanh ckan-v1.9 reopened Fix ckanext-example 1332172710000000 1340635768000000 2264 enhancement seanh seanh ckan-sprint-2012-04-16 closed fixed Do an audit of string translations in CKAN core and ckanext-ecportal Check to see that all the strings are getting translated, i.e. that all user-visible strings are being passed to gettext. Fix any strings that are not getting translated. 1332864512000000 1339411578000000 2272 enhancement seanh seanh ckan-sprint-2012-04-16 closed fixed Setup jenkins on the new dev server 1333375480000000 1334075515000000 2273 enhancement seanh seanh ckan-v1.8 closed duplicate Review publisher organisations code with Ross 1333375723000000 1340635788000000 2274 enhancement seanh seanh ckan-sprint-2012-04-30 closed fixed Review multilingual branch with kindly, merge into master 1333375804000000 1335644408000000 2276 enhancement seanh seanh ckan-sprint-2012-04-16 closed fixed Upgrade Slovakia CKAN instance 1333376435000000 1334579078000000 2290 defect seanh seanh ckan-v1.8 closed fixed Mark facet titles in search pages for translation The strings Tags, Res_format and Groups on e.g. the package index page should be marked for translation. These strings have been refactored in the feature-1821-multilingual-extension branch, so wait until that branch has been merged into master. 1334326651000000 1341238415000000 2299 enhancement seanh seanh ckan-sprint-2012-04-30 closed fixed Set Slovakas default language on data.gov.sk 1334579112000000 1334670893000000 2300 enhancement seanh seanh ckan-sprint-2012-04-30 closed fixed Write initial docs for multilingual branch 1334579163000000 1335644486000000 2301 enhancement seanh seanh ckan-future new Replace old-style string formatting with format() method (at least in strings marked for translation) "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." 1334579264000000 1340635812000000 2304 enhancement seanh seanh ckan-sprint-2012-05-15 closed fixed Watching/following of dataset/users "User story #037 here: http://ckan.okfnpad.org/feature-1515-activity-streams-user-stories Technical analysis here: http://ckan.okfnpad.org/27" 1334587233000000 1337158641000000 2305 enhancement seanh seanh ckan-v1.8 closed fixed User dashboard with private consolidated activity stream "User story #035 here: http://ckan.okfnpad.org/feature-1515-activity-streams-user-stories Technical analysis here: http://ckan.okfnpad.org/27" 1334587329000000 1340879812000000 2318 enhancement seanh rgrp ckan-sprint-2012-04-30 closed fixed Bug with Portugese translation and Javascript "If you switch to Portugese and try to add a resource on dataset edit it will fail. This is because there is a string translation in js_strings.html that has quotes in it. When this is inserted into the file this causes a js exception which then prevents any further js processing. Specifically: {{{ CKAN.Strings.youHaveUnsavedChanges = ""Você tem alterações não salvas. Certifique-se de ter clicado ""Salvar Alterações"" abaixo antes de sair desta página.""; Uncaught SyntaxError: Unexpected identifier }}} To fix is simple i imagine: need to escape "" correctly in js_strings.html (or translations used). I have temporarily patched this live in order to allow the hackday here to continue." 1335033889000000 1335774178000000 2335 defect seanh seanh ckan-v1.9 assigned Unicode characters don't work in CKAN ini files 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. 1335789726000000 1340624635000000 2336 enhancement seanh seanh ckanbuild accepted Move Jenkins' install script into ckan core so it can be versioned 1335792914000000 1340639637000000 2337 enhancement seanh seanh ckan-v1.9 assigned Sort out ini file confusion in docs "For example if you follow the source install instructions then you have development.ini, then when you go onto Post-Installation Setup it talks about std.ini. People don't realise that these files are the same. Either fix the docs or fix CKAN to use same ini file names in package and source installs/" 1335797876000000 1340624600000000 2339 enhancement seanh seanh ckan-sprint-2012-05-15 closed fixed Demo install on RHEL/CentOS, and install instructions 1335876250000000 1336492657000000 2340 enhancement seanh seanh ckan-v1.8 closed fixed Get Jenkins to automatically run core extensions tests 1335876289000000 1340040366000000 2341 enhancement seanh seanh ckan-v1.9 accepted Fix Jenkins issue when testing branches that contain model changes 1335876396000000 1340639472000000 2342 enhancement seanh seanh ckan-v1.9 accepted Fix Jenkins issue when testing branches with different solr schema versions 1335876445000000 1340639494000000 2344 enhancement seanh seanh ckan-v1.8 closed duplicate Get jenkins install script into CKAN core "After checking out a commit to test from CKAN's GitHub, Jenkins runs a script that creates a new virtual environment and installs CKAN and its dependencies into it, and does some other necessary tasks. Jenkins then runs the tests in this virtualenv. The install script may have to change from one commit to the next as CKAN's install instructions change, so it would be good if the script was shipped in CKAN core. That way Jenkins will run different versions of the script depending on which commit it's testing and if the tests fail because the script is wrong then that's actually a bug that needs to be fixed in CKAN core. Also the CKAN install instructions could be simplified a lot by just having users run this script instead of doing each step by hand." 1335876673000000 1340040449000000 2345 enhancement seanh seanh ckan-sprint-2012-05-29 closed fixed Rewrite action API docs using autodoc 1335876769000000 1337962454000000 2352 enhancement seanh seanh ckan-sprint-2012-05-15 closed fixed Fix autodoc on CKAN's readthedocs 1335883991000000 1336492670000000 2368 enhancement seanh seanh ckan-sprint-2012-05-15 closed fixed Fix OS X Lion install instructions on wiki Solr install instructions install the wrong version 1335893719000000 1336477258000000 2369 enhancement seanh seanh ckan-sprint-2012-05-15 closed fixed Pull latest translations from Transifex into CKAN 1.7 1335975051000000 1335975063000000 2370 enhancement seanh seanh ckan-v1.9 assigned Add examples of all config settings in default config file The default config file should contains examples (maybe commented out) for all config variables. Makes it easier to edit the config. For example openid_enabled is not in there. 1336042237000000 1340624662000000 2376 defect seanh seanh ckan-sprint-2012-05-15 closed fixed "Fix ""no-sidebar"" front page layout issue with CKAN 1.7 in some languages" "This needs to be fixed in the CKAN templates (""no-sidebar"" should not be marked for translation) but for 1.7 just fixed it in the translation files." 1336563965000000 1336563976000000 2377 enhancement seanh seanh ckan-sprint-2012-05-15 closed fixed Upgrade data.gov.sk to CKAN 1.7 and apply their new theme 1336564008000000 1336564027000000 2386 task seanh seanh ckan-sprint-2012-05-29 closed fixed Setup feature-2375-demo-theme test server 1337094996000000 1337967006000000 2387 task seanh seanh ckan-sprint-2012-05-29 closed fixed Upgrade cz.ckan.net to CKAN 1.7 1337095029000000 1337095933000000 2391 task seanh seanh ckan-sprint-2012-06-25 closed wontfix Fix cz.ckan.org theme and customisations 1337158553000000 1338397982000000 2396 defect seanh seanh ckan-sprint-2012-05-29 closed fixed Tag list page loads very slowly 1337160153000000 1337268769000000 2397 task seanh seanh ckan-sprint-2012-05-29 closed fixed Write CKAN docstring guidelines 1337160193000000 1337963273000000 2398 defect seanh seanh ckan-sprint-2012-05-29 closed duplicate Ubuntu 10.04 source install instructions not working? 1337160253000000 1337963342000000 2428 enhancement seanh seanh ckan-v1.8 closed fixed Reduce/sort out CKAN's dependencies "This ticket depends on #2423, #2424, #2425, #2426 and #2427. - Try to remove as many of CKAN's dependencies as possible - Try to update as many of the remaining ones as possible - Try to get rid of some dependencies that are fetched from random hg or git servers instead of pypi - Then try to get the order of deps in the requirements files right so that you end up with the right versions of everything - Each module in the dependencies file should specify the exact version, to protect us from changes due to them upgrading versions under us and breaking things or changing their own deps - Consider shipping dependencies with ckan instead of pip installing them? - This is related to moving CKAN to Ubuntu 12.04 - Add a test case that runs pip freeze and tests that all the right versions of deps are installed? " 1337946896000000 1341314475000000 2429 enhancement seanh seanh ckan-sprint-2012-06-25 closed fixed Get track to send notifications when tickets get assigned to peopel 1337947043000000 1338374447000000 2430 enhancement seanh seanh ckan-v1.9 accepted Look into marking tickets as dependent on other tickets in trac 1337947086000000 1341234346000000 2431 enhancement seanh seanh ckan-v1.9 accepted Trac git integration 1337947128000000 1341234362000000 2432 enhancement seanh seanh ckan-sprint-2012-06-25 closed fixed Draft new trac methodology "We want a new way of working with trac tickets and milestones etc: - We will have a single queue of tickets, ordered by priority, that we all work on - Tickets only get into the queue after triaging (which the devs do at regular intervals), so we and others can use new trac tickets as a dumping ground for any and all CKAN bugs and ideas without messing up the priority queue. Therefore the priority queue needs to be a special CKAN milestone or something. The devs need to regularly go through the inbox of untriaged tickets and triage them all, moving them all out of the inbox. - Will we also assign tickets from the priority queue to individual devs in sprint planning meetings like we currently do? " 1337947327000000 1338325120000000 2434 defect seanh seanh ckan-v1.8 closed fixed Fix autodoc on readthedocs again 1337962353000000 1350296272000000 2435 defect seanh seanh ckan-v1.8 closed worksforme ckanext-qa doesn't work with CKAN 1.7+ 1337963228000000 1340810257000000 2436 enhancement seanh seanh ckan-sprint-2012-05-29 closed fixed Write instructions for booting CKAN demo instances on s031 1337968345000000 1337968356000000 2466 task seanh seanh ckan-v1.9 accepted Fix spam handling on trac 1338213103000000 1341234539000000 2469 enhancement seanh seanh ckanbuild closed duplicate Find a better way to deploy CKAN instances "We want a much quicker and easier way of deploying multiple CKAN instances to the same or multiple servers and managing them (e.g. configuration, themes, extensions, upgrades, and adding new instances). Currently we just deploy and manage each instance separately, which doesn't scale.. We'd also want to have (as far as possible) one single way of deploying CKAN that works across different situations, e.g. deployment server, demo server, jenkins, local deployment for development, these should share the same tools for installing CKAN and its dependencies. Components that this might include: Virtualenv bootstrap script https://gist.github.com/2206132 Ansible http://ansible.github.com/ CKAN deb package" 1338216064000000 1340639702000000 2475 enhancement seanh seanh ckan-v1.9 accepted Upgrade trac.ckan.org to trac 0.12.3 "This is not trivial, requires a database upgrade. But 0.12.3 has some nice new features (multiple vcs repository support, ticket comment editing and nicer preview) and the latest spam filter plugin requires 0.12. http://trac.edgewall.org/wiki/ChangeLog" 1338317176000000 1341234564000000 2476 defect seanh johnglover ckan-sprint-2012-06-25 closed wontfix Check that translating lists of strings is being tested in multilingual tests Check that lists of strings are being correctly translated. See https://github.com/okfn/ckan/commit/f1d68c3d2d4d25a0c0f8a89a68940643fc19b156 1338378078000000 1339151396000000 2477 enhancement seanh shevski ckan-v1.9 accepted Add extensions section to readthedocs Need a central up to date place for currently supported extensions (closest we have is http://wiki.ckan.org/List_of_Extensions) & their documentation. I suggest this gets added to a dedicated section of docs.ckan.org 1338393244000000 1343124123000000 2478 enhancement seanh seanh ckan-v1.9 accepted Get NeverNotifyUpdaterPlugin installed on trac.ckan.org 1338396734000000 1341234591000000 2481 enhancement seanh seanh ckan-sprint-2012-06-25 closed fixed Move Coding_Standards.rst into Sphinx 1338467473000000 1338484696000000 2490 defect seanh seanh ckan-sprint-2012-06-25 closed fixed Dataset term translation isn't working on user pages, ckanext/multilingual test failing 1338822577000000 1338824047000000 2506 enhancement seanh seanh ckan-sprint-2012-06-25 closed fixed Pull latest translations from Transifex into CKAN 1.7.1 1339175957000000 1339596352000000 2507 enhancement seanh seanh ckan-sprint-2012-06-25 closed fixed Search button on dataset search page wraps onto next line If you change the language to one where the word for 'Search' is longer than the English word (e.g. fr) then the search button wraps onto the next line, below the text field, which looks bad. 1339409432000000 1339596399000000 2516 enhancement seanh seanh ckan-v1.9 accepted Make 'Assign to:' field on trac.ckan.org into a dropdown list there's a setting for this 1339578442000000 1341234822000000 2520 defect seanh seanh ckan-v1.9 assigned Document undocumented config options "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" 1339588368000000 1340624908000000 2521 defect seanh seanh ckan-sprint-2012-06-25 closed fixed synchronous_search plugin missing from deployment.ini_tmpl It still contains the old build_search_index_synchronously which no longer works 1339595361000000 1339595469000000 2533 defect seanh seanh ckan-v1.8 closed fixed ckanext-harvest is broken with ckan 1.8b "Looks like recent CKAN cleanups broke some imports: https://gist.github.com/2935639" 1339754707000000 1339755433000000 2537 enhancement seanh seanh ckanbuild accepted Test and document ckanbuild "https://github.com/okfn/ckanbuild Verify that what's there so far still works, write a README explaining how it works" 1339775328000000 1340639830000000 2538 enhancement seanh seanh ckanbuild accepted Add multiple-instance support to ckanbuild "Probably use ansible to do this. To create an instance, create a dir at /etc/ckan/MYSITE, and put MYSITE.wsgi, MYSITE.ini and who.ini files in it. Also put a MYSITE file in /etc/apache2/sites-available. See the example files already present in ckanbuild. Booting a new site should be a single command. May not handle the postgres/solr/elastic-search side of things yet, could just require the user to set these up herself first and then pass them as args to the create-instance command." 1339775499000000 1340639836000000 2539 enhancement seanh seanh ckanbuild accepted Investigate the existing ckan debian package for ckanbuild Do we want to build on top of the existing debian packaging code? Or throw it away and start fresh? 1339775661000000 1340639845000000 2540 enhancement seanh seanh ckanbuild accepted Implement a way of upgrading ckan sites using ckanbuild When there are multiple ckan sites installed on a single server via ckanbuild, there needs to be some way of upgrading them all to a new ckan version at once. 1339775740000000 1340639850000000 2541 enhancement seanh seanh ckanbuild accepted Add non-core extensions to ckanbuild We want some extensions from outside of CKAN core to be included in ckanbuild. These would be pip installed into the virtualenv before packaging the debian package. Decide which extensions to include. 1339775826000000 1340639856000000 2542 enhancement seanh seanh ckanbuild accepted Create jenkins job to run ckanbuild, and run tests It should run the script to create the debian package, boot a VM, install the debian package on the VM, boot a CKAN instance, then run the tests. 1339775888000000 1340639863000000 2592 enhancement seanh seanh ckan-v1.8 closed fixed Update and simplify source install instructions "Make the same instructions work for Ubuntu Lucid and Precise and make them simpler Also see #1471" 1340633697000000 1341234947000000 2600 defect seanh seanh ckan-v1.8 closed fixed "Replace broken ""Login to Add an Organization"" button" If you're not logged in and you click this button, it takes you to the add group page not the login page. Anyway, the default behaviour everywhere else in CKAN is to hide buttons that you don't have permission to use (e.g. add dataset, edit dataset, etc.) 1340721718000000 1340791910000000 2615 enhancement seanh seanh ckan-v1.8 closed fixed Add activity stream activity when a user starts to follow something 1340874249000000 1341235002000000 2619 enhancement seanh seanh ckan-v1.9 assigned Omit private datasets from public activity streams "Activities about private datasets should not appear in public activity streams. I don't think you want to actually purge the activities from the db, because you might still want them to appear in private activity streams. I do think that when a dataset goes private all its past activity should go private, because I imagine that users are going to want to hide everything about the dataset and not have any past activities 'leaking out' I don't think you want to consider whether the dataset was private when the activity happened, rather if a dataset is private now then all its past activities are private (and the simplest thing would be to say that if a dataset is public now then all its past activities become public as well, but is that a privacy concern?) The easiest way to implement this is going to be by modifying the *_activity_list() action functions in get.py, after they pull their activity lists out of the db they should pass them through a function that filters out stuff about private datasets. An activity about a private dataset is one whose object_type is 'dataset' and whose object_id matches the id of a private dataset. You should also check the object_type and object_id of all of the activity object's activity detail objects, if any of those match a private dataset then mark the whole activity as private. Currently all activity streams are public so should have all private datasets filtered out from them, except for the dashboard activity stream which is private to the individual user. In this case private datasets that the user has permission to see should not be filtered." 1340884140000000 1351531137000000 2627 defect seanh seanh ckan-v1.8 closed fixed IDatasetForm.form_to_db_schema() is not called IDatasetForm's form_to_db_schema() method is not getting called by ckan 1341576508000000 1343125213000000 2628 enhancement seanh seanh closed duplicate Add docs for upgrading a source install 1341585472000000 1343392717000000 2629 enhancement seanh seanh ckan-v1.9 closed duplicate Move ckanext-examplevocabs into master and document 1341586555000000 1343392596000000 2630 enhancement seanh seanh ckan-v1.8 closed duplicate UPdate docs after IDatasetForm schema change 1341586625000000 1343392411000000 2656 defect seanh dread new Feed with few results has bad paging link, causing exception "This page http://thedatahub.org/feeds/custom.atom?q=wombat has 0 results and contains a link to http://thedatahub.org/feeds/custom.atom?q=wombat&page=0 which the page=0 causes this exception: {{{ ckan.lib.search.common.SearchError'>: SOLR returned an error running query Error: ""'start' parameter cannot be negative"" }}}" 1342001112000000 1342001112000000 2682 defect seanh seanh ckan-v1.8 closed fixed CKAN's internal tracking counts each view twice, needs unit tests "CKAN's internal tracking seems to count each page view twice, the problem appears to be with the SQL in the update_tracking() method in ckan/lib/cli.py. The internal tracking feature needs some tests, and some of the code could maybe do with some more explanatory comments, e.g. what is the intended difference between count and running_total?" 1342446402000000 1343225636000000 2693 enhancement seanh toby ckan-v1.8 closed fixed License is out of date "https://github.com/okfn/ckan/blob/master/LICENSE.txt mentions requires/lucid_conflict.txt which is no longer the case for 1.8 and needs updating not sure where requirements-testing/docs fit in @sean I've assigned this to you as you changed the requirements and my plate is full feel free to pass on to someone else" 1342605447000000 1343148356000000 2756 enhancement seanh seanh ckan-v1.8 closed fixed Fix handling of extras in group read It doesn't pass extras_as_string 1343231514000000 1343232429000000 2766 enhancement seanh shevski demo phase 4 assigned prevent draft datasets making it to activity stream "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." 1343318795000000 1344543193000000 2770 defect seanh seanh ckan-v1.8 closed fixed Some strings potentially not marked for translation "Luca De Santis reported these strings not marked in 1.7.1: > - /user/login.html (""Remember me"" & ""Sign in"") > - /package/search.html and template/package/group/read.html (Tags, Resource Formats, Groups) > - /package/resource_read.html (the ""No description"" message) > - the ""Add related item"" dialog (some strings are i18n savvy, others not) > - the stats page (labels on the graphs) > - the history page (as far as the log messages are concerned). lets check that they are marked in 1.8" 1343386840000000 1343389747000000 2771 enhancement seanh seanh ckan-v1.8 new Documentation and examples for IDatasetForm and IGroupForm "Add minimal, working IDatasetForm and IGroupForm example extensions to core, with tests. The IDatasetForm example should use tag vocabularies (two birds with one stone) The IDatasetForm and IGroupForm docs are not very good (and are somewhat spread around different doc chapters), fix them up, and reference the new working examples. Tab Vocabularies docs should reference IDatasetForm example. When using convert_to/from_extras() you have to remove any free extras from the form or it won't work, this needs to be documented (in the docstring maybe) There have been recent changes to the schemas that IDatasetForm and IGroupForm use, make sure the docs are up to date." 1343392238000000 1350303564000000 2772 enhancement seanh seanh ckan-v1.8 closed fixed Update transifex for 1.8 translations Upload the new pot file/resource on transifex, put out the call for translations. Some recent commits on master need to be merged into 1.8 first 1343393299000000 1345027445000000 2805 enhancement seanh toby closed fixed zh_TW has no Plural-Forms "the .po file for zh_TW does not contain Plural-Forms which breaks the i18n JavaScript Extractions for ckan-demo. I've added the following which may or may not be correct - from web search ""Plural-Forms: nplurals=1; plural=0\n"" I suspect it will get overwritten when translations are pulled from transiflex so passing to you as you are the expert in that realm" 1344253863000000 1344254760000000 2815 defect seanh seanh ckan-v1.8.1 new db_to_form_package_schema() strips tracking summary, isopen 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. 1344444427000000 1350303821000000 2818 defect seanh danieljohnlewis demo phase 4 assigned Improve related item schema "Problem: When creating a related item (e.g. a Visualisation), if you don't put in a URL it succeeds, but on the related items and apps pages it renders it as a link to the same page. Expected: Always require a URL and it should only submit if one is added" 1344504176000000 1346231718000000 2843 defect seanh seanh ckan-v1.8 closed fixed Adding existing datasets to organizations is broken "On the organization read page there is only an 'Add Dataset' button, not a drop-down with add new dataset or add existing dataset as on the default group page. On the organization edit page you do have the drop-down, but if you click add existing dataset nothing happens except it appends #datasets to the URL" 1344859137000000 1347270569000000 2845 defect seanh seanh ckan-v1.8 closed fixed Editing an organization removes all datasets from the organization Run CKAN with the publisher profile and organizations plugins enabled. Make an organization. Make a dataset and add it to the organization. Edit the organization and change e.g. its description. After saving the organization, all its datasets have been removed from the organization and now belong to no organization. 1344859286000000 1347271110000000 2870 enhancement seanh ross new 1.8 tag_list not defined "From: <thedatahub.org@s077.okserver.org> Date: Thu, Aug 16, 2012 at 3:20 AM Subject: WebApp Error: <class 'genshi.template.eval.UndefinedError'>: ""tag_list"" not defined To: ckan-sysadmin@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]</span>''' 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 <Expression u""tag_list(c.pkg_dict.get('tags', ''))""> << <li py:if=""c.pkg_dict.get('tags')"" class=""sidebar-section""> <h3>Tags</h3> ${tag_list(c.pkg_dict.get('tags', ''))} </li> >> ${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 '<address>Apache/2.2.22 (Ubuntu) Server at ckan.net Port 80</address>\n' SERVER_SOFTWARE 'Apache/2.2.22 (Ubuntu)' WSGI Variables application <beaker.middleware.CacheMiddleware object at 0x7f5312a51650> beaker.cache <beaker.cache.CacheManager object at 0x7f5312a51790> beaker.get_session <bound method SessionMiddleware._get_session of <beaker.middleware.SessionMiddleware object at 0x7f5312a516d0>> beaker.session {'_accessed_time': 1345083636.079552, '_creation_time': 1345083636.079552} mod_wsgi.application_group 'ckan.net|' mod_wsgi.callable_object 'application' mod_wsgi.handler_script '' mod_wsgi.input_chunked '0' mod_wsgi.listener_host '' mod_wsgi.listener_port '8080' mod_wsgi.process_group 'datahub' mod_wsgi.request_handler 'wsgi-script' mod_wsgi.script_reloading '1' mod_wsgi.version (3, 3) paste.cookies (<SimpleCookie: >, '') paste.registry <paste.registry.Registry object at 0x7f52e47477d0> paste.throw_errors True pylons.action_method <bound method PackageController.read of <ckan.controllers.package.PackageController object at 0x7f52e477b810>> pylons.controller <ckan.controllers.package.PackageController object at 0x7f52e477b810> pylons.environ_config {'session': 'beaker.session', 'cache': 'beaker.cache'} pylons.pylons <pylons.util.PylonsContext object at 0x7f52e477be90> pylons.routes_dict {'action': u'read', 'controller': u'package', 'id': u'uk-postboxes'} repoze.who.logger <logging.Logger object at 0x7f53127b2b50> repoze.who.plugins {'openid': <OpenIdIdentificationPlugin 139994769488336>, 'friendlyform': <FriendlyFormPlugin 139994769488528>, 'ckan.lib.authenticator:UsernamePasswordAuthenticator': <ckan.lib.authenticator.UsernamePasswordAuthenticator object at 0x7f5312d893d0>, 'auth_tkt': <AuthTktCookiePlugin 139994771858704>, 'ckan.lib.authenticator:OpenIDAuthenticator': <ckan.lib.authenticator.OpenIDAuthenticator object at 0x7f5312d89350>} routes.route <routes.route.Route object at 0x7f5312955a50> routes.url <routes.util.URLGenerator object at 0x7f52eb8c9090> webob._parsed_query_vars (GET([]), '') webob.adhoc_attrs {'language': 'en-us'} wsgi process 'Multi process AND threads (?)' wsgi.file_wrapper <built-in method file_wrapper of mod_wsgi.Adapter object at 0x7f5308983a80> wsgi.version (1, 1) wsgiorg.routing_args (<routes.util.URLGenerator object at 0x7f52eb8c9090>, {'action': u'read', 'controller': u'package', 'id': u'uk-postboxes'}) " 1345114732000000 1345114732000000 2952 enhancement seanh icmurray ckan 2.0 new incorporate javascriopt translations into translations workflow 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. 1349118945000000 1349118945000000 3005 enhancement seanh seanh ckan 2.0 new Add following/unfollowing of groups: model, API, frontend, tests 1351013744000000 1351013744000000 3009 enhancement seanh seanh ckan 2.0 closed fixed On-site notification of new dashboard activity "We want a ""bubble"" with a number in it to appear in the top-right of the site next to your user name when you're logged in, telling you how many new activity stream items you have in your dashboard activity stream. There's a github issue for this here: https://github.com/okfn/ckanext-pdeu/issues/11" 1351615762000000 1353949938000000 3028 enhancement seanh seanh ckan 2.0 new Feature: dashboard activity stream filtering https://github.com/okfn/ckanext-pdeu/issues/13 1355141244000000 1355141244000000 3029 defect seanh dread assigned JSONP parameter scuppers Search in API "{{{http://datahub.io/api/2/search/package?jsonp=jsonpcallback&q=canada}}} returns {{{ {""count"": 0, ""results"": []} }}} I believe this worked in CKAN 1.4 or 1.5, but it is broken on 1.7.1, 1.8 and whatever demo.ckan.org is running. I suspect the jsonpcallback parameter is getting sent to SOLR. This bug prevents using javascript on another site to search CKAN (although hopefully the action API would work)." 1355238035000000 1355243824000000 1096 defect rufuspollock pudo ckan-future new [super] CKAN Hosted "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. " 1303235062000000 1339774484000000 1565 enhancement Rufus Pollock jilly mathews ckan-future new Admin dashboard finished? Is testing complete and ready for release? 1324293092000000 1324293092000000 1279 enhancement ross amercader ckan-v1.8 closed duplicate Refactor or deprecate Authorization Groups "Authorization Groups are going to be deprecated in 1.8 It is still unclear how Authorization Groups fit in the new authz model, so they have been left out of the logic and auth refactoring (Tickets #1229 and #1253)" 1313415367000000 1338212028000000 1508 enhancement ross rgrp ckan-v1.6 closed fixed [super] Finalize and deploy some of our major (new) features as of Dec 2011 "This ticket is about finalizing, then deploying (to http://thedatahub.org/), and finally announcing some of recent major new features such as: * Deploy wordpresser extension for thedatahub (so we can start blogging) - #1533 - WONTFIX * ~~(Deploy new Resource and Dataset pages (invite comments))~~ * Get thedatahub geo-ified i.e. ckanext-spatial - #1601 (?) * Any additional dev that needs to be done? (e.g. geo in search ...?) * ~~(Deploy / re-enable ckanext-googleanalytics on thedatahub - #1451 (more stuff #1566))~~ * Rename the extension to ckanext-analytics? * Custom forms (and use of 'dataset types') - Ticket (??) * ~~(Get QA deployed and running - #1582)~~ It would be best if this was done by someone *unfamiliar* with the extensions so feedback could be provided on quality of install docs etc etc." 1323088817000000 1328000871000000 1512 defect ross rgrp ckan-v1.8 closed fixed Modifying user name makes you semi-log-out "If you modify your user name, it looks like you are logged out, but you are actually logged in and therefore can't login. (Reported by Pablo) As a work around, you need to logout and log back in. = implementation = * We should force this by auto-logging you out (DR: maybe!)" 1323100214000000 1342781122000000 1551 enhancement ross ross ckan-backlog closed fixed CKAN auth for webstore changes Webstore should use auth api ( #1550 ) for authenticating users accessing webstore rather than talking directly to the CKAN database. We also need it to suppose /user/ urls and /userid/ for accessing databases. 1324049966000000 1346662048000000 1574 enhancement ross ross ckan-v1.7 closed fixed [super] Storage changes including automated save to Webstore "Allow uploading of files to push the data into webstore. Initially we were going to suggest changes to ckanext-storage but after further analysis we arrived at the conclusion that this should be implemented by ckanext-archiver as it already handles archiving of data from various sources and would be the best place to 'archive' to webstore. 1. A user wants to upload a file to CKAN, and so chooses the file upload option as they do currently with ckanext-storage. The file upload itself should be handled by this code internal to core (see #1608) but still using ofs [5d] 2. The user is provided the link to the file as currently. 3. The archiver's update task will check configuration to determine if it should upload some mime-types (tabular formats) to webstore. Configuration should also determine where webstore is. (see #1609) [5d] - took 6 * It should be stored in webstore using {username}/{resource-id} where {username} is the name of the user uploading the original file. 4. The archiver will continue to move the file into permanent storage as per current practice. == Tickets * #1608 Merge storage into Core [5d] * #1609 Celery task for ckanext-archiver to write to webstore. [5d] (took 6) * #1687: Deploy to datahub [1d] * #1681: Core storage documentation [1d?] * Internal (perhaps in README somewhere or wiki): how does process work, where does data end up and in what order etc * External: here's how to configure it and here's what you get ... (goes in main sphinx docs) " 1324315633000000 1338202955000000 1579 enhancement ross ross ckan-backlog closed fixed Full text search in Webstore We should allow full text search within databases for individual databases, although we may want to wait for any pending ports to postgres. 1324385698000000 1338212496000000 1608 enhancement ross ross ckan-sprint-2012-01-23 closed fixed Merge storage into Core "As part of [#1574 Storage Changes] and http://ckan.okfnpad.org/newstorage it was decided to merge ckanext-storage back into core. Other changes: * Remove /storage/upload page (we have frontend integration elsewhere now and we should also ensure that upload items relate to a resource or other domain object). * Provide a local path as well as remote path for form upload requests in API so that frontend can see url to CKAN path rather than cloud storage path ... " 1325582044000000 1330036982000000 1609 enhancement ross ross ckan-sprint-2012-01-23 closed fixed Celery task for ckanext-archiver to write to webstore. "From super Storage changes - #1574 - and http://ckan.okfnpad.org/newstorage we determined that ckanext-archiver should have a celery task for grabbing local file uploads and writing to webstore == Analysis == When I upload a file to CKAN: * End up with file in permanent storage * IF file is ot type ... csv,xls,xlsx,sqlite,.sql * End up with new db in webstore * Where? {username}/{resource-id}/... * If a single table: name it after the file name (appropriately slugified) * A resource *always* corresponds to a 'database' in webstore ... * In Data Explorer have ""Sheets"" tab ... * Resource url = /dataset/{x}/resource/{y}/link -> cached_url ..." 1325582253000000 1327057030000000 1610 enhancement ross ross closed duplicate Move webstore to Postgres instead of Sqlite "The default backing store for webstore should be Postgres and not sqlite. This was agreed as part of the #1574 storage changes and on http://ckan.okfnpad.org/newstorage " 1325587341000000 1325852472000000 1611 enhancement ross ross closed duplicate Implement auth API calls for webstore/external use "As part of #1574 we decided that it would be better for webstore (and future external services) to be able to authenticate simply with CKAN-Core. Currently webstore access the CKAN database to obtain the key for the user but it would be better if this connection was not so tightly bound and that webstore used an API as any other external service might. Need to discuss further with dread" 1325590191000000 1325846987000000 1649 enhancement ross ross ckan-sprint-2012-03-19 closed fixed Verify RDF Extension (ckanext-rdf) works "* Make sure that the extension works as it should and isn't broken on current releases [3d] * Make it work with the EC schema, including extras [2d] " 1326709096000000 1338205274000000 1650 enhancement ross ross ckan-future closed wontfix Add new language/translation of fields for datasets. "Datasets should have a field that specifies the language used in the dataset, this should be a two character ISO 639-1 code (see http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes for list) . Also make sure all tests and migrations are resolved. [2d] Determine the best approach to having 'translation_of' references to show which dataset the current one is a translation of. This may be a translation of field, or a 'copied from' field or another form of package relationship. [2d] " 1326709392000000 1346670010000000 1657 enhancement ross ross closed wontfix Configuration for reverse proxying "Provide configuration for reverse proxying that will correctly handle the mapping of a URL to a sub-folder (using X-SCRIPT-NAME) * Analysis of the best solution [1d] * Implement reverse proxying in tandem with #1653 [2d] * Document and store the configuration files. [1d] " 1326711580000000 1338206640000000 1658 enhancement ross ross closed wontfix Implement proxy caching "Implement proxy caching for performance gains * Analysis of best solution and what we can deliver in a reasonable time [2d] * Checks for presence of cookie 'auth_tkt' and appropriate setup for media [2d] * Remove session requirements for user who isn't logged in [3d] * Document the configuration and setup so that it can be easily modified and replicated [1d] " 1326712354000000 1338206622000000 1669 enhancement ross ross ckan-v1.7 closed fixed [super] Publisher profile "Implement the necessary backend changes to build profile for publishers using the group refactor. See http://ckan.okfnpad.org/publisherprofiles Subtickets are at: * Publisher profile analysis #1670 [2d] * Publisher profile sysadmin authz #1671 [1d] * Publisher profile user authz #1672 [1d] * Test auth logic hooks for publisher profile #1674 [3d] * Publisher admin authz #1675 [3d] * Publisher editor authz #1676 [2d] * Add approval status field to groups #1673 [1d]" 1326802473000000 1338204071000000 1670 enhancement ross ross ckan-sprint-2012-03-05 closed fixed Publisher profile documentation "Super #1669 Analysis of all permissions for users given their publishers to ensure that we have covered all of the bases and haven't missed any use-cases." 1326802549000000 1338205180000000 1671 enhancement ross ross ckan-sprint-2012-02-06 closed fixed Publisher profile sysadmin authz "Super #1669 Implement authz for sysadmins in publisher profile" 1326802607000000 1328526614000000 1672 enhancement ross ross ckan-sprint-2012-02-06 closed fixed Publisher profile user authz "Super #1669 Authz for normal users in publisher profile as per sysadmin" 1326802680000000 1328526625000000 1673 enhancement ross ross ckan-sprint-2012-02-06 closed fixed Add approval status field to groups "Super #1669 As groups need to be authorised in some cases, particularly publisher profiles, we need a field to denote how this is managed. We should add an 'approval_status' field that will be used to denote its status. By default this will be ""approved"" but this will allow us to override it with a ""pending"" or ""denied"" status. The latter should also change the main status of the Group." 1326802753000000 1328526644000000 1674 enhancement ross ross ckan-sprint-2012-02-06 closed fixed Test auth logic hooks for publisher profile "Super #1669 Test all of the new auth logic hooks for publisher profile to make sure they work as expected. Also make sure that we have a test to compare the naming of the core auth funcs with the profile hooks (so we can see what may have changed in one but not the other)." 1326802841000000 1328526677000000 1675 enhancement ross ross ckan-sprint-2012-02-20 closed fixed Publisher admin authz "Super #1669 Authz for the publisher admin (who has permission to administer the publisher group themselves)." 1326802923000000 1328709915000000 1676 enhancement ross ross ckan-sprint-2012-02-06 closed fixed Publisher editor authz "Super #1669 Editor authz for publisher groups need to be implemented and tested." 1326802971000000 1328526670000000 1680 enhancement ross ross closed wontfix Group refactor top level element "The new group refactor allows for a hierarchy of groups where each group has a type - to be able to implement a tree of groups. It will need a flag within the group to denote that it is a top level group, to circumvent the need to determine whether the group is a child of a parent node (for a specific use case - a publisher representing the department that only contains publishers). Suggest 'is_top_level'" 1326896362000000 1326900832000000 1681 enhancement ross ross closed fixed Core storage document "Document all of the changes and usage for #1574 so that we can mark it 'done done'. Make sure we document any setup issues/processes and the settings.py setup required for CKAN so that Mark can announce next week and it should be easily deployable/testable. Internal (perhaps in README somewhere or wiki): how does process work, where does data end up and in what order etc External: here's how to configure it and here's what you get ... (goes in main sphinx docs)" 1326904939000000 1338202930000000 1685 enhancement ross ross ckan-backlog closed wontfix Move archiver download function to core Archiver is included in some places just for access to download(), we should move this to lib in core. 1326984170000000 1346670530000000 1687 enhancement ross ross closed invalid Deploy new storage changes from master to datahub We need to deploy the new storage changes (and webstore) to thedatahub for further testing 1327056976000000 1329338671000000 1690 enhancement ross ross closed fixed Rename storage settings with the ckan prefix Missed the ckan prefix on the storage settings names so this needs to be fixed. 1327064844000000 1327066713000000 1693 defect ross ross closed fixed register_pluggable_behaviour should not be in routing "We should try and move register_pluggable_behaviour into environment and out of routing as it is causing import issues when using simple search. These functions already take a map and so they should be fine any time after the call to make_map" 1327321474000000 1338206601000000 1742 enhancement ross ross ckan-sprint-2012-03-19 closed fixed Naming of a new package/group can clash with a route "It is possible to create a group or a dataset called new, or edit, which will then be inaccessible as it is blocked by the existing routes with those names. We should maintain a list of invalid names in the verification that happens behind the scenes in the UI." 1328116317000000 1331555193000000 1755 enhancement ross ross ckan-sprint-2012-02-20 closed fixed DGU Alpha paged view of publishers The publisher index page should show an alpha paged list of publishers. 1328530634000000 1328631064000000 1756 enhancement ross ross ckan-sprint-2012-02-20 closed fixed DGU Treeview of hierarchical publishers The publisher index page should show a treeview of the publishers within the system. Probably behind a tab. 1328530689000000 1328709846000000 1757 enhancement ross ross ckan-sprint-2012-03-05 closed fixed DGU Hide administrators from public view On publisher view page - hide administrators from public view - only logged in admins of group should see them. 1328530775000000 1338205187000000 1758 enhancement ross ross ckan-sprint-2012-02-20 closed fixed DGU Check user management auth Ensure publisher edit page only allows admins to manage users. #1675 is related. 1328530915000000 1328709897000000 1759 enhancement ross ross ckan-sprint-2012-02-20 closed fixed DGU Create publisher form access Only sysadmin can access create publisher form. 1328530956000000 1329732744000000 1760 enhancement ross ross ckan-sprint-2012-02-20 closed fixed DGU Extract current publisher hierarchy " Get access to live Drupal MySQL database to get latest publisher list for migration. Write a one-off script for import of the data." 1328531001000000 1328709560000000 1761 enhancement ross ross ckan-sprint-2012-02-20 closed fixed DGU History visibility History on user profile should only be visible to a user who is a member of at least one group. 1328532889000000 1328716686000000 1762 enhancement ross ross ckan-sprint-2012-02-20 closed fixed DGU Join publisher form "A new form for create publisher -> Add publisher access to your account' New wizard Autocomplete publisher name if linked from publisher view. Email address used to publish should be activated/validated on first use. Original email still used to log in. " 1328532992000000 1329729305000000 1793 enhancement ross ross closed duplicate Publisher changes Changes to publishers for customer 1329214299000000 1329214522000000 1794 enhancement ross ross closed fixed Publisher changes Changes to publishers for customer that would otherwise clutter up the master branch. 1329214301000000 1332148972000000 1795 enhancement ross ross closed wontfix Add approval_status to Package (as for Group) "The Package model should have a approval_status as the Group model does. See migration 049." 1329234060000000 1338206587000000 1796 enhancement ross dread ckan-future closed fixed Get rid of lxml dependency "lxml is used in CKAN core in two places: * ckan/lib/helpers.py:239 Parsing Markdown and ensuring it is valid XML (i.e. tags close nicely so the HTML of the rest of the CKAN page is not disruptable). * reading the SOLR config XML to determine what version it is. Both of these could be done with xml.dom built into Python and would save us a sizeable and slightly problematic dependency. lxml is needed by these extensions: ckanext-inspire, ckanext-harvest, ckanext-csw & ckanext-wordpresser, so we'd have to add this to their requirements." 1329244440000000 1340635557000000 2204 enhancement ross rgrp ckan-sprint-2012-04-30 closed fixed [super] Related (Stuff) Extension "This is a reworking of the existing apps extension. Initial proposal at http://wiki.ckan.org/Proposals#Apps_in_CKAN and http://wiki.ckan.org/Proposals#References.2FLinks_in_CKAN == Naming == What do we call this extension? * related * RP best IMO but perhaps too close to separate relationships concept? * relatedstuff * links * references == Proposal == ""Related Stuff"": Apps as in an application (website/service/tool) that uses this dataset (as in Apps and Ideas extension) * This case seems a general example of wanting to link some external thing to a dataset (e.g. this policy paper refs this dataset, this application uses this dataset, this visualization is built on this dataset cf http://lists.okfn.org/pipermail/ckan-discuss/2011-August/001607.html) == Implementation == New table named Related with following structure {{{ || id (int) || type || title || description (markdown) || image_url || owner_id || url || created (timestamp) }}} * type = Idea | App | API | Visualization | Post | Paper | News Article * Suggest we make this a ckan.ini config option (comma separated ...?) * Do we want the possibility of different templates for different types of Related objects? * image: ?? Depends where we store images. Simplest option would be to change to image_url and leave it to users to have already uploaded an image somewhere. If not we need to support image uploading and storage. See #1692 (add image attribute to datasets and groups) for more discussion, once implemented the URL here can be an internal url. * owner_id = user_id or creating user (see authorization below) Related2Dataset (note that related_id, dataset_id tuple should be unique). This allows for m2m connections. If a given related item is only with one dataset this could be simplified. May contain status so dataset owner can turn this on/off. {{{ || id || dataset_id || related_id || status }}} status should be used to allow for a dataset owner (for dataset_id) to de-activate the relationship between the dataset and the related. === Url === * /dataset/{dataset-name}/related/{related-item-id}/{related-item-title-stringified} * If a reference item could exist in its own right (and perhaps refer to multiple datasets then it should get its own url at e.g. /related/{id} * /dataset/{dataset-name}/related/add => Modal dialog on related tab so we can use API to create them. /dataset/{id}/related <- list * use image_url for small icon etc, title description (shortened?) * Click through to full related item (optional) * dataset owner is shown show / hide button ... (or on /dataset/{id}/related/{id} ) * related owner sees an edit button / icon (pops up modal) /dataset/{id}/related/{id} (optional) /dataset/{id} will have a Related tab (with bubble with count). * Drop down with Add Related -> Pop-up modal and save via API (Not used: /related/add with dataset prefilled ... ) /related/{id}/edit === Authorization === Addition of related item be considered orthogonal to datasets (and hence with separate authorization i.e. i can add the info that site X uses dataset Y without needing permission to edit dataset Y). Thus any logged in user could add a Related item. We set the owner of the related item to creating user and going forward only that user or a sysadmin can update or delete. NB: we could have a system where datasets owners have to approve related items before they show up next to their dataset. This would add substantial complexity so I propose we leave out of phase 1. === Tasks and estimates {7.5d} === [x] Model + Migration for Related table. {0.75d} [x] Controller for Related (or relevant sections in Package controller). {0.75d} [x] Routing setup. {0.25d} [x] Schema for related. {0.5d} [x] Logic layer actions. {1.0d} [x] Auth (default + publisher). {0.5d} [x] Templates + Dataset changes (new tab etc). {1.0d} [x] JS Application for adding Related objects in a modal. {1.0d} [x] Testing. {0.75d} [x] Dataset owner disabling of Related (via M2M table). {0.5d} - Updated to allow author of related to delete as well [x] Documentation. {0.25d} " 1330862992000000 1337594723000000 2209 enhancement ross ross ckan-sprint-2012-03-19 closed fixed Object->RDF mapping "Super is [1649] We need to provide customisable mappings between CKAN models and RDF. This needs to be easily configurable for different clients and should take into account objects related to the model being mapped. Current contenders for impl are: 1. ordf.org's Object Description Mapper (which uses OWL) 2. RDFAlchemy, although this looks like it may result in fixed mappings 3. A custom scheme with a simple json file 4. A template based approach using Genshi templates? Approach is to get a mapping complete of the attributes directly in the package class, and then provide mappings for related objects (tags/resources etc). We'll then need to be able to publish the RDF to a triplestore. See http://ckan.okfnpad.org/rdfmapping for further analysis. " 1331027277000000 1336566051000000 2210 enhancement ross ross ckan-sprint-2012-03-19 closed fixed Add method to group for adding members "It is necessary to add a helper method to Group for adding members to that group so that - nobody needs to work with the Member model - It handles existing membership and existing membership with a different capacity" 1331028470000000 1331549369000000 2211 enhancement ross ross ckan-sprint-2012-03-19 closed fixed Logic layer access to publisher functionality "Most of the get_group/add_member style calls should be handled, or at least provided via logic layer. Don't need to break existing code, but do need to provide access via logic layer" 1331028751000000 1331549406000000 2228 enhancement ross ross ckan-sprint-2012-03-19 closed fixed IGroupForm should allow overriding of non-edit templates IGroupForm should allow overriding of non-edit templates so that it can specify the index +/or search +/or view. 1331637803000000 1332149030000000 2239 enhancement ross ross ckan-sprint-2012-04-30 closed fixed EC ODP RDF/N3 templates "Implement the EC/ODP template for RDF to match the requested schemas. Using the previous work on allowing for templatised RDF representations we should implement the proposed schema for EC/ODP. We also agreed to allow upload of RDF as an extra (raised to top level in package schema) which will instead be used for the RDF template. On insertion extra CKAN triples will be added... initially this is just owl:sameAs although we're awaiting EC/ODP agreement on which triples we should add to show the CKAN link. " 1332169703000000 1335516499000000 2240 enhancement ross ross ckan-sprint-2012-04-02 closed fixed Document CityData ideas Document the ideas raised on 14/03 for CityData and distribute to team for discussion 1332169761000000 1332408769000000 2255 enhancement ross ross ckan-sprint-2012-04-30 closed fixed Organizations (Privacy + Ownership) "[x] The publisher_form extension and the 'publisher' component of the system will be renamed to organizations to both make its functionality clear, and to differentiate it from the publish auth profile. Ownership of datasets is important and this ticket will enforce membership for a dataset to a single individual organization. The workflow for adding a dataset to a publisher/organization will stay the same but there will be no mechanism for adding existing datasets to an organization from within the organization forms. [x] New datasets can be created from the organization form, in which case the organization will be set in the dataset form dropdown (with privacy set to private - see below) [x] Datasets created from direct access to /dataset/new will have a drop down showing all of the organizations available to the current user. [x] When editing a dataset the organization can only be changed if the current user is the admin of the current organization, and only then to one of the organizations available to the current user. Only Organization admin can see the edit Organization form. [x] Privacy will be enforced by changing the dataset form to have a public/private switch next to the organization drop-down which will be set as the capacity with which the dataset is added to an Organization. Private means visible only within the Organization, and should be the default. [x] Search will be affected as the public/private status of a dataset will need to be added to the schema [x] Only public datasets showing in site search, and private showing in organization dataset search (if user is within the organization). [x] Make sure resources are restricted in visibility if the parent dataset is private [x] Documentation should be updated to reflect these changes. [x] Verify, then add, then re-add to documentation. * A User joins or creates an Organization * If creator of the Organization User becomes administrator of the Organization otherwise they become a Member. * ~~Creation of new Organization must be approved by a System Administrator~~ * New Members must be approved by the Organization Administrator " 1332417218000000 1334663670000000 2280 enhancement ross johnglover ckan-sprint-2012-04-30 closed fixed Move ecportal to organizations, add history template 1333552029000000 1334834302000000 2293 defect ross rgrp ckan-sprint-2012-06-25 closed fixed Rename of Group results in disappearance of associated datasets from group page "Rename of group makes all the datasets associated with the group disappear on the group listing page. (But they are still there if you look at edit). Suspect this is because we are using group name (rather than id!!) in the search index ... As group rename should be rare I'm marking this as minor though actual effect is major. Assigning to rossjones for review and cost assessment." 1334432078000000 1340266982000000 2303 enhancement ross ross ckan-sprint-2012-04-30 closed fixed Move ECPortal rdf dump paster Move ECPortal rdf dump paster command into core so that it can be run on thedatahub for virtuoso install. 1334582692000000 1334664098000000 2312 enhancement ross ross ckan-future closed duplicate Analysis of how datasets could belong to users instead of Groups "** DUPLICATE OF #2548 Currently datasets can only be part of a group but that is quite heavyweight when a single user wants to upload a single dataset. To resolve this it would be great if a dataset could be attached to a user directly - find out how." 1334663770000000 1340188765000000 2322 enhancement ross rgrp ckan-sprint-2012-05-29 closed fixed Convenience offset on end of resource urls: /raw, /api, /viewer "== Raw == /raw or /download (latter may be better) {{{ /dataset/{id}/resource/{resource-id}/raw => redirects to resource url (download) }}} == API == {{{ /dataset/{id}/resource/{resource-id}/api[/....] => either redirects or directly serves /api/data/{resource-id} }}} == Viewer (Explorer?) == Do data viewer but without anything else showing (full-screen?). this would not be just the data explorer but other cases too (including iframe etc ...) {{{ /dataset/{id}/resource/{resource-id}/viewer Resource (pre)-viewer without anything else (perhaps include resource title) }}} ----- Assigning for kindly for review. These would take about 20m to implement and would be *very* convenient from my experience of using the data API. ---- Implementation at enhancement-2322-convenience-urls" 1335236581000000 1344086640000000 2323 enhancement ross ross ckan-backlog closed fixed Auto-complete in organizations "Apparently auto-complete in Organizations may not work. Check and fix. See https://github.com/okfn/ckan/commit/5eca7d5e37c0ef392b768b8b3768b2c3f93448b5" 1335274354000000 1340188400000000 2349 enhancement ross ross ckan-sprint-2012-06-25 closed fixed Make sure semantic.datahub.io gets created " [x] Redeploy Sparql endpoint Done at linkeddata.openlinksw.com/sparql [x] Make sure it is available at datahub.io/sparql or semantic.datahub.io/sparql [x] Generate daily dumps [x] Make dumps available via web [x] Notify Hugh once running [x] Announce to LD guys [x] Think about how we can apply this to publicdata.eu (can we do the same?) ... (being done elsewhere)" 1335880412000000 1340356629000000 2353 enhancement ross ross ckan-sprint-2012-05-15 closed fixed Provisional user stories for CMS + Blogging Provide some provisional user stories for the CMS/Blogging feature. Should include some of the functionality from wordpresser but be more generic. 1335884700000000 1336566004000000 2364 enhancement ross ross ckan-sprint-2012-05-15 closed fixed Investigation of payment gateways Need to investigate alternative payment gateways 1335889757000000 1337077531000000 2365 enhancement ross ross ckan-sprint-2012-06-25 closed fixed Investigation of multisite "What would as a multisite CKAN look like? This is really part of the work around turnkey/hosted CKAN" 1335889911000000 1340266964000000 2366 enhancement ross amercader ckan-sprint-2012-06-25 closed fixed Remove Authorization Groups 1.7 will hide the link on the footer and put a deprecation notice on the related pages, but they should be completely removed on 1.8. 1335892563000000 1346316322000000 2374 enhancement ross dread ckan-v1.8 closed worksforme tag search paging Currently in the logic function tag_search you can specify limit and offset, but no count is returned. Therefore pagination is not possible for tag results. This is desired though. 1336154025000000 1340287976000000 2379 enhancement ross ross ckan-sprint-2012-06-25 closed fixed RDF output, api/sparql "From: Pierre-Yves Vandenbussche In my use case I need to fetch every sparql endpoint associated to a dataset. With the previous version of your endpoint, I was doing this query: SELECT DISTINCT ?dataset ?endpoint ?title ?identifier WHERE { ?dataset <http://www.w3.org/ns/dcat#distribution> ?distribution. ?distribution <http://purl.org/dc/terms/format> [ <http://moat-project.org/ns#taggedWithTag> [ <http://moat-project.org/ns#name> ""api/sparql"" ] ]. ?distribution <http://www.w3.org/ns/dcat#accessURL> ?endpoint. ?dataset <http://purl.org/dc/terms/title> ?title. ?dataset <http://purl.org/dc/terms/identifier> ?identifier. } ORDER BY ?title Using your new version,dcterms:title of a dataset is now a rdfs:label ... OK Unfortunately, I don't have the information of ""api/sparql"" anymore. So I can not differentiate between a dump file and a SPARQL endpoint... ____ Add the required information to the RDF template." 1336735947000000 1340033026000000 2380 enhancement ross ross opendatasuite 1 closed duplicate DataGM Upgrade Provide a new test install of DataGM based on the ODS demo site being completed through June. 1337002144000000 1340627558000000 2381 enhancement ross ross ckan-v1.8 closed fixed Related item count on ALL dataset pages Make sure the related item count is available on all dataset pages (inc. follow) when it is enabled. 1337009133000000 1337011327000000 2385 enhancement ross ross ckan-sprint-2012-05-29 closed fixed Specifying capacity in search api call Currently you can specify the capacity in the API search, this should be stripped and default to public for now. 1337092899000000 1337102816000000 2409 enhancement ross markw ckan-sprint-2012-05-29 closed fixed Accept headers not handled correctly "CKAN returns HTML when an Accept header should make it return RDF/XML: http://lists.okfn.org/pipermail/ckan-dev/2012-May/002237.html " 1337683898000000 1337856979000000 2410 enhancement ross ross ckan-sprint-2012-05-29 closed wontfix New RDF serialization required VOID vocab for related datasets "Taken from http://lists.okfn.org/pipermail/ckan-dev/2012-May/002218.html ---- A few months ago, the RDF provided when dereferencing a dataset's URI was very useful. It described the datasets using many of the ""right"" RDF vocabularies (dcterms, void, etc). The RDF that is returned now no longer has these nice descriptions. Instead, it seems to be a mindless transcription of the CKAN record. For example, the older descriptions gave: <http://thedatahub.org/dataset/farmers-markets-geographic-data-united-states> void:subset [ void:target <http://thedatahub.org/dataset/farmers-markets-geographic-data-united-states>, <http://thedatahub.org/dataset/geonames-semantic-web> ; void:triples 50 ; a void:Linkset ], [ void:target <http://thedatahub.org/dataset/dbpedia>, <http://thedatahub.org/dataset/farmers-markets-geographic-data-united-states> ; void:triples 52 ; a void:Linkset ], [ void:target <http://thedatahub.org/dataset/farmers-markets-geographic-data-united-states>, <http://thedatahub.org/dataset/govtrack> ; void:triples 52 ; a void:Linkset ] ; void:triples 130005 ; but now it's simply: <http://thedatahub.org/dataset/farmers-markets-geographic-data-united-states> dct:relation [ rdf:value ""130005"" ; rdfs:label ""triples"" ], [ rdf:value ""52"" ; rdfs:label ""links:dbpedia"" ], [ rdf:value ""50"" ; rdfs:label ""links:geonames-semantic-web"" ], [ rdf:value ""52"" ; rdfs:label ""links:govtrack"" ] ; My old copies of the dataset descriptions mentioned a ""GoLD CKAN 1.0"" that was credited for the nicer modeling. Where did that go? Can we get it back? Thanks, Tim Lebo <http://semantic.ckan.net/record/91d2c0de-75a4-4bb6-b260-bc2946e1be8b> dc:source <http://ckan.net/> ; opmv:wasGeneratedBy [ opmv:used <http://ckan.net/api/rest/package/farmers-markets-geographic-data-united-states>, <http://ckan.net/api/rest/revision/9c2545b8-ebf1-42bf-ac92-633ff5ceba3f> ; opmv:wasControlledBy [ a foaf:Agent ; foaf:name ""GoLD CKAN 1.0"" ] ; opmv:wasPerformedAt [ a time:Instant ; time:inXSDDateTime ""2012-01-31T05:34:32Z""^^xsd:dateTime ] ; a opmv:Process ] ; a dcat:CatalogRecord ; dcat:dataset <http://thedatahub.org/dataset/farmers-markets-geographic-data-united-states> ; …" 1337684531000000 1338193633000000 2413 enhancement ross ross ckan-sprint-2012-05-29 closed fixed Replace/Fork autoneg Take revelvant parts of autoneg ( https://github.com/wwaites/autoneg.git ) so that we can remove the dependency (just for two functions) and thereby remove flup as well. 1337761125000000 1337766546000000 2414 enhancement ross ross ckan-sprint-2012-06-25 closed fixed Remove LXML as a dependency on core CKAN Core CKAN currently has a dependency on LXML and it would be nice if we could remove it (although this *may* be indirectly through genshi). 1337761192000000 1338471374000000 2423 enhancement ross seanh ckan-sprint-2012-05-29 closed duplicate Get rid of CKAN's lxml dependency 1337946234000000 1338193199000000 2424 enhancement ross seanh ckan-sprint-2012-05-29 closed duplicate Get rid of CKAN's autoneg dependency 1337946279000000 1338193269000000 2500 defect ross icmurray ckan-v1.8 closed fixed get_action should raise an exception if the action requested doesn't exist "== Original bug report: == > Hi CKAN devs, > > Can I request that ckan.logic.get_action raises an exception if > the action requested doesn't exist? > Two of us had a frustrating time tracking down an exception this > morning. It's difficult when the exception is raised in python in a > template because you don't get a line number. The problem was caused > by a new logic function being added to another extension, and we > hadn't updated the code there. So if get_action raised an proper > exception rather than silently returning None then I think we'd have > found the problem quicker. > I'd write the code for this, but as I understand that the new system > would require a ticket, branch, pull request, code review, merge. It > seems a lot to do for such a small thing. > Dave" 1339072580000000 1340293636000000 2514 enhancement ross seanh closed wontfix Follow/unfollow button looks weird It's in the tab bar (maybe not the right place for a button? but I wanted it to be next to the follower tab and count) and doesn't like very much like a button 1339578189000000 1340959787000000 2515 enhancement ross seanh closed fixed Related tab doesn't look selected when selected The related tab on the dataset page doesn't change its appearance when selected like the other tabs do 1339578247000000 1340967971000000 2519 enhancement ross ross ckan-v1.9 closed fixed Dataproxy (converters) enhancement " Whilst the error messages returned from the dataproxy are informative, they aren't particularly human readable. It isn't clear to the user whether they should retry, or whether the format of their data is causing the problem etc... Would be lovely if the error messages returned contained a human readable version of the error." 1339584955000000 1345565215000000 2545 requirement ross ross opendatasuite 1 closed fixed Need to build DataGM site based on ODS " == Requirements == We need to clone the demo ODS site for DataGM as soon as we have a mostly working demo so that the DataGM team can try it out and comment/feedback on functionality. == Interface == None == User Stories == None == Tasks == [ ] Deploy demo DataGM site. == Estimates == " 1340016640000000 1344337973000000 2549 enhancement ross ross ckan 2.0 closed wontfix Merge organization logic into groups " == Requirements == Merge the organizations plugin into the core groups functionality. Most of this is templating and a small number of changes to the group controller. Investigate the possibility of removing the Membership model and using FKs. == Interface == This is likely to consist of: * Updating the templates in templates/group/ * Configuring whether we want to constrain datasets to a single group (as per organizations) * Implementing the separate user management (add users to group). * Checking the publisher auth to not necessarily rely on group type = 'organization' * Making sure that the changes still work with publisher auth. == User Stories == None == Tasks == [ ] Code [ ] Configuration [ ] Model/Migration [ ] Fix templates [ ] Documentation == Estimates == " 1340017421000000 1350562037000000 2577 enhancement ross ross ckan-v1.9 closed fixed Dataproxy raises 500 when it can't get CSV "When given a url parameter for a file it cannot fetch, the app raises a 500 instead of something useful. Better error reporting in the JSON would be useful" 1340207124000000 1346669735000000 2601 defect ross seanh closed fixed 500 Server Error when editing datasets with organizations plugins enabled "Add the organizations and organizations_dataset plugins to ini file, run ckan, login, create an organization, create a dataset and put in organization, edit the dataset and set organization to none, try to edit the dataset again (you must be sysadmin to do this) and get a 500: {{{ Error - <class 'genshi.template.eval.UndefinedError'>: [] has no member named ""get"" URL: http://127.0.0.1:5000/dataset/edit/fooset File '/home/seanh/.virtualenvs/ckan/local/lib/python2.7/site-packages/weberror/errormiddleware.py', line 162 in __call__ app_iter = self.application(environ, sr_checker) File '/home/seanh/.virtualenvs/ckan/local/lib/python2.7/site-packages/beaker/middleware.py', line 73 in __call__ return self.app(environ, start_response) File '/home/seanh/.virtualenvs/ckan/local/lib/python2.7/site-packages/beaker/middleware.py', line 155 in __call__ return self.wrap_app(environ, session_start_response) File '/home/seanh/.virtualenvs/ckan/local/lib/python2.7/site-packages/routes/middleware.py', line 130 in __call__ response = self.app(environ, start_response) File '/home/seanh/.virtualenvs/ckan/local/lib/python2.7/site-packages/pylons/wsgiapp.py', line 125 in __call__ response = self.dispatch(controller, environ, start_response) File '/home/seanh/.virtualenvs/ckan/local/lib/python2.7/site-packages/pylons/wsgiapp.py', line 324 in dispatch return controller(environ, start_response) File '/home/seanh/Projects/ckan/ckan/ckan/lib/base.py', line 221 in __call__ res = WSGIController.__call__(self, environ, start_response) File '/home/seanh/.virtualenvs/ckan/local/lib/python2.7/site-packages/pylons/controllers/core.py', line 221 in __call__ response = self._dispatch_call() File '/home/seanh/.virtualenvs/ckan/local/lib/python2.7/site-packages/pylons/controllers/core.py', line 172 in _dispatch_call response = self._inspect_call(func) File '/home/seanh/.virtualenvs/ckan/local/lib/python2.7/site-packages/pylons/controllers/core.py', line 107 in _inspect_call result = self._perform_call(func, args) File '/home/seanh/.virtualenvs/ckan/local/lib/python2.7/site-packages/pylons/controllers/core.py', line 60 in _perform_call return func(**args) File '/home/seanh/Projects/ckan/ckan/ckan/controllers/package.py', line 499 in edit extra_vars=vars) File '/home/seanh/Projects/ckan/ckan/ckan/lib/base.py', line 148 in render return cached_template(template_name, render_template, loader_class=loader_class) File '/home/seanh/.virtualenvs/ckan/local/lib/python2.7/site-packages/pylons/templating.py', line 249 in cached_template return render_func() File '/home/seanh/Projects/ckan/ckan/ckan/lib/base.py', line 101 in render_template return literal(stream.render(method=method, encoding=None, strip_whitespace=True)) File '/home/seanh/.virtualenvs/ckan/local/lib/python2.7/site-packages/genshi/core.py', line 183 in render return encode(generator, method=method, encoding=encoding, out=out) File '/home/seanh/.virtualenvs/ckan/local/lib/python2.7/site-packages/genshi/output.py', line 57 in encode return _encode(''.join(list(iterator))) File '/home/seanh/.virtualenvs/ckan/local/lib/python2.7/site-packages/genshi/output.py', line 339 in __call__ for kind, data, pos in stream: File '/home/seanh/.virtualenvs/ckan/local/lib/python2.7/site-packages/genshi/output.py', line 670 in __call__ for kind, data, pos in stream: File '/home/seanh/.virtualenvs/ckan/local/lib/python2.7/site-packages/genshi/output.py', line 771 in __call__ for kind, data, pos in chain(stream, [(None, None, None)]): File '/home/seanh/.virtualenvs/ckan/local/lib/python2.7/site-packages/genshi/output.py', line 586 in __call__ for ev in stream: File '/home/seanh/.virtualenvs/ckan/local/lib/python2.7/site-packages/genshi/core.py', line 288 in _ensure for event in stream: File '/home/seanh/.virtualenvs/ckan/local/lib/python2.7/site-packages/genshi/template/base.py', line 605 in _include for event in stream: File '/home/seanh/.virtualenvs/ckan/local/lib/python2.7/site-packages/genshi/template/markup.py', line 327 in _match for event in stream: File '/home/seanh/.virtualenvs/ckan/local/lib/python2.7/site-packages/genshi/template/base.py', line 545 in _flatten for kind, data, pos in stream: File '/home/seanh/.virtualenvs/ckan/local/lib/python2.7/site-packages/genshi/template/directives.py', line 169 in _generate attrs = _eval_expr(self.expr, ctxt, vars) File '/home/seanh/.virtualenvs/ckan/local/lib/python2.7/site-packages/genshi/template/base.py', line 277 in _eval_expr retval = expr.evaluate(ctxt) File '/home/seanh/.virtualenvs/ckan/local/lib/python2.7/site-packages/genshi/template/eval.py', line 178 in evaluate return eval(self.code, _globals, {'__data__': data}) File '/home/seanh/Projects/ckan/ckan/ckanext/organizations/templates/organization_package_form.html', line 110 in <Expression u""{'selected':'selected'} if organization.get('id','') == group['id'] else {}""> <option value=""${group['id']}"" py:attrs=""{'selected':'selected'} if organization.get('id','') == group['id'] else {}"">${group['title']}</option> File '/home/seanh/Projects/ckan/ckan/ckan/config/environment.py', line 248 in genshi_lookup_attr val = cls.undefined(key, owner=obj) File '/home/seanh/.virtualenvs/ckan/local/lib/python2.7/site-packages/genshi/template/eval.py', line 410 in undefined raise UndefinedError(key, owner=owner) UndefinedError: [] has no member named ""get"" }}}" 1340722754000000 1341291379000000 2605 enhancement ross ross ckan-v1.8 closed fixed Problem with user.get_groups "From DR at DGU Basically get_groups() appears to cache its results, but this falls down when subsequent calls are in a different session. We get this when saving a dataset. get_groups() first gets called in the controller when it is trying to work out what permissions the user has. It later gets called, and by this time c.userobj is detached, so get_groups() fails. I'm working around this by refreshing c.userobj (from c.user) before calling get_groups(), but I wonder if the get_groups caching could detect the detached session and bypass the cache in this case? diff at https://gist.github.com/3003117" 1340793006000000 1343127369000000 2623 enhancement ross seanh closed invalid Organization join/authorization buttons weirdness "Enable the organizations and organizations_dataset plugins. Start CKAN. Login and create a new organization. Logout. Login with a different account that is a sysadmin. Go to the organization you just created with the other account. There are Edit and Join buttons. Click on the Edit button, and the Join button changes to Authorization. It should probably be an Authorization button right from the start if you are a sysadmin." 1341220902000000 1341232433000000 2624 enhancement ross seanh ckan-v1.8 closed fixed Organizations breaks dataset tag editing "Enable the organizations and organizations_dataset plugins, login to ckan, create a group, create a dataset and add it to the group. Edit the dataset, add some tags to it. The new tags are not saved when you submit. Disable the organizations and organizations_dataset plugins and tag editing works again." 1341226411000000 1341831716000000 2649 enhancement ross ross ckan-v1.8 closed fixed Description on resources not rendered as markdown "When a resource doesn't have a description, it is rendered as markdown from the description of the dataset. If the resource does have a description it isn't rendered as markdown .. See http://thedatahub.org/dataset/wikipedia-e3-timestamp-position-modification/resource/d883ab44-07f4-4992-800a-3e4bf5d53a96" 1341923135000000 1342084280000000 2650 enhancement ross ross ckan-v1.8 closed fixed Description on resources not rendered as markdown "When a resource doesn't have a description, it is rendered as markdown from the description of the dataset. If the resource does have a description it isn't rendered as markdown .. See http://thedatahub.org/dataset/wikipedia-e3-timestamp-position-modification/resource/d883ab44-07f4-4992-800a-3e4bf5d53a96" 1341923137000000 1341943716000000 2668 defect ross dread ckan-v1.9 closed fixed Permission for sysadmin to read a deleted publisher "As a sysadmin I should be able to view deleted groups/publishers (publisher profile) but I can't. In addition, there don't seem to be tests for permissions of deleted publishers." 1342171453000000 1345565100000000 2670 defect ross dread ckan-v1.8 closed fixed model.Group.get_children_groups returns deleted groups I believe it should only return active ones. On DGU we see deleted publishers popping up. 1342175117000000 1342440953000000 2736 enhancement ross ross ckan-v1.9 closed wontfix Archiver fixes "We need to check the archiver to make sure it works as we would expect after the changes in #2732: * Receive notification of a file that needs processing * Check the file's DB entry and upload the file to the configured remote service * Update the URL of the file (both in the file's DB entry and the resource) * Once we're sure the file is safely archived, we should mark the file as being archived so that we know it can safely be deleted at some point. Maybe this could/should be implemented as a service rather than a celery task?" 1343121237000000 1346670097000000 2865 enhancement ross ross closed fixed 1.8 unicode error " URL: http://thedatahub.org/el/tag/jutatt%C3%A1sok Module weberror.errormiddleware:162 in __call__ << __traceback_supplement__ = Supplement, self, environ 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.template:30 in view << """""" try: return render(url) except TemplateNotFound: if url.endswith('.html'): >> return render(url) 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:95 in render_template << template = globs['app_globals'].genshi_loader.load(template_name, cls=loader_class) stream = template.generate(**globs) >> cls=loader_class) Module genshi.template.loader:223 in load << loadfunc = directory(loadfunc) try: filepath, filename, fileobj, uptodate = loadfunc(filename) except IOError: continue >> filepath, filename, fileobj, uptodate = loadfunc(filename) Module genshi.template.loader:286 in _load_from_directory << def _load_from_directory(filename): filepath = os.path.join(path, filename) fileobj = open(filepath, 'U') mtime = os.path.getmtime(filepath) def _uptodate(): >> fileobj = open(filepath, 'U') UnicodeEncodeError: 'ascii' codec can't encode character u'\xe1' in position 73: ordinal not in range(128) CGI Variables CKAN_CURRENT_URL '/el/tag/jutatt%C3%A1sok' CKAN_LANG 'en' CKAN_LANG_IS_DEFAULT True CKAN_PAGE_CACHABLE True CONTENT_TYPE '; charset=utf-8' DOCUMENT_ROOT '/etc/apache2/htdocs' GATEWAY_INTERFACE 'CGI/1.1' HTTP_ACCEPT '*/*' HTTP_ACCEPT_ENCODING 'gzip,deflate' HTTP_CONNECTION 'close' HTTP_FROM 'googlebot(at)googlebot.com' HTTP_HOST 'thedatahub.org' HTTP_USER_AGENT 'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)' PATH_INFO '/el/tag/jutatt\xc3\xa1sok' PATH_TRANSLATED '/etc/ckan/datahub/apache.wsgi/el/tag/jutatt\xc3\xa1sok' REMOTE_ADDR '127.0.0.1' REMOTE_PORT '49520' REQUEST_METHOD 'GET' REQUEST_URI '/el/tag/jutatt%c3%a1sok' SCRIPT_FILENAME '/etc/ckan/datahub/apache.wsgi' SERVER_ADDR '127.0.0.1' SERVER_ADMIN '[no address given]' SERVER_NAME 'thedatahub.org' SERVER_PORT '80' SERVER_PROTOCOL 'HTTP/1.0' SERVER_SIGNATURE '<address>Apache/2.2.22 (Ubuntu) Server at thedatahub.org Port 80</address>\n' SERVER_SOFTWARE 'Apache/2.2.22 (Ubuntu)' WSGI Variables application <beaker.middleware.CacheMiddleware object at 0x7f5312a51650> beaker.cache <beaker.cache.CacheManager object at 0x7f5312a51790> beaker.get_session <bound method SessionMiddleware._get_session of <beaker.middleware.SessionMiddleware object at 0x7f5312a516d0>> beaker.session {'_accessed_time': 1345113298.778472, '_creation_time': 1345113298.778472} mod_wsgi.application_group 'ckan.net|' mod_wsgi.callable_object 'application' mod_wsgi.handler_script '' mod_wsgi.input_chunked '0' mod_wsgi.listener_host '' mod_wsgi.listener_port '8080' mod_wsgi.process_group 'datahub' mod_wsgi.request_handler 'wsgi-script' mod_wsgi.script_reloading '1' mod_wsgi.version (3, 3) paste.cookies (<SimpleCookie: >, '') paste.registry <paste.registry.Registry object at 0x7f5309add610> paste.throw_errors True pylons.action_method <bound method TemplateController.view of <ckan.controllers.template.TemplateController object at 0x7f52b0ea2d10>> pylons.controller <ckan.controllers.template.TemplateController object at 0x7f52b0ea2d10> pylons.environ_config {'session': 'beaker.session', 'cache': 'beaker.cache'} pylons.pylons <pylons.util.PylonsContext object at 0x7f52b0ea2b90> pylons.routes_dict {'url': u'el/tag/jutatt\xe1sok', 'action': u'view', 'controller': u'template'} repoze.who.logger <logging.Logger object at 0x7f53127b2b50> repoze.who.plugins {'openid': <OpenIdIdentificationPlugin 139994769488336>, 'friendlyform': <FriendlyFormPlugin 139994769488528>, 'ckan.lib.authenticator:UsernamePasswordAuthenticator': <ckan.lib.authenticator.UsernamePasswordAuthenticator object at 0x7f5312d893d0>, 'auth_tkt': <AuthTktCookiePlugin 139994771858704>, 'ckan.lib.authenticator:OpenIDAuthenticator': <ckan.lib.authenticator.OpenIDAuthenticator object at 0x7f5312d89350>} routes.route <routes.route.Route object at 0x7f531296ea10> routes.url <routes.util.URLGenerator object at 0x7f5309add810> webob._parsed_query_vars (GET([]), '') webob.adhoc_attrs {'language': 'en-us'} wsgi process 'Multi process AND threads (?)' wsgi.file_wrapper <built-in method file_wrapper of mod_wsgi.Adapter object at 0x7f52d4004990> wsgi.version (1, 1) wsgiorg.routing_args (<routes.util.URLGenerator object at 0x7f5309add810>, {'url': u'el/tag/jutatt\xe1sok', 'action': u'view', 'controller': u'template'}) " 1345114613000000 1346670331000000 2866 enhancement ross ross closed fixed 1.8 template error " URL: http://thedatahub.org/user/reset/3086e91c-fe09-4a98-92e1-19de67a9ac9d?key%3Db4c2d03fa8 Module weberror.errormiddleware:162 in __call__ << __traceback_supplement__ = Supplement, self, environ 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.user:409 in perform_reset << c.reset_key = request.params.get('key') if not mailer.verify_reset_link(user_obj, c.reset_key): h.flash_error(_('Invalid reset key. Please try again.')) abort(403) >> if not mailer.verify_reset_link(user_obj, c.reset_key): Module ckan.lib.mailer:100 in verify_reset_link << if not user.reset_key or len(user.reset_key) < 5: return False return key.strip() == user.reset_key >> return key.strip() == user.reset_key AttributeError: 'NoneType' object has no attribute 'strip' CGI Variables CKAN_CURRENT_URL '/user/reset/3086e91c-fe09-4a98-92e1-19de67a9ac9d?key%253Db4c2d03fa8' CKAN_LANG 'it' CONTENT_TYPE '; charset=utf-8' DOCUMENT_ROOT '/etc/apache2/htdocs' GATEWAY_INTERFACE 'CGI/1.1' HTTP_ACCEPT '*/*' HTTP_ACCEPT_ENCODING 'gzip,deflate' HTTP_CONNECTION 'close' HTTP_FROM 'googlebot(at)googlebot.com' HTTP_HOST 'thedatahub.org' HTTP_USER_AGENT 'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)' PATH_INFO '/user/reset/3086e91c-fe09-4a98-92e1-19de67a9ac9d' PATH_TRANSLATED '/etc/ckan/datahub/apache.wsgi/it/user/reset/3086e91c-fe09-4a98-92e1-19de67a9ac9d' QUERY_STRING 'key%3Db4c2d03fa8' REMOTE_ADDR '127.0.0.1' REMOTE_PORT '54634' REQUEST_METHOD 'GET' REQUEST_URI '/it/user/reset/3086e91c-fe09-4a98-92e1-19de67a9ac9d?key%3Db4c2d03fa8' SCRIPT_FILENAME '/etc/ckan/datahub/apache.wsgi' SERVER_ADDR '127.0.0.1' SERVER_ADMIN '[no address given]' SERVER_NAME 'thedatahub.org' SERVER_PORT '80' SERVER_PROTOCOL 'HTTP/1.0' SERVER_SIGNATURE '<address>Apache/2.2.22 (Ubuntu) Server at thedatahub.org Port 80</address>\n' SERVER_SOFTWARE 'Apache/2.2.22 (Ubuntu)' WSGI Variables application <beaker.middleware.CacheMiddleware object at 0x7f5312a51650> beaker.cache <beaker.cache.CacheManager object at 0x7f5312a51790> beaker.get_session <bound method SessionMiddleware._get_session of <beaker.middleware.SessionMiddleware object at 0x7f5312a516d0>> beaker.session {'_accessed_time': 1345066159.520708, '_creation_time': 1345066159.520708} mod_wsgi.application_group 'ckan.net|' mod_wsgi.callable_object 'application' mod_wsgi.handler_script '' mod_wsgi.input_chunked '0' mod_wsgi.listener_host '' mod_wsgi.listener_port '8080' mod_wsgi.process_group 'datahub' mod_wsgi.request_handler 'wsgi-script' mod_wsgi.script_reloading '1' mod_wsgi.version (3, 3) paste.cookies (<SimpleCookie: >, '') paste.parsed_dict_querystring (MultiDict([('key=b4c2d03fa8', '')]), 'key%3Db4c2d03fa8') paste.parsed_querystring ([('key=b4c2d03fa8', '')], 'key%3Db4c2d03fa8') paste.registry <paste.registry.Registry object at 0x7f52eba637d0> paste.throw_errors True pylons.action_method <bound method UserController.perform_reset of <ckan.controllers.user.UserController object at 0x7f52e49f7a50>> pylons.controller <ckan.controllers.user.UserController object at 0x7f52e49f7a50> pylons.environ_config {'session': 'beaker.session', 'cache': 'beaker.cache'} pylons.pylons <pylons.util.PylonsContext object at 0x7f52f5649ad0> pylons.routes_dict {'action': u'perform_reset', 'controller': u'user', 'id': u'3086e91c-fe09-4a98-92e1-19de67a9ac9d'} repoze.who.logger <logging.Logger object at 0x7f53127b2b50> repoze.who.plugins {'openid': <OpenIdIdentificationPlugin 139994769488336>, 'friendlyform': <FriendlyFormPlugin 139994769488528>, 'ckan.lib.authenticator:UsernamePasswordAuthenticator': <ckan.lib.authenticator.UsernamePasswordAuthenticator object at 0x7f5312d893d0>, 'auth_tkt': <AuthTktCookiePlugin 139994771858704>, 'ckan.lib.authenticator:OpenIDAuthenticator': <ckan.lib.authenticator.OpenIDAuthenticator object at 0x7f5312d89350>} routes.route <routes.route.Route object at 0x7f5312961ad0> routes.url <routes.util.URLGenerator object at 0x7f52de7f6390> webob._parsed_query_vars (GET([('key=b4c2d03fa8', '')]), 'key%3Db4c2d03fa8') webob.adhoc_attrs {'language': 'en-us'} wsgi process 'Multi process AND threads (?)' wsgi.file_wrapper <built-in method file_wrapper of mod_wsgi.Adapter object at 0x7f52fc4f1a08> wsgi.version (1, 1) wsgiorg.routing_args (<routes.util.URLGenerator object at 0x7f52de7f6390>, {'action': u'perform_reset', 'controller': u'user', 'id': u'3086e91c-fe09-4a98-92e1-19de67a9ac9d'}) " 1345114641000000 1346670324000000 2868 enhancement ross ross closed fixed 1.8 SOLR error "From: <thedatahub.org@s077.okserver.org> Date: Wed, Aug 15, 2012 at 8:34 AM Subject: WebApp Error: <class 'ckan.lib.search.common.SearchError'>: SOLR returned an error running query: {'sort': 'metadata_modified desc', 'fq': u'groups:""welcome"" capacity:""public"" +site_id:""www.ckan.net"" +state:active', 'facet.mincount': 1, 'rows': 21, 'facet.limit': '50', 'facet': 'true', 'q': '*:*', 'start': -20, 'wt': 'json', 'fl': 'id data_dict'} Error: ""'start' parameter cannot be negative"" To: ckan-sysadmin@okfn.org, kindly@gmail.com URL: http://thedatahub.org/feeds/group/welcome.atom?page=0 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.feed:180 in group << data_dict['fq'] = 'groups:""%s""' % id item_count, results = _package_search(data_dict) navigation_urls = self._navigation_urls(params, >> item_count, results = _package_search(data_dict) Module ckan.controllers.feed:57 in _package_search << # package_search action modifies the data_dict, so keep our copy intact. query = get_action('package_search')(context, data_dict.copy()) return query['count'], query['results'] >> query = get_action('package_search')(context, data_dict.copy()) Module ckan.logic.action.get:1130 in package_search << query = search.query_for(model.Package) query.run(data_dict) for package in query.results: >> query.run(data_dict) Module ckan.lib.search.query:350 in run << except SolrException, e: raise SearchError('SOLR returned an error running query: %r Error: %r' % (query, e.reason)) try: data = json.loads(solr_response) >> (query, e.reason)) SearchError: SOLR returned an error running query: {'sort': 'metadata_modified desc', 'fq': u'groups:""welcome"" capacity:""public"" +site_id:""www.ckan.net"" +state:active', 'facet.mincount': 1, 'rows': 21, 'facet.limit': '50', 'facet': 'true', 'q': '*:*', 'start': -20, 'wt': 'json', 'fl': 'id data_dict'} Error: ""'start' parameter cannot be negative"" CGI Variables CKAN_CURRENT_URL '/feeds/group/welcome.atom?page%3D0' CKAN_LANG 'ja' CONTENT_TYPE '; charset=utf-8' DOCUMENT_ROOT '/etc/apache2/htdocs' GATEWAY_INTERFACE 'CGI/1.1' HTTP_ACCEPT '*/*' HTTP_ACCEPT_ENCODING 'gzip,deflate' HTTP_CONNECTION 'close' HTTP_FROM 'googlebot(at)googlebot.com' HTTP_HOST 'thedatahub.org' HTTP_USER_AGENT 'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)' PATH_INFO '/feeds/group/welcome.atom' PATH_TRANSLATED '/etc/ckan/datahub/apache.wsgi/ja/feeds/group/welcome.atom' QUERY_STRING 'page=0' REMOTE_ADDR '127.0.0.1' REMOTE_PORT '33139' REQUEST_METHOD 'GET' REQUEST_URI '/ja/feeds/group/welcome.atom?page=0' SCRIPT_FILENAME '/etc/ckan/datahub/apache.wsgi' SERVER_ADDR '127.0.0.1' SERVER_ADMIN '[no address given]' SERVER_NAME 'thedatahub.org' SERVER_PORT '80' SERVER_PROTOCOL 'HTTP/1.0' SERVER_SIGNATURE '<address>Apache/2.2.22 (Ubuntu) Server at thedatahub.org Port 80</address>\n' SERVER_SOFTWARE 'Apache/2.2.22 (Ubuntu)' WSGI Variables application <beaker.middleware.CacheMiddleware object at 0x7f5312a51650> beaker.cache <beaker.cache.CacheManager object at 0x7f5312a51790> beaker.get_session <bound method SessionMiddleware._get_session of <beaker.middleware.SessionMiddleware object at 0x7f5312a516d0>> beaker.session {'_accessed_time': 1345016040.884951, '_creation_time': 1345016040.884951} mod_wsgi.application_group 'ckan.net|' mod_wsgi.callable_object 'application' mod_wsgi.handler_script '' mod_wsgi.input_chunked '0' mod_wsgi.listener_host '' mod_wsgi.listener_port '8080' mod_wsgi.process_group 'datahub' mod_wsgi.request_handler 'wsgi-script' mod_wsgi.script_reloading '1' mod_wsgi.version (3, 3) paste.cookies (<SimpleCookie: >, '') paste.parsed_dict_querystring (MultiDict([('page', '0')]), 'page=0') paste.parsed_querystring ([('page', '0')], 'page=0') paste.registry <paste.registry.Registry object at 0x7f5302eef7d0> paste.throw_errors True pylons.action_method <bound method FeedController.group of <ckan.controllers.feed.FeedController object at 0x7f52f0341750>> pylons.controller <ckan.controllers.feed.FeedController object at 0x7f52f0341750> pylons.environ_config {'session': 'beaker.session', 'cache': 'beaker.cache'} pylons.pylons <pylons.util.PylonsContext object at 0x7f52f0341450> pylons.routes_dict {'action': u'group', 'controller': u'feed', 'id': u'welcome'} repoze.who.logger <logging.Logger object at 0x7f53127b2b50> repoze.who.plugins {'openid': <OpenIdIdentificationPlugin 139994769488336>, 'friendlyform': <FriendlyFormPlugin 139994769488528>, 'ckan.lib.authenticator:UsernamePasswordAuthenticator': <ckan.lib.authenticator.UsernamePasswordAuthenticator object at 0x7f5312d893d0>, 'auth_tkt': <AuthTktCookiePlugin 139994771858704>, 'ckan.lib.authenticator:OpenIDAuthenticator': <ckan.lib.authenticator.OpenIDAuthenticator object at 0x7f5312d89350>} routes.route <routes.route.Route object at 0x7f5312961e90> routes.url <routes.util.URLGenerator object at 0x7f52f0341210> webob._parsed_query_vars (GET([('page', '0')]), 'page=0') webob.adhoc_attrs {'language': 'en-us'} wsgi process 'Multi process AND threads (?)' wsgi.file_wrapper <built-in method file_wrapper of mod_wsgi.Adapter object at 0x7f52ed4873f0> wsgi.version (1, 1) wsgiorg.routing_args (<routes.util.URLGenerator object at 0x7f52f0341210>, {'action': u'group', 'controller': u'feed', 'id': u'welcome'}) " 1345114696000000 1345124503000000 2879 enhancement ross ross ckan 2.0 closed wontfix Datasets (Package) should have a 'public' field "The Package model should have a boolean field added to it describing its visibility beyond that supplied via auth. The related permission for viewing packages where public is set to False would be package.view (show, whatever), and *never* visible for unauthenticated users." 1345466389000000 1350562096000000 29 enhancement rgrp rgrp milestone16 closed fixed Improve installation process " 1. install documentation (currently source:trunk/INSTALL is empty) 2. improve ckan-admin as necessary 3. create default data (such as licenses)" 1152553638000000 1183648166000000 32 enhancement rgrp rgrp v0.3 closed fixed View a tag "== As a == Visitor == I want to == View a tag's page which should list all packages associated with that tag (or link to a page containing that list). == Notes == * The tags should have a nice primary url such as /tag/<tag-name> (could also use the plural i.e. /tag/<tag-name>)" 1157375968000000 1185472746000000 33 enhancement rgrp rgrp v0.5 closed fixed List and search tags "== As a == Visitor == I want to == View a list of the tags on the system and search for a tag by name == Notes == * As for a search of packages should search for tags that contains a given search string (or could use a glob approach allowing wildcards)." 1157375983000000 1199788094000000 35 defect rgrp rgrp v0.4 closed fixed IP Address for non-logged in users is always 127.0.0.1 when deployed behind a proxy (e.g. on ckan.net) "When IP address is used to identify non-logged in users (for example on create and editing of packages) it is always 127.0.0.1 when using a reverse proxy (standard deployment configuration on a production machine and used e.g. on http://www.ckan.net). This could be corrected by using HTTP_X_FORWARDED_FOR when available." 1177006633000000 1185471537000000 36 enhancement rgrp rgrp v0.4 closed fixed Edit package page should support previews When editing a package one would like to be able to preview one's changes before saving. 1177007112000000 1185470035000000 37 enhancement rgrp rgrp v0.5 closed fixed Purge a Revision (i.e. purge all changes associated with that revision) "Spam entries have started to occur on ckan.net in the last few months. It would be useful to be able to purge these revisions -- that is permanently delete all changes to domain objects associated with those revision (one might also permanently delete that revision -- or alternatively simply mark it as purged). In addition to providing this facility from the shell it would also be useful to be able to do this from the web interface (with associated restrictions on usage via an authorization controller of some sort)." 1192650660000000 1199786536000000 38 enhancement rgrp rgrp v0.5 closed fixed Make data available in machine-usable form "Currently all data is only available via the web interface which makes it difficult to obtain in bulk. Data should be provided in other more convenient, machine usable forms: * DB Dump * JSON for each package page (maybe Atom as well)" 1194521614000000 1200903004000000 40 defect rgrp rgrp v0.5 closed fixed Reserved html characters (such as &) in urls mean package does not render for read view "A url such as: http://someurl.com/xyz?x=1&VERSION=1.1&Service=WFS when set as url or download_url breaks the rendering of the package with an error like: There was an error rendering the package: not well-formed (invalid token): line 1, column 181 Have checked that removing the & stuff makes the error go away so this looks like an issue with escaping urls when displaying them ..." 1195565228000000 1200993319000000 41 task rgrp rgrp v0.5 closed fixed Upgrade to Latest Version of Pylons (0.9.6.*) and Deploy on Production Machine Should do this sooner rather than later to avoid 'clear water' opening up and need to deploy then asap onto production machine to avoid 'clear water' between trunk and production (which then prevents pushing from trunk to production). 1199786854000000 1199787967000000 42 enhancement rgrp rgrp v0.6 closed fixed In WUI where List of Items to Display is Large Results should be Paged "= As A = Visitor = I Want To = View lists of items but not have too many on a page (as this leads to slow page loads and difficulty navigating the list). Where there are more items in the results of my action that can be fit on a single page the results should be 'paged' in some manner. = Details = Main place this issue arises: * List of tags * List of packages * Repository history (/revision) Should probably have no more than 50 (or so) items on a page. Obvious solution is for actions that return lists to have some kind of pageno parameter and then use this in controller to select what to display." 1199787162000000 1204133257000000 43 enhancement rgrp rgrp v0.10 closed fixed Generic Attributes for Packages "= As A = User = I Want To = Add arbitrary named attributes to packages (an attribute being a name, type, value triple). = Details = * We will do this using a dedicated (versioned) table associated to Package * Do we allow multiple attributes of the same name? * For the present: No (since we will key by attribute name) * Could allow for single attribute but with multiple values using json list ... * What types do we allow or do we just rely on JSON to take care of this? = Questions (Original) = * How complex is this to implement? * What would an arbitrary user be able to edit? Possibilities: 1. 'create new attribute' and setting the value (so name and type would be chosen from predefined list). 2. 'create', setting of name and value (but not type -- type already set in predefined list) * Could just use (machine) tags -- though this could be seen as a bit of a hack. * Would solve having to create special file/url attributes (though I think that perhaps file stuff is important enough to merit first class support in the domain model -- though, that said, since one won't want to have a file limit adding unlimited file support is very similar to unlimited attributes of arbitrary type)." 1199788109000000 1253709802000000 45 enhancement rgrp johnbywater v0.6 closed fixed Immunity to SQL injection attacks 1201110894000000 1204133342000000 46 enhancement rgrp johnbywater v0.9 closed fixed Return error documents that look and feel like normal CKAN pages 1201111018000000 1265891789000000 47 enhancement rgrp johnbywater v0.6 closed fixed Return OpenID signin pages that look and feel like normal pages 1201183920000000 1215543616000000 48 enhancement rgrp johnbywater ckan-v1.4-sprint-1 closed fixed Create favicon Because CKAN's worth it! 1201202789000000 1297077492000000 49 enhancement rgrp rgrp closed invalid Filter Spam in Changes to CKAN Data "= As A = sysadmin = I Want To = Have revisions to the CKAN data filtered in order to reduce the spam in the system. = Details = In the long run this is a quite a generic problem common across several OKF systems and probably can become a general component in the okfmisc repo. For time being focus on a well-factored CKAN-specific solution. Suggest we follow path of trac: http://trac.edgewall.org/wiki/SpamFilter Could have a general engine that aggregates spam scores from many different 'plugins' and then marks spam appropriately (actions should be configurable depending on spam level from 'purge' to 'delete' (mark revision as inactive) to 'flag' to 'do nothing'). Main initial plugins would be: * regex filter (this would seem very useful here, e.g. do not allow urls in commit messages ...) * could augment using the badcontent list approach (can find list on e.g. moinmoin) * spambayes and/or akismet" 1204134691000000 1257244973000000 50 task rgrp rgrp closed fixed Investigate apt-get in more detail "Research apt-get especially wajig and python wrappers for apt-get. Post results on the wiki. " 1215456052000000 1267648356000000 51 enhancement rgrp rgrp v0.7 closed fixed Upgrade CKAN to use sqlalchemy and vdm v0.2 "Move CKAN codebase to use sqlalchemy (rather than sqlobject) along with vdm v0.2. NB: the upgrade itself should not be too hard, the work will be in providing a satisfactory migration script to convert existing data on ckan.net service." 1220900438000000 1223908230000000 52 enhancement rgrp rgrp v0.7 closed invalid Paginated results sets should be customizable across domain objects " 1. Tag results could/should show number of associated packages 2. Package results should show title (and be in list) 3. Pagination should be able to be applied to other result sets than simply register listing (e.g. search results ...) 4. Revisions should be listed in a table with full details" 1223549648000000 1223908425000000 53 enhancement rgrp rgrp v0.8 closed fixed View Information about Package history (i.e. package revisions) "= As A = Visitor/User = I want to = View information about a package history, i.e. what revisions it has. = Details = * History info should be available at package/history/pkg-name * Most basic info is just info from revision (when it occurred, author etc) * More sophisticated would be to have diff support to see differences between revisions" 1223552139000000 1239133021000000 55 enhancement rgrp rgrp v0.7 closed fixed Code to migrate data from v0.6 to v0.7 using dump and load "Associated to ticket:51 (upgrade CKAN to new vdm) and ticket:54 (dump/load) need to convert v0.6 data for v0.7. Obvious way to do this is via alteration to data load method." 1223908240000000 1223909891000000 56 enhancement rgrp rgrp v0.8 closed fixed Show icons indicating package openness "== As A == User or Visitor == I Want To == See simple icons (e.g. tick/cross) next to packages (in lists or on main page) indicating openness status of package. == So That == It is easy to see the openness status of a package. == Details == * Suggested by Liz Turner * Openness = open license at present (no easy way to determine whether accessible) * Have separate tick for downloadability (i.e. existence of download url) * Could do more stuff in future (e.g. money where tag price- exists, etc etc)" 1230211123000000 1239018857000000 57 enhancement rgrp rgrp v0.8 closed fixed Basic datapkg integration with CKAN "Using datapkg a user can: * list packages on CKAN * get info about package on CKAN * register and update a package on CKAN " 1238750826000000 1239018717000000 58 enhancement rgrp rgrp v0.9 closed fixed Make bookmarklet to enable easy package registration on CKAN "Make bookmarklet to enable easy package registration on CKAN == Details == 1. This requires redoing web interface to allow 1-step package creation/editing (as opposed to name then everything else approach at the moment)" 1239018517000000 1239974365000000 60 enhancement rgrp rgrp v0.9 closed fixed Front page usability improvements "1. List in sidebar 3 latest created/updated packages. 2. Put package search box on front page (might also want to move some of front page content into an about page). 3. Similarly might want package creation box on front page." 1239094266000000 1246434921000000 61 enhancement rgrp rgrp v0.10 closed fixed When dumping data to json do not dump private information like API keys Cost: 1h 1239123529000000 1265890790000000 63 defect rgrp rgrp v0.9 closed fixed Purge is broken after upgrade of vdm "Since we upgraded to new vdm (v0.4) which has built in purge support existing purge support looks to be broken. Should be reasonably easy to fix this. Cost: 1h" 1245148623000000 1245656000000000 64 enhancement rgrp rgrp v0.10 closed fixed Switch to repoze.who for authentication "Switch to repoze.who + openid plugin for authentication from authkit. Already did this in microfacts so should be fairly easy." 1245168853000000 1246127063000000 65 enhancement rgrp rgrp v0.9 closed fixed Add version attribute to package "It is essential packages have a version attribute to assist in tracking releases etc (and to allow compatibility with other packaging systems e.g. distutils which is being used by datapkg). cost: 2h" 1245262864000000 1246434569000000 66 enhancement rgrp rgrp v0.10 closed fixed Improve user account UI "1. Link at top should say ""Your Account"" when you are logged in * when not logged in should say: ""Log in via openid"" * Open Id info on /account/ should move to /account/login/ or be deleted * Going to /account/ when not logged in should redirect to /account/login/ 2. When logged in the basic account index page should not give generic information but should reflect fact you are logged in by: * Saying something like: ""You are logged in as: ..."" * Showing your apikey or a link to apikey * Giving you a logout link We can think of a bunch of other stuff that could go on their (recent edits, packages you own etc) but these will be separate tickets." 1245263685000000 1250785405000000 67 enhancement rgrp rgrp v0.10 closed fixed List all of a user's recent edits on their home page "Additional feature related to ticket:66. cost: 2h" 1245263731000000 1250785122000000 68 enhancement rgrp rgrp v0.9 closed fixed Show affected packages in revision list view "When listing revisions (at /revision/ or in atom feed) show affected packages. Minor but v. useful UI improvement. Cost: 1h" 1245656153000000 1245697554000000 69 enhancement rgrp rgrp v0.9 closed fixed Change to text-only license field and use external license repo "Switch from license domain object to a simple license field and use license list from new centralised license repo: <http://knowledgeforge.net/okfn/licenses/> * This will '''require''' a migration Cost: 4h (plus migration ...)" 1245687449000000 1246437494000000 70 enhancement rgrp rgrp v0.9 closed fixed Convert from py.test to nosetests Cost: 1h 1246434753000000 1247827053000000 71 enhancement rgrp rgrp v0.10 closed fixed Upgrade to Pylons 0.9.7 Cost: 2h 1246435041000000 1250181211000000 72 enhancement rgrp rgrp v0.10 closed fixed Integrate new logo "Integrate new logo from http://wiki.okfn.org/ckan/logo into site: * In title Also can do favicon (separate ticket:48) Cost: 1h" 1246441021000000 1251451954000000 73 enhancement rgrp rgrp closed invalid Put enquiry template in db so it can be edited by admins "Currently stored in the python controller file. This is not the right place and putting it in db will allow editing by admins. May also want to do this for the footer (also in the controller file). Details: * Will need to create a new domain object/db table. Suggest called miscellaneous and consist of key value pairs utilizing JSON type for values. Cost: 2h." 1247705786000000 1266510385000000 78 enhancement rgrp rgrp ckan-sprint-2011-10-28 closed fixed Extend login cookie lifetime "When you login you get given a cookie but it is very short (life of your browser session I think). Work out how to extend to something reasonable (30 days or perhaps forever with logout unsetting cookie). 1. A quick investigation to see whether this is possible 2. If possible do it Cost: ?" 1247829310000000 1314877169000000 81 enhancement rgrp rgrp vdm-0.7 closed fixed Support for sqlalchemy 0.5 1248285433000000 1268487327000000 82 enhancement rgrp rgrp closed fixed Support diffing of versioned objects "Should have function/facility to get a diff of a version object between 2 revisions. Function should return a dictionary of fields with diffs. Details: * Do we deal with m2m relationships (and m2one on the many side)? * What is diff? * For text fields output of python diff command * For non-text field guess just simple +/- for what was there before and now Cost: 4h (don't think this is a huge request)" 1248289499000000 1256565441000000 83 enhancement rgrp rgrp vdm-0.6 closed fixed "Allow ""ignored"" fields on versioned objects" "Allow 'ignored' fields on versioned objects (i.e. attributes which are not 'versioned'). This is not hard to do as we already have most of the necessary mechanisms set up in the Revisioner object. Cost: 2h " 1248339384000000 1267648301000000 85 enhancement rgrp rgrp closed fixed Convert state from an object to an enumeration "No real benefit of having State object as opposed to a simple text field with enumerated values and this second option is both simpler and more flexible. Main hassle here is that it requires migration in all projects that use vdm. If we're going to do this we should do it sooner rather than later. Cost: 2h (+ 1h for a conversion method)" 1248339662000000 1263206391000000 86 enhancement rgrp rgrp closed fixed Support for stateful dict-like collections "Already support stateful list-like collections and should extend this to dict-like collections. (This is prerequisite for implementing versioned ""extra"" (key/value) attributes on packages in CKAN and elsewhere)." 1248430798000000 1249050202000000 87 enhancement rgrp rgrp closed duplicate Multiple download links Multiple download links, including links to mirrors and multiple formats/versions 1248693302000000 1258470719000000 88 enhancement rgrp rgrp v0.11 closed fixed Download (link) metadata "Support for download metadata (file size, file formats, version information). See also: ticket:87 (multiple download links)" 1248693385000000 1265891491000000 92 enhancement rgrp rgrp closed wontfix Add RDFa to package pages 1249049927000000 1297344859000000 93 enhancement rgrp rgrp v0.10 closed fixed Access control for packages "Should be able to limit ability to a user's ability to do things with packages (read, edit etc). This is a big ticket (it may required splitting) and full details are in separate wiki page: AccessControl. Cost: 8d " 1249055049000000 1253613274000000 95 enhancement rgrp rgrp closed fixed Add manifest support "Support for listing files (manifest) contained within a package. Traditional manifests just list the files. Suggest in addition we have support for optional metadata in form of key, value pairs." 1249981842000000 1251454716000000 96 defect rgrp rgrp closed invalid info command must give up to date information for python-type distributions "(2008-09-10) at present when setup.py is edited info command may not give up to date information if pkg-info (in egg.info) is not rebuilt. Suggest: info command needs to rebuilds pkg-info in python-type distributions. " 1249982410000000 1311176063000000 97 enhancement rgrp rgrp closed duplicate Do not create a distribution on a path is something already exists there "(2009-03-09) Do not create a distribution at path X if path X already exists and contains material (unless forced via a force option). Cost: 1h" 1249983557000000 1318181317000000 98 enhancement rgrp rgrp datapkg-0.7 closed fixed Replace use of pastescript templates in PythonDistribution with of something simpler "Replace use of pastescript templates in PythonDistribution (write) with of something simpler (allowing us to remove dependency on pastescript). " 1249983810000000 1297210774000000 99 enhancement rgrp rgrp closed wontfix Test DbIndex with sqla 0.5 "Test DbIndex with sqla 0.5 (and get it working if it does not work). Cost: ?? Priority: low because DbIndex is not currently that important to us (also wonder whether we should try using CKAN code here to stop us reinventing the wheel). " 1249985537000000 1297081088000000 100 enhancement rgrp rgrp closed fixed Convert existing data on disk to a datapkg distribution "(2008-10-29) convert existing directory on disk to a datapkg distribution (PythonDistribution by default). This would be presented in the CLI as a convert command. Details: * Add a metadata file (setup.py), perhaps prompting for input * List all existing data in that directory Cost: 4h " 1249986628000000 1318181227000000 101 enhancement rgrp rgrp closed fixed (Improved) Download support " 1. Given a url download from that url to disk 2. Given a package use download url to download to disk Once on disk should uncompress (if necessary). == Details == * Should download either to tmp directory (defaulted in config) or a specified path on disk * In download would like to support as many types of target urls as possible: 1. Single files (usually compressed filesets but could be individual files) 2. Index pages listing files to download 3. Revision control repositories 4. ... This will obviously be a significant amount of work. Suggest: 1. Start off just supporting the first option. 2. Have something like a plugin system to handle new target types 3. Reuse existing work (e.g. easy_install and pip handle standard vcs such as svn, hg, git etc) Cost: 1d " 1249988866000000 1267648607000000 102 enhancement rgrp rgrp closed fixed Switch to using UUIDs for revision ids "This is better for long term sustainability, especially if we want to ""push and pull"" from unrelated repositories in the future. Details: * May wish to retain a number field updated in the usual incremental way (what's the cost/benefit here?)" 1250068175000000 1260285104000000 104 enhancement rgrp rgrp closed fixed View a package at a given version "As a user i want to see a package at ""version"" X (NB: not revision X). * When I visit e.g. /package/read/xyz?version=0.7 I should be shown package at version 0.7 (or a message saying no such version) * Implementation: * Find revision for this version (search revision history for when version field was last 0.7) * Show pacakge at that revision (as in ticket:103) * On history page also shows versions in list of revisions associated with the package " 1251292672000000 1311181303000000 107 enhancement rgrp rgrp closed invalid Provide information about uploading material "Often people who are registering resources want to make the associated material available. We should: * Provide a dedicated upload page giving instructions as to upload process 1. Explain we don't store the data itself on CKAN. Suggest uploading to a store somewhere and then linking using download_url (that is its purpose) 2. Upload to * Talis CC for RDF * archive.org * grid.okfn.org * link to this page from next to download_url item on new package page In long run (now ticket:186) we may automate this by providing a ckan upload facility which caches the data and then reuploads it to relevant service (disadvantage is ""we"" are the owner of the data on that service ...)" 1251466274000000 1296341644000000 109 enhancement rgrp dread closed fixed Tag search in the REST API "Similar to ticket:108 but for tags: /api/search/tag?q For tags search is extremely simple since you can only search by name. == Possible Extras == * Allow ""exotic"" ordering of results e.g. ordering by number of packages with that tag. * Return this number with tag list." 1251976297000000 1291829457000000 111 enhancement rgrp dread v0.10 closed fixed Create user object "Object properties: * id (uuid) * apikey (uuid) -- migrated from the apikey table * name (username = openid) /account is being renamed to /user in the wui." 1252315994000000 1252331626000000 112 enhancement rgrp dread v0.11 closed wontfix Test db schema created via migration scripts "'paster db upgrade' should result in the same database as 'paster db create' on a clean system. In particular, all tests should pass. Note: equivalent of paster db upgrade isn't being run from tests at the moment (we haven't been able to get this to work)." 1252316495000000 1265294069000000 124 enhancement rgrp rgrp v1.0 closed fixed Display Generic Package Attributes in WUI Split out from ticket:43 1253709702000000 1254735558000000 129 enhancement rgrp dread ckan-backlog closed invalid Secure db access by channelling query generation through authz module "Controllers and templates should not access db objects directly - they should do all access via authz module giving username. They are handed by a query that has already been filtered by the packages they are authorized to read. (Additional idea to be discussed: When they request a package object, they are handed an copy of the db object - disconnected from the database - so it the db object can't be changed.) A couple of tests can be reenabled when this is done: ckan.tests.functional.test_authz.TestUsage.test_admin_list_deleted ckan.tests.functional.test_authz.TestUsage.test_search_deleted" 1253886136000000 1267719162000000 132 defect rgrp dread closed fixed Security hole - read package/group list (REST) "Using REST interface you can list packages and groups without authorization being checked. Can be fixed using more advanced query to check authz." 1254389493000000 1273254514000000 133 defect rgrp dread closed fixed Security hole - search package/group (WUI & REST) "Using WUI or REST interface you can search packages and groups without authorization being checked. On the REST interface you can also read all the attributes of the packages using the 'all-fields' option. Can be fixed using more advanced query to check authz. " 1254390168000000 1273253977000000 134 defect rgrp dread v0.11 closed fixed admin interface is only available to sysadmins 1254735314000000 1255430998000000 135 enhancement rgrp dread v0.11 closed fixed sysadmins defined in the db 1254735368000000 1265293940000000 136 enhancement rgrp dread v0.11 closed fixed User has publicly viewable page "A user's 'home page' is at: user/<user.id> e.g. user/28394723982-03849472 Step 1: * Current user home page with recent edits Step 2: Readonly * Number of edits * Number of Packages they are admin of How do we do a nicer URL for the home page - can we use their openid login? Follow on tickets: ticket:138 and ticket:142" 1254741650000000 1255169466000000 137 enhancement rgrp dread closed duplicate User has editable home page " * Generic text box for markdown about the user 'About' Model's user table reflects these: * 'about' attribute " 1254741703000000 1254741830000000 138 enhancement rgrp dread v1.0 closed fixed User has editable home page " * Generic text box for markdown about the user 'About' Model's user table reflects these: * 'about' attribute * 'created' attribute is a default=datetime.now() - so when user was created Need edit page for this. Only user should be able to edit it. Follows on from ticket:136 and ticket:142 Cost: 2h" 1254741789000000 1258466074000000 139 defect rgrp rgrp v0.11 closed worksforme Ensure you cannot add same tag twice to a package "Seems some package have ended up with same tag twice: http://www.ckan.net/package/fred2dot0 Check whether this is still possible and if it is fix it ... Cost: 2h" 1254768552000000 1255188974000000 144 enhancement rgrp dread v0.11 closed duplicate Most popular packages listed on homepage "Based on number of views. Related to ticket:143." 1255010391000000 1265284457000000 145 enhancement rgrp dread v0.11 closed fixed Group shows its administrators When viewing a group you see a list of the users who have admin rights to it. (Akin to owners / moderators) 1255010403000000 1265294041000000 154 enhancement rgrp dread v0.11 closed wontfix Package form guidance "Give guidance on what to put in 'author' and 'maintainer' fields (e.g. name? URL?) Suggestion from Jonathan Gray" 1255621572000000 1257535066000000 163 enhancement rgrp dread v0.11 closed fixed Regularly put CKAN RDF on Talis CC "Related to: ticket:90 Link to RDF version of CKAN data on Talis Connected Commons ticket:164 Creating RDF data from CKAN Regularly re-upload the CKAN RDF data to Talis CC. In the long run may wish to only re-convert packages changed since the last upload. However given relatively smaller size of full dataset this optimization is probably not yet required. Cost: ? (1d+ depending on e.g. how easy integration with Talis CC is) " 1256052587000000 1265891374000000 165 enhancement rgrp dread closed invalid Use 'tag:' instead of 'tags:' for wui package search "Because people might try and do ""tags:gov sweden"" when ""tag:gov sweden"" makes more sense (sweden is searched for in all fields in these cases). But in REST i/f search allow ""tag""=""gov"" OR ""tags""=""gov sweden"" in parameters." 1256200526000000 1311181391000000 168 enhancement rgrp dread closed duplicate Show admins for a group in group view 1256291481000000 1257414795000000 170 enhancement rgrp dread v0.11 closed fixed Paginate search results "e.g. http://www.ckan.net/package/search?q=science&search=Search+Packages+%C2%BB Results are capped at 20, but can't see past first page." 1256313584000000 1265891157000000 171 enhancement rgrp rgrp datapkg-0.7 closed fixed Create consolidated config for CLI Create consolidated set of config by merging config from .datapkgrc and command line options and use that instead of mixture of command line options and other stuff ... (likely to be less buggy!) 1256488011000000 1297210925000000 172 enhancement rgrp rgrp v0.11 closed fixed Build ckan documentation using sphinx and upload "Use python sphinx to build documenation in ./doc and then upload it somewhere publicly accessible. NB: improving the documentation is another matter (as is integrating e.g. existing api docs). Upload location (these are docs for CKAN codebase/concept not the ckan service at ckan.net so good not to associate it too closely with ckan.net): * http://knowledgeforge.net/ckan/ckan/doc/ * (Other options: http://www.ckan.net/doc/ http://doc.ckan.net) " 1256489019000000 1257532331000000 173 enhancement rgrp dread v0.11 closed fixed Diffing WUI "Use vdm diff functionality (see ticket:82) to implement diffing of packages between versions in WUI. In package history you should be able to select to revisions and show the diff. Estimated cost: 12h" 1256565412000000 1265293968000000 174 defect rgrp dread v0.11 closed fixed Packages search broken for 'only openly licensed' "the ""only openly licensed packages"" tick box seems to return blank page every time - as do queries for only openly licensed and only downloadable packages. The ""only downloadable packages"" tick box by itself seems to work fine. E.g. try searching for 'science'. Raised by Jonathan Gray" 1256650867000000 1265891093000000 175 enhancement rgrp dread v0.11 closed fixed Creation date "'created' attribute on User, Group and Rating datetime object: default=datetime.datetime.now() See example on revision Requires migrate script" 1256754070000000 1265291037000000 177 enhancement rgrp dread closed invalid Service documentation "This is docs for users of a CKAN service (e.g. ckan.net), as opposed to someone installing / administering the software. (The latter has docs on knowledgeforge. Editability - wiki?" 1257243285000000 1273050236000000 178 enhancement rgrp dread v0.11 closed fixed Excel package importer "/tool New 'tools' section of the WUI with 'Excel package import' page. /tool/import Import page allows you to upload a file. The format of the required Excel file is described here. List of licenses provided for copy&paste. /tool/import/preview When you upload it, it gives you a simple preview of the file, offering import. Text as per Package Preview. 'import button' for completing process. File format: First row to have a cell value of 'name' or 'title' in it is the Title Row. It contains the field names, as per package. It includes: * license - name of license * tags - space separated * groups - space separated * anything - for extra key-values When importing, values are bound into the package fieldset, validated and displayed for the preview and synced to complete. User has to log in to use importer. Auth is checked for putting into groups." 1257244034000000 1265305558000000 180 enhancement rgrp jwyg v0.11 closed duplicate Tag cloud as way to view CKAN tags Create big tag cloud with all CKAN tags - perhaps weighting with size and colour... 1257534254000000 1265284374000000 181 enhancement rgrp jwyg closed invalid New 'stats' box on right hand sidebar "With up to date statistics such as: * total packages * total tags * total users * most active users * last update * etc. Could also be nice to have a more dedicated stats page - with information such as graphs showing rate of packages being added and such like. See ticket:184" 1257534385000000 1296339510000000 183 enhancement rgrp rgrp closed worksforme Browse packages by rating At moment order packages by title. 1257534606000000 1290604779000000 185 enhancement rgrp dread closed invalid Package form field hiding "Make parts of the package form hidden by default, to make it look simpler. Users are invited to click a button to reveal the less important fields. Fields hidden by default: version, author, author_email, maintainer, maintainer_email" 1257763437000000 1291830039000000 186 enhancement rgrp rgrp closed duplicate Automated upload to archive.org s3 "(Follows on from ticket:107). We want to provide facility for users to automatically upload material. * Create an upload page * Store the material on archive.org using s3 - http://www.archive.org/help/abouts3.txt * Main issue is how we cache large datasets ..." 1257803430000000 1296341182000000 187 enhancement rgrp rgrp v0.11 closed fixed Full-text search "Standard search should search notes field in addition to name, title and tags (discussed in ticket:108 but not done). For this to work we need proper text search since o/w we get poor ordering and lots of bad results. If we do this we need: 1. To weight across fields in a sensible way 2. We can also use proper text search on title or ... Easiest way to do this is to use existing facilities in dbs e.g. postgres has full text support since 8.3: http://www.postgresql.org/docs/8.3/static/textsearch.html Using this with sqlalchemy: http://lowmanio.co.uk/blog/entries/postgresql-full-text-search-and-sqlalchemy/ Issues with fulltext search: * tags not indexed, so would need to 'or' search of tags. This would cause problems with the order_by of the query, since the tags wouldn't have a ranking. * if tags are indexed then perhaps we don't want them converted into lexemes? Exact match could well be better. * can we split the name on dash or underscore before being indexed? * natural language search doesn't do partial words, so search for 'gov' doesn't bring up 'government'. * do we keep the existing search system usable with a config file switch for if we install on a db aside from postgres? * we want to weight name and title higher than other fields - achievable with custom trigger." 1257869950000000 1265892403000000 188 enhancement rgrp rgrp v0.11 closed duplicate Improve package listing views "Propose change to tabular-like format showing these attributes (perhaps should be configurable?) * Openness status * Title (not sure name is needed) * Tags Cost: 4h" 1257870031000000 1265294090000000 192 enhancement rgrp dread closed fixed Time-related package field "Cost - 2 days The time period to which a package's data applies is stored in a new field called 'Relevant Date Range'. The value of this field is up to two calendar dates: i.e. either a point in time (e.g. date of a river map is 5/10/09) or a time period (e.g. pollution measurements 1/1/09-1/4/09). Example part of package: '''Date:''' 5/10/09 [[br]] or [[br]] '''Date:''' 1/1/09 – 1/4/09" 1258388163000000 1291733895000000 193 enhancement rgrp dread closed wontfix Searching by time-related field "Cost - 2 days Search interface has new options to filter and sort the results by the time-related field of the package. Search options are included in both Web UI and Search API. The filter specifies a range of dates. The results can be sorted by ascending or descending dates. The last modification date is surfaced in the package. Need to decide for a time-related field value that is date range, what date is used for the search. Example search parameters: || reldate-range=5/4/09- || Exclude packages related to earlier than 5/4/09 || || reldate-range=5/4/09-5/12/09 || Exclude packages related to date outside of 5/4/09-5/12/09 || || order_by=reldate || Sort by date package is related to. Defaults to newest first. || || order_by=reldate-newest || Sort by date package is related to, newest first. || || order_by=reldate-oldest || Sort by date package is related to, oldest first. || Related to ticket:192" 1258388169000000 1340626463000000 194 defect rgrp dread v0.11 closed fixed Check star ratings aren't influenced by search engine crawlers rel=nofollow or robots.txt ? 1258471512000000 1265284389000000 195 enhancement rgrp rgrp v0.11 closed fixed Association listings should be alphabetically sorted (e.g. a group's packages) "Where an item has an association listing (e.g. package's tags or group's packages) these should be sorted in a sensible way. For present choose to sort alphabetically by name. Cost: 2h" 1258475448000000 1258585500000000 198 enhancement rgrp dread closed fixed Change package and tag ids to uuids "See how we did it already for other things. Note: on ckan.net older PackageRevision.id might not be identical to Package.id but this may need sorting at this point." 1258980613000000 1266837606000000 199 defect rgrp casbon closed fixed Fix failing tests and provide documentation on how to run tests in datapkg "As of 80:099bdc5b07a6 datapkg has 4 test fails and 1 test error. There is no documentation on how to run them, so I am using 'python setup.py test'. {{{ datapkg.tests.test_cli.TestCLI.test_ckan ... FAIL datapkg.tests.test_cli.TestCLI.test_walkthrough ... FAIL datapkg.tests.test_index.TestDbIndex.test_get ... /Users/james/Documents/virtualenvs/okfn/src/datapkg/datapkg/index.py:97: SADeprecationWarning: Use session.add() self.session.update(pkg) FAIL datapkg.tests.test_index.TestDbIndex.test_get_when_loaded_as_new_and_init_not_called ... /Users/james/Documents/virtualenvs/okfn/src/datapkg/datapkg/tests/test_index.py:57: SADeprecationWarning: Use session.expunge_all() self.index.session.clear() FAIL }}} " 1259087361000000 1267649255000000 200 defect rgrp rgrp closed invalid PythonDistribution write method should write all available metadata Current write method just creates a bare bones package and does not write any of the available metadata other than name. 1259229583000000 1311176118000000 201 enhancement rgrp dread v1.0 closed fixed Stress test ckan "Check: * high numbers of simultaneous users * incomplete transactions * etc." 1259844836000000 1265284419000000 205 enhancement rgrp dread closed wontfix Custom package importer "Importer function is exposed to logged in users. Alongside specifying file to import, user chooses between 'form schemas' - 'basic' and 'government'. * Basic is as it is currently * Government form has pre-defined Extra fields, careful validation of lots of fields, code formats/processes some field data for storage. e.g. searching for tag keywords. All fields should be in step with the government custom input form. For fields which have suggested values but the user can input his own value, this is achieved in the spreadsheet with two columns - the first being a drop-down and the second free text. Estimate: " 1260197819000000 1297068450000000 209 enhancement rgrp rgrp closed fixed Validate email address when creating an enquiry p:wui 2009-09-09 validate email address when creating an enquiry 1260288671000000 1260288728000000 212 enhancement rgrp rgrp v0.11 closed fixed "Switch to using m.okfn.org ""kforge"" media (css and behaviour)" "We are already using standard kforge css though copied locally and with a few modifications. We should switch to using common copy on m.okfn.org. Some work will be required to factor out any changes we have made. Cost: 2h" 1260703728000000 1260703969000000 215 enhancement rgrp dread v1.0 closed fixed UI Review - Home page " * 'Login via OpenID' -> 'Login with OpenID'? * Elements: * Search * about CKAN * 3 column Packages view (see ticket:219) * Small tag cloud (RHS) Also, what about ticket:143 ?" 1260879732000000 1266513523000000 225 enhancement rgrp dread closed invalid UI Review - swap URL order "Not so keen on URLS such as /package/edit/mypackagename. These seem to be task-oriented rather than resource oriented (which would be /package/mypackagename/edit), and unstable: there is a common root for /package/edit/mypackage and /package/history/mypackage which is not reflected in the URL structure. " 1260880487000000 1311178276000000 228 enhancement rgrp rgrp closed duplicate Deal with duplicate packages This needs to be thought out ... 1262085763000000 1290596875000000 232 enhancement rgrp rgrp closed invalid Add strapline to CKAN logo "Strapline (?): Sharing, discovery and reuse of data and content Need to consult on this. Cost: 1h" 1262975291000000 1297246297000000 233 enhancement rgrp rgrp v1.1 closed fixed Allow simple site-specific customization/overriding of templates "Options: 1. Allow for specification of genshi template paths to search in config. This way people can introduce their own templates and these templates can selectively override existing templates. (Already implemented this in shakespeare and it works) 1. Include an extra site-specific genshi template which can then be used to customize site (e.g. by having specific calls to py:def that user can define but which are ignored if they don't exist). Can do this using: <xi:include href=""base.html""><xi:fallback /></xi:include>" 1263000396000000 1273080352000000 241 defect rgrp dread v1.0 closed fixed License doesn't preview correctly 4 failing tests, including 2 in misc/package_saver and 2 in functional/test_package. 1265625546000000 1270569769000000 243 defect rgrp dread closed worksforme Repetition of number of packages in a group "http://ckan.net/group/publicdomain has: ""There is 16 package in this group. There are 16 packages in this group.""" 1265750250000000 1266837796000000 244 defect rgrp dread closed fixed Several links preceded by link URL "e.g. Text on ckan.net home page: ""All material available under an /licenseopen license"" Also seen on the package edit page: ""/user/loginClick here to sign in"" I believe this is due to the i18n additions from Benoit. Maybe needs new Genshi. Maybe best to work round in the meantime." 1265750419000000 1271248968000000 245 enhancement rgrp rgrp closed duplicate Support for composite primary keys "Problem here is that foreign key then becomes ""complicated"" (composite). * Could also deprecate continuity_id field in favour of the basic foreign key on ie" 1265882630000000 1297066620000000 246 enhancement rgrp rgrp closed duplicate Support for primary key not named id At the moment setting of continuity_id depends on base table pkcol being id. Should not be hard to change this -- and may get for free as part of ticket:245 (composite primary keys) 1265882862000000 1297066757000000 249 enhancement rgrp dread closed invalid Regex search "Search of package name and title (and other fields) using regular expressions. Current example use-case: Wanting to specify packages with title beginning with 'B'. Issues: * Syntax for specifying regex over natural language search - could it be contained in the q param so be available to users of the WUI, or do we simply make it alternative fields? Implementation: * Postgres reg ex searching detailed here: http://www.postgresql.org/docs/current/static/functions-matching.html#FUNCTIONS-POSIX-TABLE" 1265994509000000 1311182450000000 258 enhancement rgrp dread v1.0 closed fixed Add uuids into package in REST Add uuids into package in REST interface. 1266954722000000 1273596163000000 259 defect rgrp dread v1.0 closed fixed isitopen enquiry broken "Pressing the 'make an enquiry' link on the package read page gives 404. (Also links should also be changed from isitopen.ckan.net to isitopendata.org) Example link is: http://isitopen.ckan.net/enquiry/create/?ckan_package=zeno which gets forwarded to: http://www.isitopendata.org/enquiry/create/?ckan_package=zeno which gives 404" 1267012666000000 1273596153000000 262 enhancement rgrp rgrp closed fixed Mark package as duplicate of another package "Need a way to mark packages as duplicate. Ideas/Questions: * Could work off a tag (meta-duplicate or somesuch) * What happens if we want to delete the package (to we leave a place-holder, do we merge content?) " 1267139682000000 1296468392000000 268 defect rgrp dread closed duplicate Select groups in Package edit form 1268068896000000 1285070682000000 269 enhancement rgrp dread closed fixed Improve gov package form "If the notes field could use a WYSIWYG editor with word cleanup this would really help users who may well be pasting in text from Word (and I guess may have been approved or written by someone else) having auto-complete on tags would both make the system easier to use - and reduce the risk of synonymous tags being created inadvertently. Does the department drop down options list interact with user permissions - so that users who only have rights to one department only see that option ? Similarly for licenses - can this reduce to the set of allowed options for this user/ What level of validation is there on the fields?" 1268220853000000 1291897538000000 272 enhancement rgrp rgrp closed fixed Atom/RSS feeds for individual tags and groups "I want to be able to easily check when a package is added (or removed?) from a given tag or groups. To do this I would like access to an Atom/RSS feed for a given tag or group. * This would allow people to embed feed widgets in other places" 1268988652000000 1340631775000000 274 defect rgrp rgrp closed fixed Allow searching by any extra field "At the moment only support a very limited set of extra fields (see docs for details). Should support arbitrary extra fields (note no need to put these in special full text index though ...) Cost: 1h" 1269034562000000 1287402800000000 283 enhancement rgrp dread closed wontfix Manage deletions of unwanted packages "== Use case == As a user I want to notify the CKAN admins of a spammed or unsuitable package for deletion. == Suggested solution == In the package view side-bar, there is a note: ""To have this package completely removed, contact the [ca.ckan.net administrators admin@ca.ckan.net]."" == Other solutions == A more complicated solution would be to allow packages to be tagged for deletion, which would auto-alert administrators, and allow easier administration of this. But this might be overkill. c.f. http://en.wikipedia.org/wiki/Deleting_an_article" 1270660210000000 1311325526000000 289 enhancement rgrp dread v1.0 closed fixed Document config options 1271248690000000 1271249368000000 291 defect rgrp dread closed worksforme Investigate search options encoding "On ckan.net there is this unchecked-in 'temporary hack'. It seems to be to do with foreign characters in search options. See what its doing and if necessary, put check it in. {{{ diff -r 813ad8b5de0b ckan/lib/search.py --- a/ckan/lib/search.py Mon Mar 01 22:23:36 2010 +0100 +++ b/ckan/lib/search.py Thu Apr 15 19:11:42 2010 +0200 @@ -63,6 +63,9 @@ def query(self, options): '''For the given search options, returns a query object.''' self._options = options + # temporary hack! + if self._options.q: + self._options.q = self._options.q.encode('utf8') general_terms, field_specific_terms = self._parse_query_string() if not general_terms and \ }}} " 1271351670000000 1273254895000000 300 defect rgrp dread v1.0 closed fixed Resource ordering issue "Failing test: ckan.tests.models.test_resource.TestResourceLifecycle.test_03_reorder_resources Not clear how visible this is to the user. Related to ticket:292" 1272285994000000 1272384474000000 306 enhancement rgrp rgrp closed duplicate datapkg build command "Need to be able to build a distribution. Need: * new 'build' command * specify distribution format. Suggest at the moment a simple zip or tar.gz build in most straightforward way form distribution. " 1272474212000000 1318181194000000 307 defect rgrp rgrp datapkg-0.7 closed fixed datapkg upload command "Support uploading a distribution somewhere. * New cli command: upload * Pluggable uploader framework. Suggest initial support Depends on ticket:306" 1272474224000000 1288027815000000 308 enhancement rgrp rgrp closed duplicate Autocomplete package names & tags in package search "Extracted from ticket:216. Dubious of its merit." 1273050549000000 1275302577000000 312 defect rgrp dread closed invalid Race condition creating PackageRating "On ckan.net there are a few packages which cause a 403 exception when you try to rate them: http://www.ckan.net/package/rate/coins-data?rating=3 The exception is occuring here: ckan.rating:39 in set_rating rating_obj = rating_query.one() InvalidRequestError: Multiple rows returned for one() It looks like this package got rated twice in quick succession, creating two similar PackageRating objects. This race condition needs to be solved and these particular rating objects repaired." 1273482785000000 1311176173000000 313 enhancement rgrp dread v1.1 closed fixed Allow packages to be specified by IDs in REST interface "If a package name changes, a simple CKAN client may not be aware of this (not monitoring the push notifications, revisions or feed), so it is preferable to refer to the package by its (invariant) ID. It is still useful to refer to a package by its name though, so both should be valid arguments in the REST interface. " 1273606248000000 1275404524000000 316 defect rgrp dread closed fixed Search URL escaping "If you search for unescaped characters such as '`' (backtick) in the URL in Chrome then you get a 500 error. e.g. http://www.ckan.net/package/search?q=fjdkf2B%C2%B4gfhgfkgf{gpk fjdkf2B´gfhgfkgf{gpk returns this exception: {{{ URL: http://www.ckan.net/package/search?q=fjdkf%2B%C2%B4gfhgfkgf%7Bg%C2%B4pk&search=Search+Packages+%C2%BB 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 repoze.who.middleware:107 in __call__ << wrapper = StartResponseWrapper(start_response) app_iter = app(environ, wrapper.wrap_start_response) # The challenge decider almost(?) always needs information from the >> app_iter = app(environ, wrapper.wrap_start_response) Module beaker.middleware:73 in __call__ << self.cache_manager) environ[self.environ_key] = self.cache_manager return self.app(environ, start_response) >> return self.app(environ, start_response) Module beaker.middleware:152 in __call__ << headers.append(('Set-cookie', cookie)) return start_response(status, headers, exc_info) return self.wrap_app(environ, session_start_response) def _get_session(self): >> return self.wrap_app(environ, session_start_response) Module routes.middleware:130 in __call__ << environ['SCRIPT_NAME'] = environ['SCRIPT_NAME'][:-1] response = self.app(environ, start_response) # Wrapped in try as in rare cases the attribute will be gone already >> response = self.app(environ, start_response) Module pylons.wsgiapp:125 in __call__ << controller = self.resolve(environ, start_response) response = self.dispatch(controller, environ, start_response) if 'paste.testing_variables' in environ and hasattr(response, >> response = self.dispatch(controller, environ, start_response) Module pylons.wsgiapp:324 in dispatch << if log_debug: log.debug(""Calling controller class with WSGI interface"") return controller(environ, start_response) def load_test_env(self, environ): >> return controller(environ, start_response) Module ckan.lib.base:50 in __call__ << # available in environ['pylons.routes_dict'] try: return WSGIController.__call__(self, environ, start_response) finally: model.Session.remove() >> return WSGIController.__call__(self, environ, start_response) Module pylons.controllers.core:221 in __call__ << return response(environ, self.start_response) response = self._dispatch_call() if not start_response_called: self.start_response = start_response >> response = self._dispatch_call() Module pylons.controllers.core:172 in _dispatch_call << req.environ['pylons.action_method'] = func response = self._inspect_call(func) else: if log_debug: >> response = self._inspect_call(func) Module pylons.controllers.core:107 in _inspect_call << func.__name__, args) try: result = self._perform_call(func, args) except HTTPException, httpe: if log_debug: >> result = self._perform_call(func, args) Module pylons.controllers.core:60 in _perform_call << """"""Hide the traceback for everything above this method"""""" __traceback_hide__ = 'before_and_this' return func(**args) def _inspect_call(self, func): >> return func(**args) Module ckan.controllers.package:52 in search << collection=query, page=request.params.get('page', 1), items_per_page=50 ) # filter out ranks from the query result >> items_per_page=50 Module webhelpers.paginate:333 in __init__ << self.item_count = item_count else: self.item_count = len(self.collection) # Compute the number of the first and last available page >> self.item_count = len(self.collection) Module webhelpers.paginate:204 in __len__ << def __len__(self): return self.obj.count() # Since the items on a page are mainly a list we subclass the ""list"" type >> return self.obj.count() Module sqlalchemy.orm.query:1094 in count << q = q.params(params) q = q._legacy_select_kwargs(**kwargs) return q._count() def _count(self): >> return q._count() Module sqlalchemy.orm.query:1103 in _count << """""" return self._col_aggregate(sql.literal_column('1'), sql.func.count, nested_cols=list(self.mapper.primary_key)) def _col_aggregate(self, col, func, nested_cols=None): >> return self._col_aggregate(sql.literal_column('1'), sql.func.count, nested_cols=list(self.mapper.primary_key)) Module sqlalchemy.orm.query:1125 in _col_aggregate << if self._autoflush and not self._populate_existing: self.session._autoflush() return self.session.scalar(s, params=self._params, mapper=self.mapper) def compile(self): >> return self.session.scalar(s, params=self._params, mapper=self.mapper) Module sqlalchemy.orm.session:635 in scalar << engine = self.get_bind(mapper, clause=clause, instance=instance) return self.__connection(engine, close_with_result=True).scalar(clause, params or {}) def close(self): >> return self.__connection(engine, close_with_result=True).scalar(clause, params or {}) Module sqlalchemy.engine.base:834 in scalar << """""" return self.execute(object, *multiparams, **params).scalar() def statement_compiler(self, statement, **kwargs): >> return self.execute(object, *multiparams, **params).scalar() Module sqlalchemy.engine.base:844 in execute << for c in type(object).__mro__: if c in Connection.executors: return Connection.executors[c](self, object, multiparams, params) else: raise exceptions.InvalidRequestError(""Unexecutable object type: "" + str(type(object))) >> return Connection.executors[c](self, object, multiparams, params) Module sqlalchemy.engine.base:895 in execute_clauseelement << else: keys = None return self._execute_compiled(elem.compile(dialect=self.dialect, column_keys=keys, inline=len(params) > 1), distilled_params=params) def _execute_compiled(self, compiled, multiparams=None, params=None, distilled_params=None): >> return self._execute_compiled(elem.compile(dialect=self.dialect, column_keys=keys, inline=len(params) > 1), distilled_params=params) Module sqlalchemy.engine.base:907 in _execute_compiled << context.pre_execution() self.__execute_raw(context) context.post_execution() self._autocommit(context) >> self.__execute_raw(context) Module sqlalchemy.engine.base:916 in __execute_raw << self._cursor_executemany(context.cursor, context.statement, context.parameters, context=context) else: self._cursor_execute(context.cursor, context.statement, context.parameters[0], context=context) def _execute_ddl(self, ddl, params, multiparams): >> self._cursor_execute(context.cursor, context.statement, context.parameters[0], context=context) Module sqlalchemy.engine.base:958 in _cursor_execute << self.engine.logger.info(repr(parameters)) try: self.dialect.do_execute(cursor, statement, parameters, context=context) except Exception, e: self._handle_dbapi_exception(e, statement, parameters, cursor) >> self.dialect.do_execute(cursor, statement, parameters, context=context) Module sqlalchemy.engine.default:133 in do_execute << def do_execute(self, cursor, statement, parameters, context=None): cursor.execute(statement, parameters) def is_disconnect(self, e): >> cursor.execute(statement, parameters) UnicodeEncodeError: 'ascii' codec can't encode character u'\xb4' in position 6: ordinal not in range(128) }}}" 1274265928000000 1291831177000000 329 defect rgrp dread v1.1 closed fixed Bad dates cause exception on Gov form "== Reproduction == Using the government form, create a new package with name 'test' and date released of '23/5/0210'. The result is a 500 error and 'Server Error' message. Affects all versions of CKAN. == Why it's happening == The dates module is raising an exception on the invalid date when saving the date, which is not being caught. The exception should have been raised only during the earlier 'validation' step and that would be caught." 1275060617000000 1275079189000000 355 defect rgrp rgrp closed fixed Dashes versus underscores in package names Sort out how we deal with dashes versus underscores in package names. 1277221996000000 1311177552000000 358 enhancement rgrp dread ckan-v1.5 closed duplicate Resources in REST API "(spun out of ticket:336) Resource added to model API at: api/rest/resource === Example model request === GET to: /api/2/rest/resource/a3dd8f64-9078-4f04-845c-e3f047125028 returns: {{{ [{""id"": ""a3dd8f64-9078-4f04-845c-e3f047125028"", ""package_id"": ""b8a325c8-af2a-43f3-8245-9db7d73dfbfe"", ""URL"": ""http://scraperwiki.com/lincolnshire-councillors"", ""format"": ""CSV"", ""Description"": ""Scrape of www.lincs.gov/councillors.pdf by ScraperWiki."", ""hash"": """", ""position"": 2 }] }}} == Authorization == 1. Have it generic (ie. not per resource) and use an action/role on system 2. Require all resources to attach to packages an inherit their permissions (i.e. read/write etc if and only read/write on associated packages) 3. Introduce Resource in authorization system (requires migration) Mixed model {{{ Create / Edit: if resource associated to package: check_permissions(package, update) else: check_system_permissions(c.user, model.Action.Resouce Create/Update, model.System) }}}" 1277483282000000 1310128782000000 360 defect rgrp rgrp datapkg-0.7 closed fixed New sqlite-based DB index "In 0.5 and 0.6 have been more oriented to getting file indexes working to support the convenience of using packages on disk directly. However we now need to go back to having a better central/default index and the best model for this is a simple db index using sqlite (which is now supported in the standard library). NB: this is a retrospective ticket (been working on this for a couple of months)" 1277803174000000 1288004891000000 361 enhancement rgrp rgrp datapkg-0.7 closed fixed Allow specification of the default index in configuration 1277803305000000 1291135756000000 404 requirement rgrp pudo datapkg-0.8 closed fixed Make registries pluggable Allow using different indexes, including ckan, file, dcat, ... 1281346690000000 1297072955000000 405 task rgrp rgrp datapkg-0.8 closed fixed Retrieval options for package resources "Download Command (was install command) should support the following modes: * Download only the first listed resource (current behaviour, slightly arbitrary) * Download resources by interactive selection * Download resources by MIME type (cf #235) * Download all resources. " 1281346806000000 1297214833000000 409 task rgrp rgrp datapkg-0.8 closed fixed Refactor cli to be more 'pluggable' " * ~~(Load cli commands from setuptools entry point name datapkg.cli)~~ * Document how other can write new commands * Refactor base Command class to support this pluggability (if necessary)" 1281348659000000 1297074197000000 458 task rgrp johnbywater closed wontfix Request to DGU for access to database machine 1282299950000000 1294415537000000 464 task rgrp dread closed duplicate Request dgu db server access 1282306104000000 1282325194000000 538 task rgrp johnbywater closed wontfix Update CKAN Trac ticket report queries "Update report queries with more recent versions (below are report queries shipped with trac 0.11.7): NB: Report 1 has already been done. id | query ----+--------------------------------------------------------------------------------------------------- 1 | : SELECT p.value AS __color__, : id AS ticket, summary, component, version, milestone, t.type AS type, : owner, status, : time AS created, : changetime AS _changetime, description AS _description, : reporter AS _reporter : FROM ticket t : LEFT JOIN enum p ON p.name = t.priority AND p.type = 'priority' : WHERE status <> 'closed' : ORDER BY CAST(p.value AS integer), milestone, t.type, time : 2 | : SELECT p.value AS __color__, : version AS __group__, : id AS ticket, summary, component, version, t.type AS type, : owner, status, : time AS created, : changetime AS _changetime, description AS _description, : reporter AS _reporter : FROM ticket t : LEFT JOIN enum p ON p.name = t.priority AND p.type = 'priority' : WHERE status <> 'closed' : ORDER BY (version IS NULL),version, CAST(p.value AS integer), t.type, time : 3 | : SELECT p.value AS __color__, : 'Milestone '||milestone AS __group__, : id AS ticket, summary, component, version, t.type AS type, : owner, status, : time AS created, : changetime AS _changetime, description AS _description, : reporter AS _reporter : FROM ticket t : LEFT JOIN enum p ON p.name = t.priority AND p.type = 'priority' : WHERE status <> 'closed' : ORDER BY (milestone IS NULL),milestone, CAST(p.value AS integer), t.type, time : 4 | : : SELECT p.value AS __color__, : owner AS __group__, : id AS ticket, summary, component, milestone, t.type AS type, time AS created, : changetime AS _changetime, description AS _description, : reporter AS _reporter : FROM ticket t : LEFT JOIN enum p ON p.name = t.priority AND p.type = 'priority' : WHERE status = 'accepted' : ORDER BY owner, CAST(p.value AS integer), t.type, time : 5 | : SELECT p.value AS __color__, : owner AS __group__, : id AS ticket, summary, component, milestone, t.type AS type, time AS created, : description AS _description_, : changetime AS _changetime, reporter AS _reporter : FROM ticket t : LEFT JOIN enum p ON p.name = t.priority AND p.type = 'priority' : WHERE status = 'accepted' : ORDER BY owner, CAST(p.value AS integer), t.type, time : 6 | : SELECT p.value AS __color__, : t.milestone AS __group__, : (CASE status : WHEN 'closed' THEN 'color: #777; background: #ddd; border-color: #ccc;' : ELSE : (CASE owner WHEN $USER THEN 'font-weight: bold' END) : END) AS __style__, : id AS ticket, summary, component, status, : resolution,version, t.type AS type, priority, owner, : changetime AS modified, : time AS _time,reporter AS _reporter : FROM ticket t : LEFT JOIN enum p ON p.name = t.priority AND p.type = 'priority' : ORDER BY (milestone IS NULL), milestone DESC, (status = 'closed'), : (CASE status WHEN 'closed' THEN changetime ELSE (-1) * CAST(p.value AS integer) END) DESC : 7 | : SELECT p.value AS __color__, : (CASE status WHEN 'accepted' THEN 'Accepted' ELSE 'Owned' END) AS __group__, : id AS ticket, summary, component, version, milestone, : t.type AS type, priority, time AS created, : changetime AS _changetime, description AS _description, : reporter AS _reporter : FROM ticket t : LEFT JOIN enum p ON p.name = t.priority AND p.type = 'priority' : WHERE t.status <> 'closed' AND owner = $USER : ORDER BY (status = 'accepted') DESC, CAST(p.value AS integer), milestone, t.type, time : 8 | : SELECT p.value AS __color__, : (CASE owner : WHEN $USER THEN 'My Tickets' : ELSE 'Active Tickets' : END) AS __group__, : id AS ticket, summary, component, version, milestone, t.type AS type, : owner, status, : time AS created, : changetime AS _changetime, description AS _description, : reporter AS _reporter : FROM ticket t : LEFT JOIN enum p ON p.name = t.priority AND p.type = 'priority' : WHERE status <> 'closed' : ORDER BY (COALESCE(owner, '') = $USER) DESC, CAST(p.value AS integer), milestone, t.type, time " 1283190081000000 1294414537000000 581 task rgrp johnbywater ckan-v1.2 closed fixed Determine package name from metadata document Need to establish procedure for automatically generating package names from metadata documents. 1284210874000000 1284689274000000 715 defect rgrp johnbywater ckan-v1.4-sprint-2 closed fixed The group list page shall show the group title *or* group name "Symptom #1: Groups without titles don't get a clickable link, because there is no text. Defaulting to the group name would solve this trouble. Symptom #2: Package groups drop-down list show's 'None' when a group doesn't have a title. Therefore, we need to centralize presentation of group title, so it defers to group name. And we need tests. Also please sort groups by title on group list page." 1287583089000000 1297796784000000 776 enhancement rgrp dread closed duplicate Avoid generating vdm warnings "We get a host of vdm warnings frequently in the CKAN logs. Are these genuine worries or can they be avoided? {{{ 2010-10-29 17:10:06,003 WARNI [vdm] Skipping adding property Package.package_search (PackageSearch) to revisioned object 2010-10-29 17:10:06,015 WARNI [vdm] Skipping adding property Package.all_revisions_unordered (PackageRevision) to revisioned object 2010-10-29 17:10:06,024 WARNI [vdm] Skipping adding property PackageTag.all_revisions_unordered (PackageTagRevision) to revisioned object 2010-10-29 17:10:06,081 WARNI [vdm] Skipping adding property PackageExtra.all_revisions_unordered (PackageExtraRevision) to revisioned object 2010-10-29 17:10:06,105 WARNI [vdm] Skipping adding property PackageResource.all_revisions_unordered (PackageResourceRevision) to revisioned object 2010-10-29 17:10:06,129 WARNI [vdm] Skipping adding property PackageRelationship.all_revisions_unordered (PackageRelationshipRevision) to revisioned object }}}" 1288372797000000 1297066840000000 797 enhancement rgrp rgrp ckan-v1.3 closed fixed Rework core html layout to mirror wordpress twentyten "WP twentyten has an excellent core html structure. Furthermore, using that structure makes us compatible with all the WP twentyten compatible themes. * Convert to wp twentyten html * Switch css to be based off twentyten css (and perhaps rework somewhat)" 1289402873000000 1289402982000000 806 enhancement rgrp rgrp ckan-v1.3 closed fixed Metadata created and last modified timestamps for packages "Packages should provide create and last modified attributes which are included in package dict exposed via api. These attributes will not be in db but are computed (depend not just on package but related objects -- package tags, package resources, package extras etc)" 1289854894000000 1324034356000000 827 defect rgrp dread closed fixed metadata_created_and_modified error "Intermittent failure on ckan default branch. Looks like brittle test. {{{ ====================================================================== FAIL: ckan.tests.models.test_package.TestPackageRevisions.test_02_metadata_created_and_modified ---------------------------------------------------------------------- Traceback (most recent call last): File ""/home/buildslave/okfn/full/build/buildandsmoke/pyenv/lib/python2.6/site-packages/nose/case.py"", line 186, in runTest self.test(*self.arg) File ""/home/buildslave/okfn/full/build/buildandsmoke/pyenv/src/ckan/ckan/tests/models/test_package.py"", line 250, in test_02_metadata_created_and_modified assert out == exp, (out, exp) AssertionError: (datetime.datetime(2010, 11, 25, 4, 37, 52, 949380), datetime.datetime(2010, 11, 25, 4, 37, 52, 94938)) }}} http://buildbot.okfn.org/builders/builder-ckan/builds/589/steps/shell/logs/stdio" 1290678624000000 1290766239000000 828 enhancement rgrp rgrp ckan-v1.3 closed fixed Update cache support in home controller to use cache config in ini file "Currently cache usage in home controller is inconsistent with elsewhere and, in particular, does not respect cache_disabled and is not configurable using path notation (e.g. ckan.controllers.home. ...). This is especially frustrating in a development environment where is currently running into fact front page is being cached. Fix this." 1290693154000000 1290696586000000 829 defect rgrp dread ckan-v1.4-sprint-6 closed wontfix Admin CRUD broken Browsing to the admin interface /admin (even logged in as a sysadmin) gives an exception. 1290695043000000 1303838115000000 831 task rgrp rgrp ckan-v1.3 closed fixed Migrate ckan trac to ckan.org Move ckan trac to new ckan.org location. Will also need to re-enable user accounts etc. 1290760820000000 1290760864000000 832 enhancement rgrp rgrp ckan-v1.3 closed fixed Convert stats to a plugin "Convert stats section to a ckan plugin. Stats need not be in core and making it a plugin would make it easier to extend and expand." 1290765915000000 1296334980000000 852 enhancement rgrp wwaites ckan-v1.5 closed fixed [super] Dataset upload and archiving "3 (4) use cases: (With and without access to auth keys.) 1. upload form on ckan (by default local system has auth key for storage) 2. datapkg upload (client) (by default without key) (plumbing done) 3. background job archiving downloads (by queue client) Most important are: 1. Upload form on ckan.net (with access to keys) 2. API for getting credentials for upload from ckan.net api (without access to keys). Aside: Once 2 was done we could deprecate storage.ckan.net === Sub-tickets === ''' Required infrastructure ''' * #826 - Resource 'extra' fields * #358 - Resources in REST API * #235 - Resource format normalization and detection ''' User upload via Web UI ''' * #877 - File upload in WUI * #878 - Integrate file upload with workflow around package resources ''' User upload via CLI/datapkg ''' * #853 - plumbing for credential-less rest upload * #879 - Storage auth API Also related: * #405 - Retrieval options for package resources === More Info === * Upload/storage discussion: http://ckan.okfnpad.org/storage * For api to generate upload key (for e.g. datapkg usage) suggest locating at ckan.net/api/utils/ " 1291722993000000 1315821628000000 869 enhancement rgrp rgrp ckan-v1.3-sprint-1 closed fixed Add plugin interface to allow editing and extending of config by extensions "Use case: extensions need to add to template and public search paths if they wish to have templates or extra static files (such as js etc). Allowing plugins to edit the config dictionary on load would allow this (and more!). Are there any security considerations here? (Is is bad to allow extensions to make arbitrary changes to the config information?)" 1291989395000000 1292235262000000 877 enhancement rgrp rgrp ckan-v1.4-sprint-2 closed fixed File upload in WUI (extension) "Support uploading files to a storage system from WUI with a simple upload form. === Implementation === * Implement as an [wiki:Extensions Extension] * Locate at /upload * Add new system action/permission (FILE_UPLOAD) and restrict by default to logged in users * Use OFS + boto -> generate form key (and create the bucket if it doesn't exist? Or do we assume bucket already exists) * This wants to be tied in to general package workflow. See parent ticket:852." 1292868146000000 1298624165000000 878 enhancement rgrp rgrp ckan-sprint-2011-09-12 closed fixed Integrate file upload with workflow around package resources "Create/edit a package -> add a resource -> Oh, i haven't uploaded yet, 'upload here' -> /upload -> standard upload form Do we need to create a resource out of the file after upload? Do we sync file metadata with local Resource metadata? If yes suggests (need to ticket): * 'ResourceExtras' for extra metadata on resources * Makes 'Resource' into first class object (and make available in WUI)? == Depends == * #877 (Upload in WUI) - should be part of that extension" 1292868269000000 1315820838000000 889 enhancement rgrp rgrp ckan-v1.3-sprint-2 closed fixed Support extra footer material in config option (e.g. for google analytics) "Add a config option 'template_footer_end' which is inserted in layout_template just before </body>. This allows sysadmins to add extra items, especially, scripts directly into site without having to do any theming and is especially useful for things like google analytics. Aside: going forward may want to turn this into a extension. Cost: 1h" 1293713189000000 1293715109000000 898 defect rgrp dread closed fixed Changes stored indefinitely "Every change to every object is being stored in memory, which could add up to quite a lot of memory. This fixes it by making sure the objects are in a weakref. https://bitbucket.org/kindly/vdm/changeset/8d5f91db641f" 1294659490000000 1294662408000000 899 enhancement rgrp dread closed fixed Optimise check_real_change "There is no need to re-query the database to detect if there has been a changed as sqlalchemy knows this. It saves about 15 secs in the ckan tests. https://bitbucket.org/kindly/vdm/changeset/0050d023ca4e From David Raznick" 1294659583000000 1294916615000000 901 enhancement rgrp dread closed fixed vdm support for sqla 0.6 and sqlite 1294660144000000 1294662466000000 902 defect rgrp dread ckan-v1.4-sprint-1 closed fixed Package buttons not clickable / Improve submenu tabs "On a package page there are three buttons to the right - View, Edit, History. Each of these buttons contain an icon and the text, but you can only activate the button by clicking on the icon. When you click on the part of the button where the text is (about 50% of the button) then nothing happens. Using: Chrome, Firefox" 1294756898000000 1297078885000000 904 task rgrp Stiivi ckan-v1.4-sprint-3 closed fixed Review CKAN documentation "What's bad at the moment? * lack of documentation e.g. config (very poorly documented) * too many sources of documentation * no common theming Sources: * http://ckan.org/ * http://packages.python.org/ckan * http://wiki.okfn.org/ckan/ - user * Deprecate: http://knowledgeforge.net/ckan/doc/ckan/ Resulting meta-ticket with things to do: ticket:927" 1294832610000000 1299840539000000 916 enhancement rgrp pudo vdm-0.8 closed duplicate Port new vdm to Mongodb "We should create a port of VDM 0.9 for MongoDB to support user editing in WDMMG. " 1295277011000000 1297066902000000 923 defect rgrp dread closed worksforme Search box doesn't work in leaderboard page "1. Go to: http://ckan.net/stats/leaderboard#content 2. In the far top-right of the browser, select the search box in 'water'. 3. Press enter to search. Nothing happens. Tried in: chrome, firefox" 1295867328000000 1340632144000000 927 enhancement rgrp rgrp ckan-v1.4-sprint-3 closed fixed [super] Improvements to CKAN documentation "List of improvements to CKAN documentation (result of ticket:904). Should convert most items into sub-tickets as we go along. == Major == * ~~(Make blog.ckan.org into ckan.org and move ckan.org to trac.ckan.org/)~~ * Document caching system - ticket:841 * Howto guide for writing an extension - ''started on this at http://wiki.ckan.net/Extending_CKAN'' == Miscellaneous == * Contributors / credits page: ticket:928 * ~~(Data proxy documentation: move it to packages.python.org/dataproxy)~~ * ~~(List dataapi extensions on http://ckan.org/wiki/Extensions (Name, summary string + point to pypi page ...))~~ * Document license configuration and license system - ticket:973 * Refactor trac frontpage moving general feature overview to ckan.org * Create proper roadmap information on http://trac.ckan.org/ * Add link to wiki.ckan.net to ckan.org " 1295869492000000 1300105638000000 928 enhancement rgrp rgrp ckan-v1.4-sprint-1 closed fixed Documentation - CKAN credits / contributors page " 1. Remove contributors list from about page (out-of-date and does not belong there) * A ""Powered by CKAN"" link in footer is enough 2. Add contributors / team / credits page to ckan.org * May want to separate credits (e.g. software use), from contributors (also is team different from contributors) * (perhaps with photos!) so that people can see who is part of it and from which organisations. (this is medium-term, not really part of this ticket) 3. ? CREDITS.txt file to the source repository and add a link to it on bitbucket for more detailed credits info. Cost: 1h" 1295872661000000 1297115136000000 929 defect rgrp rene.kapusta ckan-v1.4 closed fixed Handle the case when the licenses service is down better "I'm using v 1.3.1a and get a lot of ""WebApp Error: <type 'exceptions.Exception'>: Couldn't connect to licenses service: <urlopen error (104, 'Connection reset by peer')>"" error messages. {{{ Module ckan.forms.package:87 in build_package_form << # Options/settings builder.set_field_option('name', 'validate', package_name_validator) builder.set_field_option('license_id', 'dropdown', {'options':[('', None)] + model.Package.get_license_options()}) builder.set_field_option('state', 'dropdown', {'options':model.State.all}) builder.set_field_option('notes', 'textarea', {'size':'60x15'}) >> builder.set_field_option('license_id', 'dropdown', {'options':[('', None)] + model.Package.get_license_options()}) Module ckan.model.package:283 in get_license_options << @classmethod def get_license_options(self): register = self.get_license_register() return [(l.title, l.id) for l in register.values()] >> register = self.get_license_register() Module ckan.model.package:278 in get_license_register << def get_license_register(self): if not hasattr(self, '_license_register'): self._license_register = LicenseRegister() return self._license_register >> self._license_register = LicenseRegister() Module ckan.model.license:46 in __init__ << from licenses.service import LicensesService2 self.service = LicensesService2(group_url) entity_list = self.service.get_licenses() else: from licenses import Licenses >> entity_list = self.service.get_licenses() Module licenses.service:44 in get_licenses << except Exception, inst: msg = ""Couldn't connect to licenses service: %s"" % inst raise Exception, msg try: licenses = loads(response_body) >> raise Exception, msg Exception: Couldn't connect to licenses service: <urlopen error (104, 'Connection reset by peer')> }}}" 1295995409000000 1299840884000000 953 enhancement rgrp rgrp ckan-v1.4-sprint-1 closed fixed Add tagline/description to template and set in configuration Have a tagline / description are under main title and set if from ckan.site_description config variable. 1296809808000000 1296809834000000 962 enhancement rgrp rgrp ckan-v1.4-sprint-5 closed fixed Improvements to data preview extension "Basic implementation done (and deployed): https://bitbucket.org/okfn/ckanext-datapreview However plenty to improve, e.g. * Support more formats (use external systems for preview?) * json (!) * html (trivial!) * sparql * ... * Do not display preview if no preview Also suggest reworking to use external services rather than doing preview 'in house' (doing in house places heavy reliance on data proxy service and on converting data to a standard format)." 1297072524000000 1301364987000000 964 enhancement rgrp rgrp datapkg-0.8 closed fixed Create Resource Downloader and make it pluggable In downloading packages we need to download resources and we need a ResourceDownloader object for this. these should be pluggable so that we can add support for different types of resources. 1297211004000000 1297211237000000 973 enhancement rgrp rgrp ckan-v1.4-sprint-1 closed fixed Document license configuration and license system. "Document how license system works and specifically how licenses can be configured. Cost: 2h" 1297332948000000 1297678851000000 975 defect rgrp rgrp ckan-v1.4-sprint-1 closed fixed Placeholder attribute not displayed in some browsers leading to poor UX "Currently placeholder text like 'Search ...' is not shown in some browsers (e.g. FF and IE). This leads to poor UX, for example in top bar search where it unclear whether that box is for login or search. We should fix this by finding a way to display placeholder attribute in all browsers." 1297343755000000 1297344448000000 992 defect rgrp rgrp ckan-v1.3 closed fixed Use X-forwarded-for whenever it is available to set remote IP address "At the moment we only use X-forwarded to determine remote user address when remote-addr header is 127.0.0.1. However if a site is behind a cache remote_addr will always be the IP of the cache. We should fix this by using x-forwarded-for header whenever available and only use remote-addr when it is not available. Cost: 10m" 1298058532000000 1298060474000000 999 enhancement rgrp dread ckan-v1.4-sprint-3 closed fixed Factor out ckan.net theme changes to a separate theme repo and apply Rather than polluting the ckan core code base on ckan.net install with ckan.net specific changes these adaptations should be moved out into a dedicated ckan.net theme. 1298386729000000 1300707328000000 1001 enhancement rgrp rgrp ckan-v1.4-sprint-4 closed fixed API should use normal user credentials if available "When using the API 'locally' i.e. from the CKAN instance (as would be the case with an ajax interface) the API, especially that allowing READ requests should use the normal user credentials if they are available prior to looking for an API key. The key change appears to be to change _get_user_for_apikey method in lib/base.py BaseController to check the c.user attribute (may wish to rename as the name may now be a bit misleading ...). This is critical to incorporating any ajax editing into the frontend. As part of this ticket we should do a general consolidation of the identification system in lib/base.py so that both api_key and normal user auth lead to the same set of auth-related objects being available (suggest c.user and c.userobj and c.author)." 1298489705000000 1301310351000000 1003 enhancement rgrp rgrp ckan-v1.4-sprint-3 closed fixed CKAN Javascript library and demonstration web interface "A plain javascript library for interfacing with CKAN would be very useful (why? see below!). It would also be nice to have a pure html + javascript web interface to CKAN both for its own sake and to act as a demonstrator for the library. Why? * Development of bespoke interfaces -- much easier to edit html + javascript than to change ckan core * E.g. for specific communities e.g. geodata, science * Specialized tasks - multi-package editing * Very easy deployment and integration (e.g. can drop in to getthedata or other sites) " 1298490086000000 1300100411000000 1008 defect rgrp pudo ckan-v1.4-sprint-2 closed fixed eval() of user display name in template head "We're currently setting the user preferences links via a javascript snippet that also evals the name. This should be removed as we're not displaying the user name any longer. We should also have page fragment caching in Genshi, which is not currently implmented. cf. http://api.rubyonrails.org/classes/ActionController/Caching/Fragments.html" 1298632686000000 1298821826000000 1010 enhancement rgrp rgrp ckan-v1.4-sprint-2 closed fixed List CKAN users in WUI "Should have user listing at /user/ rather than user account page. * list users, sorted by number of packages contributed/edited * Move user home page to /user/{user-id} * Paginated" 1298649180000000 1298740889000000 1032 enhancement rgrp rgrp ckan-v1.6 closed fixed [super] Resources in WUI "Add resources into Web User Interface. * Locate at: /dataset/{dataset}/resource/{id} * CRUD * Authorization Done: * ~~#945 - Richer resources - Resource Groups, new fields, improved UI~~ * ~~#1445 - Resource View page in WUI~~ * ~~#1450 - Dataset view pages to match~~ Moved to superticket #1506: * #978 - Edit Resource Extras in Web UI " 1299782021000000 1330348463000000 1070 enhancement rgrp rgrp ckan-v1.5 closed fixed Plan a new domain model and layer architecture for CKAN "See http://wiki.ckan.net/Domain_Model especially section on v2. * New domain model is planned but not yet finally agreed. * Layer architecture is complete and implemented" 1301910940000000 1310117129000000 1074 enhancement rgrp rgrp ckan-v1.5 closed fixed Refactor authz web user interface to have common code and templating "Currently repeat the same template and code across Package Authz, Group Authz, and Authz Group authz. Having now implemented a new, cleaner setup in ckanext-admin we should port this back into core. * Common template code (checkbox template) * Logic code (or just common code) for wiring into authz system * Look for all places thoroughout the system where usernames, authzgroups or groups need to be typed into boxes, and make sure that they auto-complete appropriately. Will also deliver a significant improvement in the form of ajax user lookup." 1302271586000000 1314303581000000 1106 defect rgrp rgrp ckan-v1.4-sprint-6 closed fixed Bugs related to routes arising from API refactor + removal of default routes "Various bugs I've been encountering: * Autocomplete of tag names no longer works (no longer works on http://ckan.net/). Appears to be due to no longer have a routes for apiv2 (i'm seeing failing calls to: http://ckan.net/apiv2/package/autocomplete?callback=callback&incomplete=a) * Incorrect url generated for API in page footer (e.g. http://ckan.net/rest/get_api) due to use of old 'rest' rather than new 'api' Latter issue was masked by existence of 'default' routes: {{{ map.connect('/{controller}', action='index') map.connect('/:controller/{action}') map.connect('/{controller}/{action}/{id}') }}} Having these is, I think, bad practice as it is better to be explicit and we should therefore remove asap. In addition I think we should be cautious about 'default' routes in core such as: {{{ map.connect('/api/rest/:register', controller='api', action='list', conditions=dict(method=['GET']) ) }}} As it makes it harder for extensions to introduce their own APIs (here one could perhaps add something at /api/rest/{my-object} but only by using before_map rather than after_map). " 1303747360000000 1303834069000000 1119 enhancement rgrp rgrp ckan-v1.4-sprint-7 closed fixed Fully functional storage extension with file upload "Previous work in #877 and #879 + #853 (storage API). In this ticket: * Improve authorization * Establish convention for laying out files on disk * Add documentation * Fix bugs with #879 (does not currently work -- boto may have changed) " 1304094382000000 1305037201000000 1151 enhancement rgrp timmcnamara ckan-sprint-2012-03-05 closed wontfix Preview for geographic data should be a map "Data viewer / previewer for a resource that has a KML file, or others, such as GeoRSS and GeoJSON, we should provide a map. * Support for KML files: #1458 This is non-trivial for external files as we need a way to jsonify. For files stored locally this is more of a recline issue (and will require a bit of work to either guess columns or allow user to specify them)." 1306043217000000 1330908188000000 1163 enhancement rgrp rgrp ckan-backlog new Improvements to Storage Extension "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. " 1306408778000000 1310133808000000 1190 enhancement rgrp rgrp ckan-v1.5 closed fixed [super] CREP 0004 Data API and Data Processing System "For some time (e.g. 1y+!) we have known that we want to integrate some kind of datastore / data processing system with CKAN. We've had a CREP in progress on this for some months (may copy that here at some point): http://wiki.ckan.org/CEP0004 We can distinguish 3 modules that are needed: 1. ""Webstore"": A datastore with dataapi - #1208 Suggestion is this would be sqlite based with a simple sql based API. http://ckan.net/api/data/{user|org}/{datastore_name}?q={some-read-sql-query} 2. Automated conversion of suitable resources into datastore upon resource creation so that e.g. they are accessible via the API. #1398 3. A data processing system which utilizes this datastore. One could get a long way with simple javascript running in the browser for development with this javascript then run offline using something like nodejs. Alternatively one could allow one to specify a url to e.g. a python file which would then be run in a sandbox (with access to some specified set of python modules) - #1432 == More info == * Overview diagram: https://docs.google.com/drawings/d/1XK7dcpFXNlMzVFgLPYPZUXOsFRPzgCEvS-w7FcvydEQ/edit?hl=en_GB" 1308227611000000 1323270522000000 1195 defect rgrp dread ckan-sprint-2011-10-28 closed fixed Storage extension to handle incorrect routes better "We've seen exceptions caused by people getting the file storage link wrong, adding a slash to the end. e.g. http://ckan.net/storage/f/file/e696d857-e997-41c8-be08-408697168ca8/ We should aim to handle all requests better than causing exception. 404 (or even 302 in this case) is better than 500." 1308576769000000 1311964374000000 1202 enhancement rgrp rolf closed invalid Links to datapkg utility don't lead to info about it "In the presentation of data packages, the link in ""The information on this page and the downloads / resources are also available using the datapkg command line utility."" (http://knowledgeforge.net/ckan/doc/datapkg/install.html) ends up at the home page of ckan.org Perhaps link it to https://bitbucket.org/okfn/datapkg/overview for now, to save some searching for people who want to find out more?" 1309263613000000 1315821804000000 1208 enhancement rgrp rgrp ckan-sprint-2011-10-28 closed fixed Webstore: a datastore with web API " * SQLite based * Use Cyclone for async http server on top with auth * Designed to not be specific to CKAN or anything else Current code is here: https://github.com/okfn/webstore. == API Spec == ==== Read ==== Two basic ways to query:: {{{ GET: /{owner}/{db-name}/?sql=... GET: /{owner}/{db-name}/?table=...&attr=value&attr=value&limit=... }}} Returns:: {{{ { u'keys': [u'id', u'name'], u'data': [ [1, u'jones'], [u'aaa', u'jones'] ] } }}} ==== Write ==== POST to:: /{owner/{database}/{table} Payload is json data structured as follows:: { unique_keys: [list of key attributes] data: {dict of values} } === Authentication and Authorization === Authentication: use basic auth header. Authorization: * Default: all read, owner can write * Restricted: owner can read and write, everyone can do nothing Possible future: config file can specify a python method (TODO: method signature) === Integration with Other Systems === TODO: Specify how to delegate authenatication to user database in some other system. " 1309804460000000 1312191646000000 1239 defect rgrp rgrp ckan-sprint-2011-10-28 closed fixed Remove and re-add tag on package not working "See reports on list at: * http://lists.okfn.org/pipermail/ckan-dev/2011-July/001103.html * http://lists.okfn.org/pipermail/ckan-dev/2011-July/001107.html Tracked this to issue in dictization/model_save whereby was ignoring case where Package Tag already there but in deleted state. Rather than describe at length see fix." 1311441020000000 1312453156000000 1247 task rgrp dread ckan-sprint-2011-10-28 closed fixed Put docs on ReadTheDocs Put docs on ReadTheDocs instead of eu13. 1311941948000000 1311955185000000 1251 enhancement rgrp rgrp ckan-backlog closed fixed Rename wiki.ckan.net to wiki.ckan.org Inline with general naming policy going forward. 1311965147000000 1317315159000000 1252 enhancement rgrp rgrp ckan-v1.5 closed fixed Deprecate ckan.net in favour of thedatahub.org "Deprecate ckan.net in favour of thedatahub.org * Announce * Create thedatahub.org and have it run same data as ckan.net * Announce closing down of ckan.net with 302 * Implement 302 permanent Also redirect wiki.ckan.net to wiki.ckan.org" 1311965339000000 1318160334000000 1271 enhancement rgrp rgrp ckan-sprint-2011-10-28 closed fixed CORS support "CORS - http://www.w3.org/TR/cors/ - support. This is what you do in Apache. Should do this in lib/base.py or similar. {{{ Header always set Access-Control-Allow-Origin ""*"" Header always set Access-Control-Allow-Methods ""POST, PUT, GET, OPTIONS"" Header always set Access-Control-Allow-Headers ""X-CKAN-API-KEY, Content-Type"" # Respond to all OPTIONS requests with 200 OK # This could be done in the webapp # This is need for pre-flighted requests (POSTs/PUTs) RewriteEngine On RewriteCond %{REQUEST_METHOD} OPTIONS RewriteRule ^(.*)$ $1 [R=200,L] }}}" 1313241839000000 1313753663000000 1282 enhancement rgrp rgrp ckan-v1.5 closed fixed JS and WUI tidy up "Consolidate js. Remove cruft. * Move stuff to vendor * Have all vendor libs local (?) * jquery, jquery-ui etc * Consolidate autocomplete to use jquery-ui * package autocomplete (groups) * tag autocomplete (package) * user autocomplete (authz group create) * turns out that authz group edit had autocomplete disabled so refactoring meant enabling ... * Move forms.css into main * Remove tag cloud from front page (can be example going forward) * Remove bookmarklet (since in wiki at: http://wiki.ckan.net/Managing_Data_Packages#How_Do_I_Install_the_CKAN_Bookmarklet.3F) * Move name slug generation into standard js and clean up Possible: 1. JS unit tests for the given pages ... 2. Option to use external site to serve js and css (e.g. CDN) " 1314090389000000 1314404540000000 1294 enhancement rgrp rgrp ckan-v1.5 closed fixed [super] Package creation and editing UX improvements "Largely an integration of work from ckanjs * #1295 Simplify package create form * Improvements to edit form * Split edit form into sections * Remove preview from edit form (introduce inline preview on description/notes field) * #1296 Improved resource adding/editing on dataset/page page * #878 File upload integrated into resource creation * #1297 In-place editing of notes field for existing packages " 1314405811000000 1315948257000000 1295 enhancement rgrp rgrp ckan-sprint-2011-09-12 closed fixed Simplify package create form "Sub ticket of #1294 * Initial screen just title, name, description (notes), license (and tags?). * State that you can add data and more information on next screen. This takes you to Package 'view' where you can then do more stuff. * Flash some instructions? e.g. that resources are missing? * Name slug should by default look uneditable (cf wordpress way to do the slug)" 1314406014000000 1315948009000000 1300 enhancement rgrp rgrp ckan-sprint-2011-11-07 closed fixed Core changes to base theme "Core changes to theme in order to make it easier to re-theme: * page_heading * side bar menu must be switchable (left to right) (through config or css) * Add optional_footer to complement optional_head * And adopt rule for template writers that all extra js must go in optional footer * That way we could move optional js to the bottom of the page to improve page load times. * Re-add support for body-class ... (seems to be removed by #1108) * more divs. * better labelling for css (and javascript)" 1314862223000000 1319794520000000 1311 enhancement rgrp rgrp ckan-backlog new Modal user register and login form "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" 1315297227000000 1315297227000000 1319 enhancement rgrp dread ckan-sprint-2011-10-24 closed fixed Require an email address on User registration "Superticket: #1343 This avoids difficulties when they forget their password. * (?) Email validation (navl does not have one!) * Require email confirmation to be activated (?) (Answer: no, not at present -- see discussion below)" 1315415932000000 1324036947000000 1343 enhancement rgrp rgrp ckan-backlog new [super] User related improvements (login, user pages etc) " * 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" 1316017098000000 1318528138000000 1357 enhancement rgrp rgrp ckan-sprint-2011-10-10 closed fixed Integrate new version of data preview "We have an all new and much improved data preview system developed as part of QA in July. Need to integrate this. * Is pure javascript * Will have this in CKAN core but considered to be a plugin (so need datapreview in ckan.plugins list to work -- will enable this by default) * Will depend on the http://wiki.ckan.org/DataExplorer" 1317076044000000 1318164458000000 1359 enhancement rgrp rgrp ckan-sprint-2012-02-20 closed fixed Radically simplify standard list of licenses "Major UX grip and incredibly simple to do. May also want to have basic autocomplete support within the list (trivial to do as well I believe). (Talk to RP about this re how we define lists of licenses)." 1317077855000000 1329132464000000 1361 enhancement rgrp rgrp ckan-v1.5 closed fixed Simple search support "Would be nice if CKAN could work out of the box without the need for SOLR (solr is great but complex and heavyweight to install). Propose: * ckan.simple_search config option * If set: * query via simple query to database backend * do no specialized indexing == Extras == Remove * TagSearchQuery from lib/search (just do a search directly)? * #1360: filter by downloadable and filter by open search options == Possible Extras == (Probably future improvements) * Re-introduce full-text search indexing where supported in e.g. postgres and use for querying " 1317078276000000 1317082893000000 1384 task rgrp shevski ckan-backlog new CKAN wiki needs updating to refer to thedatahub.org instead of ckan.net and datasets instead of packages Most articles still refer and link to ckan.net, wiki.ckan.net and to packages 1318414077000000 1318414077000000 1386 enhancement rgrp rgrp ckan-sprint-2011-10-24 closed fixed Disallow account creation via openid "Superticket: #1343 Creation of accounts from OpenID causes large number of problems: * No guarantee of other profile info * Poor username (just from openid) We therefore will: 1. Require creation of user account via register (no auto-creation of accounts via openid) * sidebar of register page should point to login page rather than openid signin 2. Permit association of an openid with an account ... * How: paste in your openid url (requires change to edit form to have this) * won't work for google with their weird openid urls * [future] Nicer way is to have login via openid while logged in (which association then happening in background) 3. Migration (for 1+2): * (?) Generate decent usernames for all existing accounts * As this is nontrivial suggest instead we allow editing of usernames (by account owner and sysadmins). This is useful in its own right and is a reasonable 80/20 solution. * This does present the problem of re-associating commits with the new username. Best solution to this would be to switch revisions to point to userid rather than username. See #1534 4. [optional] Change display_name to always be username * Change My Account to Username at top right of all pages (once we know usernames are short ...) * could do this straight away by truncating long usernames (e.g. truncate at 20 chars ...) * Also should we lose the icon? " 1318425493000000 1324036930000000 1396 enhancement rgrp rgrp ckan-sprint-2012-02-06 closed fixed Improvements to user page UX - 1d "Super ticket: #1506 * Show member since * Display email (in obfuscated form) * List all owned datasets (in standard manner) * Will need change to logic layer to show datasets on user dict (this is useful for the API as well ...) * (Re)move list of changes * Should have activity (once activity available) WONTFIX: * ?? Allow users to provide a home page, organization (requires migration) " 1318527967000000 1330086237000000 1401 defect rgrp flofokus ckan-sprint-2012-01-23 closed fixed Some links don't take account when CKAN is mounted at a non-root URL "if you want your ckan to reside not at http://yourhost.org/ but rather e.g. at http://yourhost.org/ckan/ you can use this hint http://wiki.pylonshq.com/display/pylonsdocs/Configuration+Files and set ckan.site_url accordingly in your .ini. However, there are some instances where internal links are created without the required prefix." 1318621586000000 1328001014000000 1407 defect rgrp dread ckan-sprint-2011-12-19 closed fixed Stats extension not working Graphs don't show any more at http://thedatahub.org/stats 1319014605000000 1323764239000000 1412 defect rgrp seanh ckan-sprint-2012-02-06 closed worksforme application.js crashes when viewing a dataset with no resources "Create a new dataset, don't add any resources to the dataset yet, view the dataset in ckan, if you have firebug enabled you'll see the error ""resource is undefined"" at line 699 of application.js." 1319450625000000 1328226385000000 1429 enhancement rgrp rgrp ckan-backlog new Provide DOIs for datasets in a CKAN instance "DOI = digital object identifier = http://www.doi.org/ As a Publisher I want a DOI for my dataset so that it can be cited by and linked to by others in a standard and easy way. == Details == * Probably implement as extension rather than core" 1319977305000000 1319977305000000 1446 enhancement rgrp rgrp ckan-sprint-2012-01-09 closed fixed Data Explorer v2 "Super ticket: #1602 (Data Previewer v2) We already have first pass of Data Explorer that was released as part of #1357. * Merging https://github.com/okfn/dataexplorer with http://github.com/okfn/recline and developing it * https://github.com/okfn/recline/issues Tickets include (* indicates improvement over current explorer) * Core Backbone Models representing Dataset and Tabular data: https://github.com/okfn/recline/issues/10 * New theme: https://github.com/okfn/recline/issues/22 * Read-only mode: https://github.com/okfn/recline/issues/17 * Introduce hash navigation / state support (*): https://github.com/okfn/recline/issues/19 * Re-enable editing in DataTable (*): https://github.com/okfn/recline/issues/13 * [super] DataTable view (in Backbone) (*): https://github.com/okfn/recline/issues/14 * DataExplorer parent view (*): https://github.com/okfn/recline/issues/12 * Simple graph widget using flot: https://github.com/okfn/recline/issues/11 Est: 10-15d (should be broken down -- partly is in recline issues)" 1320665596000000 1326281658000000 1458 enhancement rgrp rgrp ckan-future assigned Support previewing kml files in data viewer "Super ticket: #1151 (viewing geo data) E.g. preview of http://thedatahub.org/dataset/louisvillecrime should bring up a map" 1320936488000000 1340632932000000 1459 enhancement rgrp rgrp ckan-backlog new Featured Dataset feature "Provide way to mark a dataset as featured. Featured database show up on the front page. TODO: detail this more." 1321113012000000 1321113012000000 1472 enhancement rgrp rgrp ckan-sprint-2011-11-21 closed fixed Convert ckanclient to git and github from mercurial 1321624905000000 1321721874000000 1518 defect rgrp markbrough ckan-sprint-2011-12-19 closed fixed CKAN Upload fails if filename has spaces in it "E.g. uploading a file with spaces in it: OECD Monthly Exchange Rates.zip Gives a 404 Not Found response to the following file: http://test.ckan.org/api/storage/metadata/2011-12-05T193046/OECD%20Monthly%20Exchange%20Rates.zip The upload wheel keeps spinning and the user is not informed that the upload has failed. Analysis: turns out that google storage (possibly s3 but not checked) replaces with ' ' in keys with '+' on upload. This breaks things because we try and look up metadata about upload using the filename/key we put in but of course that does not exist because google has changed name. Fix is trivial: replace ' ' in keys / filenames with '-'. " 1323114236000000 1330020742000000 1533 defect rgrp amercader ckan-backlog closed wontfix Make sure ckanext-wordpresser works on CKAN 1.5.1 "Superceded by #2234 Super ticket: #1508 Etherpad: http://ckan.okfnpad.org/wordpresser The wordpresser extension does not work with ckan 1.5.1. The wordpress page is not loaded. Looks like this changeset may be involved https://github.com/okfn/ckanext-wordpresser/commit/0efa0649896a7339865f178a302be639ddc561e1 I think that even before that changeset, the page was shown without any margins. In any case, the extension seems to be too sensible to changes in the ckan layout so perhaps it should take into account the CKAN version and have a fixed set of xpaths and templates that work for each version " 1323277660000000 1338202676000000 1559 enhancement rgrp jilly mathews ckan-sprint-2012-04-02 closed fixed Comments Extension / Disqus Polish off comments extension dev and test. estimate 2 days. 1324291720000000 1332242129000000 1571 enhancement rgrp jilly mathews ckan-backlog assigned [super] Issues Extension """Proper"" issues extension. * Etherpad: http://ckan.okfnpad.org/issues * Code: https://github.com/okfn/ckanext-issues Overview * This would be an extension and improvement of existing todo extension - #842 (https://github.com/okfn/ckanext-issues) * Current extension does work but lacks polish * Should we polish or do significant improvements? * Functionality - see etherpad == Steps == * ~~(Rename todo(s) -> issue(s) in existing extension)~~" 1324294225000000 1330863183000000 1576 enhancement rgrp rgrp ckan-sprint-2012-01-09 closed fixed Move stats extension back into core - 0.5d " * Move into core (keeping as an extension) and default enable * Do we need tests for controller? (No: already there) * Documentation (?) - e.g. of basic config options * Remove lib/stats.py which is still in core * dread moved it to extension in https://github.com/okfn/ckanext-stats/commit/293b2544737d8ab7610884bd5e999ee37f1ab813 but did not remove from core * Deprecation notice on ckanext-stats repo and update extension registry Est: 0.5d. Questions: * Why do this? * tiny extension with few dependencies - and really nice to have out of the box * trial for doing this on larger scale * Do we keep as extension (even if in core)? * Ans: Yes, keep as extension because: * Already set up that way * Cleaner * Easier to disable / enable * How do we integrate with main them (e.g. have stats link) * Ans: not sure (this is part of more general issue of how we update theme for varying changes elsewhere). Best answer is to have some widgetization in theme. * Hide ratings section (at least until we reinstate ratings #1598) * Ans: no, let's not bother (and having ratings there encourages us to do #1598 and/or find out whether people are interested in ratings)" 1324317313000000 1327056070000000 1577 defect rgrp dread ckan-backlog new Can't upload file with foreign chars in filename "Looks like uploading a file with foreign characters fails due to encoding reasons. {{{ URL: http://thedatahub.org/api/storage/auth/form/2011-12-19T124447/Ministerstvo-financ%C3%AD-%C4%8Cesk%C3%A9-republiky-_-P%C5%99%C3%ADprava-rozpo%C4%8Dtu.pdf Module weberror.errormiddleware:162 in __call__ << __traceback_supplement__ = Supplement, self, environ sr_checker = ResponseStartChecker(start_response) app_iter = self.application(environ, sr_checker) return self.make_catching_iter(app_iter, environ, sr_checker) except: >> app_iter = self.application(environ, sr_checker) Module beaker.middleware:73 in __call__ << self.cache_manager) environ[self.environ_key] = self.cache_manager return self.app(environ, start_response) >> return self.app(environ, start_response) Module beaker.middleware:152 in __call__ << headers.append(('Set-cookie', cookie)) return start_response(status, headers, exc_info) return self.wrap_app(environ, session_start_response) def _get_session(self): >> return self.wrap_app(environ, session_start_response) Module routes.middleware:130 in __call__ << environ['SCRIPT_NAME'] = environ['SCRIPT_NAME'][:-1] response = self.app(environ, start_response) # Wrapped in try as in rare cases the attribute will be gone already >> response = self.app(environ, start_response) Module pylons.wsgiapp:125 in __call__ << controller = self.resolve(environ, start_response) response = self.dispatch(controller, environ, start_response) if 'paste.testing_variables' in environ and hasattr(response, >> response = self.dispatch(controller, environ, start_response) Module pylons.wsgiapp:324 in dispatch << if log_debug: log.debug(""Calling controller class with WSGI interface"") return controller(environ, start_response) def load_test_env(self, environ): >> return controller(environ, start_response) Module ckan.lib.base:123 in __call__ << # available in environ['pylons.routes_dict'] try: return WSGIController.__call__(self, environ, start_response) finally: model.Session.remove() >> return WSGIController.__call__(self, environ, start_response) Module pylons.controllers.core:221 in __call__ << return response(environ, self.start_response) response = self._dispatch_call() if not start_response_called: self.start_response = start_response >> response = self._dispatch_call() Module pylons.controllers.core:172 in _dispatch_call << req.environ['pylons.action_method'] = func response = self._inspect_call(func) else: if log_debug: >> response = self._inspect_call(func) Module pylons.controllers.core:107 in _inspect_call << func.__name__, args) try: result = self._perform_call(func, args) except HTTPException, httpe: if log_debug: >> result = self._perform_call(func, args) Module pylons.controllers.core:60 in _perform_call << """"""Hide the traceback for everything above this method"""""" __traceback_hide__ = 'before_and_this' return func(**args) def _inspect_call(self, func): >> return func(**args) Module ckanext.storage.controller:2 in auth_form Module ckan.lib.jsonp:26 in jsonpify << Very much modelled after pylons.decorators.jsonify . """""" data = func(*args, **kwargs) return to_jsonp(data) >> data = func(*args, **kwargs) Module ckanext.storage.controller:301 in auth_form << method = 'POST' authorize(method, bucket, label, c.userobj, self.ofs) data = self._get_form_data(label) return data >> authorize(method, bucket, label, c.userobj, self.ofs) Module ckanext.storage.controller:79 in authorize << if method != 'GET': # do not allow overwriting if ofs.exists(bucket, key): abort(409) # now check user stuff >> if ofs.exists(bucket, key): Module ofs.remote.botostore:53 in exists << if bucket is None: return False return (label is None) or (label in bucket) def claim_bucket(self, bucket): >> return (label is None) or (label in bucket) Module boto.s3.bucket:87 in __contains__ << def __contains__(self, key_name): return not (self.get_key(key_name) is None) def startElement(self, name, attrs, connection): >> return not (self.get_key(key_name) is None) Module boto.s3.bucket:144 in get_key << response = self.connection.make_request('HEAD', self.name, key_name, headers=headers, query_args=query_args) # Allow any success status (2xx) - for example this lets us # support Range gets, which return status 206: >> query_args=query_args) Module boto.s3.connection:388 in make_request << if isinstance(key, Key): key = key.name path = self.calling_format.build_path_base(bucket, key) boto.log.debug('path=%s' % path) auth_path = self.calling_format.build_auth_path(bucket, key) >> path = self.calling_format.build_path_base(bucket, key) Module boto.s3.connection:88 in build_path_base << def build_path_base(self, bucket, key=''): return '/%s' % urllib.quote(key) class SubdomainCallingFormat(_CallingFormat): >> return '/%s' % urllib.quote(key) Module urllib:1222 in quote << safe_map[c] = (c in safe) and c or ('%%%02X' % i) _safemaps[cachekey] = safe_map res = map(safe_map.__getitem__, s) return ''.join(res) >> res = map(safe_map.__getitem__, s) KeyError: u'\xed' CGI Variables AUTH_TYPE 'cookie' CONTENT_TYPE '; charset=utf-8' DOCUMENT_ROOT '/htdocs' GATEWAY_INTERFACE 'CGI/1.1' HTTP_ACCEPT '*/*' HTTP_ACCEPT_CHARSET 'ISO-8859-1,utf-8;q=0.7,*;q=0.3' HTTP_ACCEPT_ENCODING 'gzip,deflate,sdch' HTTP_ACCEPT_LANGUAGE 'en-US,en;q=0.8' HTTP_CACHE_CONTROL 'max-age=259200' HTTP_CONNECTION 'keep-alive' HTTP_COOKIE 'thedatahub_net=27a7f095fcca1ea6b36df996d595e3278b16f4538862bf7f88d49e2000b9246547c8fd0e; auth_tkt=""f9c6ab2b0d9fcd71c4c2408bc12fab544eef1c45elenaibp!userid_type:unicode""; auth_tkt=""f9c6ab2b0d9fcd71c4c2408bc12fab544eef1c45elenaibp!userid_type:unicode""; ckan_user=elenaibp; ckan_display_name=""Elena Mondo""; ckan_apikey=decd48b1-49ee-4250-bff4-98ccca9c02a5; hide_welcome_message=1; __utma=119670349.1809834699.1323782464.1324293066.1324298316.4; __utmb=119670349.3.10.1324298316; __utmc=119670349; __utmz=119670349.1323782464.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)' HTTP_HOST 'thedatahub.org' HTTP_REFERER 'http://thedatahub.org/dataset/edit/budget-library-czeck-republic' HTTP_USER_AGENT 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.63 Safari/535.7' HTTP_VIA '1.1 localhost (squid/3.0.STABLE19)' HTTP_X_FORWARDED_FOR '87.114.74.190' HTTP_X_REQUESTED_WITH 'XMLHttpRequest' PATH '/usr/local/bin:/usr/bin:/bin' PATH_INFO '/api/storage/auth/form/2011-12-19T124447/Ministerstvo-financ\xc3\xad-\xc4\x8cesk\xc3\xa9-republiky-_-P\xc5\x99\xc3\xadprava-rozpo\xc4\x8dtu.pdf' PATH_TRANSLATED '/home/okfn/var/srvc/ckan.net/pyenv/bin/ckan.net.py/api/storage/auth/form/2011-12-19T124447/Ministerstvo-financ\xc3\xad-\xc4\x8cesk\xc3\xa9-republiky-_-P\xc5\x99\xc3\xadprava-rozpo\xc4\x8dtu.pdf' REMOTE_ADDR '193.34.146.142' REMOTE_PORT '55419' REMOTE_USER u'elenaibp' REMOTE_USER_DATA 'userid_type:unicode' REMOTE_USER_TOKENS [''] REQUEST_METHOD 'GET' REQUEST_URI '/api/storage/auth/form/2011-12-19T124447/Ministerstvo-financ%C3%AD-%C4%8Cesk%C3%A9-republiky-_-P%C5%99%C3%ADprava-rozpo%C4%8Dtu.pdf' SCRIPT_FILENAME '/home/okfn/var/srvc/ckan.net/pyenv/bin/ckan.net.py' SCRIPT_URI 'http://thedatahub.org/api/storage/auth/form/2011-12-19T124447/Ministerstvo-financ\xc3\xad-\xc4\x8cesk\xc3\xa9-republiky-_-P\xc5\x99\xc3\xadprava-rozpo\xc4\x8dtu.pdf' SCRIPT_URL '/api/storage/auth/form/2011-12-19T124447/Ministerstvo-financ\xc3\xad-\xc4\x8cesk\xc3\xa9-republiky-_-P\xc5\x99\xc3\xadprava-rozpo\xc4\x8dtu.pdf' SERVER_ADDR '193.34.146.146' SERVER_ADMIN '[no address given]' SERVER_NAME 'thedatahub.org' SERVER_PORT '80' SERVER_PROTOCOL 'HTTP/1.0' SERVER_SIGNATURE '<address>Apache/2.2.14 (Ubuntu) Server at thedatahub.org Port 80</address>\n' SERVER_SOFTWARE 'Apache/2.2.14 (Ubuntu)' WSGI Variables application <beaker.middleware.CacheMiddleware object at 0x7f22601c7dd0> beaker.cache <beaker.cache.CacheManager object at 0x7f22601c7b50> beaker.get_session <bound method SessionMiddleware._get_session of <beaker.middleware.SessionMiddleware object at 0x7f22601c7a90>> beaker.session {'_accessed_time': 1324298703.071357, '_creation_time': 1324293077.4139669} mod_wsgi.application_group 'ckan.net|' mod_wsgi.callable_object 'application' mod_wsgi.listener_host '' mod_wsgi.listener_port '80' mod_wsgi.process_group 'ckan.net' mod_wsgi.reload_mechanism '1' mod_wsgi.script_reloading '1' mod_wsgi.version (2, 8) paste.cookies (<SimpleCookie: __utma='119670349.1809834699.1323782464.1324293066.1324298316.4' __utmb='119670349.3.10.1324298316' __utmc='119670349' __utmz='119670349.1323782464.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)' auth_tkt='f9c6ab2b0d9fcd71c4c2408bc12fab544eef1c45elenaibp!userid_type:unicode' ckan_apikey='decd48b1-49ee-4250-bff4-98ccca9c02a5' ckan_display_name='Elena Mondo' ckan_user='elenaibp' hide_welcome_message='1' thedatahub_net='27a7f095fcca1ea6b36df996d595e3278b16f4538862bf7f88d49e2000b9246547c8fd0e'>, 'thedatahub_net=27a7f095fcca1ea6b36df996d595e3278b16f4538862bf7f88d49e2000b9246547c8fd0e; auth_tkt=""f9c6ab2b0d9fcd71c4c2408bc12fab544eef1c45elenaibp!userid_type:unicode""; auth_tkt=""f9c6ab2b0d9fcd71c4c2408bc12fab544eef1c45elenaibp!userid_type:unicode""; ckan_user=elenaibp; ckan_display_name=""Elena Mondo""; ckan_apikey=decd48b1-49ee-4250-bff4-98ccca9c02a5; hide_welcome_message=1; _ _utma=119670349.1809834699.1323782464.1324293066.1324298316.4; __utmb=119670349.3.10...)|utmcmd=(none)') paste.registry <paste.registry.Registry object at 0x7f226194df50> paste.throw_errors True pylons.action_method <bound method StorageAPIController.auth_form of <ckanext.storage.controller.StorageAPIController object at 0x7f2261dad990>> pylons.controller <ckanext.storage.controller.StorageAPIController object at 0x7f2261dad990> pylons.environ_config {'session': 'beaker.session', 'cache': 'beaker.cache'} pylons.pylons <pylons.util.PylonsContext object at 0x7f2261daddd0> pylons.routes_dict {'action': u'auth_form', 'controller': u'ckanext.storage.controller:StorageAPIController', 'label': u'2011-12-19T124447/Ministerstvo-financ\xed-\u010cesk\xe9-republiky-_-P\u0159\xedprava-rozpo\u010dtu.pdf'} repoze.who.identity <repoze.who identity (hidden, dict-like) at 139785645747120> repoze.who.logger <logging.Logger instance at 0x7f225e23c098> repoze.who.plugins {'openid': <OpenIdIdentificationPlugin 139785625065680>, 'friendlyform': <FriendlyFormPlugin 139785618095248>, 'ckan.lib.authenticator:UsernamePasswordAuthenticator': <ckan.lib.authenticator.UsernamePasswordAuthenticator object at 0x7f2260874c10>, 'auth_tkt': <AuthTktCookiePlugin 139785625065808>, 'ckan.lib.authenticator:OpenIDAuthenticator': <ckan.lib.authenticator.OpenIDAuthenticator object at 0x7f2260874c90>} routes.route <routes.route.Route object at 0x7f22601a1090> routes.url <routes.util.URLGenerator object at 0x7f2261dadf50> webob._parsed_query_vars (GET([]), '') webob.adhoc_attrs {'language': 'en-us'} wsgi process 'Multiprocess' wsgi.file_wrapper <built-in method file_wrapper of mod_wsgi.Adapter object at 0x7f2261da9af8> wsgiorg.routing_args (<routes.util.URLGenerator object at 0x7f2261dadf50>, {'action': u'auth_form', 'controller': u'ckanext.storage.controller:StorageAPIController', 'label': u'2011-12-19T124447/Ministerstvo-financ\xed-\u010cesk\xe9-republiky-_-P\u0159\xedprava-rozpo\u010dtu.pdf'}) }}}" 1324317659000000 1325473564000000 1599 enhancement rgrp rgrp ckan-sprint-2012-01-09 closed fixed [contrib] Simple embeddable dataset count widget (esp for group count) "Simple embeddable widget for use on 3rd party sites showing dataset counts for a given search query. Have a specific version just for groups. * Simple group count widget in JS for embedding in wordpress and elsewhere * Requested by several people (e.g Guo Xu from Econ working group). Already have something like this in CKAN JS for doing an embeddable search box. * All you need to do is do a dataset query over the API e.g. http://thedatahub.org/api/search/dataset?groups=economics and then embed in some html! Estimate: 30m (for someone who knows their jquery). " 1325246358000000 1325555201000000 1600 enhancement rgrp rgrp ckan-v1.7 closed wontfix [super] User guide with integrated help in the WUI "Provide help to users in the WUI, with this linking to a detailed user guide. * User guide (suggest at help.thedatahub.org (or possibly help.ckan.org) * Snippets in the WUI with links to full user guide. * Provide helper methods for creating these links with config options for setting path to user guide so that the link location can vary on install by install basis * General info about publishing/working with/etc data (where we don't duplicate elsewhere) Est: (?) 5-10d == Topics == See http://ckan.okfnpad.org/datahub-help * Step-by-step for adding a dataset including tips * Reuse: http://datapatterns.org/datahub.html * Quick overview of relevant parts of domain model (dataset and resource) * API (perhaps link to main docs) * Command line interface and dpm * Using groups == Why do this == We already have wiki.ckan.org and docs.ckan.org. Why do this? Answer for docs: * This is administrative guide and focused on general CKAN software. * Hard to provide completely generic help. * Integratable with the DataHub site Answer for wiki: * No spam * General feeling that wikis are a little bit loose and untidy. We want this to be smart, clean and useful. * Integratable with the DataHub " 1325257824000000 1333362051000000 1602 enhancement rgrp rgrp ckan-v1.6 closed fixed [super] Data Previewer / Viewer v2 "We already have first pass of Data Preview that was done as part of #1357. This is about v2 of this. Two main components: * A new version of the separate Data Explorer library (now called Recline Data Explorer) - #1446 '''Est: 10-15d''' * Why: * Cleaner, backbone based solution. * Provides editing support if wanted. * Collaboration with Max Ogden * Integrate this into CKAN (into resource view page) - see #1630 '''Est: 1d''' * Improvements to Data Viewer / Previewer system in CKAN itself - '''Est: 2-3d''' * ~~(Update Data Preview-er (View-er) to support images ...)~~ * ~~(WONTFIX here - (?) Update Data Preview-er to support geodata - #1151)~~ " 1325267544000000 1328175719000000 1630 enhancement rgrp rgrp ckan-sprint-2012-02-06 closed fixed Integrate Data Explorer v2 into Data Viewer "Super ticket: #1602 Steps: * Include (or git submodule) data explorer into vendor * Update existing js integration code * Fix css and any bugs Est: 1d Actual: 1d" 1326279098000000 1330085600000000 1660 defect rgrp lucychambers ckan-sprint-2012-02-06 closed wontfix CSV preview broken - OpenSpending "This CSV resource used to preview but now the format appears to be unsupported: ""We are unable to preview this type of resource: x-osdata-csv"" http://thedatahub.org/dataset/lbhf-spending-2010/resource/9661abbd-2816-4d58-8b20-3cb0eb770c69 This is used as an example by the OpenSpending team all the time." 1326717846000000 1328013627000000 1691 enhancement rgrp rgrp ckan-sprint-2012-01-23 closed invalid paster user create command takes password on command line "Needed to support automated deployment more easily. Est: 15m" 1327077314000000 1327314081000000 1719 defect rgrp dread ckan-sprint-2012-02-06 closed fixed Broken links for non-Gravatar use icons - 0.25d "Super ticket: #1506 e.g. http://thedatahub.org/user The users with Gravatar have their nice user icons, but the majority of users (without Gravatars) have 'broken link' symbols. Same problem wherever users are shown, such as the dataset history pages. Broken on 1.5.2b - currently on thedatahub.org." 1327938788000000 1328541630000000 1797 enhancement rgrp rgrp ckan-sprint-2012-03-05 closed fixed [super] Webstore v2 - Integrated and based on ElasticSearch "Main tasks: * Integrated seamlessly into CKAN (authorization etc) * Based off ElasticSearch Etherpad: http://ckan.okfnpad.org/webstore = Tasks = * ~~New API point (config + controller) [0.75d]~~ * /api/data/{resource-id} * ~~Authorization [0.5d]~~ * ~~Documentation [0.25d]~~ * ~~Upgrade data viewer to use ES [0.5d]~~ * ~~Convert webstorer to new setup - http://github.com/okfn/ckanext-webstorer [1d] - #1753~~ * See below * ""Create DataStore Resource"" in Resource creation (??) * Just creates a resource with blank url and datastore enabled (webstore_url non null) * ~~Tick box to enable DataStore in Resource edit form (for time being would just set webstore_url to any non-null/non-empty value)~~ * Also need to use this info in DataStore extension? * ~~Create nice instructions on Resource page about using the DataStore~~ * ~~Rename webstore -> datastore~~ * ~~Deploy [0.5d]~~ = Details = == Layout on ES == {{{ elasticsearch/{index}/{type-id} index = ckan-{ckan-id} type-id = resource-id (1) }}} == Request path == Req => Nginx => CKAN App (authz) => req to elasticsearch and returns results See as an example: https://github.com/okfn/elastic-proxy == Questions == 1. How do we decide what to use in the viewer e.g. Webstore data versus DataProxy * Check for existence of webstore_url on Resource (should really be webstore_enabled boolean or similar, however we stick with url for the time being because it exists and we avoid migration). If exists use Webstore o/w don't. 2. How do we decide when webstore is activated * Ans: see previous. 3. Do we (and how do we) allow for resources which are just for webstores * Ans: we have to set webstore_url = True ... on save. Or add a big button saying: ""Create Blank Resource"" ... 4. How does webstorer work ... * CSV import - NS: make sure we add e.g. rownum or __id__ = rownum ... * Separate mini-service (webstorer.thedatahub.org ...) 5. How do we selectively disable recline where not appropriate (e.g. query support makes no sense for DataProxy) * Ans: do not bother at present. Focus on Webstore route. 6. Where does geodata support come in (in Recline or separately) * This is a separate issue == User Story 1 == User -> CKAN instance -> Add Dataset -> Adds a Resource via uploading a CSV file -> Save => Result = New Dataset + Resource + Data API to resource and nice Preview of the data Solution: 1. Allow normal upload process 2. Webstorer queue task which should get triggered by new resource. Check the resource and if it can convert into the associated resource webstore database. 3. Update the resource in some way (set webstore_url) = User Stories = == User Story 2 == User -> CKAN instance -> Add Dataset -> Adds a Resource via linking to some remote file (CSV or otherwise) or uploading some data (CSV or otherwise) => Result = New Dataset + Resource + nice Preview of the data (wherever possible) == User Story 3 == User -> CKAN instance -> Add Dataset -> Adds a Resource which will be webstore database in CKAN -> User saves data to this data store. => Result = New Dataset + Resource (Webstore resource) which can now be written to or read from by the user Solution: just create a resource with blank url (or better, have a new option to create webstore resource ...)" 1329306185000000 1331412644000000 1828 enhancement rgrp rgrp ckan-sprint-2012-03-05 closed fixed Upgrade to Recline v0.3 Recline v0.3 has introduced some breaking changes in API and usage. Upgrade to use it. 1329943304000000 1330525412000000 2221 enhancement rgrp zephod closed fixed Tests are broken for some of us: NotAPairTreeStoreException "Since my last pull I'm getting a strange new error which is presumably to do with my local config or assumptions about the storage extension. Test output here: https://gist.github.com/2007985 " 1331318781000000 1331561095000000 2222 enhancement rgrp zephod closed duplicate Tests are broken for some of us: NotAPairTreeStoreException "Since my last pull I'm getting a strange new error which is presumably to do with my local config or assumptions about the storage extension. Test output here: https://gist.github.com/2007985 " 1331318783000000 1331318825000000 2224 enhancement rgrp rgrp ckan-sprint-2012-04-02 closed wontfix Simplify javascript and css dependencies and add minified version " * Get rid of jquery UI * Requires switching to bootstrap lookahead plus a small bit of coding for ajax part (see https://gist.github.com/2007241) * Remove modernizr (what do we use it for?) * Convert jquery.tmpl to jquery mustache (?) * Remove ckanjs moving core parts of it directly into our code. Compress everything for releases and add minified version to build (with switch to enable use of this?)" 1331385623000000 1338205358000000 2226 enhancement rgrp rgrp ckan-sprint-2012-03-19 closed fixed [super] Refactor and improve documentation (v1.7) "Documentation is key to the success of projects! = Move material into main docs from wiki = * http://wiki.ckan.org/Writing_asynchronous_tasks * http://wiki.ckan.org/Domain_Model * http://wiki.ckan.org/Deployment = Create a User Guide = Basic step-by-step on getting started with CKAN (See start on set of slides here e.g. http://blog.thedatahub.org/2012/03/02/tutorial-publish-data-with-the-datahub/) * Publishing data * Authorization and workflows * Publisher Profile (Workflow) = Break into sections = Suggest something like: {{{ # General * Intro * Conceptual Overview * What CKAN helps you do (http://ckan.org/) * FAQ ? (or point to the wiki) # For Administrators * Installation and Setup * Configuration options * Customization - Theming etc * Authorization and Workflows * Storage # For Users (Publishers, Data Wranglers, etc etc) * Walkthrough of publishing a dataset * Storage * API (see Developers section) # CKAN Developers * Domain Model * API * Extensions * i18n CKAN Developers * Buildbot }}}" 1331481965000000 1332475494000000 2236 enhancement rgrp rgrp ckan-sprint-2012-03-19 closed fixed Updates to Recline and integrate them " * (Recline) Better graphing (multiple graph types etc) * (Recline) Bootstrapify * Integrate" 1331910381000000 1332153688000000 2278 defect rgrp rgrp ckan-sprint-2012-04-16 closed fixed DataStore enabled is disabled by default but is needed for DataStorer to run "Major UX gotcha reported by several people is that DataStore is disabled by default and must be enabled for DataStorer to run and import data. Suggest switch to enable datastore by default for file and file.upload types (disable for API). People can always disable if they want." 1333441048000000 1333441177000000 2279 enhancement rgrp rgrp ckan-v1.8 new Write tutorial for our DataStore API / Data Explorer "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!)" 1333482263000000 1338205426000000 2292 defect rgrp rgrp ckan-sprint-2012-04-30 closed fixed Group edit form no longer allows for adding of multiple datasets at once "Can only add one dataset at a time now (not sure when this broke but was working ~2-3m ago). Assigning to seanh for review and estimation. I'd rate this as quite annoying but not absolutely critical (hence assigned priority)." 1334431388000000 1335021876000000 2874 enhancement rgrp rgrp assigned Clean up bin directory Full of obsolete material 1345190508000000 1345190515000000 142 defect pudo dread closed fixed Update User object with additional fields such as 'nickname' "Suggested fields: * id, name (username/profile name), openid, email, password, extras (JsonType) * + current items: apikey, about, created) * current contents of name is usually openid and should migrate to openid field (could match based on starting with http://) * May also want a fullname field (or perhaps that can just go in extras - may be better to have its own field as useful to search on this ) Related changes (probably separate tickets): * Improve user home page to include this additional information (and have it be editable) * Use user 'name' (username) for home page links (rather than current user/<id>) * Where we show lists of revisions, each revision author is now a link to the author's user page. Related to ticket:136 and ticket:138." 1255010314000000 1289219098000000 146 defect pudo rgrp closed worksforme Problem when an admin user logs in between commencing editing and saving " 1. Visitor starts editing a package (or creates a new package) 2. Visitor logs in before previewing or committing 3. Visitor is an admin (or sysadmin) 4. Preview or commit fails Reason (conjecture): the form we use for package editing is now dependent on whether you have admin privileges (we allow editing of state by admins). When you login the old form is now incorrect and this results in the formalchemy fieldset breaking." 1255013773000000 1291829862000000 190 defect pudo dread closed fixed Package comments "Cost 7 days When viewing a package, users can read user comments and leave their own. Users need to be logged in to leave a message. Comments appear immediately. A mechanism for deleting unwanted comments is provided to an authorized user. Comments are sorted with the most recent first. Comments are available for read, creation and deletion in both the Web UI and over the REST API. The admin for the package and a superuser can delete unwanted comments, both on the package page and a collation of all comments on their user page. Users can delete their own comments(?) Need to consider whether over the REST API we encourage the use of a 'frontend user' APIKEY which can be used to leave comments for another, actual user. Example at bottom of package page: '''Leave a comment:''' ||Subject|| _________ || ||Comment|| _________ || [[br]] ||Submit button|| '''Comments:''' ||'''Explanation doc'''|| ||''Posted on 25h May 2009 by !http://bertdavies.myopenid.com''|| ||It says on the pollution data web page that not all the stations have a CO2 sensor, so you have to extrapolate from the ones that do. See my visualisation of CO2 across London for an idea of what you can do: bertdavies.com/pollution-2008.jpg|| ||'''More info'''|| ||''Posted on 24th May 2009 by !http://ronsmith.myopenid.com''|| ||Excellent data, but why is there no value in the CO2 column for some of the testing stations?|| = Implementation details: = Comments table is with columns: ||id || package_id || date (date) || comment (multi-line text)|| " 1258387105000000 1280820852000000 231 defect pudo rgrp ckan-v1.3 closed fixed Make group versioned "Make group object revisioned/versioned. * Involves upgrade script both for group object and group_revision object * No changes required to WUI for present" 1262853923000000 1288516929000000 242 defect pudo rgrp v1.1 closed fixed Miscellaneous tidying up (v0.11) "Dumping ground for various minor and miscellaneous items (mainly refactorings):rgrp * controllers/tag.py: why does this not use lib/search.py (but controllers/packages.py search method does)? done: * lib/search.py: inheritance would be nicer than switching on entity in search (i.e. have SearchPackage, SearchTag etc)" 1265715103000000 1280823876000000 273 task pudo rgrp v1.1 closed fixed Investigate search index options and create tickets "Work already here: http://knowledgeforge.net/ckan/trac/wiki/SearchEngine Add knowledge there or to: http://wiki.okfn.org/SoftwareTools/Search " 1268996933000000 1278578527000000 309 defect pudo dread closed fixed Tag list shows unused tags "Deleted tags are visible on the /tag page and are searchable. Delete tags are ones that were in use once and then discarded, so this includes ones which are not used on any packages any more, including misspelling, mistakes, and deprecated tags. It would makes sense to remove them. Example tag that is viewed at /tag and searchable: http://ckan.net/tag/2rand[0" 1273247648000000 1280743432000000 317 enhancement pudo rgrp v1.1 closed fixed Make search pluggable "Make lib/search.py pluggable so that we can plug in different search systems (e.g. SOLR). Suggest we define a base Search class from which specific search implementations inherit (e.g. SQLSearch, SOLRSearch etc). The specific one being used would then be set via a config variable." 1274295418000000 1279286041000000 327 defect pudo pudo closed wontfix Create a web hook worker for CKAN " This will be useful as an example consumer of the new queue notifications (#325). * A user can register any URL to be notified upon an event. * Possible extensions: GET with ID only vs. POST with serialized object * E-Mail notifications are also hooks, essentially. We need to have a UI module that allows for the hook CRUD and some feedback (e.g. non 200 status codes)" 1274807361000000 1296467361000000 332 defect pudo rgrp closed fixed Autocomplete tag on click "During tag autocompletion, clicking on a suggested tag doesn't trigger completion in the text box. " 1275302887000000 1280743320000000 334 defect pudo dread closed fixed Wrong link for package feed icon "This is a problem with the package page e.g. http://ckan.net/package/open-election-data-project . The feed icon links to [1] and the text next to it ""Subscribe"" links to [2]. Surely these should be the same? The second link seems to right one to me. * [1] http://ckan.net/package/open-election-data-project?format=atom * [2] http://ckan.net/package/history/open-election-data-project?format=atom&days=7" 1275407445000000 1280743667000000 359 requirement pudo rgrp datapkg-0.7 closed fixed Create Storage with pluggable extensions "Storage represents something you can upload to (download is done in ticket:406). * storage sub package with defined interface (maybe just use OFS) * Only support uploading single files for the moment (though can do multiple files). * Relationship to build (ticket:306) * No support for syncing e.g. hg/git repos -- that's up to you as a user * Upload command At end of this we can deprecate Repository. Having Repository encapsulate Index and Storage (without Storage being explicit) is not helpful and leads to duplication." 1277750654000000 1291135692000000 366 enhancement pudo dread ckan-v1.4 closed fixed A flash message says why you are redirected to the 'user login' page "You get redirected for a number of different reasons - often confuses me let alone the average user! Cost: 1h" 1279128058000000 1300212171000000 401 task pudo pudo closed fixed Provide base worker as queue consumer We should create and document a basic queue consumer and task processor for CKAN. It will connect to the CKAN update queue, read messages and dispatch them to a consumer function (such as a downloader or an analysis app) 1281018724000000 1286189243000000 402 task pudo pudo ckan-v1.3 closed duplicate Archiving worker to back up package resources from a CKAN instance "Write a worker that scans all packages in a ckan instance and uploads the data to storage.ckan.net or another suitable storage system. * Naming scheme? * Bucket: {ckan-instance-id}-{package-name}? {ckan-instance-id}-{package-id}? * What happens if names change * File: filename? hash? * Store hash back on ckan instance? The caching worker will consumer update notifications and fetch packages. Extra points for: * Properly checking for source file modification (Last-modified, Etag) * Using PIP VCS Backends for retrieval * OFS/S3 Storage " 1281018912000000 1296467635000000 406 requirement pudo rgrp datapkg-0.8 closed fixed Download sub-system "Factor out current downloader into dedicated download subpackage, abstract interface and make it pluggable so we can have downloaders loaded as per type of resource to download. * Also rename InstallCommand -> DownloadCommand And we should support interactive retrieving of resources ... == Implementation Ideas == {{{ for resources in pkg.resources: # datapkg/hg load_storage_handler(resource.format) }}} " 1281346822000000 1296467427000000 408 requirement pudo pudo ckan-v1.2 closed fixed Integrate CMS via proxying "* As sysadmin/user of CKAN I want to integrate a CMS to support easy addition of additional content ... * I want to integrate with navigation * As a minimum I want to be able to add content pages (more stuff would be e.g. comments, sidebars, main menu ...) Why: CMS are great at creating content and have very good editors and theme support ... === Previous work http://groups.google.com/group/pylons-discuss/browse_thread/thread/f8969e28b0a007c7 * deliverance: retheming on the fly http://knowledgeforge.net/shakespeare/hg/file/677eef9402e6/shakespeare/controllers/template.py 1. Rewrite urls for proxying 2. You need a theme to substitute into 3. pylons Extreme version: * 2 sources -> pylons/ckan app, cms * 1 theme source: ckan or cms 1 frontend/proxy app which re-themes everything Owned by CKAN: * package/ * tag/ * group/ * api/ * / Everything else proxied. " 1281348581000000 1281609572000000 410 requirement pudo pudo ckan-v1.2 closed fixed Latest comments widget on home page This would be an extension to the disqus plugin that would patch itself into home/index. 1281348733000000 1281619720000000 411 requirement pudo pudo ckan-v1.2 closed fixed Deploy and test Varnish on eu3 "* Need to figure out cache invalidation for CKAN * Evaluate against an internal cache (i.e. memcached) " 1281349275000000 1287393033000000 431 task pudo pudo closed wontfix Solr index testing tool There seem to be a few conditions under which either queue processing or the indexer fail in their current state. To get a more systematic picture of these failures, we should have a small testing tool to compare the index to the database of a live CKAN instance. 1281963532000000 1295260262000000 460 defect pudo johnbywater closed fixed State field changed by non-sysadmin "This package: http://ckan.net/package/dbtune-audioscrobbler was: 1. created by Richard (logged-in) 2. edited by Richard (logged-in) (According to the logs, at this point the state was changed from 'active' to 'deleted') -- RP was it set to 'deleted' or just ''? 3. pudo changed the state back to active Similarly an incident with bibbase package where field set to '' (see http://ckan.net/revision/diff/bibbase?diff=702bb0a3-03b7-49ac-87ad-e489c414962f&oldid=5447842d-b6ed-41d9-9cfd-8bb73b85c409) Need to investigate how this got changed, fix if necessary and report back to Richard. Note that package 'admins' as well as sysadmins can change the state of a package (though note that bibbase did not appear to have an owner). Suggested solution (for setting to ''): * Ensure in ckan/forms.py that there is a validator for state field that ensures only set to valid values. * Check that we do not allow state to be changed in the api except by package owner or sysadmin" 1282300002000000 1311176868000000 517 requirement pudo pudo iati-1 closed fixed Standard domain model for entries "cf. Tariqs mail Updated version: https://spreadsheets5.google.com/ccc?key=tuOtQjD0Psoqr1pWTS8EXZQ&hl=en#gid=0 == Original Version == {{{ Publishing Entity: Publishing Entity Type: (Donor, Recipient, Community Data..) Donor Country Activity period: Verification status: enumeration of statuses (checked, not checked etc) Resource links: to the actual IATI record Number of activities: ... Date record updated: Date data updated: License: Need this field even if it may be a standard license So naively mashing these together, we get something like: Identifier Title Abstract Donor Country Publisher Publisher Type Verification Status Department Contact Contact e-mail Licence Resource format Resource URL Resource ID Activity period Number of activities Date record updated Date data updated }}}" 1282893081000000 1284041561000000 518 requirement pudo pudo iati-1 closed fixed IATI WUI Editing * Create custom form 1282893167000000 1283896718000000 519 requirement pudo pudo iati-1 closed fixed IATI look and feel * Use what is on iatiregistry.org at the moment. 1282893224000000 1283536828000000 520 requirement pudo pudo iati-1 closed fixed Browseable web interface onto the data * e.g. find/browse by country and by publishing entity and by donor 1282893270000000 1283538080000000 521 requirement pudo pudo iati-1 closed fixed IATI Customized search 1282893401000000 1283897124000000 522 requirement pudo pudo iati-2 closed fixed Create publishing entity account " * Publishing entity emails system editors * System editor creates publishing entity account and emails publishing entity with details * Priority: 4/5" 1282893668000000 1287392999000000 523 requirement pudo pudo iati-1 closed fixed Read/write APIs for users and publishing entities "Read/write APIs for users and publishing entities to access and register data * Users have read access * Publishing entities have both (though can only write to 'their' records) * Priority: 4 for write (read access is 3)" 1282893743000000 1283897688000000 524 requirement pudo pudo iati-2 closed fixed Limit registering data to authenticated users either via API or manually. "Limit registering data to authenticated users either via API or manually. * Edits may only be made by authenticated entities * Priority: 5" 1282893904000000 1285594971000000 525 requirement pudo pudo iati-2 closed fixed Confirm and approve publishing entity account " * So some kind of confirmation or approval by someone more senior? * Alternative: just have an account request. * Priority: 3" 1282894040000000 1285595152000000 526 requirement pudo pudo closed wontfix Integrate validation tool into the registry "Assumes 8 is done: 8. Tool for validation an IATI XML record (referenced by a URL) for compliance with the IATI specification * Outside of scope of registry * Multiple validators with different levels of rigour" 1282894300000000 1340626152000000 527 story pudo rgrp closed fixed Create domain model and load sample data 1282899025000000 1293097531000000 528 task pudo rgrp closed fixed Setup demonstration instance at iati.ckan.net 1282899110000000 1283536475000000 529 task pudo rgrp closed fixed Obtain sample metadata 1282899161000000 1283536554000000 530 task pudo pudo closed fixed Map IATI attributes to CKAN metadata schema "From lopad: {{{ Publishing Entity (often/always? equal to the logged in user) * Domain logic: only can add entries for ""yourself"" Donor Country Activity period: period to which this record relates Verification status: enumeration of statuses (checked, not checked etc) Resource links: to the actual IATI record Number of activities: ... Date record updated: Date data updated: License: Need this field even if it may be a standard license }}}" 1282899187000000 1287392210000000 531 task pudo rgrp closed fixed Load sample IATI metadata " * Parse data * Load via API * Develop test for load via API (can be local or remote -- with paste webfixture may be easier)" 1282899244000000 1283536676000000 559 defect pudo pudo ckan-v1.5 closed invalid Fix package lookup on group edit form "Lookup is needed to add a package but won't show up at some times. Originally reported by Anja Jentzsch, re questions. " 1283542776000000 1310127694000000 647 requirement pudo pudo ckan-v1.3 closed fixed Authorization Groups for group-based access control allow group-level authorization on all system entities 1284889418000000 1287391981000000 650 story pudo pudo ckan-v1.2 closed fixed WUI editing for Authorization Groups " * Copy & adapt Group controller tests to suit AuthorizationGroups * Copy & adapt Group controllers and templates for Authorization Groups" 1284890073000000 1287391932000000 669 task pudo pudo closed fixed Refactor Solr to become a generic worker 1286189594000000 1293057161000000 670 task pudo pudo closed fixed HowTo: Creating a sysadmin 1286190347000000 1293056844000000 671 task pudo pudo closed fixed Implement and show user names in WUI 1286190454000000 1293056852000000 672 enhancement pudo pudo ckan-v1.3-sprint-1 closed fixed Facets in CKAN search results "This has been done in IATI ckan but should be ported over to CKAN main and put into the UI in a nice fashion. IATI: http://bitbucket.org/okfn/iati/changeset/378431974c76 (related to #520) Requires SOLR search backend (for postgres should fall back gracefully -- just do not show them)." 1286190736000000 1291715338000000 695 bug pudo dread closed fixed Search indexing broken on ckan.net "e.g. searching for 'buddhist' or 'sanskrit', you don't get this newly created package: http://ckan.net/package/digitalsanskritbuddhistcanon" 1286991201000000 1287766973000000 697 requirement pudo johnbywater iati-3 closed fixed The system shall indicate which package groups can be removed when editing a package This seems to require doing something else with such a group's 'delete' button, such as showing it greyed, or perhaps not showing it at all. 1287066103000000 1291644457000000 699 defect pudo TimDavies closed fixed Paging search results re-sets Open Only and Downloadable Only flags When getting a search results page (e.g. http://ckan.net/package/search?q=development&open_only=1&downloadable_only=1) and then using the on-page links to page through results, the next link / numbered page links go to http://ckan.net/package/search?q=development&page=2 rather than http://ckan.net/package/search?q=development&open_only=1&downloadable_only=1&page=2 meaning that the filter flags set (Download Only; Open Only) are not respected on the second page of listings. 1287143698000000 1296499061000000 700 bug pudo dread iati-3 closed fixed Groups in package form "Editing groups in forms doesn't work for me, with latest code from this morning: 1. Clean db 2. paster create-test-data 3. paster sysadmin create http://davidread.myopenid.com/ 4. paster serve development.ini 5. In browser, log in to CKAN 6. Create new package: name=abc group=Roger's books 7. [Preview] - yes group appears 8. [Save] - shows package and group hasn't appeared ERROR 9. Check http://127.0.0.1:5000/api/rest/package/abc and reedit package it also doesn't appear here either. " 1287394476000000 1290000656000000 701 requirement pudo johnbywater iati-3 closed fixed The system shall support changing package groups when editing a package 1287403776000000 1291644605000000 703 story pudo johnbywater iati-3 closed fixed Add package to package group using the package form fieldset 1287403920000000 1289909096000000 704 story pudo johnbywater iati-3 closed fixed Remove package from package group using the packge form fieldset 1287403961000000 1289910491000000 705 story pudo johnbywater iati-3 closed fixed Show package groups on the package read page 1287404004000000 1291644479000000 706 task pudo johnbywater iati-3 closed fixed Test for removing package from package group using the package form fieldset 1287404073000000 1289909028000000 707 task pudo johnbywater iati-3 closed fixed Test for adding package to package group using the package form fieldset 1287404126000000 1289910513000000 708 task pudo johnbywater iati-3 closed fixed Test for showing package groups on package read page 1287404169000000 1289910506000000 716 requirement pudo pudo iati-3 closed fixed Visual improvments to IATI CKAN 1287583741000000 1290000673000000 717 bug pudo pudo closed fixed "Fix and validate ""setup_default_user_roles"" in IATI" 1287583892000000 1290005099000000 718 story pudo pudo iati-3 closed fixed Show recent activities on home page 1287583989000000 1288459823000000 719 story pudo pudo iati-3 closed fixed Improve overall layout of IATI ... probably by adapting aidtransparency.net 1287584092000000 1289910497000000 720 story pudo pudo iati-3 closed wontfix Include CMS pages in IATI registry "Perhaps using deliverance? * Move About to the right of the nav tabs and make it an about IATI page * Make a Help / FAQ section linked of main menu * Front page more dynamic - latest data registered and news (microblog thing) * make the front page blurb noticable / shorter etc. * link to iatistandard.org from the front page blurb" 1287584189000000 1288459344000000 721 story pudo pudo iati-3 closed fixed Make the table preview a link to a new page. 1287584244000000 1288459534000000 722 story pudo pudo iati-3 closed fixed Further adapt l10n for IATI " * Change ""Publishing Entity"" to ""Publisher""" 1287584314000000 1288459703000000 723 story pudo pudo iati-3 closed fixed Hide action links pointing to unavailable actions (package create) 1287584448000000 1288459610000000 724 requirement pudo pudo iati-3 closed fixed Improve publisher workflow 1287584548000000 1289835202000000 725 story pudo pudo iati-3 closed fixed Change to allow anyone (logged in) to create a publisher "With a pending state set (""unapproved"") " 1287584630000000 1289296038000000 726 story pudo pudo iati-3 closed fixed Send message to sysadmins to approve new publishers 1287584670000000 1289835192000000 727 story pudo pudo iati-3 closed fixed Sysadmin can approve a publisher 1287584754000000 1289835196000000 775 task pudo dread closed fixed Search warning "We're getting this warning a great deal on live servers. Is these really a sign of the system not operating correctly or can we reduce the level to an INFO? e.g. on hmg.ckan.net: {{{ 2010-10-29 17:12:08,262 WARNI [ckan.lib.search.common] NOOP Index: id,package_id,url,format,description,hash,position 2010-10-29 17:12:08,333 WARNI [ckan.lib.search.common] NOOP Index: id,package_id,url,format,description,hash,position 2010-10-29 17:12:08,375 WARNI [ckan.lib.search.common] NOOP Index: id,package_id,url,format,description,hash,position 2010-10-29 17:12:08,406 WARNI [ckan.lib.search.common] NOOP Index: id,package_id,url,format,description,hash,position 2010-10-29 17:12:08,480 WARNI [ckan.lib.search.common] NOOP Index: id,package_id,url,format,description,hash,position 2010-10-29 17:12:08,613 WARNI [ckan.lib.search.common] NOOP Index: id,package_id,url,format,description,hash,position }}}" 1288372692000000 1295260144000000 782 defect pudo rgrp ckan-v1.3 closed fixed Add and remove users from sysadmin role from the command line "Need to be able to create (and remove) sysadmins easily (used to be able to do this via ini file but this functionality was removed a while back in authz system reorganization it seems). Suggest creating a new paster command as first step. {{{ # user identifier = openid (?) paster sysadmin add {user identifier} paster sysadmin remove {user identifier} }}} Suggest this also be added to main CKAN docs. This should go into metastable as well as default so that it goes into the v1.2 release (can do this via a transplant from one branch to the other)" 1289205287000000 1289218661000000 808 enhancement pudo rgrp ckan-v1.4-sprint-2 closed fixed Allow i18n language choice on site (and possibly set automatically) "Allow choice of language on ckan instance. * Configuration variable listing language choices (could try doing this automatically but recommend against this) * Switcher option in UI (perhaps on user profile page) * Default it automatically based on browser settings (?) Think this is high value (and cost is low) Cost: low (4h) " 1289944394000000 1297783658000000 810 enhancement pudo pudo ckan-v1.5 closed wontfix "Move ""add packages"" field up in group form" Subticket of forms super ticket #961 1289992287000000 1310128477000000 835 enhancement pudo pudo ckan-v1.3 closed fixed Authorization CLI and Documentation "As a sysadmin I want to take CKAN out of wiki-mode into normal mode. In normal mode visitor and logged in users cannot create or add packages. Suggest put this as an internal command in authz system and add to cli as paster command." 1291029108000000 1291644820000000 847 enhancement pudo rgrp ckan-v1.3-sprint-2 closed fixed CKAN search using SOLR backend "This is a meta-ticket to pull together all the work on SOLR as a backend for CKAN search. (Work on SOLR search has been going on since March of 2010). 3 key aspects of this: * Index package information in SOLR - ticket:353 - SOLR search indexing (index CKAN) * Synchronously (generify Search Index update method to support SOLR or postgres?) - #317: Make search pluggable * Asynchroously: via worker with queue * #324 Search indexing using notifications * #669: Refactor Solr (indexer) to become a generic worker * #874: Extract Solr search backend into an extension * In core support using SOLR backend as well as postgres for queries * #317: Make search pluggable (?) * Integrate into WUI (if changes needed) * #672 - Facets in CKAN search results Extras: * Solr index testing tool #431" 1291639273000000 1295259902000000 855 defect pudo dread closed invalid Authenticator tests The coverage tool (run by buildbot in the ckan build) reports that only 38% of lines of ckan.lib.authenticator are run in tests. This suggests a need for more tests. 1291723967000000 1311176988000000 859 defect pudo dread closed invalid Tests for User model Test coverage of ckan.model.user is 53%. Notable exception - setting password. Room for improvement? 1291724348000000 1311177461000000 865 defect pudo pudo ckan-v1.3-sprint-1 closed fixed Support external strings in JS "* Provide and include a ""language.js"" file. " 1291801938000000 1295259773000000 875 enhancement pudo rgrp ckan-v1.4-sprint-1 closed fixed Search backend supports solr interface and query API mimics solr "Consolidate search API interface (and backend) on solr (solrpy) type interface. * Support for standard query structure * Support for facet options Do '''not''' need to change response formats. (Or do we?) 2 options here for advanced features like facets in non-solr: 1. Disable (happens automatically) 2. Implement - suggest using group by etc == Extras == * Front-page tag cloud: change this to use facets * Accept this means that if facets not functional in backend we have no tag cloud " 1292844957000000 1297085261000000 882 defect pudo pudo closed wontfix Update i18n user docs and backport genshi i18n:domain fixes from WDMMG 1293192044000000 1340626094000000 903 defect pudo pudo ckan-v1.3 closed fixed Proper handling of deleted packages in Solr serps Currently, deleted packages are filtered from search results after solr returns. That means result count can drop below the requested number, down to 0. Thus we need to filter before or in Solr. 1294831054000000 1296588070000000 908 defect pudo rgrp ckan-v1.4-sprint-1 closed fixed Issues deploying extensions with modwsgi / uwsgi "Some extensions import pylons features (such as request) at root. Have encountered following issues: 1. You need to import ckanext before any ckan stuff in your wsgi script (extension stats and dataapi) 2. Running under wsgi daemon mode (normal mode is fine!) the front page (front page only) will not work (does not occur with disqus or synchronous_search but does with stats and dataapi extensions). You get errors like this in the log: {{{ [Mon Jan 17 09:01:19 2011] [error] Exception KeyError: KeyError(-1218594160,) in <module 'threading' from '/usr/lib/python2.6/threading.pyc'> ignored [Mon Jan 17 09:01:20 2011] [error] Exception AttributeError: ""'NoneType' object has no attribute 'clearing'"" in <bound method PluginEnvironment.__del__ of Services for Environment '<default>' }}} " 1295264624000000 1296730578000000 910 enhancement pudo pudo ckan-v1.5 closed invalid Refactor CKANrdf to support extras Extra fields should be represented in some manner. 1295266026000000 1310128544000000 911 defect pudo pudo ckan-v1.3-sprint-3 closed fixed Add pager to dcat-tools/rdfsolr 1295266211000000 1296467375000000 912 defect pudo pudo ckan-v1.5 closed wontfix Rethink result row representation in dcat-tools/rdfsolr " * Should license go in the bottom line? * Formats should be styled as in CKAN " 1295266299000000 1306774876000000 913 enhancement pudo pudo ckan-v1.5 closed wontfix Handle licenses in dcat-tools " * Create a list of all valid predicates where licenses are stored. * Create a license normalization registry in GSpread * Fill spreadsheet from OKD/OSI lists. " 1295266407000000 1306774962000000 914 defect pudo pudo ckan-v1.3-sprint-3 closed fixed Handle formats in dcat-tools " * Create a list of valid predicates for format information (accessURL et al) * Execute #235 via Google Spreadsheets and include in DCat enrichment " 1295266569000000 1297069958000000 915 defect pudo pudo ckan-v1.3-sprint-3 closed fixed Deploy dcat-tools/rdfsolr to publicdata.eu as a placeholder We should present something there, why not start with a meta-search. 1295267040000000 1296467518000000 935 defect pudo pudo closed fixed """groups"" field bug in IATI" "An internal server error was reported when trying to create a new package (not when editing): WebApp Error: <class 'sqlalchemy.exceptions.IntegrityError'>: (IntegrityError) null value in column ""name"" violates not-null constraint 'INSERT INTO package (id, name, title, version, url, author, author_email, maintainer, maintainer_email, notes, license_id, state, revision_id) VALUES (%(id)s, %(name)s, %(title)s, %(version)s, %(url)s, %(author)s, %(author_email)s, %(maintainer)s, %(maintainer_email)s, %(notes)s, %(license_id)s, %(state)s, %(revision_id)s)' {'maintainer': None, 'name': None, 'author': None, 'author_email': None, 'notes': None, 'title': None, 'maintainer_email': None, 'url': None, 'state': 'active', 'version': None, 'license_id': None, 'revision_id': '0141c09c-4eb3-4dda-a6b1-e07f2c73b4c5', 'id': '7fe16a29-f183-471a-99c5-2c2e81dd86e4'} The error could not be reproduced in a non-apache/mod_wsgi environment, even with a dump of the live database. Further investigation by manual editing of the package form left the ""groups"" field as the likely cause. After updating the packages installed, and temporarily editing the package controller the problem vanished after a restart of the web server. Possible causes include: * Stale pyc file * Threading issue * Dependency issue As the problem is gone for now, it cannot be further investigated atm. " 1296302915000000 1306778682000000 938 enhancement pudo rgrp ckan-v1.4-sprint-1 closed fixed Message flashing / notification in WUI "Good user interfaces provide feedback to users. We should provide more feedback about the success / failure of actions using message flashing (see http://flask.pocoo.org/docs/patterns/flashing/). We already do some of this (slightly poorly), e.g. on adding an authorization the app says: ""X authorization added"". == Implementation == * Standardize this process and add section to html for this purpose. * Already done in other OKFN apps e.g. yourtopia.net, wheredoesmymoneygo and commentonit * Testing: suggest keeping this very simple == Estimate == * Cost: 0.5h (html etc) + 1h to do some integration " 1296398920000000 1297077023000000 940 defect pudo rgrp ckan-v1.3 closed wontfix OpenID login via google for same user generates 2 different openid urls "This has been noted twice in the last couple of weeks. Checking around my guess is this is due to someone logging in to www.ckan.net and ckan.net. Google generates openid based on the RP (requesting party) which is the requesting domain url unless the openid.realm is set. See: * http://groups.google.com/group/google-federated-login-api/web/the-most-important-technical-issue-in-using-the-google-accounts-api?pli=1 * http://stackoverflow.com/questions/3549953/how-to-get-unique-identifier-from-openid-google To fix this we should set the openid.realm (not sure how atm). If this is not possible an alternative is to make sure we redirect all users to a single site url (perhaps using ckan config option site_url, or doing this in apache). Cost: 1h" 1296401521000000 1297071748000000 942 defect pudo pudo ckan-v1.4-sprint-1 closed fixed Fix SERP pager argument passing "It only passes ""q"", but the whole query must be serialized. " 1296469490000000 1297074807000000 943 enhancement pudo pudo ckan-v1.4-sprint-1 closed fixed Create CKAN Wiki Set up a Mediawiki to contain info on CKAN.net (community) conventions etc. 1296469547000000 1297076498000000 944 defect pudo pudo iati-4 closed fixed Upgrade IATI to CKAN 'default' " * Move code base, fix any breakage. * Deploy to eu8 * Test * Deploy to eu14 == Why == Later CKAN codebase has a bunch of improvements / fixes that it would be good to have. == Estimate == * 8h " 1296469688000000 1306774766000000 946 defect pudo dread ckan-v1.3 closed fixed No default system rights "CKAN currently comes out of the box being uneditable. We'd like to encourage people to have open CKANs and therefore by default init the db with this right: {{{ visitor -> is editor on -> System system }}}" 1296499922000000 1296833383000000 949 enhancement pudo pudo ckan-v1.4-sprint-1 closed fixed Generic username/password login "based on repoze.who-friendlyForms " 1296658126000000 1297074827000000 960 defect pudo rgrp ckan-v1.4-sprint-1 closed fixed Support non-ascii character in internal error messages "Just saw an error like the following which looks like it is to do with having a user object with non-ascii characters in it. Either get rid of 'cast' to str type here or do it in a unicode aware way. Should do this not just here but everywhere we can find in the code base. {{{ Module ckan.controllers.package:302 in edit << am_authz = self.authorizer.am_authorized(c, model.Action.EDIT, pkg) if not am_authz: abort(401, str(gettext('User %r not authorized to edit %s') % (c.user, id))) auth_for_change_state = self.authorizer.am_authorized(c, model.Action.CHANGE_STATE, pkg) >> abort(401, str(gettext('User %r not authorized to edit %s') % (c.user, id))) UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 1: ordinal not in range(128) }}} == Estimate == Cost: 1h" 1297069721000000 1297169056000000 980 defect pudo pudo ckan-v1.4-sprint-1 closed fixed Fixes to HR Infoshare "We've fixed a few things in CKAN that were discovered and tracked by HRI in their own issue tacker. This includes: * add authz checks to package edit links (cset:0752316cd2fe) * replace gettext with _ in controllers, to support unicode error msgs (cset:822340e6077e) * handle broken html in notes field without crashing on package read (cset:4b6be037dda0) * update i18n (cset:37d57dc3c492, cset:ea03173f5e77, cset:f16f4ee40fe7)" 1297430918000000 1297503177000000 985 enhancement pudo pudo pdeu-1 closed duplicate Harvest other data catalogues " * data.london.gov.uk (1d, ping DERI) * catalogues from Paris and Vienna (1d) Others? * digitaliser.dk (1d) * data-publica.com (2d) * data.suomi.fi (2d) * dati.piedmonte.it (1d) * portalu.de (2d)" 1297679799000000 1306408134000000 987 defect pudo pudo closed duplicate Common harvesting framework "We are now harvesting metadata from other sources in various places around CKAN. Such harvesting can include: * CSW/WFS for INSPIRE/UKLII (yields CKAN packages) * Catalogue scraping for LOD2 experiments (yields RDF graphs) * Atom/DCat for LOD2 production (yields RDF graphs) * OAI-PMH for http://datadryad.org/ and other dspace (yields CKAN packages) We should aim to consolidate the harvesting clients into a common system that is easy to extend when needed and can be re-used in different scenarios. In general, such a system would have the following stages: * Source selection: find what to download/scrape/harvest/parse * Index retrieval (i.e. package index) * Item retrieval (i.e. package entity) * (Optional: Serialization) * Normalisation * Loading/Merging into CKAN Exisiting harvesters are at: * CSW: https://bitbucket.org/okfn/ckanext-csw/src/ * Scraper+CKAN: https://bitbucket.org/pudo/dcat-tools/src/d5d96b06ec9a/dcat/crawl/" 1297684756000000 1311177705000000 1007 defect pudo pudo closed wontfix Backport WDMMG translations for extensions i18n "Needed to allow extensions to be internationalized in the code and in templates. Requires in-template i18n domain switching which is broken between Genshi and Pylons, thus needs this hackish class. cf. https://bitbucket.org/okfn/wdmmg/src/198841e770e5/wdmmg/config/environment.py#cl-16 " 1298630621000000 1340626203000000 1009 enhancement pudo rgrp ckan-backlog new Improvements to user accounts sytem " * Forgot password (email a new password) * Confirm email * Do not show register page if you are logged in (redirect to home page) * ticket:1010 - listing of users. * Do not use /user for general user account home page (either user normal user page /user/{id} or /user/myaccount) " 1298635991000000 1310128574000000 1017 defect pudo sebbacon closed fixed Problem assigning users to authz groups through web interface "Against ckan-1.3.1, when I create an authz group called ""administrators"" and visit /authorizationgroup/edit/administrators, I am unable to add more than one user to it. Each time I add additional users, the existing user on the list is replaced with the new one." 1299071127000000 1299668555000000 1019 enhancement pudo pudo ckan-v1.4-sprint-3 closed fixed Webhooks notification service "We propose the following push approach using individual packages: 1. New, updated and deleted packages are pushed to a url endpoint on Wordpress (WPURL). This endpoint will be a configuration option on the CKAN side. A POST or PUT http method will get used. The payload will be a json document of the following form: { payload: The entity data as available from the REST API entity-type: 'Package', operation-type: 'create'|'update'|'delete' # one of these options } It will be sent as the body of the request with content-type set to application/json. 2. The wordpress side will provide a 200 on success. Any other response will be taken as a failure. On failure, submission will be archived and failure logged and notified to system administrator. Submission can be resent later automatically by sysadmin after review. 3. Pushes will happen continuously and approximately simultaneously with updates (a webhooks type model) 4. [optional] CKAN side will support configuring authorization for basic authentication if applied on WP side. 5. [optional] List queue status (including failures) on ckan adminstrative dashboard. " 1299166784000000 1299166930000000 1021 enhancement pudo pudo ckan-v1.4-sprint-3 closed fixed Config option to disable OpenID HRI don't like federation, want to login normal way only. Make this a config option and perhaps even mess with runtime repoze config 1299492920000000 1299518828000000 1022 enhancement pudo pudo ckan-v1.4-sprint-3 closed fixed Error reporting in CKAN worker API Report on errors by any worker daemons, send them out via E-Mail 1299493047000000 1299512991000000 1023 defect pudo pudo closed wontfix Re-queueing of worker requests with errors Schedule worker calls to be ran several times, with certain intervals. 1299493179000000 1340626231000000 1024 enhancement pudo pudo ckan-v1.4-sprint-3 closed duplicate Lock down all controller actions in CKAN When a user visits the site, he/she may only see a login box. 1299493428000000 1299668648000000 1027 enhancement pudo pudo ckan-v1.4-sprint-3 closed fixed Authorization checks on all controller actions We want to have authz checks on all controller actions so that we can lock down CKAN to a login-only mode. 1299666256000000 1299682082000000 1044 defect pudo dread closed fixed Sysadmins locked-out of API without Right: (visitor, SITE_READ, System) "The problem is that in ckan/controllers/rest.py the BaseApiController has this method: {{{ def __before__(self, action, **env): BaseController.__before__(self, action, **env) if not self.authorizer.am_authorized(c, model.Action.SITE_READ, model.System): abort(401, _('Not authorized to see this page')) }}} which works on the basis of your c.user, rather than your apikey. All API users are treated as visitors (since API users don't get a login cookie) and even a sysadmin's apikey is blocked unless there is a right for a Visitor to SITE_READ. Also needs tests. (Also, why is this restriction only on the API, package search, group index and tags and agroup index? I'm guessing SITE_READ is only for places where other authz don't apply, but maybe it should not be called 'SITE_READ' but 'OTHER_READ' or something?)" 1300358919000000 1302096155000000 1122 enhancement pudo dread closed wontfix JSON Extra data not searchable "It is possible to use the CKAN API to insert JSON format data into package extra values, but this data is not found on searching. Full text from Pascal: {{{ we encountered a Problem concerning accessing Arrays/Lists. curl -XGET 'http://ckan.net/api/rest/package/hbz_unioncatalog' will get you amongst others: ""extras"": {""publishingInstitution"": ""[u'http://lobid.org/organisation/DE-605', u'http://lobid.org/organisation/DE-290', u'http://lobid.org/organisation/DE-38M', u'http://lobid.org/organisation/DE-98', u'http://lobid.org/organisation/DE-38', u'http://lobid.org/organisation/DE-Kn41', u'http://lobid.org/organisation/DE-82', u'http://lobid.org/organisation/DE-107', u'http://lobid.org/organisation/DE-929', u'http://lobid.org/organisation/DE-Zw1', u'http://lobid.org/organisation/DE-832']""} but if I try to query this: wget 'http://ckan.net/api/search/package?q=lobid&publishingInstitution=""http://lobid.org/organisation/DE-605""' I get only two packages, among the package ""hbz_unioncatalog"" is missing. (These two packages have only one value for ""publishingInstitution""). The ""extra/publishingInstitution""-Array was uploaded through a ""curl -XPUT ... ""extras"": { ""publishingInstitution"":[ ""http://lobid.org/organisation/DE-605"", ""http://lobid.org/organisation/DE-290"", ""http://lobid.org/organisation/DE-38M"", ""http://lobid.org/organisation/DE-98"", ""http://lobid.org/organisation/DE-38"", ""http://lobid.org/organisation/DE-Kn41"", ""http://lobid.org/organisation/DE-82"", ""http://lobid.org/organisation/DE-107"", ""http://lobid.org/organisation/DE-929"", ""http://lobid.org/organisation/DE-Zw1"", ""http://lobid.org/organisation/DE-832"" ] }, ... }}}" 1304367510000000 1306747714000000 1155 enhancement pudo pudo pdeu-1 closed fixed Harvester for data.london.gov.uk Write a harvester for data.london.gov.uk to import catalogue metadata into PDEU. API (or at least documentation) is available at: http://sourceforge.net/projects/londondatastore/files/ 1306337318000000 1306773174000000 1156 enhancement pudo pudo pdeu-1 closed fixed Scraping harvesters for Paris and Vienna Catalogues "Import metadata from both sources into PDEU via the Harvesting framework but by scraping their respective catalogue pages. * http://data.wien.gv.at/katalog/ * http://opendata.paris.fr/opendata/jsp/site/Portal.jsp" 1306337428000000 1306855111000000 1157 enhancement pudo pudo pdeu-1 closed fixed A simple theme for publicdata.eu, CKAN "Change the visual style of CKAN to be more like these sites: * GitHub * Quora * Google Projects This does not include major UX work. " 1306337573000000 1309804029000000 1158 enhancement pudo pudo pdeu-1 closed fixed Put PDEU into read-only mode and remove unneeded functions "PDEU should be in a mode where: * Users cannot edit or create packages * Users cannot sign up on their own * AuthorizationGroups and RevisionHistory is completely gone from the UI * Groups have been repurposed as Subjects " 1306337786000000 1309804060000000 1159 enhancement pudo pudo pdeu-1 closed fixed Add RDFa to CKAN package pages "RDFa can be used as a simple way to expose linked data or at least sameAs the API version of the data but we need to make sure we do not expose anything different from the ""official"" representation." 1306337907000000 1307615133000000 1161 requirement pudo amercader pdeu-1 closed duplicate Build a simplified theme for PDEU "We need to offer a strongly simplified version, read-only of CKAN under publicdata.eu, with a focus on its role as search engine instead of a data catalogue. This ticket relates to work on the PDEU theme only!" 1306407835000000 1306408026000000 1174 enhancement pudo pudo pdeu-1 closed wontfix API Representation Registry "As CKAN grows, more and more optional representations of packages will become used. Besides RDF (which is the motivation for this ticket), support for DSPL, home-grown XML, or CSV listings is imaginable. To properly support this CKAN should have an extensible representation registry that can be extended when new output types become available (and without changing the API in the process). This needs to integrate in two places: * We need to add support for file format extensions to the package handler and REST API. * We need to add HTTP content type negotiation (Accept headers). To support this we should have a registry with two registers: * to map format extensions to mime types (e.g. ""json"" -> ""application/json"") * to map mime types and entity types to converter functions (e.g. 8""application/json"", ckan.model.Package) -> func(obj, mime_type) ) This should be set up on load_environment so that IConfigurer plugins can feed into it. The registry should then first be added to _finish in the REST API (which needs to be refactored to be passed the {format} part of the URL if one is given. Based on the format part and HTTP headers, an appropriate representation can be generated by the registry and then be returned to the user. Forwarding of requests to the regular WUI controllers with Accept headers set or a format specified can be implemented in a separate effort. " 1307050992000000 1307615200000000 1199 enhancement pudo pudo closed fixed Implement an email function for users. "We need an email function in CKAN to accept messages sent to users. The basic signature will be: * mail_user(user_obj, subject, body, mime_type='text/plain', headers={}) This has a number of use cases: * Retrieval of lost passwords * E-Mail confirmation Finally, the mail function should be exposed in the API for sysadmin clients. This way we can have scripts traverse CKAN for 404s, invalid data or missing fields and ping users about that automatically (requires traversal by revision, not package, to get the associated users). == Implementation == Note we have already written code like this (*and* tested it) in isitopen: * https://bitbucket.org/okfn/isitopen/src/bb2cbd146fa5/isitopen/lib/mailer.py * https://bitbucket.org/okfn/isitopen/src/bb2cbd146fa5/isitopen/tests/lib/test_mailer.py " 1308821986000000 1310555589000000 1223 enhancement pudo pudo closed fixed Caching of static files StaticURLParser can have caching - use it 1310573854000000 1310573893000000 1246 defect pudo adrian.pohl@… ckan-sprint-2011-10-28 closed fixed Search results on ckan.net are mistakenly all 'open' "All package search results on ckan.net are labelled as 'open' even when their license is closed or unknown: http://ckan.net/package " 1311863353000000 1311892816000000 1249 enhancement pudo rgrp ckan-v1.5 closed fixed Exclude script tag from extraction for i18n "Currently have this script section put in for i18n. It shouldn't be. {{{ <script type=""text/javascript""> //<![CDATA[ (function($){ $.fn.ajaxCreateSlug = function(name, url) { var title = this; var updater = { init: function(title, name) { // Add a new element where the validity of the package name can be displayed this.name_field = name; this.title_field = title; this.name_field.parent().append('<div id=""package_name_valid_msg""></div>'); this.title_field.blur(this.title_change_handler()) this.title_field.keyup(this.title_change_handler()) this.name_field.keyup(this.name_change_handler()); this.name_field.blur(this.name_blur_handler()); this.url = url; }, .... }}}" 1311958536000000 1311959356000000 1250 enhancement pudo rgrp ckan-v1.5 closed fixed Search results should be sorted by score rather than alphabetical "At the moment we sort search results alphabetically. While this is useful for doing 'browse' case where no search bad for all other cases. Adopt default sort order of 'score' though may wish to keep alphabetical for no search term (i.e. wildcard). Options: * Default this in solr (no need to touch code) but fragile and affects everything ... * Do it in code and default to score * Do it in code and have alphabetical (on name or title?) when no criteria otherwise score Aside: may also wish to support search in query api but that is for later!" 1311964752000000 1312370201000000 1281 defect pudo pudo ckan-sprint-2011-10-28 closed fixed Locale change flash message in wrong language "When you change the locale, it displays a flash message ""Language has been set to: English"" in the original language, not the one we have just changed to." 1314021656000000 1314021919000000 371 requirement nils.toedtmann johnbywater ckan-v1.4 closed fixed The system shall monitor QoS against SLA Requested by DGU. 1279885622000000 1300217820000000 659 enhancement nils.toedtmann dread closed fixed Check CKAN instance works automatically Auto way to check web and API interface of a CKAN instance basically works. Several gotchas can be quickly determined, such as logging in, search not working. Needs to be configurable per site basis. 1285348333000000 1311183031000000 1305 defect nils.toedtmann amercader ckan-backlog closed fixed SMTP config for thedatahub.org and IATI "The email sending functionality (e.g for password reset) does not work on thedatahub.org and IATI (and probably some other instances) when using an address which is not a okfn.org one. Could not send reset link: SMTPRecipientsRefused({u'amercadero@gmail.com': (550, 'relay not permitted')},) As I said, adria.mercader@okfn.org works fine. The SMTP server used mail.okfn.org" 1314956657000000 1315317033000000 89 enhancement nickstenning rgrp closed fixed Tag cloud for package tags Should not be hard to do (lots of existing libraries) but not sure that this is very important. 1248693939000000 1265892698000000 90 enhancement nickstenning rgrp v0.11 closed fixed Link to RDF versions of CKAN data "We should link to representations on semantic.ckan.net * Each package page could link to its RDF representation * ""Alternative formats"" near star rating. Has logo for RDF (link to RDF) and JSON (link via CKAN REST i/f). * Some instances of ckan won't need this, so have option in ini file for this. rdf_store_url=xyz * Include machine-readable link to the RDF: {{{ <meta http-equiv=... /> }}} * 303 redirect to RDF when content negotiation requires RDF. Test: {{{ curl -I -H ""Accept: application/rdf+xml"" http://localhost:5000/package/warandpeace }}} Cost: 3h == Future == * Search page to link to SPARQL interface: http://semantic.ckan.net/sparql * License/dump page could link to full RDF dump. " 1248943742000000 1265890334000000 206 enhancement nickstenning nickstenning v1.0 closed fixed UI review "Investigate and list (on the wiki at wiki:UiReviewNotes) CKAN's UI issues, in particular: * Form usability * best example: http://ckan.net/package/new * ""Extras"" fields * Adding to groups (from group page or from package page?) * Overview pages: reduction in visual noise and unnecessary elements. * best example: package overview page * consider openness/downloadability icons * display common metadata fields in a more structured fashion? Est cost: 2 hrs." 1260199941000000 1260881123000000 214 enhancement nickstenning dread v0.11 closed fixed UI Review - General template " * Set hover names on navigation links. * Do we really need to display ""About CKAN"" everywhere? Just on home page. * Redirect in routing /groups and /tags rather than /group and /tag. At the very least make the plural versions forward to the singular versions. " 1260879581000000 1263406056000000 216 enhancement nickstenning dread v1.0 closed fixed UI Review - Search " * allow clicking on 'only openly licensed'/'only downloadable' to select/deselect checkboxes: make them <label>s. * cut 'only's -- use word 'filter' instead * doesn't appear to match substrings!? A search for 'anna' doesn't return match the 'annakarenina' package. * autocomplete package names & tags " 1260879802000000 1273596102000000 217 enhancement nickstenning dread v0.11 closed fixed UI Review - Search results "Package search results page [/package/search?q=something] * need clearer delineation between search entry form and results. * 0 results needs to be clearer, and the alternative suggestion: 'would you like to create a new package' needs to not look like a search result. * ""N tags found"" -- why do I care? this should be presented as ""filter results by tag"" -- very unlikely that I'm looking for a tag: I'm looking for a package, but tags might help me narrow down my search. * tags should be displayed more like the way they're displayed when you add them to a package (i.e. blue 'tag' background) * filter out particular tags * tag cloud? * copywriting: ""Packages - Search"" -> ""Search packages"" " 1260879870000000 1263406092000000 218 enhancement nickstenning dread v0.11 closed fixed UI Review - Package listing " * openness/downloadability ticks/crosses are totally inscrutable to non-techies (those who don't know about the title attribute). need better icons, and a key in a box on RHS. * maybe highlight two-tick entries with a particular colour, but the open knowledge badge is horrendous, and breaks visual cadence. * results data should be tabulated, with the project names and descriptions made most prominent. <li> blobs are unnecessary visual noise. * maybe links should go on the full titles? Get rid of package names. * Should have filter by name (à la KForge alphanum widget) and also by tag: list of most common tags in box on RHS? * same comments as search listing (ticket:217) " 1260879903000000 1263406033000000 219 enhancement nickstenning dread closed wontfix UI Review - Package " * Propose three-column package listing: two lists of highest-scorers on some metric and last column is an invitation to register a new package, with a little copy explaining what's involved and why you'd want to. * Add in search widget " 1260879947000000 1294914901000000 220 enhancement nickstenning dread v0.11 closed fixed UI Review - Package read "Package page [/package/mypackagename] * Design * In general: a huge amount of visual and typographic noise: ""Package:"" is redundant. * ""{edit}"", ""{history}"" -- ugly, and it's not clear that these are primary actions on this page. Notably, why on earth is ""make an enquiry with Is It Open?"" bigger than these? * Openness/downloadability icons: need help, as discussed earlier * ""Rating:"" redundant, as is the second set of stars -- why can't both the display and rate widget * Rating - alternative to GET on set_rating. * ""Metadata:"" technospeak, probably redundant. * <li> bullets add nothing. * Title, Version, URL can probably go in one line. * Resources can be made more prominent. * Author, author email and Maintainer, maintainer email can be merged. * Groups, tags in little boxes? * Notes made more delineated -- Markdown has the capacity to look like other parts of the page: perhaps monospace the typeface? * Don't show extras unless there are any. " 1260880136000000 1265286499000000 222 defect nickstenning dread closed fixed UI Review - Package history "Package history page [/package/history/mypackagename] * ""Revisions"" is redundant * ""Compare"" button is in a ridiculous place. It should be above/below (both) the table, but not *in* it! * Ditto to overall ""Recent Changes"" page comments w.r.t. timestamps, GUIDs (ellipsis), and (if poss) author links. " 1260880198000000 1282909280000000 223 enhancement nickstenning dread v1.0 closed fixed UI Review - Tag "Tags landing page [/tag] * Both search for tags *and* browse the list of tags right here * Big cloud of tags (sorted by popularity/usage?) filterable with a search box. * Tags search page [/tag/search] and list [/tag/list] are both redundant and should be merged straight into [/tag]. " 1260880276000000 1273596111000000 224 enhancement nickstenning dread v0.11 closed fixed UI Review - Groups "Groups landing page [/group] * Yeesh! What's up with the typography for ""Just login...""? * Truncated description along with group name. * Explanation text about what groups are for (RHS) * Another case of <li> bullets adding nothing. " 1260880360000000 1267100560000000 226 enhancement nickstenning dread v1.1 closed fixed UI Review - History "Repository History [/revision] * What is this page called? ""Recent Changes"", ""Repository History"", ""/revision"": standardise. Between the link in the nav and the page <title> particularly, but the route is also important. Perhaps /changes or something similar? * Will change page title on /revision/ to Revision History. Will not change route for the time being. * ~~needs copyediting.~~ * ~~Pagination has similar issues to elsewhere. Also, most obvious here, is the fact that we don't need to display a link to every possible page. Please can we limit it to, say, a dozen nearby pages and an ellipsis.~~ * ~~Without looking at dates, its not clear whether I'm seeing most recent or oldest changes. Change pagination to say ""Older""/""More recent"" rather than ""Previous""/""Next"".~~ (wontfix: now have text saying we are showing most recent changes) * Table layout is pretty ugly (yes, I'm aware this is my fault). * wontfix - nothing better at the moment * Timestamps are horribly unreadable. At the absolute minimum get rid of the micros. Hover for more detail? * Can we link to an author page? Yes! * ~~Atom feed should have a feed icon!~~ * Why are we adding another <link rel=""alternate""> to this page? We already have one for recent changes on every page in the site and the one we're adding has a less descriptive title. Which is correct? Use that one as a feed for every page. " 1260880515000000 1279130390000000 227 enhancement nickstenning dread v1.1 closed fixed UI Review - General checks " * There is huge inconsistency in the titles of pages across the site: to give one example ""Edit Package:"" vs ""Package: mypkg [not linked]"" vs ""History - mypkg [linked to package page]"" * Normalize and use terminology: ""Data Package"" - also change in navbar (but nowhere else for the time being). So hvae Data Package - mypkg, Data Package - mypkg - Edit etc * pagination is currently lost in amongst the results list. needs to be *much* more obvious, and should appear top and bottom, or at the very least at the bottom! " 1260880552000000 1279192621000000 234 enhancement memespring rgrp closed wontfix UI Review - Autocomplete package names & tags in search Broken out from ticket:216 1263056678000000 1338206486000000 447 task memespring johnbywater closed fixed Presentation on Package edit form (labels IE7, horiz alignment in chrome) Follow up with NS and RP. 1282299423000000 1311182895000000 838 enhancement memespring memespring ckan-v1.3-sprint-1 closed fixed UI improvements December 2010 "This is a meta ticket for a bunch of UI changes: * #839 Package page redesign * #846 Merge css files * #850 Show welcome message * #863 Prompt users to enter missing info * #864 Search results changes * #866 Add download formats to search results" 1291296811000000 1295259773000000 839 enhancement memespring anonymous ckan-v1.3-sprint-1 closed fixed Package page redesign as per http://ckan.org/wiki/UIRedesignPackage 1291299579000000 1292239918000000 846 enhancement memespring memespring ckan-v1.3-sprint-1 closed fixed merge style.css and ckan.css no need for separate files 1291635478000000 1291719074000000 850 enhancement memespring memespring ckan-v1.3-sprint-1 closed fixed Show welcome message on first visit to package page Control using cookies. 1291721923000000 1291721964000000 863 enhancement memespring memespring closed wontfix prompt users for missing package information e.g. license, owner etc 1291729787000000 1338206455000000 864 enhancement memespring memespring ckan-v1.3-sprint-1 closed fixed Search results UI changes as per http://ckan.org/wiki/UIRedesignSearch 1291736441000000 1291741028000000 866 enhancement memespring memespring ckan-v1.3-sprint-1 closed fixed Include download formats in search results as above 1291812213000000 1292240191000000 918 defect memespring dread closed invalid Package preview doesn't show tags or groups "1. Edit any package 2. Hit 'preview' Notice that the preview at the bottom doesn't show what tags or groups the package is in. This is because the new design of the package view only has this info in the sidebar, which is not displayed in the preview. One might argue that this is ok because the tag is not a central part of the metadata, only used for searching, so it is ok not to preview it. But I wanted to check that this change was a conscious decision." 1295346496000000 1315911507000000 2773 enhancement markw markw ckan-v1.9 new About page needs improving The about page for the DataHub (thedatahub.org/about) could be improved. More importantly the default about page for a generic CKAN instance should be completely different - focus more on Open Data rather than the community hub idea (as this is more relevant for most installations) and remove specific references to tdh. 1343646795000000 1343646795000000 1581 enhancement mark.wainwright@… johnglover ckan-future new Blog post about Google Analytics extension for CKAN "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)" 1324402800000000 1325474274000000 1171 enhancement mark.wainwright dread ckan 2.0 assigned Citation instructions on dataset and resource view pages "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." 1306920799000000 1347358705000000 2796 enhancement mark.wainwright ross new Need a datahub one-pager "A one-pager explaining what the datahub is and with howto/examples for new users. This would make it much easier to explain the value in using the datahub for storing data. " 1343924916000000 1345129495000000 1111 task lucychambers lucychambers closed fixed FAQ - For CKAN "Write CKAN FAQ (Basis can be: http://wiki.ckan.net/FAQ) Post preliminary questions on: http://notebook.okfn.org/" 1303906561000000 1305881039000000 1139 enhancement lucychambers lucychambers ckan-backlog closed fixed Create CKAN Theme Gallery "Take screenshots of existing ckan instances esp those mentioned <http://wiki.ckan.net/Theming> and put on flickr in ckan or ckan-theme group so we can create a gallery ... (both to illustrate theming but also to show ckan instances that are around -- could add to http://wiki.ckan.net/Instances)" 1305645859000000 1306941356000000 1153 enhancement lucychambers lucychambers ckan-backlog closed fixed Update CKAN wiki front page "Update CKAN wiki front page - a la OpenSpending: http://wiki.openspending.org/Main_Page Sections should relate to different types of people using the site: Developers, Users etc.." 1306155211000000 1306941386000000 84 enhancement kindly rgrp ckan-future assigned Revert support on versioned objects "Basic revert in the classic wiki form is already support by purging a Revision. However may wish to support: 1. Cases where multiple objects changed in a revision but only want to revert 1 (low priority) 2. Want to revert but have reversion as a new revision of that object. Seems low priority at present. Cost: ?" 1248339543000000 1340626385000000 103 enhancement kindly rgrp ckan-v1.5 closed fixed View a package at a given revision "As a user I want to view a package at a given revision: * When I visit /package/read/xyz?rev=yyy I should be shown package at revision yyy * package history page should provide links to these pages Cost: 2h" 1251289897000000 1311180850000000 363 defect kindly dread ckan-backlog closed wontfix Blank revisions "Occasionally we seem to get revisions that are not connected to packages. These shouldn't appear, since all revisioned objects are linked to a package aren't they? They appear on the 'Recently changed' list on the home page with an empty 'Packages' column." 1278947772000000 1310125872000000 515 defect kindly dread ckan-v1.4-sprint-6 closed fixed Inconsistent use of 'location' header in API "When you create a package then the 'location' header gets set. This doesn't happen for any other domain objects. I think this should be consistent - either none or all. I've removed the info about the header in the docs in the meantime." 1282757360000000 1302774268000000 560 defect kindly rgrp ckan-v1.4 closed fixed Deleted packages showing up in tag lists "E.g. http://ckan.net/tag/lod contains musicbrainz_ (Musicbrainz) item (if you click you will get 403/login as deleted packages can only be seen by admins). Also suggested that these are showing up in the API (courtesy of Anja) Cost: 2h" 1283700001000000 1297084192000000 663 defect kindly dread ckan-v1.4 closed fixed Duplicate sibling relationships displayed "Looking at: http://ckan.net/package/rkb-explorer-acm 'rkb-explorer-resex' gets display multiple times and shouldn't" 1285576369000000 1298913603000000 664 defect kindly pudo ckan-v1.4 closed fixed Sibling relationships shown for deleted packages 1285576600000000 1300371645000000 738 requirement kindly johnbywater ckan-v1.4-sprint-4 closed fixed Store revisions of harvested documents 1287775892000000 1299761436000000 826 enhancement kindly dread ckan-v1.4-sprint-1 closed fixed Resource 'extra' fields "There are a number of extra properties we want to store in a resource: * resource size (in bytes, no. triples etc.) - https://trac.dataco.coi.gov.uk/projects/datagov/ticket/673 * resource hash is 'static' (default) or 'changeable' - https://trac.dataco.coi.gov.uk/projects/datagov/ticket/674 * alternative link (e.g. TNA Web Archive) to use the link is broken - https://trac.dataco.coi.gov.uk/projects/datagov/ticket/173 i.e. this is a much needed enhancement Need to be able to read/write these values in web interface and API. (At some point we may wish to have custom form widgets for these new fields in the resource table, but let's leave this for the future.) = Implementation = I suggest these are arbitrary key/value pairs, just like package extras, reusing PackageExtra code as much as possible. (Other much more radical alternative is to move model to RDF.)" 1290611905000000 1306766057000000 841 enhancement kindly dread ckan-v1.4-sprint-4 closed duplicate Caching docs (as a whole) "Documentation article on caching / improving performance. (To complement configuration docs.) * Different sorts of cache - beaker style, etags, package_dict in search results(?) * How each one affects performance * How to turn them on/off and configure them * Is it possible to bypass each of them in the browser or with wget/curl?" 1291308879000000 1300364333000000 890 enhancement kindly pudo ckan-v1.6 closed invalid Introduce timed actions into ckanext-queue "The ckan queuing system should provide the option to subscribe to timed re-submissions of specific resources. This could look as follows: * routing_key: Package * operation: daily * payload: pkg.as_dict() Where operation is one of daily, weekly, monthly or any other interval. " 1294050769000000 1318599247000000 917 enhancement kindly kindly closed fixed Turning off Autoflush in SQLAlchemy "David Raznik: I propose we remove autoflush by default in ckan. It caused a lot of bugs on the version upgrade due to its magical behavior. I have a patch in https://bitbucket.org/kindly/ckan/ on branch feature_switch_autoflush_off_by_default. This change simplifies code. It only took 7 extra flushes/commits to make work and there are over 40 instances that we remove autoflush, so as not to cause error (I have not removed them in the patch yet). Things to know about using flush: * Most of the time nothing will change. A commit implies flush. * You only need to flush if you expect a query to return an object you just saved. i.e if you session.add(obj) and you expect obj to be in a session.query. * A flush is handy when you want to get the primary key out before you do a commit. i.e session.add(obj); session.flush(); obj.id is now generated. * You can use them as a limited form of nested transaction. It increased the performance on the tests by about 5%. There are less flushes altogether so is faster. I do not see any downsides." 1295279694000000 1295280232000000 922 enhancement kindly kindly closed duplicate Make Resources first class entity. "Why? * Will make it easier to give resources their own form, independent of packages. * Makes uploading, harvesting and previewing data cleaner as its separate from the packages. * Gives the option of sharing a resource between packages. * Leads the way to supporting storing richer semantic information against them." 1295713858000000 1320664187000000 945 enhancement kindly kindly ckan-v1.6 closed fixed [super] Richer resources - Resource Groups, new fields, improved UI "Super ticket: #1032 This is a meta ticket for changes that are going to happen in resources. * New resource group table. #956 * New kind field in resource. #957 * UI for new kind field. #958 * Resources in REST API ticket:358 * Resources in WUI #1445 * Make Resources first class entity. #922 (duplicate?) Background on this change can be found at: * http://ckan.okfnpad.org/resources - discussion etherpad * Contains commented version of James Gardner's main email: http://lists.okfn.org/pipermail/ckan-discuss/2011-February/000887.html * UseCasesResources " 1296475283000000 1325259350000000 954 enhancement kindly rgrp ckan-v1.5 closed fixed [super] API version 3 "Child tickets: * #1107 Move package autocomplete from package controller and move to API * #1087 version and contact info api call Move to a format that has a separate responseHeader and response. === A standard package response === {{{ { responseHeader: { status: 0, } response: {package-dict} } }}} On error: {{{ { responseHeader: { status: {err-code}, error: 'message' } response: none } }}} === A search query === Based directly on solr. {{{ { responseHeader: { status: 0, } response: { numFound: 5, start: 0 docs: [ ] } } }}} == Issues == This is a breaking change for clients == References == * http://wiki.apache.org/solr/SolJSON * http://www.flickr.com/services/api/response.json.html " 1296811899000000 1320142744000000 956 enhancement kindly kindly ckan-v1.4-sprint-2 closed fixed Add a resource group table. "We need a way to group resources by various different factors. The most important of which is timeseries. The model will look like Package <o2m> resource_group <o2m> resource The use cases to this are outlined in this email. http://lists.okfn.org/pipermail/ckan-discuss/2011-February/000887.html " 1296821112000000 1299489084000000 957 enhancement kindly kindly closed wontfix "new ""kind "" field added to resources" "The new field was outlined in http://lists.okfn.org/pipermail/ckan-discuss/2011-February/000887.html it says '''Can be ""data"", ""metadata"", ""service"", NULL. There is a need to do this for UKLP where some of the data associated with a package is metadata, some is data and some could be a service.'''" 1296821398000000 1314218701000000 961 enhancement kindly rgrp ckan-v1.5 closed fixed [super] Refactoring of forms, validation and model synchronization "This is a meta-ticket to hold all of the work on refactoring forms, validation and model-synchronization in CKAN. ckan-dev thread: http://lists.okfn.org/pipermail/ckan-dev/2011-January/000180.html == The Issue == From #926: The current formalchemy setup conflates view, controller and model code in a way that makes it hard to debug and customise. From http://lists.okfn.org/pipermail/ckan-dev/2011-January/000181.html: ... !FormAlchemy, in retrospect, was probably a mistake as it merges too much model/validation/form generation into one thing. At least 3 functions involved [in this area]: 1. Generating (or just filling) a form template with 'form data' (and errors) 2. Converting model data to form data (also happens for APIs in fact) -- let's call this 'dict-ization' 3. Converting form data to model data (and validating) (inverse of previous step) == Related Tickets == * #926 - Pick a simpler form framework * #1046 'dictization' and the logic layer - serialization / deserialization of package (and other domain objects) to standard intermediate format such as json-convertable python dict * #1079 Refactor API to use new logic layer and dictization * #1078 Refactor WUI controllers and forms to use logic layer * cf existing dumper and importer code * This will fix #662 * [not ticketed yet] - validation layer (should work on serialized objects?) * #662 - Can't put entity that is returned by posting to package register (Defect) * #972 - Merge 'extras' into main package dict rather than having separate key * #1035 - Form impressions are given IDs * #810 - Move ""add packages"" field up in group form (easier to do this once forms are done)" 1297069849000000 1310126100000000 965 enhancement kindly kindly ckan-v1.4 closed fixed make migration testing plugin to nose "In order to test migrations properly, we need to test the upgraded database against *all* the tests. To do this a special flag to nosetests should be added. nosetests --migrations This flag will make sure that the database is recreated from scratch each time using the migrate repository, bypassing init_db." 1297213492000000 1298280637000000 979 enhancement kindly dread ckan-backlog assigned Edit Resource extras in the API Follows on from #826. We can now edit resource extras in the WUI (to some extent - see #978 for remaining issues) and we can view resource extras in the API, but we can't yet edit them in the API. 1297429777000000 1315222244000000 981 defect kindly kindly ckan-v1.4-sprint-2 closed fixed fix authorization_group_user.id so it's added in migrate This was missed out the migrate script. It should be to be added as a conditional script at the end of the repository so that databases can catch up. 1297434480000000 1298278654000000 984 defect kindly kindly ckan-v1.4-sprint-2 closed fixed Fix migration, where upgrade diverges from actual model. "The migration scripts have not been inline with the upgrade scripts. There are lots of discrepancies. " 1297627447000000 1298280689000000 989 enhancement kindly pudo ckan-future new Extending the model from plugins "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 " 1297689724000000 1340034311000000 994 defect kindly kindly ckan-v1.4-sprint-3 closed fixed document a new migration methodology It is too easy to make a mistake with the migrations at the moment. A more systematic way of doing them is needed and this needs to be documented. 1298281192000000 1298912842000000 995 defect kindly kindly closed wontfix consolidate caching Try and minimise the amount of different caching methodologies, especially for api calls. 1298283499000000 1311179009000000 996 task kindly kindly ckan-v1.4 closed fixed Run some basic load testing. This will involve running a sample of real requests synchronously against real data. 1298283994000000 1300364398000000 997 defect kindly kindly closed duplicate change create on cli to upgrade When doing create on the cli upgrade should be run instead of create to make sure that every database is initiated in the same way. 1298287981000000 1298288665000000 998 defect kindly kindly closed fixed change create on cli to upgrade When doing create on the cli upgrade should be run instead of create to make sure that every database is initiated in the same way. 1298287981000000 1300364423000000 1000 enhancement kindly rgrp ckan-v1.4-sprint-3 closed fixed Remove call timings code "Not used and extra overhead. Very useful to strip this out and low cost. Places where it seems to be: * lib/base.py: c.time_call_started * ...." 1298489643000000 1298912726000000 1006 enhancement kindly rgrp ckan-v1.4-sprint-4 closed fixed Deprecate stable branch "Now that we have release branches we should deprecate the stable branch (ie. make sure it is no longer a head and then do --close-branch and merge into default one last time). Cost: 10m (giving high priority because of low cost) (Assigning to dread as he has been managing the stable branch)." 1298624996000000 1300372286000000 1012 defect kindly kindly ckan-v1.4 closed fixed Add package revision history to api Revision history information is not accessible, dgu want this. 1298887351000000 1301943113000000 1015 defect kindly dread ckan-v1.4-sprint-3 closed fixed Editing group gives exception "Editing a group properties on ckan.net gives an exception when you submit the form. (Is this related to db migration issues?) Example page: http://ckan.net/group/edit/civil-society Exception: {{{ WebApp Error: <class 'sqlalchemy.exc.IntegrityError'>: (IntegrityError) duplicate key value violates unique constraint ""group_revision_pkey"" 'INSERT INTO group_revision (id, name, title, description, created, state, revision_id, continuity_id) VALUES (%(id)s, %(name)s, %(title)s, %(description)s, %(created)s, %(state)s, %(revision_id)s, %(continuity_id)s)' {'description': u""A group for open data related to civil society supported by members of the interest group at: http://okfn.org/groups/civil-society\r\n\r\nCivil society is composed of the totality of voluntary civic and social organizations and institutions that form the basis of a functioning society, as distinct from the force-backed structures of a state (regardless of that state's political system) and commercial institutions of the market. \r\n\r\nhttp://en.wikipedia.org/wiki/Civil_society"", 'created': datetime.datetime(2011, 2, 24, 14, 30, 53, 334842), 'title': u'Civil Society', 'state': u'active', 'continuity_id': u'f4f9f09 }}}" 1298898588000000 1299788821000000 1046 enhancement kindly thejimmyg ckan-v1.4-sprint-5 closed fixed Dictization and the new logic layer "The stages involved with doing this. * Convert model objects to standard dict format (DONE) * Convert standard dicts to current api formats (DONE) * Make standard dicts savable (DONE) * Validate standard dict format. (DONE) * Authorize actions" 1300364694000000 1302777668000000 1054 defect kindly dread ckan-v1.4-sprint-4 closed fixed Ordering of resources "Changing an old resource and creating a new resource on the end results in the old resource moving to the end in the ordering. This breaks tests: * (ckanext-dgu) ckanext/dgu/tests/ons/test_ons_loader.py:TestOnsLoadBasic.test_fields * (ckanext-importlib) ckanext/importlib/tests/test_loader.py:TestLoaderInsertingResources.test_0_reload You can make a ckan test break with this patch: {{{ diff -r e6643cf1324c ckan/tests/models/test_resource.py --- a/ckan/tests/models/test_resource.py Wed Mar 23 13:25:52 2011 +0000 +++ b/ckan/tests/models/test_resource.py Wed Mar 23 19:22:35 2011 +0000 @@ -297,6 +297,8 @@ 'url':self.urls[1], 'format':u'OTHER FORMAT', 'description':self.description, 'hash':self.hash, 'id':original_res_ids[2]}, + { #new + 'url':'new'}, ] pkg.update_resources(res_dicts) model.repo.commit_and_remove() }}} There seems to be a problem with vdm creating a replacement Resource for the old resource - because it has a duplicate position it is put to the end by the SQLAlchemy ordering_list function." 1300969236000000 1301305615000000 1077 enhancement kindly rgrp ckan-backlog new Move to simpler vdm system "== Option 1: 'Changeset' Model == See ticket:1135 for vdm ticket. This would involve a) moving to changeset in vdm b) doing the migration in ckan to support this. Have developed a new ""changeset"" based model for revisioning in vdm. === Implementation === * The main challenge with this change is schema and data migration Every revisioned object has a revision_id and revision attribute. Approximate algorithm: {{{ Revision -> Changeset for revtype in [PackageRevision, ...]: for pkgrev in package_revision: changeset = lookupchangeset(package_revision) ChangeObject(cset, (table, id), dictize(pkgrev)) }}} Question: * does pkg include tags attributes or not? or we have to dictize, pkgrev, pkg2tagrev, and tag. Probably the latter. == Option 2: Simplify Revision Object Model == Just use a simpler vdm, see ticket:1136 (move to !SessionExtension) and ticket:1137 (remove need for statefulness in vdm). == Discussion == Advantage of Option 1 versus 2: * Easier support for pending state and similar behaviour * No need to introduce new tables (and hence migrations) when making something revisioned (or not). === Disadvantages === * Migration is required * More difficult to query revision history. * Could be addressed by having !ChangeObject have separate cols for table name and id but would likely be more difficult. * Performance (?) * Have one big !ChangeObject table to query when looking at changed objects rather than many revision tables. * Not sure this is a biggie as even with Revision model biggest revision object tables are probably on the order of the !ChangeObject table == Conclusion == Implement Option 2 and leave Option 1 for present. Option 1 includes Option 2 so it seems that that is required in either case (so we may as well with Option 2). Option 1 requires significant effort (esp migration) so leave for present and then review the situation at some later date." 1302304464000000 1340034345000000 1078 enhancement kindly rgrp ckan-v1.5 closed fixed Refactors WUI controllers and forms to use logic layer " * Deserialize forms to new dict format. * Replace controllers/forms to use dictization. " 1302509347000000 1305828973000000 1079 enhancement kindly rgrp ckan-v1.4-sprint-5 closed fixed Refactor API to use new logic layer and dictization " * Convert current api saves to the new standard dict format. " 1302509530000000 1302777504000000 1092 defect kindly kindly ckan-v1.4-sprint-6 closed fixed refactor logic layer to seperate out api, form logic "The logic layer is a bit too api centric. Make the reusable parts separate in preparation for the wui refactor. " 1302777929000000 1305570822000000 1095 defect kindly kindly closed fixed add way to pass in schema to logic layer. We need a way to pass in schemas to the logic layer to deal with edge cases. 1303221854000000 1310134959000000 1109 defect kindly kindly closed fixed When extras has a value other than a string an integrity error occurs in the api. "This is a regression that happened after refactoring the api. It was shown by http://pastebin.com/2v7QasZy" 1303839943000000 1305124697000000 1110 enhancement kindly kindly closed wontfix profile ckan We need to see what areas of ckan are slow. 1303840041000000 1340034394000000 1113 defect kindly kindly closed fixed lists in extras serialized wrongly on get with the api. Lists are being converted to unicode and then translated into a json when getting from the api. 1304017353000000 1304024611000000 1135 enhancement kindly rgrp assigned Changeset model for vdm "Move to Changeset model for vdm. A changeset model is like an Audit-Log model in which we just record Changesets with Change-Objects rather than have Revision-Objects for each Object that is revisioned. This change would also incorporate significant simplication of vdm." 1305209986000000 1340632267000000 1136 enhancement kindly rgrp assigned Move to SessionExtension in vdm When vdm was created there was no !SessionExtension so we use !MapperExtension for doing revisioning. Now that SessionExtension exists we should use it. We can also follow the existing SQLAlchemy recipe: <http://www.sqlalchemy.org/docs/orm/examples.html?highlight=versioning#versioned-objects> 1305210855000000 1340632980000000 1137 enhancement kindly rgrp assigned Remove need for statefulness in vdm "Statefulness, especially statefulness for relation (esp m2m) is cause of most of the complexity in vdm. It is ''required'' because, atm, revision objects have FKs to continuity objects. This ticket proposes the following changes: NB: this could be limited just to case of join tables (leaving state stuff on other tables) * Remove FKs from revision to continuity (or allow for them to be nullable). * We could just limit this to m2m stuff * Delete of an object leads to: * Deletion of continuity object * Adding an entry in revision table with state set to deleted (we retain state on revision table) If this is done we will no longer need to worry about filtering on state on relationships as join table will only contain ""active"" relationships. If we do this on all tables we remove need for any state awareness in client (e.g. no need to filter tables on active state). The only disadvantage of this change is that undeletion becomes more problematic (we have to recreate some continuity objects)." 1305211628000000 1340631974000000 1146 enhancement kindly kindly ckan-v1.5-sprint-1 closed fixed make logic layer control its own state Logic layer should not use any vdm defined state and should manage it itself. 1305829117000000 1307957527000000 1147 enhancement kindly kindly ckan-v1.5-sprint-1 closed fixed Add expired_id to all revision tables. "Revision tables need expired_id to make querying history AND pending changes more efficient. This involves making a session extension and a large table migration." 1305839833000000 1307957556000000 1148 refactor kindly kindly ckan-v1.5-sprint-1 closed fixed test speed improvements and cleanup The tests have been running slower recently and need fixing. They also could do with a bit more consistency to them. 1305969223000000 1305969925000000 1149 enhancement kindly kindly ckan-v1.5-sprint-1 closed fixed Change domain object modification plugin to use Session extension. This should make it more efficient as it currently does a lot of repeating work. i.e if you change a package and a resource in the same commit it sends out 2 notifications and should only really send out 1. 1305969863000000 1306090663000000 1193 enhancement kindly kindly closed fixed bug with new formalchemy causing all resouces to be deleted "The new formalchemy stores dict in a new format. " 1308525655000000 1309768960000000 1205 defect kindly dread closed fixed db upgrade problem on cz.ckan.net "When upgrading database for cz.ckan.net (psql.okfn.org/cz.okfn.org) an error occurred (see below). cz.ckan.net has been running on eu3 and this updrade was part of moving it to eu19, with a more recent version of ckan. In the meantime I've reverted the db to the old version (pre-upgrade). cz.ckan.net is not working properly until this is fixed. {{{ okfn@eu19:~$ paster --plugin ckan db upgrade --config=/etc/ckan/cz/cz.ini /usr/lib/pymodules/python2.6/ckan_deps/sqlalchemy/engine/url.py:105: SADeprecationWarning: The SQLAlchemy PostgreSQL dialect has been renamed from 'postgres' to 'postgresql'. The new URL format is postgresql[+driver]://<user>:<pass>@<host>/<dbname> module = __import__('sqlalchemy.dialects.%s' % (dialect, )).dialects 2011-06-29 09:07:41,294 INFO [migrate.versioning.api] 28 -> 29... /usr/lib/pymodules/python2.6/ckan_deps/sqlalchemy/engine/reflection.py:46: SAWarning: Skipped unsupported reflection of expression-based index idx_pkg_lname ret = fn(self, con, *args, **kw) /usr/lib/pymodules/python2.6/ckan_deps/sqlalchemy/engine/reflection.py:46: SAWarning: Skipped unsupported reflection of expression-based index idx_pkg_slname ret = fn(self, con, *args, **kw) /usr/lib/pymodules/python2.6/ckan_deps/sqlalchemy/engine/reflection.py:46: SAWarning: Skipped unsupported reflection of expression-based index idx_pkg_suname ret = fn(self, con, *args, **kw) /usr/lib/pymodules/python2.6/ckan_deps/sqlalchemy/engine/reflection.py:46: SAWarning: Skipped unsupported reflection of expression-based index idx_pkg_uname ret = fn(self, con, *args, **kw) Traceback (most recent call last): File ""/usr/bin/paster"", line 18, in <module> command.run() File ""/usr/lib/pymodules/python2.6/paste/script/command.py"", line 84, in run invoke(command, command_name, options, args[1:]) File ""/usr/lib/pymodules/python2.6/paste/script/command.py"", line 123, in invoke exit_code = runner.run(args) File ""/usr/lib/pymodules/python2.6/paste/script/command.py"", line 218, in run result = self.command() File ""/usr/lib/pymodules/python2.6/ckan/lib/cli.py"", line 84, in command model.repo.upgrade_db() File ""/usr/lib/pymodules/python2.6/ckan/model/__init__.py"", line 163, in upgrade_db mig.upgrade(self.metadata.bind, self.migrate_repository, version=version) File ""/usr/lib/pymodules/python2.6/ckan_deps/migrate/versioning/api.py"", line 185, in upgrade return _migrate(url, repository, version, upgrade=True, err=err, **opts) File ""<string>"", line 2, in _migrate File ""/usr/lib/pymodules/python2.6/ckan_deps/migrate/versioning/util/__init__.py"", line 160, in with_engine return f(*a, **kw) File ""/usr/lib/pymodules/python2.6/ckan_deps/migrate/versioning/api.py"", line 364, in _migrate schema.runchange(ver, change, changeset.step) File ""/usr/lib/pymodules/python2.6/ckan_deps/migrate/versioning/schema.py"", line 83, in runchange change.run(self.engine, step) File ""/usr/lib/pymodules/python2.6/ckan_deps/migrate/versioning/script/py.py"", line 140, in run script_func(engine) File ""/usr/lib/pymodules/python2.6/ckan/migration/versions/029_version_groups.py"", line 152, in upgrade migrate_engine.execute(q) File ""/usr/lib/pymodules/python2.6/ckan_deps/sqlalchemy/engine/base.py"", line 1788, in execute return connection.execute(statement, *multiparams, **params) File ""/usr/lib/pymodules/python2.6/ckan_deps/sqlalchemy/engine/base.py"", line 1191, in execute params) File ""/usr/lib/pymodules/python2.6/ckan_deps/sqlalchemy/engine/base.py"", line 1271, in _execute_clauseelement return self.__execute_context(context) File ""/usr/lib/pymodules/python2.6/ckan_deps/sqlalchemy/engine/base.py"", line 1302, in __execute_context context.parameters[0], context=context) File ""/usr/lib/pymodules/python2.6/ckan_deps/sqlalchemy/engine/base.py"", line 1401, in _cursor_execute context) File ""/usr/lib/pymodules/python2.6/ckan_deps/sqlalchemy/engine/base.py"", line 1394, in _cursor_execute context) File ""/usr/lib/pymodules/python2.6/ckan_deps/sqlalchemy/engine/default.py"", line 299, in do_execute cursor.execute(statement, parameters) sqlalchemy.exc.IntegrityError: (IntegrityError) insert or update on table ""package_group_revision"" violates foreign key constraint ""package_group_revision_continuity_id_fkey"" DETAIL: Key (continuity_id)=(7f373978-40a0-4848-bdc9-018ad213aa0b) is not present in table ""package_group"". 'INSERT INTO package_group_revision (id, package_id, group_id, state, revision_id, continuity_id) VALUES (%(id)s, %(package_id)s, %(group_id)s, %(state)s, %(revision_id)s, %(continuity_id)s)' {'state': u'active', 'package_id': u'14d76e9e-028c-49c1-955b-ef30d4abb970', 'continuity_id': u'7f373978-40a0-4848-bdc9-018ad213aa0b', 'revision_id': u'24a11f58-2ff9-46f3-b113-0bf7f0baf254', 'group_id': u'4b832199-b8e3-4989-9b5d-de8dd6322612', 'id': u'7a3863bd-3054-40c8-bb3d-68b73096c108'} }}}" 1309339700000000 1310568631000000 1211 enhancement kindly kindly ckan-v1.5 closed fixed [super] Drupal integration "Sub-tasks / tickets: * #1335 Action API - access to any logic layer function * Standardize logic functions on ordering: (context, data_dict) and put parameters into data_dict. * Add package_create_validate & package_update_validate logic functions * Allow extensions to provide logic layer functions (IActions) " 1309958442000000 1315948703000000 1231 requirement kindly thejimmyg ckan-backlog closed wontfix [super] Management Information Reporting "Child tickets: * #1101 Integrate stats and googlanalytics into site nav We have a spreadsheet from UKLP of statistics we'd like to generate" 1311173919000000 1325474447000000 1238 defect kindly dread ckan-sprint-2011-10-28 closed invalid Viewing a package @date misses non-PackageRevisions "There's a problem with getting old versions of packages using @date. The query looks for the PackageRevision related to the date, but ignores TagRevisions etc. So for example if you compare this table: http://ckan.net/package/history/osm with this view: http://ckan.net/package/osm%402010-11-30%2000%3A21%3A49.627830 you actually see the 2010-01-13 11:13 revision - the wrong revision. " 1311351303000000 1311759784000000 1240 enhancement kindly rgrp ckan-backlog assigned [super] API v4 "(Just creating this ticket as somewhere to keep notes) * Decide on REST api versus action API * Do we want to support both? * Tidying * Unify on /api/v{version num}/... structure (do we want a default option that points to current default? e.g. /api/default/ ...) * extras merged into normal field list in package * Get rid of /rest/ so just have api/v1/package * Get rid of separation of search api from 'rest' api * Propose that GET on REST index is search e.g. /package/?q=... * This is also resolves issue whereby GET at root returns whole package set (a *bad* idea) as this would now become the matchall search query (with a default limit on items returned) * Resource read/write in API (separate from package) * Does this need authorization work? * user/account API - read/write * Remove autocomplete -- can just use search * Do not worry about backwards compat as should only be used in our js (if others using it too bad!) " 1311525660000000 1325473312000000 1255 enhancement kindly kindly ckan-backlog assigned Drupal consistancy checks. Make a robust way to make sure the drupal database is consistent with the ckan data. 1312219968000000 1313400054000000 1256 defect kindly kindly ckan-sprint-2011-10-28 closed fixed fix modification extension for moderation Solr is not working for moderation, pending changes are not being indexed. 1312280026000000 1319812556000000 1258 enhancement kindly kindly ckan-sprint-2011-10-28 closed fixed Bring purge revision into ckan repo from vdm In order to make purge revision work correctly with the moderated edits we need to modify purge revision in vdm. This is best modified in ckan so we will override the vdm one in the reposotory. 1312289539000000 1319812452000000 1268 enhancement kindly rgrp ckan-sprint-2011-10-10 closed fixed Speed up listing users by revisions by adding db index "At the moment this appears to be slow (kindly suggests because missing index in db). Page is /user on a ckan instance. Would this also speed up user page where we recent changes?" 1312906592000000 1318279592000000 1291 enhancement kindly kindly ckan-sprint-2011-09-12 closed fixed Add activity and activity detail tables. "Add tables described in http://ckan.okfnpad.org/notifications " 1314267572000000 1315950394000000 1298 enhancement kindly kindly ckan-sprint-2012-01-09 closed fixed Generate activites to be put into activities table. This should be done from the logic layer or automatically from a session extension. 1314696442000000 1325591582000000 1306 enhancement kindly rgrp ckan-backlog closed wontfix Tests for the logic layer AFAICT there are no tests for the logic layer at the moment. I imagine this is an issue (if it is not please explain and close as wontfix). 1315153267000000 1319797204000000 1316 defect kindly dread closed fixed /api/action uncaught exception if missing necessary parameter "{{{ curl http://ckan.net/api/action/package_show -d '{""name"": ""uk-quango-data""}' }}} This gives 500 error due to KeyError (it looked for the 'id' param), rather than 400." 1315397224000000 1338193724000000 1324 enhancement kindly kindly ckan-sprint-2011-09-12 closed fixed Add extra fields to resource table "add extra fields to resource as outlined in http://wiki.ckan.net/Domain_Model/Resource Specifically (all unicode strings except for those noted): * ''name'': a name for this resource (could be used in a ckan url) * ''type'': the type of the resource. One of: file | api | service | listing * ''mimetype'': standard mimetype (e.g. for zipped csv would be application/zip) * ''mimetype_inner'': mimetype of innermost object (so for example would be text/csv) * ''size'': [integer] size of the resource (content length) in bytes. Usually only relevant for resources of type file. * ''last_modified'': [datetime] the date when this resource's data was last modified (NB: ''not'' the date when the metadata was modified). * cache_url: url for cache of object in ckan storage * cache_last_updated: [datetime] timestamp when cached version was created * webstore_url: * webstore_last_updated: [datetime] timestamp when webstore was last updated" 1315578976000000 1315948336000000 1335 enhancement kindly dread closed fixed Action API - basic Provide an API to the logic layer at /api/action. 1315910021000000 1315910117000000 1339 enhancement kindly rgrp ckan-backlog closed fixed Issues / question re navl and data conversion "I ran into a bug with the size field on resources. * It would not accept an empty value from form (IMO this clearly equates to null/None) * This could be fixed via using ignore_empty instead of ignore_missing * However using this means there was no way to empty the field (e.g. i may just want to set the size field back to null not just change to another value) * similar issues could arise around other fields (such as last_modified ...) * cf cset:645031d07b60 To solve this (cset:58acdcfe6d4e) i created an int_converter temporarily in logic/schema.py (this is almost certainly the wrong place). But I think it raises a bigger issue about the conversion layer and how it works." 1315947022000000 1316014954000000 1341 enhancement kindly kindly ckan-backlog reopened Delete spam users from ckan Spam users where added to thedatahub and we need to clean them. 1315995034000000 1320141540000000 1344 enhancement kindly kindly ckan-sprint-2011-10-10 closed fixed datetime error json conversion on search Json decoding error on search, due to date in resources. 1316020195000000 1317211299000000 1345 enhancement kindly nils.toedtmann closed fixed Investigate possible memory leak "There is some evidence pointing to CKAN handling memory inefficiently or even leaking under certain conditions: When we migrated ckan.net/thedatahub.org from eu7.okfn.org (32bit) to s053.okserver.org (64bit) ([http://trac.okfn.org/ticket/882 ticket]) we experienced extraordinary memory usage peaks ([http://trac.okfn.org/ticket/904 ticket]). Here are the observed value with Apache default settings: * eu7, mpm-prefork: base level ~0.6GB, peaks up to 2GB * s055, mpm-prefork: base level ~1GB, peaks up to 4GB * s055, mpm-worker: base level ~1.5GB, peaks up to 6GB William reduced the life-time of a WSGI CKAN process from 500 requests down to 25 requests ([https://bitbucket.org/okfn/sysadmin/changeset/126290aead28 changeset]). This (together with two other tweaks) changed the situation drastically: * s055, mpm-event: base level ~1.4GB, no peaks This suggests that the more requests a CKAN processes serves over time, the more memory it consumes, aka bad memory management or a leak. To prove this theory, one could reduce the total number of WSGI CKAN processes as much as possible without killing the performance (e.g. down to ''processes=3''), and then observing the relation between ''maximum-requests=25...500'' and memory consumption. On 14/09/11 17:49, David Read wrote: > Someone to do a bit of top-down memory-use profiling would be very useful. Also useful would be something in the tests that reported what test cases use lots of memory - this could be in the nose plugin. +1" 1316041450000000 1343215489000000 1356 enhancement kindly amercader ckan-sprint-2011-10-10 closed fixed Can not recreate a deleted extra If you delete an extra and later on change your mind, you can not recreate it with the same value (Different value works fine). 1317034180000000 1318279617000000 1364 enhancement kindly kindly ckan-sprint-2011-10-10 closed fixed If package in index that is not in ckan error is caused. We should ignore these but log the packages that are causing this to investigate. 1317222206000000 1318279636000000 1376 enhancement kindly kindly ckan-sprint-2011-10-10 closed fixed 404 raised when approving package Regression found by updating datacatalogs. 1318088589000000 1318279651000000 1383 enhancement kindly kindly ckan-sprint-2011-10-24 closed fixed Add IResourceChange IResourceUrlChange Interfaces. Need to add way for extensions to trigger based on resource change and just resource url change. 1318342153000000 1320142305000000 1397 enhancement kindly rgrp ckan-v1.7 closed fixed [super] Resource archiving "We want to cache/archive data associated to a resource so it is available if the resource url disappears (and in order to support other processing we may wish to do e.g. webstorer ...) Etherpad: http://ckan.okfnpad.org/queue (most relevant parts inlined here) == Preliminaries == * Add task_status table to store qa/archiever/webstore information that does not need to be versioned. - #1363 (and #1371 - related logic functions) === Configuration setup for daemons === Pass config through to workers i.e site_url, user, api_key. Need to make site user account. #1408 celeryd config: All providers of tasks will add an item to the following entry point: {{{ [ckan.tasks] name = ckanext.{name}.tasks:.... }}} celeryconfig.py {{{ from pkg_resources import iter_entry_points for entry in iter_entry_points: celeryimports.appen(....) CELERY_IMPORTS = celeryimports }}} == Work Items == * Resource change notifications in core - Make an IResourceChange and IResourceUrlChange. [1d] [0.75d] - #1383 * Generate archiving request on resource url change [0.25d][0.25d] - #1399 * Make site user account. * Make entry point system for celery config * Archiver daemon #891 1. implement link-check function and task (point 2 from Archiver.update above) [1d] [0.5d] 2. Rewrite archiver to use external storage. (decide how!)[3d][~2d] * Write to resource and task status table.[1d][0.75d] * [Required?] Make archived data available in WUI - #892 * Documentation - #1400 " 1318529593000000 1338202920000000 1398 enhancement kindly rgrp ckan-sprint-2011-11-21 closed fixed Automated conversion of resource data into webstore " * Possible sibling / requirement: #1397 (resource archiving) * Setup test environment. 1d * Make task to upload files to webstorer. 3d * This includes writing back webstore_url and updated date. 0.5d * Type guessing of file format. 1d * Make cron to upload all un webstored resources. 0.5d * Testing for errors by running cron 2d * Make nice way to deploy celery 1d. * Documentation. 1d * Deployment. 1d " 1318529724000000 1321827970000000 1402 enhancement kindly rgrp ckan-v1.6 closed fixed Migrate repository from mercurial to git "Plan to migrate from mercurial git * Convert from mercurial to git * Map named branches to normal branches * Also, if possible map usernames for RP: rgrp <http://rufuspollock.org/> (mercurial) -> rgrp <rufus.pollock@okfn.org> * Place at http://github.com/okfn/ckan (can delete current repo there as an out of date mirror) Process: * Do trial run * Announce conversion date / time * Require everyone to have pushed '''all''' outstanding changes at that time * Do conversion * Test * Announce on list and ckan.org/ " 1318811651000000 1324334011000000 1408 enhancement kindly kindly ckan-sprint-2011-10-24 closed fixed Make site user, so tasks can post information back to ckan. Give site user system administrative rights. 1319019626000000 1320141847000000 1433 enhancement kindly rgrp ckan-sprint-2011-11-21 closed fixed Support SQLAlchemy 0.7 "Why: current stable version of sqlalchemy. geoalchemy stuff required 0.7 and likely that some other things will require it soon. Probably requires work on vdm https://bitbucket.org/okfn/vdm NB: should have discussion before making 0.7 the default required version in CKAN core." 1320143453000000 1324472583000000 1447 defect kindly dread ckan-backlog assigned disk space leakage "Periodically we see some CKAN servers fall over because they run out of disk space. We need to find out if there is a common cause and fix it. One problem in the past has been file handles running out when creating lots of tiny files in the data directory. Another problem has been several enourmous backups being created every day - pdeu on eu25." 1320666843000000 1340727330000000 1448 enhancement kindly kindly closed fixed Set up nice way to do celery deployment. Celery is awkward to deply, need to find a way to do it more simply. i.e using celery-pylons and supervisor. A modified version of celery-pylons may be the best solution. 1d 1320666977000000 1325774155000000 1475 enhancement kindly kindly ckan-sprint-2012-01-23 closed fixed Create documentation showing how to make an extension that use celery. 1321826681000000 1327576068000000 1477 enhancement kindly kindly ckan-v1.6 closed fixed [Super] Group refactor "This is the implementation of the final draft in http://wiki.ckan.org/Groups_Refactor Steps to complete this will follow (somewhat) in the following order. Change package_group table to membership. (#1478) 3d * model migration. (done) * simplify revisioning (done) * Remove any sqlalchemy releations from groups. (done) * change logic functions (done) Single type per group (#1531) * migration add type to group table. (done) 1d Add capacity table (#1522) * model migration. (done) * add to logic functions. Allow other objects to be added to groups. (#1531) * change logic functions (done) Adapt thedatahub.org to use new model. * move auth groups over to groups/members * change user_object roles to use groups? keep user object roles for time being. * make create update package/group put the correct items in the group/members/capacity tables. * work out how ui works. --not doing the below as part of this super ticker now #1669. Create model for dgu. * adapt auth functions to use auth. * adapt package_create/update group_create/update to fill in the correct capacties/members. Adapt Iati, and potentially other custom instances. Sub-tickets: * #1279 Deprecate Authorization Groups * #1198 Publisher hierarchy " 1321959320000000 1328016209000000 1478 enhancement kindly kindly ckan-sprint-2011-12-05 closed fixed change package_group to members table "This will comprise of the following steps. * model migration. * simplify revisioning * Remove any sqlalchemy relations from groups. * change logic functions estimate 2d" 1321959973000000 1323172654000000 1485 enhancement kindly kindly closed fixed Package/Group form extension mechanism so you can add forms for particular package_types "We want to be able to change form depending on package type or group type. This is dependent on a type field being added to the Package and the Group." 1322059169000000 1340034422000000 1492 defect kindly dread closed wontfix Interference between extra and relationship fields in API "From Jan Kučera <elquenor@gmail.com> I have also tried to use extras fields to store information about relationships between datasets. I found out that if you first add relationship using CKAN API into dataset relationships attribute and than you add extras field for the same relationship with key in format ""parent_of:dataset_name"" or ""child_of:dataset_name"", storing this extras field will clear all relationships in relationships attribute stored earlier. I might be some kind of bug but I suppose you will know better. Is it possible to use relationships attribute and extras field for relationships at the same time? " 1322481496000000 1340034528000000 1495 enhancement kindly seanh ckan-sprint-2012-01-23 closed fixed API call for getting a user's public activity stream An API call that returns a user's public activity stream in JSON format. 1322495549000000 1327576099000000 1511 enhancement kindly seanh ckan-sprint-2012-01-23 closed fixed Logic function for getting a user's public activity stream Add a function to logic.action.get that returns a user's public activity stream as a list of dicts. 1323094207000000 1327576134000000 1522 enhancement kindly kindly ckan-sprint-2011-12-19 closed fixed Add capacity to member table. Need to add capacities to member tables. 1323172610000000 1324333827000000 1531 enhancement kindly kindly ckan-sprint-2012-01-09 closed fixed Update group create/update so you can add capacities and group types. "The new members table needs a way so you can add arbitrary domain objects against them. We need to extend the group schema to accept types, and instead of just being able to add packages to groups add members with their capacities that associated with different table rows. 4d" 1323272500000000 1326155226000000 1595 defect kindly rgrp ckan-v1.7 closed wontfix Editing of a Group leads to recording a change against all associated datasets "Or at least it appears that way from revision log which displays all Group datasets against the changelog, see http://thedatahub.org/revision/4cdeeb42-3281-4f53-a29d-c694e1fd9217 -- not apparent from that page but see my user page: http://thedatahub.org/user/rufuspollock This may turn out to be a UX bug rather than a real bug ... Assigning to kindly for review and comment." 1324504875000000 1338203959000000 1605 enhancement kindly rgrp ckan-v1.7 closed fixed [super] Multilingual support in CKAN "Multi-language: * dataset and resource metadata (and other objects such as groups?) * Options for implementation in http://ckan.okfnpad.org/multilingual * Field values in taxonomy (e.g. country names - Eurovoc) * #1665 Research into Eurovoc * Display Taxonomy in different languages * Field values not in taxonomy (e.g. title & description) * Use extra fields e.g. _i18n_title_fr = Le data. * (If lots of fields would need translating then would consider having a new package for each language, linked together with PackageRelationships. But I think it is just title and description (resource description etc. are so minor, not worth translating?), so using extra field better.) * EC extension (templates, form) * Currently the pot file is just for CKAN core. New pot file for CKAN core and this extension? Or separate ones for extensions? " 1325473367000000 1338193641000000 1612 enhancement kindly kindly ckan-sprint-2012-01-09 closed fixed Group view page slow Group show that lists packages is slow due to not using query in pagination. 1325633737000000 1325688886000000 1614 enhancement kindly kindly ckan-sprint-2012-01-09 closed fixed remove po files from git diff Its a pain to see the difference between branches as there are normally a lot of po file transaction. Make the default be see that they have changed without actually show the diffs themselves. 1325686639000000 1325689136000000 1652 enhancement kindly ross ckan-backlog assigned How we intergrate with Drupal Multiligual? " * Analysis of how/where we can integrate with Drupal Multilingual * Is it likely to access CKAN via /en/data/... or /data/en/... (not sure, probably former) and we need to make sure that it ends up at /en/... * Check with Ian for other issues. " 1326709894000000 1340187535000000 1689 enhancement kindly dread assigned List deleted datasets in API "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? " 1327062214000000 1340190040000000 1715 enhancement kindly kindly ckan-sprint-2012-02-20 closed fixed Search index multilingual Need to make solr schema work for many languages. Get stopwords and choose correct analysis for each. 1327598884000000 1329393450000000 1736 enhancement kindly kindly ckan-v1.7 closed fixed [Super] Multilingual Metadata "Translate all areas of metatdata to selected language. This includes finding datasets in all languages. Multilingal Metadata: Tasks: * Add translation table. 2d * Api to add translation 3d * Add extention point to dataset view. 3d * Add extension point to search index to add translations. 2d. * Add all eurovoc data to translations. 1d. * Make multilingual solr schema 2d #1715 " 1328012697000000 1338205016000000 1738 enhancement kindly kindly ckan-sprint-2012-02-06 closed fixed Add extension point to search index, so can modify dataset dict before index. It is useful for extensions to add or change items that go into the search index. Add an extension point for this. 1328031572000000 1330086105000000 1739 enhancement kindly kindly ckan-sprint-2012-02-06 closed fixed Fix issues where tests where not run. Test failures in master due to tom and rufus not running tests. 0.3d. 1328047129000000 1328495826000000 1741 enhancement kindly kindly ckan-sprint-2012-02-20 closed fixed Add extention point to dataset view. "Need to add extension point to change the data_dict that passed to the dataset view template. This extensions modify what data gets shown. Tasks include: * Fix up data_dict and templates so that the pkg objects do not get used in the templates. This is to assure that all data passed is modifiable. (2d) (complete) * Add extension point to Ipackage controller (1d) * Test (1d)" 1328105709000000 1329750838000000 1753 enhancement kindly rgrp ckan-sprint-2012-03-05 closed fixed Last fixes of Webstorer + Deploy on the DataHub " * Upgrade to new DataStore system * Better support for unicode etc * ? Rename to DataStorer * Deploy" 1328527932000000 1330990061000000 1777 enhancement kindly kindly ckan-sprint-2012-02-20 closed fixed Write about multilingual features for ec. Basic description of multilingual features intended to be supported. 1328542835000000 1329393295000000 1779 enhancement kindly kindly ckan-sprint-2012-02-20 closed fixed Add multilingual translation table. A new table with 3 columns should be added. term, term_tranlastion, language_code. This table will be used for all translations, including tags. The table should have indexs on both the term and (term, language_code) combination. 1328548631000000 1329393759000000 1780 enhancement kindly kindly ckan-backlog closed duplicate Api to add translations. "Add api to translation to the term_translation table. * add to logic 2d * test 2d" 1328548908000000 1328578479000000 1781 enhancement kindly kindly ckan-sprint-2012-02-20 closed fixed Api to add translations. "Add api to translation to the term_translation table. * add to logic 2d * test 1d" 1328549031000000 1329393822000000 1819 enhancement kindly kindly ckan-sprint-2012-04-02 closed fixed change search index code to use package_dictize instead of obj.to_dict Search index code needs to use package_dictize so that it can get the new vocablurary information and is more consistant with the rest of the system. This is in preperation for their translation being put in the search indexer. 1329770555000000 1338193886000000 1820 enhancement kindly kindly ckan-sprint-2012-03-19 closed fixed Index multilingual data when mulilingual extension is added. All translated fields and vocabularies need to be added to search index in the correct fields. 1329770903000000 1332163374000000 1821 enhancement kindly kindly ckan-sprint-2012-03-05 closed fixed create internal multilingual extension that brings together all multilingual features "This extension point needs to combine. * Making sure the correct data get put in search index. * Make the search queries are modified to weight multilingual search correctly. * View pages, including search results are translated. * Bring together all search schema modifications." 1329771267000000 1330990111000000 1822 enhancement kindly kindly ckan-sprint-2012-03-05 closed fixed Weight mulilingual searches correctly Dismax query across languages. Titles and selected languages, weighted more highly. 1329772080000000 1330990127000000 1826 enhancement kindly kindly ckan-sprint-2012-03-05 closed fixed weight queries so that title is more important than rest of body Currently everything is considered equally when doing a normal search. Use dismax when there is not a fielded search to get round this. This is part of the work for #1822 as the dismax option is needed for multilingual search. 1329924260000000 1330990247000000 2203 enhancement kindly rgrp ckan-v1.9 assigned Data Viewer support for PDF " * 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" 1330860293000000 1348568961000000 2229 enhancement kindly kindly ckan-sprint-2012-03-19 closed fixed Cleanup plugin system after some test failed to run. The logic test did not have __init__. This caused lots of tests to fail because there were mock extensions that ran automatically in them. Fix plugin system so this can work. 1331721611000000 1332163408000000 2233 enhancement kindly kindly ckan-sprint-2012-03-19 closed fixed Make package show, use custom json schema There is a disrepency between what we put in and get out when using a custom form/api. Narrow this gap by making sure package_show shows the correct serilization. 1331865349000000 1332178421000000 2237 enhancement kindly kindly ckan-sprint-2012-03-19 closed fixed Make way to split up tests and run tests with different db. 1331938496000000 1332178352000000 2249 enhancement kindly kindly ckan-sprint-2012-04-02 closed fixed Fix google spreadsheet to work with DataStore. Need google spreadsheet app to work with the new datastore. This should simplify it a lot. 1332330242000000 1338205316000000 2250 enhancement kindly kindly ckan-sprint-2012-04-02 closed fixed Setup nginx and datastore on ecportal 1332330570000000 1338205361000000 2291 enhancement kindly rgrp ckan-v1.9 new DataStorer incorrectly attempts to store JSON in DataStore "See http://thedatahub.org/dataset/ecb13156-cf11-4e91-b51c-f287d154276e/resource/5db67915-40cb-467e-9d72-194ea4973670 This was marked as json format (and is JSON) but appears to have been imported as a quasi-CSV. Either this hsould not be imported at all or it should be imported as JSON ... (which is straightforward to do). Assigning to David for triage and review." 1334431147000000 1340636737000000 2294 defect kindly rgrp ckan-v1.9 assigned Unauthorized action on Data API gets 302 rather than 401 or similar "Well known issue that 401 *in API* end up with 302 redirect to login page (which makes no sense and is very confusing for clients). Fix this by ensuring that error messsages on API get passed through correctly. Minor because affect is annoying but not terminal" 1334432104000000 1340624003000000 2327 enhancement kindly kindly ckan-sprint-2012-04-30 closed fixed Upgrade solr schema to version 1.4 " * Add Ascii folding filter to text fields. * Add capacity field for public, private access. * Add title_string so you can sort alphabetically on title. * Fields related to analytics, access and view counts. * Add data_dict field for the whole package_dict. Actual implementation of data_dict adding will be added later." 1335374973000000 1338205397000000 2331 defect kindly rgrp ckan-sprint-2012-05-29 reopened Search should AND terms not OR terms "Appears current default search in CKAN ORs terms rather than ANDing them (i.e. adding more terms increasing number of items found rather than reducing it). Not sure when this crept in or if it has been there for a long time." 1335637485000000 1356474344000000 2334 enhancement kindly rgrp ckan-v1.9 assigned Improved data import "Placeholder for thinking about this ... * Allow users to configure info for CSV import (e.g. separators, quotes etc)" 1335651662000000 1340624538000000 2402 enhancement kindly kindly ckan-sprint-2012-05-29 closed fixed search result speedup. Search results are slow as we do many package_dictize. Store the package_dict in the search index so that we do not have to hit the database for each of them. 1337300201000000 1337781991000000 2403 enhancement kindly kindly ckan-sprint-2012-05-29 closed fixed home page speed improvements Home page loads *all* groups and dictizes them, it should only dictize the top 10 or so from the search facets. 1337302582000000 1337782037000000 2406 defect kindly markw ckan-v1.9 new Errors in source install doc "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 " 1337595093000000 1340636804000000 2415 defect kindly markw ckan-v1.9 new Confusing message on attempting to register new account with upper case "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. " 1337779189000000 1341268304000000 2422 defect kindly ross closed invalid Paster rights command appears broken "Reported in IRC by @floapps In previous ckan versions i could use paster commands to remove reader rights from visitors on all packages and this would then throw the user to login screen when trying to see a dataset but, when i did this in ckan 1.7, i could still see all datasets as a visitor Using http://docs.ckan.org/en/latest/authorization.html#permissions-publisher-mode paster rights remove visitor reader package:all Also has an empty list of roles in config for default visitor roles I tested on my local install and could replicate with that command doing nothing. Neither affects existing or newly created datasets." 1337937993000000 1337945204000000 2425 enhancement kindly seanh ckan-sprint-2012-06-25 closed fixed Get rid of CKAN's flup dependency 1337946421000000 1340117561000000 2426 enhancement kindly seanh ckan-v1.9 new Get rid of CKAN's formalchemy dependency 1337946462000000 1340616095000000 2427 enhancement kindly seanh ckan-v1.9 new Reduce cruft installed into CKAN's virtualenv due to Pylons 1337946507000000 1341268323000000 2473 enhancement kindly kindly ckan-v1.9 assigned Make datstorer store field ordering in _meta field Recline views should have a default table order, being the same as the csv that was imported. 1338293492000000 1340636871000000 2524 enhancement kindly kindly ckan-ecportal new If there are no translation files for selected language fall back to default lang. If a user selects a language there are no mo files for then an error is raised. Revert to default language instead. 1339609048000000 1340117608000000 2530 enhancement kindly rgrp ckan-v1.9 new DataHub purge fails on some revisions "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'}" 1339750498000000 1341268280000000 2548 enhancement kindly ross datahub-july assigned Object ownership for groups/package " == Requirements == We need to be able to easily determine who the owner of a dataset or group is. Datasets and Groups should have an Owner, who may change over time but is a specific user within the CKAN instance. It should be easy for CKAN components to determine the user and for the initial version we should ignore the can of worms labelled 'ownership transfer'. At this point migration is likely to be the biggest issue, and would suggest that it is acceptable that the last user to edit a dataset be set as the current owner. More tickets should arise as a result of this work where we may be able to optimise some queries to use the new feature. == Interface == None == User Stories == None == Tasks == [ ] Analysis/Clarification [ ] Tests [ ] Migration [ ] Code/Schema changes [ ] Documentation == Estimates == " 1340017331000000 1340706539000000 2571 enhancement kindly toby demo phase 1 closed fixed implement logic.action.create.resource_create() "This function is incomplete If you want I can do this but I need guidance over how to do this properly. ie would I go through lib.dictization.model_save.package_resource_list_save() which looks wrong to me as I'd need the package. resource_dict_save() seems better but to be honest the total lack of docstrings etc makes me feel ill." 1340102259000000 1340369783000000 2574 enhancement kindly toby demo phase 1 closed fixed look at package states "we want to be able to add new datasets but not have them indexed or seem by people is the vdm.state the place to do this" 1340115771000000 1342092416000000 2580 enhancement kindly toby demo phase 1 closed fixed create resource validation "david I've got the add resource working but it is happy to add empty resources which implies that it isn't doing validation correctly. I'm not sure what the validation rules are so hard to test this - I'm coming through as an api call let me know if i can help" 1340285208000000 1342092353000000 2674 defect kindly shevski demo phase 5 assigned Data preview not loading on s031 "Not loading for all resources as far as I can tell; e.g. http://s031.okserver.org:2375/dataset/afghanistan-election-data/resource/f6331f99-51f6-44d9-95b9-b20f3b74f360 Fine on demo.ckan.org" 1342435102000000 1344349324000000 2708 enhancement kindly toby ckan-v1.9 new limit extra data for package/group show " context['package_limits'] = { 'tags': 5, <- get first 5 'extras': 0, <- get all } only get what you ask for have to be explicit context['group_limits'] = {} only main item start with datasets/groups expand if we like it" 1342622420000000 1342622420000000 2729 enhancement kindly shevski ckan-backlog new searching for tags:[tag] works but tag:[tag] doesn't "which is confusing since you can only search for one tag like this at a time. I.e. tags:economics,cvs or tags:economics, csv or tags:economics+CSV doesn't work for example; therefore tag:economics, should also work! http://s031.okserver.org:2375/dataset?q=tags%3Aeconomics&sort=relevance+asc" 1342951109000000 1342951176000000 2790 enhancement kindly toby demo phase 4 new logic.action.user_show is slow "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" 1343852483000000 1345023734000000 2877 enhancement kindly rgrp assigned Bugs with datastore v2 "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 ..." 1345250002000000 1346320395000000 2935 enhancement kindly kindly ckan 2.0 closed fixed Make recline work with new datastore 1348042459000000 1350578067000000 3027 enhancement kindly kindly new solr for 2.0 "change mm support solr 3 and 4 add *_date field" 1354587729000000 1354587729000000 2446 enhancement johnmartin aron.carroll demo phase 4 assigned Create demo dataset history/comparison page "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" 1338210738000000 1352658819000000 2451 enhancement johnmartin aron.carroll demo phase 5 assigned Create demo user list page "Discussion: https://okfn.basecamphq.com/projects/9558659-demo-ckan-front-end/posts/62268474/comments Implementation: http://s031.okserver.org:2375/user" 1338211213000000 1352658902000000 2457 enhancement johnmartin aron.carroll demo phase 4 assigned Create demo tags list page "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" 1338211735000000 1352658878000000 2471 enhancement johnmartin ross closed invalid ckan.org bug "If you go to http://ckan.org/features/geospatial/ there is a problem with the pop up tag shown (and zoomed in) - missing status and description. " 1338229749000000 1352206679000000 2562 enhancement johnmartin aron.carroll demo phase 5 closed invalid Demo theme tag improvements "Tags should be implemented in two sections. * Custom predefined tags using vocabularies * Provide suggestions, auto completion then fallback to free text" 1340035714000000 1352206599000000 2599 enhancement johnmartin aron.carroll demo phase 4 closed fixed Test in IE can we promote this to phase 3? 1340717662000000 1346756230000000 2616 enhancement johnmartin aron.carroll demo phase 5 closed invalid Improve display of split stages in demo Currently stages of the same colour blur together, these could do with a nice divider. 1340875108000000 1352206282000000 2631 enhancement johnmartin aron.carroll demo phase 5 closed fixed Style activity stream in user profile 1341826342000000 1352205778000000 2641 enhancement johnmartin amercader demo phase 5 assigned Adapt spatial widgets to new theme Dataset extent map and spatial filter need to adapted to the new theme, as they are not showing up now 1341846147000000 1352658854000000 2658 enhancement johnmartin aron.carroll demo phase 5 closed invalid On Demo change 'Groups' to 'Publishers' everywhere Can we do this as a localisation? 1342008495000000 1352205894000000 2676 enhancement johnmartin shevski demo phase 5 closed fixed no way to browse through related items on dataset page "Need to add JS (presumably?) to the related app box on dataset page: http://s031.okserver.org:2375/dataset/gold-prices to allow user to scroll through when multiple related items exist " 1342435678000000 1352205920000000 2697 enhancement johnmartin shevski demo phase 5 assigned create dataset validation Includes: missing fields, existing field checks (i.e. whether a name/dataset already exists with that name) during input (i.e. no need to submit form to check) 1342620035000000 1346235925000000 2704 enhancement johnmartin shevski demo phase 5 closed fixed add list of resources to edit dataset page sidebar when editing a dataset (e.g. here: http://s031.okserver.org:2375/en/dataset/edit/afghanistan-election-data) add sidebar list of resources for user to click & browse through taking you to the relevant resource edit pages 1342620986000000 1352205939000000 2705 enhancement johnmartin shevski demo phase 5 closed fixed add link to edit dataset page from edit review page "e.g. on http://s031.okserver.org:2375/en/dataset/afghanistan-election-data/resource_edit/f6331f99-51f6-44d9-95b9-b20f3b74f360 & ensure consistant with sidebar of edit dataset page" 1342621122000000 1352205954000000 2711 enhancement johnmartin toby demo phase 5 closed fixed bin/less dies for toby it would be nice if this didn't fall over when the dir is removed maybe a linux only issue? 1342631508000000 1352205968000000 2714 defect johnmartin shevski demo phase 5 closed fixed XLS preview not working "see http://demo.ckan.org/dataset/vif-2012-population-totals/resource/e7b8401a-c410-4902-9e5a-6dbd78834873 what XLS previews do we support?" 1342706454000000 1352206138000000 2741 enhancement johnmartin toby demo phase 4 closed fixed admin index styling "http://localhost:5000/ckan-admin you need to be an admin paster sysadmin add <username> -c dev.ini we need to get links to other admin pages etc - I think this will want to be flexible so extensions can add extra links etc - but that can come later" 1343124308000000 1352205988000000 2742 enhancement johnmartin toby demo phase 5 closed fixed admin authz styling "http://localhost:5000/ckan-admin/authz you need to be an admin paster sysadmin add <username> -c dev.ini like #2741 we need other admin links you may want to make the inputs use your form macros - I've just done a basic port also we will need to get all the tables done but looks like we need to get auth groups working for that" 1343124423000000 1352206081000000 2785 enhancement johnmartin aron.carroll demo phase 5 assigned Allow resources to be re-ordered "Not sure where this functionality should be added, possibly in one of the sidebar widgets when editing a resource? Ira, what are your thoughts?" 1343816523000000 1346235916000000 2806 enhancement johnmartin shevski demo phase 4 closed fixed way to read full group description "e.g. currently no way to read full description for the 'data explorer examples' group here:http://s031.okserver.org:2375/group/data-explorer Can we add a 'read more' link that expands and contracts the sidebar box or similar?" 1344254292000000 1352206005000000 2903 enhancement johnmartin johnmartin demo phase 5 closed wontfix Two search boxes "I think the architecture on the search page is a bit odd. Not sure I like that there is a doubling up of the search box (e.g. one in the header and one in the body of the search results page) Needs some thought" 1346853712000000 1352206813000000 2907 enhancement johnmartin johnmartin demo phase 5 closed fixed Demo header The user login / avatar with in the header really should be within another topbar, as it goes against convention to have the user information within the normal header. 1346930925000000 1352206307000000 2916 enhancement johnmartin ross ckan 2.0 closed fixed User management in orgs needs autocomplete " The user management in organizations ( http://localhost:5000/organization/users/NAME ) should autocomplete names in the dropdown box so that only valid usernames are added to the table." 1347451792000000 1347970727000000 2917 enhancement johnmartin ross ckan 2.0 new Organization admins can delete themselves Organization administrators can delete themselves from the user management pages. We should disable this on the front-end as well as the back-end. 1347451843000000 1347455636000000 2918 enhancement johnmartin ross ckan 2.0 closed fixed Can't remove users from organizations "When you remove someone, without adding them, the text box at the bottom (which should probably autocomplete) is empty, and this causes problems on the server. Ideally when you add a user (select from the autocomplete) it would add another row to the table, defaulting the user to editor and setting the names to user__{{X}}__name and user__{{X}}__capacity where X is $('tr').size()" 1347455572000000 1347970735000000 2940 enhancement johnmartin johnmartin ckan 2.0 closed fixed Edit different resources from edit dataset pag We need a nice way to be able to get to editing the different resources that are associated to a dataset. 1348580812000000 1350560926000000 2941 enhancement johnmartin johnmartin ckan 2.0 closed fixed Add follower support back into CKAN 2.0 Add the views and functionality of following users and groups into 2.0 1348584670000000 1350560915000000 2954 enhancement johnmartin johnmartin ckan 2.0 closed fixed Flickering on resource view when changing between views From the google doc: When I move between grid, graph and map view mode (or click on filters) the whole data explorer flickers (jumps up & down slightly) for a few moments before settling. This is happening on all resources for me and when you initially open launch the page: http://demo.ckan.org/dataset/afghanistan-election-data/resource/f6331f99-51f6-44d9-95b9-b20f3b74f360. Only in Chrome, working fine in Firefox. 1349268916000000 1350578030000000 3015 enhancement johnmartin johnmartin ckan 2.0 closed invalid Dropdowns don't work without JavaScript Essentially the default bootstrap dropdowns don't work properly without JavaScript which is a little bit of an issue with JS not working. 1352805553000000 1353410072000000 3016 enhancement johnmartin johnmartin ckan 2.0 new CKAN 2.0 template tweaks Just a ticket to keep track of a few suggested template changes. 1352813417000000 1352813417000000 3018 enhancement johnmartin johnmartin ckan 2.0 new Load more in activity streams 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. 1352900051000000 1355140950000000 3021 enhancement johnmartin johnmartin accepted Logout doesn't work without JS "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" 1353410350000000 1353411968000000 833 enhancement johnlawrenceaspden rgrp ckan-v1.4-sprint-6 closed fixed [super] Administrative dashboard extension "Create an admin dashboard as /ckan-admin/ allowing for admin operations and overview. Possible features: * Purge revisions (or sets of revisions) and purge objects #1076 * Set roles for users #1075 * Put system into particular modes e.g. wiki mode (anyone can add, edit packages by default), data portal (only sysadmins or members of a special Editor group can create and edit packages) * WONTFIX * Overview of activity * WONTFIX - already have revision log Currently have an admin section using the formalchemy admin controller to provide basic editing of model objects. This can still be used but located at /admin/model/. https://bitbucket.org/okfn/ckanext-admin === Tickets === * ticket:1031 - user autocomplete api in ckan === Notes === Here's putting into restricted mode (plus creating a dedicated authz group so that others can admin sysadmin simply through that group): {{{ # first remove permissions from roles # this is hacky but have to do it because we hardcode assignment of # role permissions on package on package create (see model/authz.py) paster roles deny editor edit paster roles deny editor create-authorization-group paster roles deny editor create-group paster roles deny editor create-package paster roles deny reader create-package # make superuser group # create authz group administrators / Administrators (if not exists) paster rights make agroup:administrators admin system }}}" 1290765921000000 1303236364000000 854 defect johnlawrenceaspden dread ckan-v1.4-sprint-6 closed fixed Tests for authorization_group "The coverage tool (run by buildbot in the ckan build) reports that only 24% of lines of ckan.controllers.authorization_group are run in tests and 38% of ckan.forms.authorization_group. This suggests a need for more tests. " 1291723815000000 1304351843000000 1031 enhancement johnlawrenceaspden rgrp ckan-v1.4-sprint-4 closed fixed User lookup API "Add an api for searching users. This is needed for any kind of ajax autocomplete (needed for anywhere we want to add users). * API location: /api/util/user/lookup?q=querystr&limit=10 * Return json objects containing {id: ..., name: ..., fullname: ...} * Put in a module called controllers/apiv2/user.py" 1299780419000000 1300101520000000 1036 defect johnlawrenceaspden johnlawrenceaspden ckan-v1.4-sprint-4 closed fixed Add tests for three functions in ckan/model/user.py "create a new test file ckan/model/test_user.py add tests for the following three functions in ckan/model/user.py number_of_edits, number_administered_packages, search merged in in changeset 0046f83aedcf " 1300127840000000 1301304575000000 1075 enhancement johnlawrenceaspden rgrp ckan-v1.4-sprint-6 closed fixed Administrative dashboard - Edit Authorization related to System object "Roles on System object are important because admin role on system equates to being a 'sysadmin' (i.e. able to do anything). * Make users sysadmin (either as separate action or as part of editing roles on system object) * /authz subpage for editing roles on system object * Add and update user roles * Add and update authz group roles * List actions associated to roles at top of page (extra points for checkbox table with editability) * Document on http://wiki.ckan.net/Authorization what roles on System object 'mean' esp sysadmin role on System == Related Tickets == * super ticket: #833 * authz lib improvement and authztool refactor #1050" 1302279799000000 1303227982000000 1076 enhancement johnlawrenceaspden rgrp ckan-v1.4 closed fixed Improve revision and package purge system "== Purging Revisions == * Delete button displayed on: * /revision/list * ~~(/package/history)~~ * /package/history is problematic because html does not allow nested forms and we already have form for doing diff/comparison. * /revision/{id} * Delete button submits to delete action on revision and changes revision state to 'deleted'. * undelete button now displayed and revisions are marked as deleted in some way (e.g. greyed out?) * Sysadmins then visit /ckan-admin/trash which lists all revisions with deleted state. There is a large button: ""Empty trash"" (irreversible). Click button purges all revisions with deleted state. == Purging Packages == * Put into deleted state. * Listed on /ckan-admin/trash * Separate Empty trash button which deletes all associated revisions. * Should be separate from Empty trash for revisions == Current system == * Single purge link on revision listing if a sysadmin which permanently purges the revision and all associated changes (without confirmation atm!) " 1302283442000000 1303236302000000 1081 defect johnlawrenceaspden johnlawrenceaspden closed fixed can't remove user from authz group I've found that if I make an authorization group I sometimes can't remove myself from it. I've no idea why. I can add and remove other users. I'll investigate, just making a note of it here. 1302541056000000 1303489474000000 1083 defect johnlawrenceaspden johnlawrenceaspden ckan-v1.5-sprint-1 closed fixed userobjectroles added twice can't be deleted "the add_user_to_role/remove_user_from_role functions are asymmetrical in that the add function is happy to add the same role twice but the remove asserts that it's only in the table once and crashes if that's not true. an attempt has been made to guard against this, but fails, I think because the add functions rely on the caller committing the change to the db. same problem affects corresponding authorization_group functions I'll try to sort this out. Making a note here." 1302550660000000 1305537827000000 191 enhancement johnglover dread ckan-sprint-2011-12-19 closed fixed Searching by modification date "Cost - 2 days Search interface has new options to filter and sort the results by the date the package has been last modified in ckan. Search options are included in both Web UI and Search API. The filter specifies a range of dates. The results can be sorted by ascending or descending dates. The last modification date is surfaced in the package. Example search parameters: || modification-range=5/4/09- || Exclude packages last modified earlier than 5/4/09 || || modification-range=5/4/09-5/12/09 || Exclude packages last modified outside of 5/4/09-5/12/09 || || order_by=mod ||Sort by metadata modification. Defaults to newest first. || || order_by=mod-newest || Sort by metadata modification, newest first. || || order_by=mod-oldest || Sort by metadata modification, oldest first. || " 1258387778000000 1330020983000000 318 defect johnglover wwaites ckan-sprint-2011-10-28 closed fixed Insufficient validation of resource URIs "The CKAN instance on data.gov.uk serves invalid URIs out of its API. For example the following can be found, http://uk.sitestat.com/homeoffice/rds/s?rds.hosb0509tabsxls&ns_type=pdf&ns_url=[http://www.homeoffice.gov.uk/rds/pdfs09/hosb0509tabs.xls] In this URI, the : and / characters after the ? in the query part are invalid according to section 3.4 of RFC2396 Also URIs are not stripped of whitespace at the end. This causes problems when other software with a more correct interpretation of what a valid URI is attempts to consume data from CKAN. In this instance the Talis triplestore complains about such URIs. ""Be liberal in what you accept and conservative in what you send"" would seem apt. == Actions == * Validation of urls as part of form entry or data loading * Need to consider situation where this should happen out-of-band (i.e. we allow load even with invalid data and then flag bad dates in separate validation process). In general doubtful that we should do this here because url invalidity is such a big deal * This code should support analysis of existing data so we can go through existing database and find invalid urls * Also useful to have this so we can do out of band validation " 1274302723000000 1349778662000000 816 enhancement johnglover cygri ckan-sprint-2011-10-28 closed fixed Autocomplete for the resource format field "The field for entering the format of a resource should have autocomplete, populated from all the values that have already been entered in this field for any resource. This would help improve data quality and consistency." 1289996574000000 1319812324000000 842 enhancement johnglover rgrp ckan-v1.4-sprint-7 closed fixed Todo list CKAN extension "An extension that provides a todo list feature on CKAN so that people can register and find things to do. Extension name: ckanext-todo == User Story == === Package page === As a user I come to a package: * Have a todo count at that top that takes you down to the todo list (which may say nothing todo) * At the bottom is a section of the package display titled ""ToDo"" where I see a list of all toDos for the package most recent at the top * If I am logged in * See a form for ""Add to do"" at the top of the todo section and can add one straight away * I see a ""now resolved"" button next to each which goes green when you hover. When clicked the todo fades away. * Not logged in: I see a button that says ""login to add todo"" === Todo list page === When a user comes to todo overview at /todo At top list all todo categories with counts (or a progress bar). Click on category name or bar takes you down page to list for that category. Category list has a list of todo items (ul with li items with class todo) - link to package relevant to the todo. == Implementation == The Todo form * One of the fields is category -> autocomplete the category (not constrained) (lowercase, no spaces, .-_ allowed) * Add a description * Submit, the todo gets added via AJAX to the list at the top as the most recent todo Model: {{{ todo table id (autoincrement integer) package_id todo_category_id (required) description (required) created=NOW() resolved=null (unresolved) or a datetime (datetime of resolution) creator=user resolver=user todo_category table id name Prepopulate with: broken-resource-link, no-author, bad-format, add-description }}} API at /api/2/todo * GET / POST / PUT ... /api/2/todo?package=package_id_or_name&category=...&resolved=0/1 * support limit (?) /api/2/todo/category -> return list of todo categories * No GET / PUT / POST (these are auto-created by creation of todo) == Optional Extras (Will not be done atm) == * Integrate todo tags (e.g. list packages tagged with a todo.{xxx} on Todo List page ..." 1291467708000000 1305646487000000 888 enhancement johnglover rgrp ckan-sprint-2011-10-28 closed fixed Improvements to the dataproxy and the data API "First version of dataproxy and data API working (ticket:698) but have identified a variety of important improvements. (Should split these into sub-tickets ...): For dataproxy: * Testing for dataproxy * Can start by using known good remote urls (moving forward could switch to providing/mocking these locally) * Remove content-lenght for csv requirement: just read the first x rows (up to some configurable maximum) * Google docs style row/column selections * Use the swiss library - https://bitbucket.org/okfn/swiss * Support google docs spreadsheets (format = service/gdocs/ccc or gdocs/ccc or gdocs/spreadsheet) * Handle redirects for content-length? * Ignore resource type if not recognized and fall-back to trying to identify from extension (or mime-type?) For dataapi: * Ensure we pass on resource format as part of redirect i.e. /api/data/{id} -> {dataproxy}?url={resource-url}&type={resource-type}" 1293649783000000 1311773103000000 891 task johnglover pudo ckan-sprint-2011-11-07 closed fixed Resource download worker daemon "Superticket: #1397 Write a worker daemon to download all resources from a CKAN instance to a local repository. == Questions == * Do we only want to download openly licensed information? ANS: no, we do everything (though do need to think about this re. IP issues) * Should we have clever ways to dump APIs? ANS: no. * Do we respect robots.txt even for openly licensed information? ANS: No (we're not crawling we're archiving) * Use HTTP/1.1 Caching headers? ANS: if not changed since we last updated don't bother to recache. * Complete support for ETags * Expires, Max-Age etc. * Check == Functionality == * Download files via HTTP, HTTPS (will not do FTP) Process: 1. [Archiver.Update checks queue (automated as part of celery)] 2. Open url and get any info from resource on cache / content-length etc 1. If FAILURE status: update task_status table (could retry if not more than 3 failures so far). Report task failure in celery 2. Check headers for content-length and content-type ... * IF: content-length > max_content_length: EXIT (store outcomes on task_status, and update resource with size and content-type and any other info we get?) * ELSE: check content-type. * IF: NOT data stuff (e.g. text/html) then EXIT. (store outcomes and info on resource) * ELSE: archive it (compute md5 hash etc) * IF: get content-length and content-length unchanged GOTO step 4 3. Archive it: connect to storage system and store it. Bucket: from config, Key: /archive/{timestamp}/{resourceid}/filename.ext * Add cache url to resource and updated date * Add other relevant info to resource such as md5, content-type etc 4. Update task_status == Optional functionality == * If result object is HTML, search for references to ""proper data"" (CSV download pages etc.) * Download from POST forms (accepting licenses or weird proprietary systems) * Support running on Google Apps Engine to save traffic costs. == Existing work == * https://bitbucket.org/okfn/ckanext-qa/overview * out of date: https://bitbucket.org/pudo/ckanextarchive - Old archiver extension, largely experimental. * out of date: https://bitbucket.org/ollyc/ckan/changeset/1b16fbe9aa65 - Openness scores by ollyc" 1294052979000000 1320149841000000 892 enhancement johnglover pudo ckan-sprint-2012-01-09 closed fixed Make stored data available in WUI - 0.5d "Once we have storage, make the data available in the following ways: * Now have a cached_url field can show in the frontend ... * Add a [<a href=""${cached_url}"">cached</a>] link to right of real url on resource listing on dataset page. * On resource page: will not add it yet. * At the moment no clear place to pu this given nice big download button (could put in list of items on left but that does not seem right and note that it will turn up in big list of info at bottom) * Add test (?) * Deploy " 1294053293000000 1324402480000000 936 enhancement johnglover rgrp ckan-v1.4-sprint-6 closed fixed Follow / watch package extension "As a (logged-in) User I want to watch (follow) a package, that is register my interest about a package. (Similar to watch/follow features in github/bitbucket/wikis). NB: this is as much (if not more) about showing what packages are interesting to people as giving info to 'watchers'. Need to finalize terminology (github uses watch for repos and follow for users while bitbucket combines both in 'followers'). '''Decision: use follow''' == Implementation == === Interface === Become a follower: * Follow button on packages (if already watching say 'unfollow') Package-related changes: * Show number of followers on a package * List followers of a package at /package/{name}/followers * On a separate page a package User-related changes: * List followed packages * Either on user's page on a separate 'following' page. (NB: called 'following') * Does watching involve notifications (by email) * Probably not: you can already subscribe to RSS feed after all and email not that necessary (?) * [Future - don't have activity stream yet] Show what packages a user has started/stopped followed on a user's public activity stream on their user page === Nitty-Gritty === * Want to do this in ajax-y manner * API endpoint: /api/2/follower * Store data in a new follower table ==== API ==== /api/2/follower {{{ follow => PUT / POST { user_id object_type object_id } }}} If this is submitted by a user with user.id != user_id => error (401) {{{ unfollow => DELETE /api/2/follower/package/{id} => list of followers [ { safe dictized user } ] }}} NB: depends on access to a 'safe' dictized user object. Dictization is in nearly done, and current example of doing this by hand is in user API autocomplete method. ==== Table ==== Called 'follower' {{{ user_id, table, object_id, created xxx, package, yyy, ... xxx, user, yyy, ... [future] }}} === Random Extras === * What about following users as well " 1296339079000000 1303838713000000 1062 defect johnglover sebbacon ckan-backlog assigned Data preview encoding error "The preview of ""Species Misc Turtle Download"" at http://ckan.net/package/taxonconcept results in the following error: Unable to Preview - Had an error from dataproxy: Data Transformation Error (Data transformation failed. Reason: 'utf8' codec can't decode byte 0x8b in position 1: unexpected code byte " 1301396143000000 1311773731000000 1150 defect johnglover timmcnamara ckan-sprint-2011-10-28 closed fixed Non-ASCII chars prevent data preview "Characters outside of ASCII range are not supported within data previews. Steps to reproduce: 1. Visit http://ckan.net/package/kivele2010 2. Click on [preview] for any of the resources " 1306019914000000 1311774141000000 1154 enhancement johnglover nils.toedtmann ckan-sprint-2011-10-28 closed fixed Make ckan robust against solr failure "According to pudo, a ckan with activated solr extension throws a 5xx when solr is unreachable. Instead, it should behave more like a ckan without ckanext-solr when this happens. " 1306254472000000 1314287519000000 1183 defect johnglover nickstenning ckan-sprint-2011-10-28 closed fixed "Downloads ""Preview"" button doesn't preview." "The ""Preview"" button is a nice idea, but it doesn't seem to actually ""preview"" anything if the file MIME type would ordinarily cause the browser to download the file. If so, the browser does indeed just download the file. This is notable in the context of most hosted file services (including Google Storage) which will deliberately serve a MIME type of `application/x-some-junk-here` in order to force a download." 1307701669000000 1311771069000000 1203 defect johnglover rolf ckan-backlog new "Moderated edits: html code shows as ""changed"" although it is not" "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 —" 1309274970000000 1313401579000000 1259 enhancement johnglover pudo ckan-backlog new """Add a row"" for Extras on Package form" "The default package form offers 4 empty extras fields. Like the resource section, it should have an ""add more"" button to add another row. " 1312302693000000 1312907056000000 1269 defect johnglover rgrp ckan-backlog closed wontfix User view page shows the packages followed by viewing user not user being viewed This overlaps with Sean's follow support (for activity streams) and so will be dealt with there. 1312906598000000 1335875028000000 1274 enhancement johnglover johnglover ckan-sprint-2011-10-28 closed fixed Testing solr search Copy ckan core postgres package search tests to the ckanext-solr extension and update them so that they use the solr search backend. 1313413202000000 1313429049000000 1275 enhancement johnglover johnglover ckan-sprint-2011-09-26 closed fixed Move solr search extension to ckan core 1313413597000000 1319812967000000 1276 enhancement johnglover johnglover ckan-sprint-2011-09-12 closed fixed Apply weighting to search fields in solr "For example: * name and title should have a higher weight than the notes field" 1313414353000000 1315948394000000 1277 enhancement johnglover johnglover ckan-sprint-2011-09-12 closed fixed Use solr query parser for search instead of ckan query parser See http://ckan.okfnpad.org/search for details/discussion 1313414446000000 1315948417000000 1302 refactor johnglover johnglover ckan-sprint-2011-09-26 closed fixed Move Resource and Tag search code to logic layer Resource and Tag search is currently still using the old ckan query parser which is unnecessary. Refactor this out and move to the logic layer. 1314886102000000 1317131948000000 1336 defect johnglover dread ckan-backlog new License fudge "cset:4b59ab34137d ckan/logic/action/get.py: {{{ - isopen = model.Package.get_license_register()[license_id].isopen() - result_dict['isopen'] = isopen + try: + isopen = model.Package.get_license_register()[license_id].isopen() + result_dict['isopen'] = isopen + except KeyError: + # TODO: create a log message this error? + result_dict['isopen'] = False }}} This change hides problems with the license server and returns potentially incorrect values for openness. This has been noted as 'temporary fix' but seems to be forgotten about, since it has been merged to default and gone into release 1.4.3. I suggest the licenses are cached (I thought this was already the case when CKAN first requests them after start-up?). I suggest failure would return 503." 1315912057000000 1323173073000000 1342 defect johnglover amercader ckan-sprint-2011-10-10 closed fixed Home controller does not capture SearchError exceptions "If there is a problem with the SOLR connection,the home page just shows a 500 Server error, instead of a notice (the package controller shows a notice when visiting http://localhost:5000/dataset). Steps to reproduce: * Change the solr_url parameter in the ini file to something non-existant * Visit http://localhost:5000" 1316001227000000 1318256532000000 1362 defect johnglover johnglover ckan-sprint-2011-10-10 closed fixed Clearing the database should also clear the search index When paster db clean is run, the search index should also be cleared. 1317121861000000 1318256546000000 1363 enhancement johnglover kindly ckan-sprint-2011-10-10 closed fixed Add task_status table to store qa/archiever/webstore information that does not need to be versioned. "{{{ table: task_status id entity_id entity_type task_type key value last_updated state unique(entity_id, task_type, key) example keys: last_task_id }}}" 1317219617000000 1318256600000000 1371 enhancement johnglover johnglover ckan-sprint-2011-10-10 closed fixed Make logic layer functions for working with task_status table The background tasks will use the logic API to access the task_status table so new logic layer functions are needed. 1317808776000000 1324037905000000 1372 refactor johnglover johnglover ckan-sprint-2011-10-24 closed fixed Refactor archiver to work as a celery task Take the resource archiver (currently part of ckanext-qa) and make it into a standalone extension that works as a celery task. 1317808970000000 1319625783000000 1389 defect johnglover johnglover ckan-sprint-2011-10-24 closed fixed Update ckanext-datacatalogs for ckan 1.5 1318497052000000 1319625799000000 1390 enhancement johnglover johnglover ckan-sprint-2011-10-24 closed fixed Update ckanext-moderatededits for ckan 1.5 on datacatalogs.org 1318497099000000 1319625810000000 1391 enhancement johnglover johnglover ckan-sprint-2011-10-24 closed fixed Update datacatalogs.org to ckan 1.5 1318497186000000 1319625819000000 1392 enhancement johnglover johnglover ckan-sprint-2011-11-07 closed fixed Move datacatalogs.org to an OKFN server 1318497251000000 1320143150000000 1393 enhancement johnglover dread ckan-backlog assigned Don't skip search tests 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. 1318505453000000 1320153590000000 1399 enhancement johnglover rgrp ckan-sprint-2011-10-24 closed fixed Generate archiving request on resource url change "Superticket: #1397 Generate archiving request on resource url change by implementing IResourceUrlChange and sending tasks to celery. [0.25d][0.25d] Will be part of of ckanext-archiver extension. Process: 0. A resource is added to CKAN 1. IResourceCreate event generated 2. IF: resource url points to ckan storage or falls within some other set of exclusion conditions then END else continue 3. Generate a Archiver.Update task with resource.id" 1318600123000000 1319625829000000 1400 enhancement johnglover rgrp ckan-sprint-2012-03-05 closed fixed Document Archiver Extension " * Create page on http://wiki.ckan.org/ about setting up a queue (this will merge into core docs when this is stable) - having a queue will now become a generic requirement for a bunch of extensions * README with install instructions in ckanext-archiver * Create an entry in http://wiki.ckan.org/Extensions * Write a blog post" 1318600705000000 1331544816000000 1420 enhancement johnglover johnglover ckan-sprint-2011-11-21 closed fixed Refactor ckanext-qa to work as a celery task "Currently can run as a celery task launched by paster command. Still have to add a CKAN plugin so that QA will run when a resource is added or URL changed, and then update the extension controller/templates to look for QA data from the task_status table instead of directly on the resource." 1319626138000000 1320843789000000 1436 defect johnglover johnglover ckan-sprint-2011-11-07 closed fixed Packages with a 'pending' state not listed on groups page 1320155227000000 1320243278000000 1449 enhancement johnglover johnglover ckan-sprint-2011-11-21 closed fixed Improved resource listing on dataset view page Should list resources in the form of search results rather than as a table. 1320677693000000 1321873008000000 1451 enhancement johnglover johnglover ckan-sprint-2012-01-09 closed fixed Reintegrate download stats on dataset and resource view page - 0.5d " * css class: resource-url-analytics * Assign to the link tag (a) everywhere we want to count (dataset, resource view) - 0.25d * Display counts in same place ... And deploy on http://thedatahub.org/ - 0.25d Possible: Also move analytics extension into core (decided not to)." 1320677859000000 1324401792000000 1455 defect johnglover dread ckan-sprint-2011-12-05 closed fixed Search results when 'all_fields' don't include 'extra' fields "When you do a search like this: {{{ http://thedatahub.org/api/search/package?q=tauberer+census&all_fields=1 }}} the ""extra"" fields (e.g. ""triples"", ""shortname"") get missed off the results. The docs say it should be a ""full record"" and I don't see any reason why this is missed off. This is a problem because search all_fields is the only way for clients and front-ends to get packages in bulk. They end up (like lodcloud) doing thousands of requests to get packages individually. The full record is: {{{ http://thedatahub.org/api/rest/dataset/2000-us-census-rdf {""count"": 1, ""results"": [{""res_description"": [""Download"", ""XML Sitemap"", ""SPARQL enpdoint"", ""Example (RDF/XML)""], ""name"": ""2000-us-census-rdf"", ""license"": ""Non-OKD Compliant::Creative Commons Non-Commercial (Any)"", ""author"": ""Joshua Tauberer"", ""author_email"": ""http://razor.occams.info/"", ""ckan_url"": ""http://thedatahub.org/dataset/2000-us-census-rdf"", ""notes"": ""2000 U.S. Census converted into over a billion RDF triples.\n\nPopulation statistics at various geographic levels, from the U.S. as a whole, down through states, counties, sub-counties (roughly, cities and incorporated towns)\n\nNotes: also found in the of SPARQL Endpoints.\n\nFrom home page:\n\n> * For the detailed Census statistics, you'll have to download the raw Census data files from the Census Bureau, my Perl script and the patch file below and run it yourself because the files are too big for me to offer as a download!\n> \n> * The data and scripts can be reused under Creative Commons Attribution-NonCommercial-ShareAlike.\n"", ""entity_type"": ""package"", ""site_id"": ""www.ckan.net"", ""download_url"": ""http://www.rdfabout.com/demo/census/"", ""indexed_ts"": ""2011-11-01T12:52:36.034Z"", ""url"": ""http://www.rdfabout.com/demo/census/"", ""state"": ""active"", ""title"": ""2000 U.S. Census in RDF (rdfabout.com)"", ""groups"": [""lod"", ""lodcloud""], ""res_format"": ["""", ""meta/sitemap"", ""api/sparql"", ""example/rdf+xml""], ""license_id"": ""cc-nc"", ""revision_id"": ""fcbad0de-79ea-41bd-8e01-eb832a05b732"", ""res_url"": [""http://www.rdfabout.com/demo/census/"", ""http://www.rdfabout.com/sitemap.xml"", ""http://www.rdfabout.com/sparql"", ""http://www.rdfabout.com/rdf/usgov/geo/us/ny""], ""id"": ""551ec435-f198-4d52-9b56-ec0b0be6aec9"", ""tags"": [""census"", ""data"", ""demographics"", ""deref-vocab"", ""format-dc"", ""format-geonames"", ""format-politico"", ""format-rdf"", ""geographic"", ""linkeddata"", ""lod"", ""lodcloud.nolinks"", ""no-license-metadata"", ""no-provenance-metadata"", ""no-vocab-mappings"", ""population"", ""published-by-third-party"", ""rdf"", ""statistics"", ""us""]}]} }}}" 1320858265000000 1324474466000000 1468 defect johnglover thejimmyg ckan-sprint-2011-12-05 closed fixed Update the search index for individual packages "When I delete a package from the pylons shell I need to remove that package's entry from the Solr search index. That doesn't happen at the moment. It would be useful if the search-index rebuild command could take a list of package IDs to rebuild." 1321376195000000 1322591997000000 1481 defect johnglover dread ckan-sprint-2011-12-05 closed fixed License not shown if no resources "The license is not displayed any more, unless there are resources e.g. http://test.ckan.net/dataset/dtest#section-basic-information is OGL, but that's not shown." 1321983266000000 1323169343000000 1482 defect johnglover zephod ckan-sprint-2011-12-05 closed fixed Minor JS bugs "Three JS bugs have appeared: * The slug editor is not updating the text field again. [Fixed; commit:fadda17383] * The View Dataset page will stop executing javascript if there are no resources. [Fixed; commit:e54b089f6e] * The Add-Dataset and Add-Group URL editor shows the wrong URL for datasets and groups. Broken in this commit: https://github.com/okfn/ckan/commit/5a01e67 by 'map.explicit=true'. JohnG: Can you look into this? [Fixed; commit:88e88380f6]" 1321991091000000 1322062576000000 1483 defect johnglover johnglover ckan-sprint-2011-12-19 closed fixed Tasks sometimes fail to update task_status table when trying to report a failure "The error reports do not have a ""value"". The original task in the task status table is not made and it tries to make a new task, but can't. Issue: why is the original task_status entry not made? kindly: there is a chance of course that the task is quicker than the plugin to get to the point where it needs to update the table. kindly: so we may have to find a way to update the task status before we run the task. kindly: I think you can supply a task_id to celery. i.e we make our own guid as the task id. So we can use that one to populate the task status. " 1322050605000000 1323279151000000 1501 defect johnglover amercader ckan-sprint-2011-12-05 closed fixed Pagination links broken "Most of the different pagination links are broken and point to wrong locations. e.g: * Dataset listings in group page: http://test.ckan.net/group/bibliographic * Tag letters in tag listing: http://test.ckan.net/tag * User listing: http://test.ckan.net/user * Revision listing: http://test.ckan.net/revision This is most probably related with: https://github.com/okfn/ckan/commit/1772a5c " 1322646397000000 1322684411000000 1502 defect johnglover johnglover ckan-sprint-2011-12-05 closed fixed Group package list is ordered by revision timestamp instead of alphabetically 1322680312000000 1324480415000000 1519 enhancement johnglover shevski ckan-sprint-2012-01-09 closed wontfix combine stats and analytics extensions into one in UI as well as deployment "Makes more sense to only have one comprehensive stats/analytics extension, so when people are looking to add a stats extension they won't have to add two which may be confusing (is one an old version of the other? why do I have to add two? what's the difference? etc) User-wise we need a way to display our stats with google analytics in the same place" 1323169033000000 1324317373000000 1543 defect johnglover amercader ckan-sprint-2012-01-09 closed fixed Pagination links in the dataset listings don't keep the current filters "E.g. Pagination links on this page don't include groups=lodcloud http://thedatahub.org/dataset?groups=lodcloud Not sure if related to #1501 (probably not)" 1323442623000000 1324483367000000 1546 defect johnglover johnglover ckan-sprint-2011-12-19 closed fixed Package metadata_created returns the wrong date metadata_created seems to be returning the date of the earliest revision (for all packages), rather than the earliest revision for a specific package. 1323707327000000 1324034396000000 1580 enhancement johnglover johnglover ckan-sprint-2012-01-09 closed fixed Documenting TaskStatus table and QA changes - 0.5d " * Write up: task status table in http://wiki.ckan.org/Domain_Model * Write up: http://wiki.ckan.org/Data_Quality to reflect current state of play (move all old material to ""Discussion / Talk"" page) * Ping ckan-discuss re new Data Quality page" 1324399664000000 1324478635000000 1582 enhancement johnglover johnglover ckan-sprint-2012-01-09 closed fixed Deploy QA for thedatahub - 0.5d " * deploy celery * deploy QA and archiver tasks * write up a blog post announcing QA on thedatahub" 1324458494000000 1326110801000000 1584 enhancement johnglover johnglover ckan-backlog new QA report improvements - 2.5d "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" 1324459433000000 1338981975000000 1587 enhancement johnglover johnglover ckan-sprint-2012-06-25 closed fixed QA - Check license as part of 5 star rating "Super: #1594 From Richard Cyganiak on the CKAN discuss list: According to (most of) the definitions of the five-star scheme, the first star already requires an open license, so a dataset shouldn't get any stars at all if it's not under an open license." 1324480208000000 1339433296000000 1588 enhancement johnglover johnglover ckan-backlog new QA - Give SPARQL endpoints a 4 star rating "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." 1324480405000000 1325475178000000 1589 enhancement johnglover johnglover ckan-backlog new QA - Give 5 star rating to datasets with link metadata "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." 1324480600000000 1325475095000000 1594 enhancement johnglover johnglover ckan-v1.7 closed wontfix [super] QA Improvements "Now that QA has been updated for Celery and CKAN 1.5.1, there are a number of improvements that we should probably implement. * Integrate QA into frontend - 1d - #1583 * QA report improvements - 2.5d - #1584 * QA - Check license as part of 5 star rating - #1587 * QA - Give SPARQL endpoints a 4 star rating - #1588 * QA - Give 5 star rating to datasets with link metadata - #1589 Main pad: http://ckan.okfnpad.org/qa Some QA discussion (relating to Celery in particular) at http://ckan.okfnpad.org/queue" 1324489620000000 1338203215000000 1622 enhancement johnglover johnglover ckan-sprint-2012-01-23 closed fixed Deploy QA on DGU UAT test server - 0.5d " * Update CKAN on DGU UAT to 1.5.1 * Deploy Celery * Deploy QA extension" 1326116380000000 1326127702000000 1651 enhancement johnglover dread closed fixed Explicit link mapper "In this commit https://github.com/okfn/ckan/commit/1772a5c John Glover set map.explicit=True in ckan/config/routing.py. The reason this was done was to avoid links collecting parameters. e.g. if you were on page /dataset/{id}/resource/{resource_id} then by default all the links on that page generated by url_for (Routes) would include the id and resource_id parameters as well. To avoid this, you had to go through all the links and add id=None and resource_id=None to the url_for parameters. When map.explicit was changed to True, the value of the controller, action, id and any parameters were no longer automatically carried over into the generated links for the page. So previously links within the same controller didn't need to specify the controller (for example), but now they did. So when we did this we also had to fix up links that weren't explicit: * https://github.com/okfn/ckan/commit/88e88380f61965f58fb105095e76a78673ce3e2c * #1501 Pagination links * https://github.com/okfn/ckan/commit/52d71102d9b07693ea240d4a66e8adb43e515414 John made the config change on 5/11/2011 which was merged to master https://github.com/okfn/ckan/commit/5a01e67 21/11/2011. The related fixes mentioned were in within the same week. This all went into release 1.5.1. The requirement" 1326709852000000 1326711005000000 1696 defect johnglover johnglover ckan-sprint-2012-02-06 closed fixed Maintain backwards compatibility with older way of creating custom forms "To maintain backwards compatibility, the package controller (new/edit) should check to see if the controller has a package_form variable defined, and if so render the form pointed to by this variable before calling the new self._package_form() function. This behaviour is now deprecated however." 1327326243000000 1327326421000000 1699 task johnglover kindly ckan-sprint-2012-02-06 closed fixed Setup Ckan on tenforce test server Need to setup server in tenforce test server. 1327417859000000 1327425070000000 1700 enhancement johnglover kindly ckan-sprint-2012-02-06 closed fixed Document server setup for ckan server. Document deployment on tenforce test server. 1327417952000000 1327425247000000 1703 enhancement johnglover kindly ckan-sprint-2012-03-19 closed fixed Make custom fields for ecportal form based on prototype metamodel The prototype portal gave us a list of classifiers that are expected for the initial launch. Add then to ckanext-ecportal. 1327419727000000 1331142926000000 1704 enhancement johnglover kindly ckan-sprint-2012-02-06 closed fixed Import test datasets from prototype into ckan. Eurostat datasets mainly. 1327420355000000 1328005759000000 1707 defect johnglover johnglover ckan-sprint-2012-02-06 closed duplicate Over-long URLs in QA ext broken links list "From Mark on the ckan-dev list: In the table of broken links at <http://thedatahub.org/qa/dataset/broken_resource_links>, the links as printed should be abridged to a fixed length (but link to the full URL). Otherwise the 'reason' column vanishes off the screen. Also a table would probably be better since as things stand the 'reasons' are not lined up" 1327488793000000 1328024253000000 1720 enhancement johnglover johnglover ckan-sprint-2012-02-20 closed fixed Add converter functions to convert tags (with a given taxonomy) to/from tags field Part of #1698 1327943471000000 1328625423000000 1721 enhancement johnglover seanh ckan-sprint-2012-02-20 closed fixed Tag taxonomies table migration 1327944237000000 1329133348000000 1729 enhancement johnglover seanh ckan-sprint-2012-02-20 closed duplicate Helper function for extensions to add vocabularies to a ckan instance Add a helper function to make it easy for extensions to add new vocabularies to default_package_schema(). The helper function should take the name or ID of a vocabulary (which should already exist in the db) and add the necessary key: [schema] entry to default_package_schema(), with the necessary validation, authorisation, transformation. 1328007723000000 1329131023000000 1730 enhancement johnglover seanh ckan-sprint-2012-02-20 closed fixed Form field for vocabularies A function that takes a vocabulary name or ID as argument and returns a nice select box for selecting items from that given vocabulary. Meant to be used by form templates, to make it easy for them to integrate custom vocabularies. Could use http://harvesthq.github.com/chosen/ 1328007897000000 1328714937000000 1732 enhancement johnglover seanh ckan-v1.8 closed fixed Update CKAN's search for taxonomies "Initially we'll just add all tags from all vocabularies into the existing tags search facet (this should happen automatically). Later we want to enable templates to use separate search facets for different vocabularies. Also need to make sure that search terms are matched against the texts of the tag names themselves (should happen already) and maybe also against the texts of the vocabulary names?" 1328008169000000 1341224357000000 1766 enhancement johnglover johnglover ckan-sprint-2012-02-20 closed fixed Update and deploy EC Portal theme 1328537446000000 1328541227000000 1767 enhancement johnglover johnglover ckan-sprint-2012-02-20 closed fixed Write end-to-end functional tests for tag vocabularies "Need to test: * API call to create new vocab * API call to add tags with a given vocab * API call to update tags * Dummy plugin to test that updating tags works via WUI" 1328537586000000 1329326678000000 1809 enhancement johnglover johnglover ckan-sprint-2012-03-05 closed fixed Catch request exceptions in archiver link_checker task Some request exceptions are currently not being caught (see the celery log on thedatahub for examples) 1329746267000000 1330528828000000 1810 enhancement johnglover johnglover ckan-backlog closed wontfix Store list of Eurovoc tag names and IDs " * Tag list not be added to CKAN core, what is the best way to do this in an extension? * Does the list need to be updated via API/WUI?" 1329746612000000 1335874745000000 1811 enhancement johnglover johnglover ckan-backlog closed wontfix Translate Eurovoc tags from ID to dataset language 1329747684000000 1335874765000000 1812 enhancement johnglover johnglover ckan-backlog closed fixed Restrict editing rights/permissions based on publisher * see how this currently works with DGU first 1329747889000000 1335874864000000 1817 enhancement johnglover johnglover ckan-sprint-2012-03-05 closed fixed Importer for EC publisher info " * write importer for publisher info (currently in JSON format), add to ckanext-ecportal * add group translations to translations table * run on test server" 1329762290000000 1329922818000000 2205 enhancement johnglover johnglover ckan-sprint-2012-03-19 closed fixed Document Tag Vocab schema/form setup 1330941067000000 1330956840000000 2206 enhancement johnglover johnglover ckan-sprint-2012-03-19 closed fixed Change site header to match latest ODP template 1330958095000000 1331046486000000 2212 enhancement johnglover johnglover ckan-sprint-2012-03-19 closed fixed Import latest data into demo site 1331047333000000 1331720191000000 2213 enhancement johnglover johnglover ckan-sprint-2012-04-02 closed fixed Update geographical coverage tags " * ~~create importer for geo tags~~ * ~~add translations to database~~ * ~~translate tags in WUI~~ * ~~test~~ * ~~deploy~~ * ~~document how to add a geo coverage field in http://docs.ckan.org/en/latest/forms.html~~" 1331047525000000 1332342835000000 2245 enhancement johnglover johnglover ckan-sprint-2012-04-02 closed fixed Update documentation for writing CKAN extensions 1332178546000000 1332331196000000 2246 enhancement johnglover johnglover ckan-sprint-2012-04-02 closed fixed Change published_by metadata field to reference group instead of a custom extra * probably needs a new converter, as needs to be usable via API as 'published_by'. 1332243036000000 1332864871000000 2248 enhancement johnglover johnglover ckan-sprint-2012-04-02 closed fixed Update docs for creating custom forms Should describe implementing IDatasetForm, subclassing controllers is deprecated 1332328630000000 1332331220000000 2259 enhancement johnglover johnglover ckan-sprint-2012-04-02 closed fixed Update ecportal theme for master changes (bootstrap) "Some recent changes caused things to break in ckanext-ecportal: * change from blueprint to bootstrap * other style / css changes (eg: tables, resource view notes field ID, etc. Forms are also broken, but that will be addressed in #2262) * change to going through db_to_form_schema on package_show" 1332754180000000 1332769973000000 2260 enhancement johnglover johnglover ckan-sprint-2012-04-16 closed fixed Update ecportal theme to match latest changes to tenforce theme 1332754319000000 1333554069000000 2262 enhancement johnglover johnglover ckan-sprint-2012-04-02 closed fixed Update ecportal form and dataset style/ux to match CKAN master 1332764002000000 1332855605000000 2269 enhancement johnglover johnglover ckan-sprint-2012-04-30 closed fixed EC ODP review and server setup " * code review with D.R. for ckanext-ecportal * merge and test all multilingual code * fix server issues: routing, Git access to CKAN repository Bugs to fix: * ~~rename groups to publishers~~ * ~~update home page layout (recent updates along side publishers)~~ * ~~don't add 'en' to main menu links if english~~ * ~~resource edit page, fix missing images~~ * ~~change dataset 'settings' to 'edit'~~ * ~~translate 'published by' drop-down list~~ * ~~fix JS on 'add a dataset page'~~ * ~~prepopulate 'published_by' when clicking 'add a dataset' from group~~ * ~~chosen broken (dataset edit) if in different language~~ " 1333374177000000 1335779180000000 2270 enhancement johnglover johnglover ckan-sprint-2012-04-16 closed fixed DataExplorer overview * get up to speed with DataExplorer code (and dependencies like Backbone) 1333374339000000 1334073875000000 2275 enhancement johnglover seanh ckan-sprint-2012-04-16 closed fixed Implement group logos "Groups should be able to specify a URL to an image file for a group logo, the image will be shown on the group page. ~~Actually uploading an image file (rather than giving a URL) and cropping and resizing the file will be done later, for now just give a URL.~~ (later ticket) ~~Further customisation of group pages (CSS, templates) also for later.~~ (not sure if we really want this, but in a later ticket if so)" 1333376076000000 1334594328000000 2306 enhancement johnglover johnglover ckan-sprint-2012-04-30 closed fixed Updates to metadata model "Finalised metadata model requires several changes to our existing model: * new extra: alternative title * new extra: identifier * new extra: interop level * new extra: version description * new extra: dataset status * dataset type: change to fixed vocab * resource types: prefix with documentation/distribution/etc for clarity, add new resource types * rename update frequency to accrual periodicity * add new fixed vocab field: language coverage * resources: missing issued date - add as new core field called 'created' Also add functional tests for full metadata model." 1334588086000000 1335795725000000 2338 enhancement johnglover johnglover ckan-sprint-2012-05-15 closed wontfix Help with setup of new test instance for EC ODP (running on RedHat) I won't be needed for this during the current sprint, closing. 1335875955000000 1336491648000000 2343 enhancement johnglover johnglover ckan-sprint-2012-05-15 closed fixed Convert all non-free metadata fields to vocabulary fields " * convert non-free fields to vocab fields (eg: interoperability_level) * store values as JSON files in the ecportal repo * translate output on dataset view page * add tests" 1335876562000000 1335969506000000 2346 enhancement johnglover johnglover ckan-sprint-2012-05-15 closed fixed EC ODP Theme updates "Changes: * tidy up activity feed on home page or replace with search results (by modified date) * ~~move ckan menu to a left sidebar (see Sam's template)~~ (not doing this now) * update templates with changes from master * use local image in language dropdown (ecportal.js) * update dataset read template To discuss: * should we rename 'organization' to 'publisher'? Requires updating all templates and the url mapping." 1335876838000000 1338205553000000 2459 enhancement johnglover johnglover ckan-sprint-2012-06-25 closed fixed Faceting improvements: fix tags and decide on facet fields " * the facet tags should only show free (non-vocab) tags * decide on what fields to include in search facet list" 1338211925000000 1338393403000000 2460 enhancement johnglover johnglover ckan-sprint-2012-06-25 closed fixed Hide private datasets in 'top publishers' and 'recent updates' on home page 1338212018000000 1338301492000000 2462 enhancement johnglover johnglover ckan-sprint-2012-06-25 closed duplicate Add converter to rename resource_type field to type 1338212065000000 1338309596000000 2463 enhancement johnglover johnglover ckan-sprint-2012-06-25 closed fixed Fix whitespace bug in breadcrumbs when zoomed in (Google Chrome) 1338212133000000 1338307011000000 2464 enhancement johnglover johnglover ckan-sprint-2012-06-25 closed fixed Rename 'organization' to 'publisher' " * Already done for basic publisher forms (index, read, edit), but needs to be done for additional forms (in particular, form paths like 'organization_apply' that are hardcoded into the organizations controller). * change organization mapping to /publisher" 1338212553000000 1338910189000000 2465 enhancement johnglover johnglover ckan-sprint-2012-06-25 closed fixed Make sure dropdown lists on dataset edit form are sorted 1338212671000000 1338805853000000 2470 enhancement johnglover johnglover ckan-sprint-2012-06-25 closed fixed Fix inconsistency in package_list snippet Datasets listed in search results have not gone through schema validation (but on the user page they do), so package_list snippet currently has to display both 'notes' and 'description'. 1338220927000000 1338284041000000 2487 enhancement johnglover johnglover ckan-sprint-2012-06-25 closed fixed Don't preview text/html Quite a few of the current test dataset resources have their format incorrectly specified as text/html. Attempting to preview these results in the browser trying to automatically download the resource, so for now we will not preview this format. 1338806098000000 1338892521000000 2488 defect johnglover johnglover ckan-sprint-2012-06-25 closed worksforme Group update via API fails validation with organization and publisher profile enabled "Reported on IRC by 'floapps'. * when posting a group update with {packages: [package-1, package-2, etc.]}, getting ValidationError: {'Packages': {'name': ['Missing value']}}, although package objects did contain a name field * same API call worked with organization and publisher profile disabled * also worked if added a form_to_db_schema_options function which used default_update_group_schema for api updates instead of default_group_schema * tried on both 1.7 and 1.7.1b" 1338806374000000 1339412538000000 2489 defect johnglover johnglover ckan-sprint-2012-06-25 closed fixed Select publisher when dataset created via 'publisher > add dataset' When clicking 'add dataset' on a publisher/group page, the new dataset form should select the appropriate group. 1338809595000000 1338886578000000 2509 defect johnglover johnglover ckan-sprint-2012-06-25 closed fixed UI style broken on organization read page Looks like some of the style has been updated/changed on the group read page but the changes haven't been applied to the organizations read page. 1339413084000000 1339419867000000 2517 enhancement johnglover johnglover ckan-sprint-2012-06-25 closed fixed Test installation instructions for EC ODP on CentOS 6.2 * created repo for final list of instructions: http://github.com/okfn/ecportal-server-setup 1339581689000000 1340613194000000 2518 enhancement johnglover johnglover ckan-sprint-2012-06-25 closed fixed Create EC ODP CKAN release branch " * branch from 1.7.1 * apply CKAN patches that are current part of installation instructions * create i18n patch so custom i18n directories can be specified via a config option" 1339581818000000 1339595863000000 2551 enhancement johnglover ross datahub-oct closed fixed Feature metrics " == Requirements == Would be useful if we could extend the Google Analytics extension to push track events to GA so that we can determine how the system is being used, and where we can optimise the workflow. Assuming it isn't configured to be off, track events should be added to some key action buttons so that the information on what users are doing is logged for analysis. == Interface == This could possibly just be a list of JS calls to $('x').click(_gaq.push('track'...)) == User Stories == * As a developer I would like to know which components of the system are used the most so I can streamline the processes. * As a support developer I would like to know which parts add complexity to the system for minimal gain and could possibly be removed, de-prioritised. For which metrics, as many of the following as possible that are achievable without changing the templates. I think for now it is enough to just record counts of these pages/actions. * Any group link on homepage * Clicking on username (to go to profile) * In user profile, clicking on Edit Profile * Clicking Save Changes on Edit Profile page * Clicking on any dataset link on User Profile page * Any of the group links on /group * Clicking any of the right hand sidebar tags on /group/X * Visiting /group/history/X * Compare Button on /group/history/X * Compare Button on /dataset/history/X * Tags on right hand sidebar of /dataset/X * Download button on any /dataset/X/resource/* page * Data API button on any /dataset/X/resource/* page == Tasks == [ ] Analysis/Clarification [ ] Code/Config changes [ ] Documentation == Estimates == " 1340017689000000 1343042712000000 2593 enhancement johnglover johnglover ckan-ecportal closed fixed Setup nginx caching for EC ODP Add caching config to ecportal-server-setup repository. 1340638428000000 1340721249000000 2594 enhancement johnglover johnglover ckan-ecportal closed fixed Add EU27 to EC ODP geographical coverage field EU27 option seems to have been removed at some point, needs to be added back to geographical coverage vocabulary and tested. 1340638576000000 1340716640000000 2645 enhancement johnglover johnglover ckan-ecportal closed fixed Update server setup to use local files "Server setup scripts need to have two distinct steps: 1) Download all files that aren't in RHEL repositories, create RPMs where necessary (python virtualenv). 2) Install from local files." 1341916281000000 1341996302000000 2733 enhancement johnglover johnglover ckan-v1.9 new Datastore logic functions "== 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." 1343058886000000 1343656105000000 2829 enhancement johnglover toby ckan-v1.9 new Archiver fails on 403 http response "Had this issue with the archiver on my local machine need to be logged in (I am admin) to see via web front end {{{ $ paster archiver update -c ../ckan/development.ini 2012-08-09 11:01:37,636 INFO [ckanext.archiver.commands] Archival of dataset resource data added to celery queue: opencontext-chogha-mish-fauna (1 resources) 2012-08-09 11:01:37,671 INFO [ckanext.archiver.commands] Getting dataset metadata: south-african-national-gov-budget-2012-13 2012-08-09 11:01:37,900 INFO [ckan.lib.base] /api/action/package_show render time 0.043 seconds Traceback (most recent call last): File ""/home/toby/okfn/pyenv/bin/paster"", line 8, in <module> load_entry_point('PasteScript==1.7.5', 'console_scripts', 'paster')() File ""/home/toby/okfn/pyenv/lib/python2.7/site-packages/paste/script/command.py"", line 104, in run invoke(command, command_name, options, args[1:]) File ""/home/toby/okfn/pyenv/lib/python2.7/site-packages/paste/script/command.py"", line 143, in invoke exit_code = runner.run(args) File ""/home/toby/okfn/pyenv/lib/python2.7/site-packages/paste/script/command.py"", line 238, in run result = self.command() File ""/home/toby/okfn/pyenv/src/ckanext-archiver/ckanext/archiver/commands.py"", line 98, in command response = app.post(api_url + '/package_show', data) File ""/home/toby/okfn/pyenv/lib/python2.7/site-packages/paste/fixture.py"", line 262, in post expect_errors=expect_errors) File ""/home/toby/okfn/pyenv/lib/python2.7/site-packages/paste/fixture.py"", line 243, in _gen_request return self.do_request(req, status=status) File ""/home/toby/okfn/pyenv/lib/python2.7/site-packages/paste/fixture.py"", line 406, in do_request self._check_status(status, res) File ""/home/toby/okfn/pyenv/lib/python2.7/site-packages/paste/fixture.py"", line 439, in _check_status res.body)) paste.fixture.AppError: Bad response: 403 Forbidden (not 200 OK or 3xx redirect for /api/action/package_show) {""help"": ""Return the metadata of a dataset (package) and its resources.\n\n :param id: the id or name of the dataset\n :type id: string\n\n :rtype: dictionary\n\n "", ""success"": false, ""error"": {""message"": ""Access denied"", ""__type"": ""Authorization Error""}} }}}" 1344508484000000 1344508484000000 3011 enhancement johnglover johnglover ckan 2.0 new Recline fixes and updates for CKAN 2.0 Fixes and updates to Recline / Datapreview for CKAN 2.0. 1352288455000000 1352288455000000 3017 enhancement johnglover johnglover ckan 2.0 new New stable branch for the demo server 1352819088000000 1352819088000000 5 enhancement johnbywater johnbywater v0.3 closed fixed Browse list of packages and select one to view "== As a == Visitor == I want to == Browse a list of packages resulting from a search or browse request (see other use cases) == So that == I can select one of the packages to view in more detail (-> viewing an individual package ticket:6) == Notes == * When browsing a list of packages you should be able to see summary information about the package such as title (though this may be shortened in order to conveniently fit the list * The list should be broken up into pages so that the number of packages per page should be kept to a reasonable number (<= 50). Response time should be kept reasonable " 1152549884000000 1185473622000000 7 enhancement johnbywater johnbywater closed invalid View a release associated with a package See Update a release (ticket 14) for more information on what should be shown. 1152550022000000 1204136209000000 8 enhancement johnbywater johnbywater closed invalid View file "== As a == Visitor == I want to == View the files associated with a package. == Notes == * See also ticket:16 (updating a file). * Files should either be listed on the same page as a release or there should be a link from the release page to a page listing all the files associated with the release. See also ticket:14 (update a release) " 1152550057000000 1250619147000000 10 enhancement johnbywater johnbywater milestone15 closed worksforme Update package "== As a == Authenticated user == I want to == Update the attributes of a package and add/remove releases == So that == The package attributes are changed. Package attributes are: * A title * A description (short or long) * Date added * Project url * package license(s) * download url * A list of releases with their dates and a summary line * a list of owners (referencing authenticated users) I would also like to be able to add comments == Notes == * Only an authenticated user is one of owners of a package may update it * Any authenticated user may add comments (but visitors may not) * can break down into: * Update a package by changing simple package attributes (value: 8) * Update a package by adding or removing an owner (value: 5) * Update a package by adding or removing comments (value: 7) " 1152550243000000 1183648150000000 11 enhancement johnbywater johnbywater milestone16 closed fixed Delete package "== As a == Authenticated user == I want to == Delete a package == So that == So that the package is no longer displayed for visitors of the site == Notes == * The permissions for this action are the same as for updating the package details (see ticket:10) * When a package is deleted it is put in an inactive state and is invisible to users and vistors of the service. However its name remains reserved and it may be undeleted or purged by the service administrator " 1152550328000000 1157371568000000 12 enhancement johnbywater johnbywater closed invalid Create a release associated with a package "== As a == Authenticated user == I want to == Create a release associated with a package == So that == The package has a new release == Notes == * Permissions are as for updating a package ticket:10 * for details of release attributes see: updating a release ticket:14 " 1152550407000000 1204135071000000 14 enhancement johnbywater johnbywater closed invalid Update a release "== As a == Authenticated user == I want to == Update a release == So that == The release details are amended. Attributes of a release are: * name (may include '.' and '-' * nickname * date * description == Notes == * permissions: as for updating a package (ticket:10)" 1152550712000000 1204136163000000 15 enhancement johnbywater johnbywater closed invalid Create a file "== As a == Authenticated user == I want to == Create a file associated with a release == So that == The release has a new file associated with it == Notes == * Permissions are as for package updating (see ticket:10) * file attributes are described in file updating: ticket:16) * there are no attributes that are required to be supplied to create a file " 1152550770000000 1250619139000000 16 enhancement johnbywater rgrp closed invalid Update a file "== As a == Authenticated user == I want to == Update a file associated with a release == So that == The file attributes are changed. File attributes are: * (internal) id * description * source: (url usually) == Notes == * Permissions are as for package updating " 1152550796000000 1250619162000000 17 enhancement johnbywater johnbywater closed invalid Delete a file See ticket:16 (update a file) 1152550822000000 1250619180000000 20 enhancement johnbywater johnbywater v0.3 closed fixed Purge a package "== As A == Administrator == I want to == Purge a deleted package == Notes == * this need only be possible via the admin interface" 1152550910000000 1185473187000000 25 enhancement johnbywater johnbywater v0.6 closed fixed Autocompletion (and suggestion) of package tags when adding tags to a package "== Notes == * Currently have a text box where users can add space separated tags * Tags should auto-complete in a manner similar to delicious * would also be good to have a list of suggested tags. This could either be: * [simpler] a list below the tag box chosen by existing popularity or * [more complex] a list of suggestions that updates as you add tags (based again on popularity but 'filtered/reranked' to reflect choices so far). * For first attempt to should probably just go for the simpler option." 1152551313000000 1204131522000000 27 enhancement johnbywater johnbywater v0.6 closed fixed Register/Update a package via a web-api "= As A = User = I want To = Create/register and update a package via a web api." 1152551379000000 1215543933000000 39 enhancement johnbywater rgrp v0.7 closed fixed When listing packages show more information than just name. "When a package listing is shown (as on http://ckan.net/package/list) more information than just name should be shown. For example package titles should be shown as well as names (could also list tags and other stuff but simplest is just title). Cost: 1" 1194608920000000 1223908298000000 44 enhancement johnbywater rgrp v0.7 closed fixed Provide RSS/Atom Feed of Repository History "= As A = Visitor = I Want To = Get an RSS/Atom Feed of the Repository History to use in my feed reader (or elsewhere). = Details = * Preference for Atom. * should just add parameter to /revision/list/ (or /revision/) to select atom format e.g. ?format=atom. * should have a 'days' attribute specifying number of days back to go e.g. &days=30 = Cost = Low" 1199788457000000 1223390660000000 54 enhancement johnbywater rgrp v0.7 closed fixed Support dump and load of CKAN data to JSON "= As a = Sysadmin = I want to = Dump (serialize) CKAN data to a simple transport format (e.g. JSON) and be able to load it again. = Details = * Already have simple db dump. However dumping to JSON has various advantages, particularly where changes to the data need to be made upon reloading (e.g. during a migration). * Dump should include *all* CKAN data (i.e. all the data in the CKAN db tables)" 1223907883000000 1230211256000000 59 enhancement johnbywater rgrp v1.0 closed fixed Provide a basic guide to CKAN on the site " 1. Use contents from ckan package notes section (rgrp) 2. Update that section to be more guide-like (jwyg)" 1239018583000000 1273080019000000 156 enhancement johnbywater dread v1.0 closed fixed Whitelist for html in mark-down field Not just links that need to be displayed. Other html should be displayed too, such as tables which can't be represented in markdown. Do a search of the existing fields to see what is needed. 1255623973000000 1271962871000000 210 enhancement johnbywater johnbywater closed invalid User registration "Native registration scenario: Complete registration form, require unique email address (indicate this not displayed on site), full name (indicate this is displayed on site), password. Dispatch email confirmation message. Respond to email confirmation message causes user to be logged in. Users are assigned a uuid. " 1260292578000000 1266509788000000 211 enhancement johnbywater johnbywater closed invalid User login "Native login scenario: Complete login form, require email address. Any session is resumed. Mandated technical requirement: use Repoze (see plugin:form of repoze.who); borrow from BlastOff. See CKAN or Microfacts for usage of repose with openid." 1260292624000000 1266509848000000 236 enhancement johnbywater johnbywater closed fixed The system shall present to all users a form for starting data openness enquiries 1264157100000000 1264157324000000 237 enhancement johnbywater johnbywater closed fixed The system shall accept submissions from authenticated owners of activated accounts using the data openness enquiry form by presenting the enquiry summary and prompting for confirmation 1264157377000000 1264157420000000 238 enhancement johnbywater johnbywater closed invalid The system shall accept submissions from unauthenticated users of the data openness enquiry form by creating an anonymous pending enquiry action, and by redirecting the user to login form, passing a reference to the pending action 1264157814000000 1266509806000000 240 defect johnbywater rgrp v1.0 closed fixed Do not allow creation of PackageResource object without a url Currently it is possible (v0.11) to have a PackageResource object without a url. This should be impossible to do (either at creation time or via modification). 1265399747000000 1272383770000000 251 enhancement johnbywater johnbywater v1.0 closed fixed Present in the API a list of revision IDs, and present individual revisions when referenced by ID "Want to have: * /api/search/revision/ Support querying by ""since time"" and ""since revision"". Each individual revision should be available in the REST API (read-only): * /api/rest/revision/{revision ID} * should include revision attributes plus revision.packages e.g. like { ""id"": ""..."", ... ""packages"": [ list of packages names from e.g. revision.packages ] } " 1266519743000000 1271423917000000 263 enhancement johnbywater rgrp v1.1 closed fixed Improve and test openid login "At the moment the user has to figure out to login with providers -- this is not always obvious (e.g. google). We could improve this with a small bit of javascript. As an example see: http://standalone.demo.civicrm.org/standalone/ Not sure exactly what library that is using (or if bespoke) so alternatives include (NB: we already use jquery): * http://code.google.com/p/openid-realselector/ * http://code.google.com/p/openid-selector/ In addition to implementing this we also need to test logging in with main providers: google, wordpress -- as we have had reports of it not working with e.g. wordpress (not sure if this testing can be automated really -- best hope would be selenium I think -- so OK if done by hand). Cost: 3h (2h UI), (1h testing)" 1267605039000000 1279292730000000 265 enhancement johnbywater dread v1.0 closed fixed More detail shown in Atom feed "== Use case == As a user I want to stay abreast of package changes, such as a new package being created, newer data is available for a package or a new download is available for a package. == Implementation == Add into the Atom feed: 1. a package is a new one 2. the resources have been changed 3. the last_updated field has been changed " 1267708364000000 1271636891000000 266 enhancement johnbywater dread v1.0 closed fixed Package feed "As a user I want to track changes to a particular package. Provide an Atom feed, linked from the package read page." 1267716417000000 1271636901000000 267 defect johnbywater rgrp vdm-0.7 closed fixed Diffs for object that is created in that revision Currently this raises an exception because there is no package/package_revision in existence at from_revision. 1268041383000000 1272960518000000 270 enhancement johnbywater johnbywater closed fixed Refactor ckan/lib/importer and ckanclient/loader. "There is code to create packages in-process (ckan/lib/importer) and via HTTP (ckanclient/loaders/base). There is also code to read different kinds of package source (Google Spreadsheets spreadsheet, other spreadsheet). Propose to refactor all this to have template method in base command class (subclasses may implement command line interface, graphical user interface, or Web interface), where the template method calls on aggregated strategy objects for: reading raw spreadsheet data from spreadsheet application; for inferring CKAN package entities from the raw spreadsheet data; and for writing package entities to CKAN service. Spreadsheet readers to be factored to allow for variations of spreadsheet application. Raw data inferrers to allow for variations in spreadsheet cell structure. CKAN writer strategies to allow for either CKAN client or direct linking. Actual cases then supported by specifying existing strategies (or defining new ones) in a script that invokes the command class." 1268671804000000 1290596640000000 271 enhancement johnbywater johnbywater v1.0 closed fixed The system shall support distributing changes. See DistributingChanges for analysis and functional requirements. 1268672137000000 1273596144000000 279 enhancement johnbywater dread v1.0 closed fixed Ensure package's license is an option when it's edited "With forms configurable to show a subset of licenses and ckan instances moving packages from server to server, there is a chance that a user will edit a package and the existing package's license is not displayed in the form. If the user submits this form without touching the license dropdown, then the value is lost. So for this case we should add the package's license to the list displayed." 1270205931000000 1272451384000000 284 defect johnbywater rgrp v1.0 closed fixed Move tag/read/xxx to simple tag/xxx like package and group "Also put in redirect from old locations (see examples with plurals in routing.py) Estimated cost: 20m Actual cost: 40m" 1270664552000000 1271852451000000 290 defect johnbywater dread v1.0 closed fixed Revision API - docs doc/api.rst needs to cover the new Revision REST interface. 1271268759000000 1271636910000000 293 defect johnbywater dread v1.0 closed fixed REST PackageResource update causes exception "This is caused by editing a package with resources over the REST interface. Exception: {{{ URL: http://de.ckan.net/api/rest/package/destatis 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 repoze.who.middleware:107 in __call__ << wrapper = StartResponseWrapper(start_response) app_iter = app(environ, wrapper.wrap_start_response) # The challenge decider almost(?) always needs information from the >> app_iter = app(environ, wrapper.wrap_start_response) Module beaker.middleware:73 in __call__ << self.cache_manager) environ[self.environ_key] = self.cache_manager return self.app(environ, start_response) >> return self.app(environ, start_response) Module beaker.middleware:152 in __call__ << headers.append(('Set-cookie', cookie)) return start_response(status, headers, exc_info) return self.wrap_app(environ, session_start_response) def _get_session(self): >> return self.wrap_app(environ, session_start_response) Module routes.middleware:130 in __call__ << environ['SCRIPT_NAME'] = environ['SCRIPT_NAME'][:-1] response = self.app(environ, start_response) # Wrapped in try as in rare cases the attribute will be gone already >> response = self.app(environ, start_response) Module pylons.wsgiapp:125 in __call__ << controller = self.resolve(environ, start_response) response = self.dispatch(controller, environ, start_response) if 'paste.testing_variables' in environ and hasattr(response, >> response = self.dispatch(controller, environ, start_response) Module pylons.wsgiapp:324 in dispatch << if log_debug: log.debug(""Calling controller class with WSGI interface"") return controller(environ, start_response) def load_test_env(self, environ): >> return controller(environ, start_response) Module ckan.lib.base:51 in __call__ << # available in environ['pylons.routes_dict'] try: return WSGIController.__call__(self, environ, start_response) finally: model.Session.remove() >> return WSGIController.__call__(self, environ, start_response) Module pylons.controllers.core:221 in __call__ << return response(environ, self.start_response) response = self._dispatch_call() if not start_response_called: self.start_response = start_response >> response = self._dispatch_call() Module pylons.controllers.core:172 in _dispatch_call << req.environ['pylons.action_method'] = func response = self._inspect_call(func) else: if log_debug: >> response = self._inspect_call(func) Module pylons.controllers.core:107 in _inspect_call << func.__name__, args) try: result = self._perform_call(func, args) except HTTPException, httpe: if log_debug: >> result = self._perform_call(func, args) Module pylons.controllers.core:60 in _perform_call << """"""Hide the traceback for everything above this method"""""" __traceback_hide__ = 'before_and_this' return func(**args) def _inspect_call(self, func): >> return func(**args) Module ckan.controllers.rest:145 in update << fs = ckan.forms.group_fs_combined fs = fs.bind(entity, data=request_fa_dict) validation = fs.validate_on_edit(entity.name, entity.id) if not validation: response.status_int = 409 >> validation = fs.validate_on_edit(entity.name, entity.id) Module ckan.forms.package:385 in validate_on_edit << temp_name = orig_pkg_name self.data['Package-%s-name' % record_id] = u'something_unique' validation = self.validate() if temp_name: # restore it >> validation = self.validate() Module formalchemy.forms:175 in validate << if self.readonly: raise Exception('Cannot validate a read-only FieldSet') return AbstractFieldSet.validate(self) def sync(self): >> return AbstractFieldSet.validate(self) Module formalchemy.forms:104 in validate << success = True for field in self.render_fields.itervalues(): success = field._validate() and success # run this _after_ the field validators, since each field validator # resets its error list. we want to allow the global validator to add >> success = field._validate() and success Module formalchemy.fields:763 in _validate << try: value = self._deserialize() except validators.ValidationError, e: self.errors.append(e) >> value = self._deserialize() Module formalchemy.fields:1354 in _deserialize << if self.is_composite_foreign_key: return self.query(self.relation_type()).get(python_pk(self.renderer.deserialize())) return self.renderer.deserialize() >> return self.renderer.deserialize() Module formalchemy.fields:183 in deserialize << if self.field.is_collection: return [self._deserialize(subdata) for subdata in self._serialized_value()] return self._deserialize(self._serialized_value()) def _deserialize(self, data): >> return self._deserialize(self._serialized_value()) Module formalchemy.fields:167 in _serialized_value << if self.field.is_collection: return self._params.getall(self.name) return self._params.getone(self.name) def deserialize(self): >> return self._params.getone(self.name) Module formalchemy.base:63 in getone << if v is None or isinstance(v, basestring) or isinstance(v, cgi.FieldStorage): return v return v[0] def getall(self, key): v = dict.get(self, key) >> return v[0] TypeError: 'int' object is unsubscriptable }}} Thanks to Friedrich for spotting this." 1271756102000000 1271940083000000 296 enhancement johnbywater johnbywater closed duplicate Commit CKAN revisions to changeset system 1272279521000000 1294407032000000 297 enhancement johnbywater johnbywater closed duplicate Update CKAN repository from changeset system 1272279556000000 1294407051000000 298 enhancement johnbywater johnbywater closed duplicate Pull changesets from remote CKAN instance 1272279591000000 1294407080000000 299 enhancement johnbywater johnbywater closed duplicate Merge diverging lines of changesets 1272279698000000 1294407099000000 302 enhancement johnbywater dread v1.0 closed fixed Advertise a package's feed visually "Visual display of a package's feed in the Package Read (/package/xyz) and Package History (/package/history/xyz) pages. Motivation: each package's Atom feed is mentioned in the <link rel=""alternate"" type=""application/atom+xml"" ...> tag, which Firefox displays with a feed icon, but the other 3/4 of users may not discover it. The Repo History (/revision) page has a visual link the feed. PS It would be nice to display the feed icon in both these places too." 1272370397000000 1272453821000000 304 defect johnbywater johnbywater v1.0 closed fixed Previewing package with resource with missing url is broken "Intended outcome: See resource url validation error when previewing package with a resources that has no url. Recurring Error: {{{ URL: http://127.0.0.1:5000/package/new File 'pyenv-ckan/lib/python2.5/site-packages/weberror/evalexception.py', line 431 in respond app_iter = self.application(environ, detect_start_response) File 'pyenv-ckan/lib/python2.5/site-packages/repoze/who/middleware.py', line 107 in __call__ app_iter = app(environ, wrapper.wrap_start_response) File 'pyenv-ckan/lib/python2.5/site-packages/beaker/middleware.py', line 73 in __call__ return self.app(environ, start_response) File 'pyenv-ckan/lib/python2.5/site-packages/beaker/middleware.py', line 152 in __call__ return self.wrap_app(environ, session_start_response) File 'pyenv-ckan/lib/python2.5/site-packages/Routes-1.10.3-py2.5.egg/routes/middleware.py', line 130 in __call__ response = self.app(environ, start_response) File 'pyenv-ckan/lib/python2.5/site-packages/Pylons-0.9.7-py2.5.egg/pylons/wsgiapp.py', line 125 in __call__ response = self.dispatch(controller, environ, start_response) File 'pyenv-ckan/lib/python2.5/site-packages/Pylons-0.9.7-py2.5.egg/pylons/wsgiapp.py', line 324 in dispatch return controller(environ, start_response) File 'pyenv-ckan/src/ckan/ckan/lib/base.py', line 50 in __call__ return WSGIController.__call__(self, environ, start_response) File 'pyenv-ckan/lib/python2.5/site-packages/Pylons-0.9.7-py2.5.egg/pylons/controllers/core.py', line 221 in __call__ response = self._dispatch_call() File 'pyenv-ckan/lib/python2.5/site-packages/Pylons-0.9.7-py2.5.egg/pylons/controllers/core.py', line 172 in _dispatch_call response = self._inspect_call(func) File 'pyenv-ckan/lib/python2.5/site-packages/Pylons-0.9.7-py2.5.egg/pylons/controllers/core.py', line 107 in _inspect_call result = self._perform_call(func, args) File 'pyenv-ckan/lib/python2.5/site-packages/Pylons-0.9.7-py2.5.egg/pylons/controllers/core.py', line 60 in _perform_call return func(**args) File 'pyenv-ckan/src/ckan/ckan/controllers/package.py', line 216 in new clear_session=True) File 'pyenv-ckan/src/ckan/ckan/controllers/package.py', line 357 in _render_edit_form edit_form_html = fs.render() File 'pyenv-ckan/src/ckan/ckan/forms/builder.py', line 13 in render return render(self.form_template) File 'pyenv-ckan/lib/python2.5/site-packages/Pylons-0.9.7-py2.5.egg/pylons/templating.py', line 663 in render format=format, namespace=kargs, **cache_args) File 'pyenv-ckan/lib/python2.5/site-packages/Pylons-0.9.7-py2.5.egg/pylons/templating.py', line 546 in render **options) File 'pyenv-ckan/lib/python2.5/site-packages/Genshi-0.5.1-py2.5-linux-i686.egg/genshi/template/plugin.py', line 110 in render File 'pyenv-ckan/lib/python2.5/site-packages/Genshi-0.5.1-py2.5-linux-i686.egg/genshi/core.py', line 179 in render File 'pyenv-ckan/lib/python2.5/site-packages/Genshi-0.5.1-py2.5-linux-i686.egg/genshi/output.py', line 60 in encode File 'pyenv-ckan/lib/python2.5/site-packages/Genshi-0.5.1-py2.5-linux-i686.egg/genshi/output.py', line 425 in __call__ File 'pyenv-ckan/lib/python2.5/site-packages/Genshi-0.5.1-py2.5-linux-i686.egg/genshi/output.py', line 592 in __call__ File 'pyenv-ckan/lib/python2.5/site-packages/Genshi-0.5.1-py2.5-linux-i686.egg/genshi/output.py', line 698 in __call__ File 'pyenv-ckan/lib/python2.5/site-packages/Genshi-0.5.1-py2.5-linux-i686.egg/genshi/output.py', line 532 in __call__ File 'pyenv-ckan/lib/python2.5/site-packages/Genshi-0.5.1-py2.5-linux-i686.egg/genshi/core.py', line 283 in _ensure File 'pyenv-ckan/lib/python2.5/site-packages/Genshi-0.5.1-py2.5-linux-i686.egg/genshi/template/base.py', line 569 in _include File 'pyenv-ckan/lib/python2.5/site-packages/Genshi-0.5.1-py2.5-linux-i686.egg/genshi/template/markup.py', line 245 in _match File 'pyenv-ckan/lib/python2.5/site-packages/Genshi-0.5.1-py2.5-linux-i686.egg/genshi/template/base.py', line 543 in _exec File 'pyenv-ckan/lib/python2.5/site-packages/Genshi-0.5.1-py2.5-linux-i686.egg/genshi/template/base.py', line 533 in _eval File 'pyenv-ckan/lib/python2.5/site-packages/Genshi-0.5.1-py2.5-linux-i686.egg/genshi/template/base.py', line 520 in _eval File 'pyenv-ckan/lib/python2.5/site-packages/Genshi-0.5.1-py2.5-linux-i686.egg/genshi/template/base.py', line 286 in _eval_expr File 'pyenv-ckan/lib/python2.5/site-packages/Genshi-0.5.1-py2.5-linux-i686.egg/genshi/template/eval.py', line 180 in evaluate File 'pyenv-ckan/src/ckan/ckan/templates/package/form_fields.html', line 52 in <Expression u'h.literal(field.render())'> ${h.literal(field.render())} File 'pyenv-ckan/lib/python2.5/site-packages/FormAlchemy-1.3.4-py2.5.egg/formalchemy/fields.py', line 1217 in render return self.renderer.render(**opts) File 'pyenv-ckan/src/ckan/ckan/forms/common.py', line 311 in render return render('package/form_resources') File 'pyenv-ckan/lib/python2.5/site-packages/Pylons-0.9.7-py2.5.egg/pylons/templating.py', line 663 in render format=format, namespace=kargs, **cache_args) File 'pyenv-ckan/lib/python2.5/site-packages/Pylons-0.9.7-py2.5.egg/pylons/templating.py', line 546 in render **options) File 'pyenv-ckan/lib/python2.5/site-packages/Genshi-0.5.1-py2.5-linux-i686.egg/genshi/template/plugin.py', line 110 in render File 'pyenv-ckan/lib/python2.5/site-packages/Genshi-0.5.1-py2.5-linux-i686.egg/genshi/core.py', line 179 in render File 'pyenv-ckan/lib/python2.5/site-packages/Genshi-0.5.1-py2.5-linux-i686.egg/genshi/output.py', line 60 in encode File 'pyenv-ckan/lib/python2.5/site-packages/Genshi-0.5.1-py2.5-linux-i686.egg/genshi/output.py', line 425 in __call__ File 'pyenv-ckan/lib/python2.5/site-packages/Genshi-0.5.1-py2.5-linux-i686.egg/genshi/output.py', line 592 in __call__ File 'pyenv-ckan/lib/python2.5/site-packages/Genshi-0.5.1-py2.5-linux-i686.egg/genshi/output.py', line 698 in __call__ File 'pyenv-ckan/lib/python2.5/site-packages/Genshi-0.5.1-py2.5-linux-i686.egg/genshi/output.py', line 532 in __call__ File 'pyenv-ckan/lib/python2.5/site-packages/Genshi-0.5.1-py2.5-linux-i686.egg/genshi/core.py', line 283 in _ensure File 'pyenv-ckan/lib/python2.5/site-packages/Genshi-0.5.1-py2.5-linux-i686.egg/genshi/template/base.py', line 569 in _include File 'pyenv-ckan/lib/python2.5/site-packages/Genshi-0.5.1-py2.5-linux-i686.egg/genshi/template/markup.py', line 245 in _match File 'pyenv-ckan/lib/python2.5/site-packages/Genshi-0.5.1-py2.5-linux-i686.egg/genshi/template/base.py', line 543 in _exec File 'pyenv-ckan/lib/python2.5/site-packages/Genshi-0.5.1-py2.5-linux-i686.egg/genshi/template/base.py', line 510 in _eval File 'pyenv-ckan/lib/python2.5/site-packages/Genshi-0.5.1-py2.5-linux-i686.egg/genshi/template/base.py', line 520 in _eval File 'pyenv-ckan/lib/python2.5/site-packages/Genshi-0.5.1-py2.5-linux-i686.egg/genshi/template/base.py', line 286 in _eval_expr File 'pyenv-ckan/lib/python2.5/site-packages/Genshi-0.5.1-py2.5-linux-i686.egg/genshi/template/eval.py', line 180 in evaluate File 'pyenv-ckan/src/ckan/ckan/templates/package/form_resources.html', line 14 in <Expression u""res['id'] if res else ''""> <td><input name=""${c.id}-${i}-id"" type=""hidden"" value=""${res['id'] if res else ''}"" /></td> File 'pyenv-ckan/lib/python2.5/site-packages/Genshi-0.5.1-py2.5-linux-i686.egg/genshi/template/eval.py', line 335 in lookup_item File 'pyenv-ckan/lib/python2.5/site-packages/Genshi-0.5.1-py2.5-linux-i686.egg/genshi/template/eval.py', line 405 in undefined UndefinedError: {'url': u'a', 'hash': u'a', 'description': u'a', 'format': u'a'} has no member named ""id"" }}} How to reproduce: 1. Go to package edit form, enter a package resource **but without a URL**. 2. Click preview. " 1272379550000000 1272447296000000 305 defect johnbywater johnbywater v1.0 closed fixed Search result pagination is broken "Expect to page through results. Only page 1 is shown, all other pages fail to display. Reproduce by searching for something common and browsing to the second page." 1272468229000000 1272994804000000 314 defect johnbywater johnbywater closed fixed Bugs getting revisions from the REST API "Bug report regarding getting revisions: Getting revisons by ID (on the latest ID) GET ""http://test-hmg.ckan.net/api/search/revision?since_revision=44aac9b6-ba24-43a8-87a1-f6923dc523ff"" Returns a whole load of stuff (it's also quite slow - about 10 seconds) I'm expecting it to return just an empty array - am I doing something wrong here - if so could you clarify correct use of the API? GET ""http://test-hmg.ckan.net/api/search/revision?since_time=2010-04-30T23:45"" Returns the empty string - I'd expect an empty array ie [] GET ""http://test-hmg.ckan.net/api/search/revision?since_time=2010-04-31T23:45"" Returns an internal server error 500 - I think it should probably be ""bad Request"" 400 (the date is invalid) " 1273743755000000 1276523983000000 337 enhancement johnbywater rgrp v1.1 closed fixed Download links for resources should open in new window "target = _blank Cost: 30m" 1275422151000000 1279300972000000 338 story johnbywater johnbywater v1.1 closed Reference groups by ID in addition to name, since group names can change 1275901137000000 1280446480000000 343 defect johnbywater dread closed fixed Packages referred by ID in API When you do a Package Search or query a Package Relationship in the API version 2, the responses have relationships which refer to packages by name, not by ID. 1276180179000000 1278066420000000 347 enhancement johnbywater johnbywater closed fixed The system shall present the package edit form in an API 1276523692000000 1277820440000000 348 enhancement johnbywater johnbywater closed fixed The system shall accept package edit form submissions in an API 1276523793000000 1277820496000000 349 defect johnbywater johnbywater ckan-v1.2 closed invalid The system shall support authorised users to edit packages on data.gov.uk 1276523851000000 1282908974000000 354 defect johnbywater johnbywater closed invalid Collect together requirements and top-level design for user/package 'groups' "Collect together requirements and top-level design for user/package 'groups': existing tickets, Rufus spec, Sean spec, meeting notes (dread) email, based on existing user authz stuff. http://knowledgeforge.net/ckan/trac/wiki/AccessControl Do we add these into user-role table somehow or new table? To present this to team" 1277131335000000 1282908983000000 357 defect johnbywater johnbywater closed fixed Fix API documentation, to correct misleading HTTP_AUTHORIZATION statement. "Sean Burlington wrote: > I recently came across a documentation issue > > http://knowledgeforge.net/ckan/doc/ckan/api.html > ----- > The key should be passed in the API request header: > Header Example value > HTTP_AUTHORIZATION fde34a3c-b716-4c39-8dc4-881ba115c6d4 > > ----- > > But the header name is actually just 'AUTHORIZATION' > > For example to set it in PHP > > curl_setopt($ch, CURLOPT_HTTPHEADER, array('AUTHORIZATION: > xxxxx-xxxx-xxxx-xxxx-xxxxxxx')); > " 1277459886000000 1277461466000000 372 bug johnbywater johnbywater ckan-v1.2 closed Fix system limits on CKAN for DGU Set limits in /etc/security/limits.conf so that we can always ssh in at least. Requested by DGU. 1279885752000000 1281522535000000 374 task johnbywater johnbywater v1.1 closed fixed Design servicization of CKAN API 1280223118000000 1280398501000000 375 task johnbywater johnbywater v1.1 closed fixed Integrate Forms API into Drupal Requested by DGU. 1280223168000000 1280405812000000 376 task johnbywater johnbywater v1.1 closed fixed Implement servicization of CKAN API Requested by DGU. 1280223226000000 1281000755000000 378 story johnbywater johnbywater v1.1 closed fixed My user story #1 1280325186000000 1280326706000000 379 task johnbywater johnbywater v1.1 closed fixed My dev task #1 1280325277000000 1280326496000000 380 task johnbywater johnbywater v1.1 closed fixed My dev task #2 1280325304000000 1280326595000000 382 story johnbywater johnbywater v1.1 closed Measure quality of service parameters As a service administrator, I want to measure responsiveness, throughput, and availability of a CKAN service. 1280346974000000 1280854608000000 383 task johnbywater johnbywater v1.1 closed fixed Create middleware feature to generate QoS throughput log 1280347595000000 1280854578000000 384 story johnbywater johnbywater v1.1 closed Send alert when QoS measurements break expectation 1280347841000000 1280496812000000 385 task johnbywater johnbywater v1.1 closed fixed Send email if QoS measurement breaks QoS criteria 1280355527000000 1280496127000000 386 task johnbywater johnbywater v1.1 closed fixed Set limits in /etc/security/limits.conf 1280356594000000 1281088994000000 387 task johnbywater johnbywater v1.1 closed fixed Fix failing tests in search sub-system trigged by recent changes 1280357804000000 1280446047000000 388 task johnbywater johnbywater v1.1 closed fixed "Reply to ""two projects"" question from RS" 1280395503000000 1280405288000000 389 task johnbywater johnbywater v1.1 closed fixed Investigate timezone issue raised by SB 1280395554000000 1280422414000000 391 task johnbywater johnbywater v1.1 closed fixed Create monitoring feature to generate QoS responsiveness log 1280446714000000 1280854592000000 392 task johnbywater johnbywater v1.1 closed fixed Create monitoring feature to generate QoS availability log 1280446769000000 1280496140000000 393 task johnbywater johnbywater v1.1 closed fixed Create aggregation feature to aggregate QoS log 1280446811000000 1280496962000000 394 task johnbywater johnbywater closed duplicate Fix munin on DGU (?) 1280485351000000 1294407189000000 396 task johnbywater johnbywater closed fixed Integrate Forms API into Drupal 1280854226000000 1282324934000000 397 task johnbywater johnbywater v1.1 closed fixed Implement QoS monitoring for DGU 1280854935000000 1281000745000000 398 task johnbywater johnbywater ckan-v1.3 closed fixed Create Public API documentation for DGU (draft) 1281000828000000 1294407372000000 400 task johnbywater johnbywater ckan-v1.2 closed fixed Configure DGU Public API with TSO Have TSO configure data.ov.uk/api/catalogue. Have TSO register catalogue.data.gov.uk. 1281000956000000 1288003690000000 413 task johnbywater johnbywater ckan-v1.3 closed invalid Write functional tests for DGU caching 1281431633000000 1294407458000000 414 task johnbywater dread ckan-v1.2 closed fixed Change the Apache and Varnish ports Ask Paul for a new machine for testing. Then one for varnish-live and one for varnish-test. 1281431639000000 1288003770000000 416 task johnbywater dread ckan-v1.2 closed fixed Meet Evan at COI at 1 o'clock Tuesday 10th August 2010 (to progress Forms API) 1281431677000000 1281529736000000 419 task johnbywater johnbywater ckan-v1.2 closed fixed Meet Paul at COI at 2 o'clock Tuesday 10th August 2010 1281431794000000 1281529739000000 425 task johnbywater johnbywater ckan-v1.2 closed fixed Document how licenses can be configured in CKAN 1281436551000000 1281605524000000 445 task johnbywater johnbywater ckan-v1.2 closed fixed Add dumps to DGU SLA "Thinking about putting something like this: Dumps Interface (this is NOT going in the API, it is another interface of the service): - resources: Daily Dump Folder Daily Dump File - locations: /dump/hmg.ckan.net-YYYY-MM-DD.[json|csv].zip - data format: Dump Folder is a HTML document containing a table of links to Dump Files Dump File has either JSON or CSV format. - status codes (200, 404, 500) " 1282299380000000 1283250620000000 456 story johnbywater dread ckan-v1.2 closed duplicate Daily dump 1282299917000000 1282665858000000 468 task johnbywater johnbywater ckan-v1.2 closed fixed Default config file has commented out configuration variable 1282310659000000 1283250799000000 497 story johnbywater johnbywater closed duplicate "Respond to CSW ""GetRecords"" request" 1282427334000000 1294407718000000 532 defect johnbywater johnbywater ckan-v1.2 closed invalid Just a test - please ignore 1282906842000000 1282907197000000 534 defect johnbywater dread ckan-v1.2 closed fixed buildbot config - database machine moved "Configure buildbot to use postgres db which has been moved to eu5.okfn.org pudo said: Could you perhaps also comment on http://knowledgeforge.net/okfn/tasks/ticket/466 with a hint on how to update this properly? I only edited /home/buildslave/okfn/full/build/buildandsmoke/buildandsmoke.ini which was the only occurence of the DB credentials I could find there." 1283165568000000 1288002762000000 545 requirement johnbywater johnbywater ckan-v1.2 closed The system shall support creating packages via the Form API 1283339310000000 1283458648000000 546 story johnbywater johnbywater ckan-v1.2 closed Get the package create form from the API 1283339414000000 1286896814000000 547 story johnbywater johnbywater ckan-v1.2 closed Submit package create form response to the API 1283339487000000 1283458645000000 548 task johnbywater johnbywater ckan-v1.2 closed fixed Functional test for getting package create form from the API 1283339598000000 1283351141000000 549 task johnbywater johnbywater ckan-v1.2 closed fixed Method on API controller to return package create form 1283339748000000 1283353945000000 550 task johnbywater johnbywater ckan-v1.2 closed fixed Routing configuration for package create form API resource 1283339785000000 1283351840000000 551 task johnbywater johnbywater ckan-v1.2 closed fixed Documentation for getting package create form from API 1283339845000000 1283354302000000 552 task johnbywater johnbywater ckan-v1.2 closed fixed Method on API controller to accept valid package create form submission 1283340009000000 1283436028000000 553 task johnbywater johnbywater ckan-v1.2 closed fixed "Functional test for submitting valid ""package create form"" response to the API" 1283340203000000 1283433851000000 554 task johnbywater johnbywater ckan-v1.2 closed fixed "Functional test for submitting invalid ""package create form"" response to the API" 1283340226000000 1283436393000000 555 task johnbywater johnbywater ckan-v1.2 closed fixed Documentation for submitting package create form submission to API 1283340290000000 1283354313000000 556 task johnbywater johnbywater ckan-v1.2 closed fixed Method on API controller to accept invalid package create form submission 1283340448000000 1283436605000000 566 requirement johnbywater johnbywater ckan-v1.3 closed invalid The system shall support harvesting remote metadata 1284039619000000 1294232284000000 568 story johnbywater johnbywater ckan-v1.3 closed Pull metadata documents from given harvest source entity 1284040131000000 1288038207000000 570 story johnbywater johnbywater ckan-v1.3 closed duplicate Validate metadata document against UKLP schematron 1284040256000000 1294407974000000 571 story johnbywater johnbywater ckan-v1.3 closed fixed Save metadata document and associate with harvest source entity 1284040495000000 1288038218000000 572 story johnbywater johnbywater ckan-v1.3 closed Write CKAN package from metadata document "The attributes we need to read in are being defined here: http://okfnpad.org/uklii The design advice is to prepare, test, and maintain a dictionary of XPaths for each of the attributes. Work effort is to be directed to the maintainability of the XPath statements. We need to know which are needed for which documents, and to have a way of preventing cruft." 1284040784000000 1288038237000000 610 task johnbywater johnbywater ckan-v1.2 closed fixed Load local copy of metadata document 1284218592000000 1288041706000000 611 task johnbywater johnbywater ckan-v1.3 closed invalid Load local copy of XML schema for metadata document 1284218639000000 1294408239000000 612 task johnbywater johnbywater ckan-v1.3 closed duplicate Check given XML schema validates given metadata document 1284218750000000 1294408188000000 613 task johnbywater johnbywater closed Store result of schema validation check on metadata document object 1284218828000000 1286798466000000 614 task johnbywater johnbywater closed invalid Acquire local copy of XML schema for remote metadata documents 1284219077000000 1288038898000000 615 task johnbywater johnbywater closed invalid Acquire local implementation of UKLP schematron "We ""just"" need a schematron.validate(metadata) method. :-)" 1284219174000000 1288038926000000 616 task johnbywater johnbywater closed invalid Store result of schematron validation check on metadata document object 1284219246000000 1288038907000000 617 task johnbywater johnbywater ckan-v1.3 closed duplicate Check UKLP schematron validates given metadata document 1284219298000000 1294408164000000 621 task johnbywater johnbywater ckan-v1.3 closed fixed Metadata document links extracted from WAF response 1284220707000000 1288038326000000 622 task johnbywater johnbywater ckan-v1.2 closed fixed Metadata document identifiers extracted from CSW GetRecords responses 1284220740000000 1287510408000000 623 task johnbywater johnbywater ckan-v1.2 closed fixed CSW GetRecords request for all identifiers (with CSW authentication) 1284220777000000 1287507837000000 645 task johnbywater johnbywater ckan-v1.2 closed fixed Domain object and migration script to associate packages and harvester objects 1284227152000000 1287774090000000 665 requirement johnbywater johnbywater ckan-v1.3 closed duplicate The system shall support withdrawing a harvested dataset or service from publication "Discussion between John and Peter: > Given we can identify a document, does the disappearance of a document > from a registered source imply the disappearance of the metadata (such > that we delete packages once the documents disappear from the registered > source)? > I would expect a more explicit 'delete'. The UKLP Use Case Library describes this as ""withdraw a dataset or service from publication"" (part of UCD03 Maintain resources). " 1285588250000000 1297268097000000 675 task johnbywater johnbywater ckan-v1.3 closed fixed Draft specification of CSW harvesting behaviour with guide for publishing agents 1286214877000000 1288038316000000 688 task johnbywater johnbywater ckan-v1.2 closed Example GeoNetworks service for CSW development 1286786893000000 1286980827000000 689 task johnbywater johnbywater ckan-v1.3 closed fixed Updated package for updated metadata document 1286789134000000 1288038308000000 690 requirement johnbywater johnbywater ckan-v1.2 closed invalid The system shall support Gemini2 service records Wish to fold service records into package resources. Trouble is that service records don't necessarily refer to a data record, so should this be a new package? 1286822613000000 1288013718000000 692 requirement johnbywater johnbywater ckan-v1.3 closed invalid The system shall support presenting map thumbnail for bounding box. "To do this for the UKLP, the Ordnance Survey would need to add to their map service an operation to return image for a given bounding box, and COI would need to present the image on the search result page. Otherwise, it would be possible to use Google." 1286823049000000 1294247841000000 696 task johnbywater johnbywater ckan-v1.2 closed fixed Decoupled generation of package group choices from validation of package group selection 1287066070000000 1287392206000000 702 requirement johnbywater johnbywater ckan-v1.2 closed duplicate The system shall support changing package groups when editing a package 1287403778000000 1287403850000000 709 task johnbywater johnbywater ckan-v1.2 closed fixed Metadata document extracted from CSW GetRecordById response 1287432440000000 1287684969000000 710 task johnbywater johnbywater ckan-v1.2 closed fixed CSW GetRecordById request for given identifier 1287432675000000 1287507854000000 712 story johnbywater johnbywater ckan-v1.3 closed invalid "Model government data package with ""v0.4"" of the attributes" "Where said ""v0.4"" would be the result of converging four lists mentioned in requirement #711." 1287581039000000 1294408364000000 713 task johnbywater johnbywater ckan-v1.3 closed fixed Review four definitions of DGU package attributes 1287581158000000 1288260915000000 752 task johnbywater johnbywater ckan-v1.3 closed duplicate "Change package attribute names used by Gemini harvesting to DGU ""v.4""" 1288039205000000 1294408472000000 753 requirement johnbywater johnbywater ckan-v1.3 closed wontfix The system shall support filtered harvest of CSW sources 1288040290000000 1294247922000000 755 task johnbywater johnbywater ckan-v1.3 closed duplicate Add filter attribute to harvest source entity 1288040506000000 1294408632000000 756 task johnbywater johnbywater ckan-v1.3 closed duplicate Add filter field to harvest source form 1288040545000000 1294408642000000 758 task johnbywater johnbywater ckan-v1.3 closed duplicate Change API documentation to indicate harvest source entity has filter attribute 1288040643000000 1294409053000000 759 story johnbywater johnbywater ckan-v1.3 closed duplicate Construct and send filtered CSW GetRecords request 1288040753000000 1294408652000000 760 task johnbywater johnbywater ckan-v1.3 closed duplicate "Change ""CSW Get Records"" request class to accept and used given CSW filter" 1288040993000000 1294409111000000 768 task johnbywater johnbywater ckan-v1.3 closed duplicate Obtain example ArcGIS CSW server 1288178134000000 1294409308000000 769 task johnbywater johnbywater ckan-v1.3 closed duplicate Tests for harvesting metadata from ArcGIS CSW API 1288178179000000 1294409318000000 783 story johnbywater johnbywater ckan-v1.3 closed duplicate Delete harvested documents when remote metadata disappears from harvest source We need a condition for 'disappears'. Asked AW about this (prob. in July) but should chase for an answer. 1289210029000000 1294409399000000 785 task johnbywater johnbywater ckan-v1.3 closed fixed Review document from PP regarding CSW and WAF guidance Scope of CSW guidance document has been broadened to include WAF. 1289210338000000 1289482499000000 788 story johnbywater johnbywater ckan-v1.3 closed duplicate API user deletes harvest source Needs to delete all harving jobs and harvested documents, and probably to purge all packages (perhaps just delete?). 1289211196000000 1294410007000000 790 story johnbywater johnbywater ckan-v1.3 closed duplicate Submit harvest source form with valid CSW location 1289212479000000 1294409709000000 791 story johnbywater johnbywater ckan-v1.3 closed duplicate Submit harvest source form with invalid CSW location 1289212751000000 1294409723000000 792 task johnbywater johnbywater ckan-v1.3 closed fixed Meeting to review pre-alpha testing report from TM 1289212851000000 1289482513000000 793 task johnbywater johnbywater ckan-v1.3 closed invalid Fix up changes in changeset aa9aa32e00a9 1289212907000000 1294409836000000 799 requirement johnbywater johnbywater closed duplicate WAF harvesting shall be optimised in respect of reharvesting only records that have changed 1289483264000000 1294232675000000 800 story johnbywater johnbywater ckan-v1.3 closed duplicate Get WAF records modified since given time 1289483343000000 1294245610000000 802 story johnbywater johnbywater closed duplicate Save last harvested time on source 1289484226000000 1294233294000000 804 task johnbywater johnbywater ckan-v1.3 closed fixed Rework analysis for publisher/provider in UKLP We need an incremental plan that connects with current state of DGU and reflects what is actually required by UKLP. 1289816054000000 1294233156000000 872 enhancement johnbywater dread closed fixed ONS loader assigns packages to same package even when dept name changes Solutions: ResourceSeriesLoader allows synonyms for values. 1292424112000000 1292957110000000 250 enhancement icmurray dread ckan-v1.9 assigned RDF link in Atom feed Add link to RDF representation of a package in our Atom feed. 1266507695000000 1340631430000000 1453 enhancement icmurray icmurray ckan-sprint-2011-12-05 closed fixed Flexible tag names "Allowing more flexible tag names: - allowing spaces - allow capital letters (search is case in-sensitive) - allow all punctuation except for commas and double-quotes '""' - allow unicode - commas delimit tag names in the package create/edit form Effects: - package creation/edit form. - /tag/{tagname} uri - search action - api controller (search/package-create/edit) - web controller (search/package-create/edit) - search api documentation - autocomplete for tag names" 1320771850000000 1329395697000000 1523 enhancement icmurray icmurray closed invalid [super] "Form refactor. New create/edit package form wizard for DGU. See attached spec." 1323172661000000 1323172904000000 1525 enhancement icmurray icmurray ckan-v1.7 closed fixed [super] DGU package form refactor "Form refactor. New create/edit package form wizard for DGU. Etherpad: http://ckan.okfnpad.org/dgu-package-form Tasks: - #1526 : Simple one-page form. - #1527 : Tab-ify the form using JS. No validation between steps. - #1541 : Setup server for the DGU form-refactor. - #1537 : Package create form wizard - #1538 : ~~Store partially-filled in package form data as a draft.~~ - #1539 : ~~Package forms auto-save~~ How the rest of the work is carried out is up for discussion, as it depends on the approach taken. Whether to continue with validation using AJAX queries, or whether to break the form down into multi pages. [https://docs.google.com/spreadsheet/ccc?key=0Av2RfDDpj67zdGpSdFlKVjNrQmFXV3lHbGM3ZFlDdnc&hl=en_US#gid=1 Google doc outlining design(s)] " 1323172839000000 1337159836000000 1526 enhancement icmurray icmurray ckan-sprint-2012-03-05 closed fixed [super] Update and test existing DGU package form "Re-create behaviour of old form without using form-alchemy. And unit test. * [X] write high-level functional tests for the form. Creation / edition / validation. Original estimate: 6 days (3 days x 2) Time spent: 3 days Time remaining: 0 days * [X] write the html Original estimate: 2 days (1 day x 2) Time spent: 1.3 days Time remaining: 0 days * [X] modify the existing validation schema Original estimate: 2 days (1 day x 2) Time spent: 1.3 days Time remaining: 1 days * [X] split resources into types: individual, time-series, and additional. Original estimate: 2 days Time spent: 2.5 days Time remaining: 0 days * [X] contact information is derived from Publisher, but can be altered for each dataset. [#1617] Original estimate: 4 days Time spent: 0 days Time remaining: 4 days (Waiting on publisher integration) * [X] foi contact information is derived from user, but can be altered for each dataset. [#1617] Original estimate: 1 days Time spent: 0 days Time remaining: 1 days (Waiting on publisher integration) * [X] provide stubs for the theme and sub-themes [#1618] Original estimate: 1 days Time spent: 0 days Time remaining: 0 days * [X] provide stubs for the publisher hierarchy [#1619] Original estimate: 2 days Time spent: 0.5 days Time remaining: 1.5 days Note - the groups refactor is essentially ready to be used. And this would be a good test case for it. * [X] don't allow package-type selection when editing a package Can't change a dataset from containing time-series resources to one containing individual resources or visa-versa. (#1620) Original estimate: 0.5 days Time spent: 0 days Time remaining: 0 days " 1323173313000000 1330942383000000 1527 enhancement icmurray icmurray ckan-sprint-2012-01-23 closed fixed Break DGU package edit form into sections " - use javascript to selectively hide/show parts of the form - there's no validation between steps at this stage. It's still a ""big save button at the end""." 1323174829000000 1327589456000000 1537 enhancement icmurray icmurray ckan-v1.7 closed fixed Package create form wizard "Create the form wizard for the package-new form. Each section of the form will be a separate page as this was decided to be simpler than the alternative of making AJAX calls for validation at each stage. (*) - separate pages for each section of the form - validation carried out at each stage against the whole schema. Each section/page declares a list of schema keys that need to validate for that section to validate, and thus move onto the next section. - no draft saving to be performed in this ticket. (*) - although the javascript alternative will probably provide better UX (each step would require a page-load in the wizard approach), it was decided that: - with the javascript approach it would be harder to test the workflow. - with the javascript approach there would be additional work displaying validation correctly. Although not that complicated, it was felt to add another point of failure. - the multi-page wizard is quicker and easier to implement, and if it provided poor UX, then the javascript approach would be used instead. - the multi-page wizard wouldn't preclude a javascript-tabbing create-form for other cases (where the wizard workflow wasn't such a good match, eg on the hedatahub.org) - the multi-page wizard wouldn't preclude a javascript-tabbing edit-form." 1323358451000000 1337159772000000 1538 enhancement icmurray icmurray ckan-v1.7 closed wontfix Store partially-filled in package form data as a draft. "Allow a user to save a partially-complete and probably invalid package-create form in order to come back to it later. We decided on blob storage over a state field on the package: - prevents a history of the drafts being stored in the revision history. This is a particular problem if we start auto-saving, say every 20s. - the blob can store arbitrary extra data, such as how far through the wizard we are." 1323359221000000 1337159799000000 1539 enhancement icmurray icmurray ckan-v1.7 closed wontfix Package forms auto-save "Using the saved-draft feature, we enable auto-save for the package-new and package-edit forms. An AJAX call is made every N seconds, and the auto-saved blob is updated. note - we don't want to overwrite a previously save draft, but we will want to overwrite the last autosave." 1323359385000000 1337159806000000 1541 task icmurray icmurray ckan-sprint-2012-01-23 closed fixed Setup server for the DGU form-refactor. To enable us to show DGU work in progress, for feedback. 1323359484000000 1327311698000000 1591 enhancement icmurray dread ckan-sprint-2012-01-23 closed fixed Upgrade CKAN 1.5 instances "CKAN 1.5 installations need to be upgrade to 1.5.1. Working methodically through the CKANs on http://datacatalogs.org/group/ckan : At 1.5: * ckan-brazil http://br.ckan.net/ s057 - DONE * ckan_ireland http://ie.ckan.net/ s057 - DONE * cz-ckan-net http://cz.ckan.net/ s057 - DONE * datakilder-no http://no.ckan.net/ s057 - DONE * data_gov_uk http://catalogue.data.gov.uk/ * datacatalogs-org http://datacatalogs.org/ s054 - DONE Other versions: * berlin-open-data http://daten.berlin.de/ CKAN hidden * ckan-italia http://it.ckan.net/ 1.3.3b * ckan-poland http://pl.ckan.net/ Down * data-norge-no http://data.norge.no/ CKAN hidden * datadotgc-ca http://datadotgc.ca/ http://ca.ckan.net/ 1.4.2a * datagm http://www.datagm.org.uk/ 1.3.3 * datagov-ru http://datagov.ru/ CKAN hidden * datospublicos-org http://datospublicos.org/ 1.4.2 * iati-registry http://iatiregistry.org/ 1.5.1c * katalog-offene-daten-oesterreich http://offener.datenkatalog.at/ 1.3.3b * nosdonnees_fr http://www.nosdonnees.fr/ 1.3.1a * opengov-fi http://opengov.fi/ CKAN hidden * opengov_es http://opengov.es/ 1.2 * publicdata-eu http://publicdata.eu/ 1.4.2a * the-data-hub http://thedatahub.org/ 1.5.1 * helsinki_finland http://hri.fi/ CKAN hidden Now deleted from datacatalogs.org: * ckan-belgium http://be.ckan.net/ Migrated * si-ckan-net http://si.ckan.net/ migrated * gr-ckan-net http://gr.ckan.net/ Migrated * hu-ckan-net http://hu.ckan.net/ Migrated * ckan-lithuania http://lt.ckan.net/ Migrated " 1324487658000000 1328789470000000 1593 enhancement icmurray amercader ckan-sprint-2012-04-16 closed fixed [super] Create feeds from search results "Recent changes (see #191 and #1498) have made really easy to get search results ordered chronologically, and creating RSS or Atom feeds from them is relatively easy. Feeds are extremely popular and there are several tools for consuming them, so it would be a great way to allow users to follow datasets related with their topics of interest. Apart from the general feed with changes on the whole instance, other different ""pre-set"" feed endpoints could be implemented. The most obvious choices for custom feeds could be groups and tags: {{{ http://<ckan_server>/feed/group/{id}.{format:rss|atom} http://<ckan_server>/feed/tag/{id}.{format:rss|atom} }}} These could be shown on the group/tag page, both on the <head> section, so browsers can autodiscover them, and on the UI, with a message like ""Subscribe to this group/tag"". Another powerful option is to have a custom feed builder that accepts the same parameters as the search page, so users can subscribe to whatever query they are interested on {{{ http://<ckan_server>/feed/custom.{format:rss|atom}?res_format=api%2Fsparql http://<ckan_server>/feed/custom.{format:rss|atom}?q=tags:animal* }}} On this case a message ""Subscribe to these search results"" would appear. Note that a lot of work on this front needs to be done for the IATI registry project (see #1590) Other tickets related: * #1592: metadata_modified and metadata_created are not included in the search results, so an extra query for each package is needed right now. " 1324489115000000 1334566668000000 1607 enhancement icmurray dread ckan-v1.7 closed fixed [super] Data.gov.uk Maintenance Refactor and UKLP Development Support "A ticket to collect all of the changes needed for CKAN to become the 'data' tab on DGU. Design doc: https://docs.google.com/document/d/19h9bA1G4cQkv031m8jNCu6FEB3a8qpXUmdPAguM-Ofs/edit?hl=en_GB The design doc is the authoritative source of tasks. This ticket acts as a synopsis. Current sprint (2012-02-20): * 7a. ~~Public Publisher Dashboard (including QA Work and notifications) MUST PHASE 1~~ * 6. ~~Publisher Registration Improvements MUST PHASE 1~~ * 3. ~~Themes/Taxonomy as well as tags WONT PHASE 2~~ * 32. ~~Browse by Tags PHASE 1 MUST~~ * 12. ~~Edit/Delete for Harvested Datasets MUST URGENT PHASE 1~~ * 13. ~~Provider labelling MUST PHASE 1 [UKLP #14 MUST]~~ * 17. ~~Filter “UK Location Records” MUST PHASE 1 [UKLP #21 SHOULD]~~ * 22. ~~Mixed Licenses MUST PHASE 2~~ Plus, brought forward from last sprint: * ~~Publisher hierarchy support~~ * ~~Improved dataset creation tools (form) - #1525~~ * ~~Edit/delete for harvested datasets~~ Overview of tasks: see the design doc." 1325503348000000 1337159969000000 1617 enhancement icmurray icmurray ckan-v1.7 closed fixed Update and test existing DGU package form : publisher / foi information "[Child of #1526] Contact/FOI information is derived from Publisher/User, but can be altered for each dataset. Original estimate: 4 days Time spent: 0 days Time remaining: 4 days" 1326103384000000 1332151332000000 1618 enhancement icmurray icmurray ckan-v1.7 closed fixed Update and test existing DGU package form : provide stubs for the theme and sub-themes "[Child of #1526] Provide the interface for the themes and subthemes hierarchy." 1326103557000000 1332151341000000 1619 enhancement icmurray icmurray ckan-v1.7 closed fixed Update and test existing DGU package form : provide stubs for the publisher hierarchy "[Child of #1526] Create the interface used to retrieve publisher and authz information from the publisher hierarchy." 1326103672000000 1332151351000000 1620 enhancement icmurray icmurray ckan-sprint-2012-02-06 closed fixed Update and test existing DGU package form : don't allow package-type selection when editing a package "[Child of #1526] Can't change a dataset from containing time-series resources to one containing individual resources or visa-versa." 1326103837000000 1327589576000000 1645 enhancement icmurray icmurray ckan-sprint-2012-01-23 closed fixed Update and test existing DGU package form : Apply a simple theme "Theme the DGU form. Doesn't need to be an exact replica of DGU, but just enough to show it's possible." 1326394622000000 1327311679000000 1711 enhancement icmurray icmurray ckan-sprint-2012-03-19 closed fixed Resource validation page " * On the resources tab, there's a ""Check Resources"" button which, when clicked makes an ajax request with the list of URLs entered by the user. * The server checka each link for errors and header information about the linked resource. (Using ckanext/archiver/tasks.py:link_checker()). * The server returns a list of dicts (json), containing information about the linked resource, and the client uses that to: - populate the format field of each resource The (guessed) 'file_extension' populates the '__format' field. If it's 'htm' or 'html', then we assume it's a listing page, and so don't populate the format field with 'htm' or 'html'. - provide feedback if a URL appears to be invalid If the URL doesn't appear to be a URL at all, or returns a HTTP error, or times-out, then URL field is highlighted in red to indicate it's a bad URL. A tooltip shows the error message to the user. - [Optional] provide feedback if a URL appears to point to ""Additional Information"" - ie the Resource should be entered under ""Additional Resources"", rather than ""Timeseries"" or ""Individual"" datasets. Analysis and further description on etherpad: http://ckan.okfnpad.org/dgu-package-form? [Section I]" 1327589759000000 1332151557000000 1712 enhancement icmurray icmurray ckan-sprint-2012-02-06 closed fixed DGU /data page "CKAN provides the /data page page of data.gov.uk Breakdown of tasks: * [x] Analysis / refinement of spec. * [x] Log-in / register as publisher (Waiting on publisher form) * [x] Population of ""browse by publisher"" list groups ordered by most datasets (Waiting on publisher integration) * [ ] ~~Browse by nation~~ * [ ] ~~Featured datasets~~ Now a possible integration point with drupal * [X] Tag cloud * [X] Developers section" 1327590527000000 1329733846000000 1713 enhancement icmurray icmurray ckan-sprint-2012-02-06 closed fixed DGU dataset search page "Search results page of DGU. Breakdown: [X] ensure faceting by group (publisher) works [X] allow faceting by UKLP dataset type [X] allow faceting by INSPIRE" 1327590700000000 1327932401000000 1714 enhancement icmurray icmurray ckan-sprint-2012-02-06 closed fixed DGU dataset view page "Dataset read page for DGU Breakdown: - [X] Fix missing title - [X] Links to the social media stuff - ""Share your app"" - ""Share your idea"" - ""Request new data"" - [ ] ~~Presentation of additional information should be broken into sections~~ Content is there. Don't do anything until theming/design work is undertaken. - [ ] ~~""More like this"": links to similar datasets.~~ Dropping - [N] ~~Stars~~ (I think these are being removed) - [ ] ~~Comments~~ Possible integration point with Drupal. Needs it own ticket. - [X] Give feedback to department - [X] Tidy up the QA stars" 1327591090000000 1329734018000000 1737 enhancement icmurray rgrp ckan-v1.8 closed fixed Expose solr-based search API "Super ticket: #1745 * Convert /api/rest/dataset to be search query (i.e. take arguments in ?....) * Directly expose solr though may want to override limit. See https://github.com/okfn/openspending/blob/master/openspending/ui/controllers/api.py#L48 Required for some improvements to UX (such as autocomplete and better search)." 1328014626000000 1340112732000000 1751 enhancement icmurray icmurray ckan-sprint-2012-02-20 closed fixed DGU dataset form: collection of updates from feedback "A collection of improvements to the dataset creation/edition form (feedback form DGU). - [x] validation error formatting - [x] geograohic coverage: add local authority - [x] resource format field - [x] resource format auto-complete - [x] renamed data tab -> files tab - [x] integrate Adris'a INSPIRE changeset, and migration scripts as part of build - [x] remove ""discontinued"" from the update frequency - [x] disable the disabling of save - [x] Remove ability to edit url on the edit-form (and remove ""url not available"")" 1328526612000000 1329733458000000 1752 enhancement icmurray icmurray ckan-sprint-2012-02-20 closed fixed DGU: collection of updates from feedback " - [x] hide black stars on the data-view page - [x] Edit on view form (if you have the right permission) - [x] RES_FORMAT ~> Resource Format - [x] Map Based Search -> UK Location Map Based Search - [x] Note at the top right expalining that these are seach filters (if they are) -> this requires ""add a dataset"" and ""other access"" to be moved to a different place (just some whitespace is fine) - [x] Display publisher and provider (UKLP records only). - [x] analysis of filter by OGL / non-OGL - [x] provide /dump on the build server" 1328526750000000 1329733515000000 1768 enhancement icmurray icmurray ckan-v1.7 closed fixed DGU: 7a. Public Publisher Dashboard (including QA Work and notifications) MUST PHASE 1 1328539740000000 1337159873000000 1769 enhancement icmurray icmurray ckan-sprint-2012-02-06 closed fixed 6. Publisher Registration Improvements MUST PHASE 1 1328539789000000 1329737597000000 1770 enhancement icmurray icmurray ckan-sprint-2012-02-06 closed wontfix 3. Themes/Taxonomy as well as tags WONT PHASE 2 1328539834000000 1329733935000000 1771 enhancement icmurray icmurray ckan-sprint-2012-02-20 closed fixed 32. Browse by Tags PHASE 1 MUST 1328539862000000 1329733648000000 1772 enhancement icmurray icmurray ckan-sprint-2012-02-06 closed fixed 13. Provider labelling MUST PHASE 1 [UKLP #14 MUST] 1328539902000000 1329733962000000 1773 enhancement icmurray icmurray ckan-sprint-2012-02-20 closed fixed 17. Filter “UK Location Records” MUST PHASE 1 [UKLP #21 SHOULD] 1328540130000000 1329733534000000 1774 enhancement icmurray icmurray ckan-sprint-2012-02-20 closed fixed 22. Mixed Licenses MUST PHASE 2 1328540153000000 1329733550000000 2277 refactor icmurray icmurray ckan-backlog new Use the new atom feeds in IATI Atom feeds have been implemented in core in #1593. The IATI-specific implementation can now be removed when IATI move to CKAN >= 1.6.1 1333386628000000 1333386628000000 2285 enhancement icmurray icmurray ckan-sprint-2012-04-30 closed fixed Data Previewer / Viewer v3 : Embedding! - /resource/../embed "Allow a user to embed the data viewer in their webpage. * [x] Embedding widget [1d] * [x] The embed page [1-2d] * [x] Documentation and Announce [0.5d] Depends upon: * [x] Recline improvements [?d] All the above, plus user stories are fleshed out in [1] [1] http://ckan.okfnpad.org/feature-2283-data-viewer-v3?" 1334230810000000 1335440451000000 2295 enhancement icmurray icmurray ckan-sprint-2012-04-16 closed fixed Migrate CKAN packaging and apt.ckan.org from dgu-buildbot " * Create Jenkins task for packaging CKAN * ... and publishing to s3://apt.ckan.org" 1334566976000000 1334566986000000 2296 enhancement icmurray icmurray ckan-sprint-2012-04-16 closed fixed Initial analysis of moderated edits What needs doing, and how long will it take? 1334567077000000 1334567150000000 2297 enhancement icmurray icmurray ckan-sprint-2012-04-16 closed fixed Initial analysis of follow support 1334567223000000 1334569632000000 2298 enhancement icmurray icmurray ckan-v1.9 new Add sort-by controls to the search results page "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" 1334569162000000 1340635947000000 2307 enhancement icmurray icmurray ckan-sprint-2012-04-30 closed fixed Merge 1.6.1 into master There are a number of features developed against 1.6.1 that need to be merged into master. 1334591402000000 1335440476000000 2308 enhancement icmurray icmurray ckan-sprint-2012-04-30 closed fixed Merge facet html snippets in the multi-lingual branch Seanh and icmurray both touched on the html snippets in facets.html. So there's a merge issue. icmurray to merge changes in the multi-lingual branch prior to merging into master. 1334591529000000 1335440505000000 2310 enhancement icmurray icmurray ckan-backlog new Refactor the search-query construction in feeds.py "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." 1334592091000000 1337159386000000 2313 enhancement icmurray icmurray ckan-v1.8 closed fixed Deprecate old facet data structures and related functions. "In branch feature-1821-multilingual-extension, a new faceting datastructure was introduced. This makes the old one and related functions obsolete. These have been marked as deprecated for the 1.7 release, and should be removed for the 1.8 release. * helpers.py:facet_items() * facets.html:facet_sidebar() * uses of c.facets (rather than c.new_facets) " 1334677916000000 1343124732000000 2314 defect icmurray seanh ckan-sprint-2012-05-15 closed fixed parse_rfc_2822 tests failing in some timezones "These two tests: ckan.tests.lib.test_helpers.TestHelpers.test_parse_rfc_2822_gmt_case ckan.tests.lib.test_helpers.TestHelpers.test_parse_rfc_2822_with_offset have been failing in certain timezones. In the UK they pass, if you're in Germany they'll fail. The function being tested uses datetime.datetime.fromtimestamp() which uses the local time, but the tests compare the results against hardcoded strings, so the tests cannot work in different timezones." 1334768832000000 1337073270000000 2330 enhancement icmurray icmurray ckan-sprint-2012-05-15 closed fixed Make api read-actions GETable Whitelist any GETable api actions, and optionally construct the query from url params rather than body. 1335460585000000 1337073314000000 2347 enhancement icmurray ross ckan-v1.8 closed fixed Related stuff dashboard and changes " Some additions to the related stuff functionality to make it more useful post the 1.7 release. [x] Edit item (after checking auth) [x] My related things on my user page [x] Show user created related things on the users' page with links direct to the related page of that dataset. {0.5d} [x] Related stuff usage counts { 1d } Record the number of times the link for a related item is clicked. This is likely to mean that the link fires to call CKAN and then redirects to the actual URL. [x] Un-attached related items {0.25d} Allow related items to be created without being attached to datasets. This may mean that the dataset field is optional in the API. [ ] Dashboard for related A dashboard for related items, site-wide (not package specific) and orderable by date, views, {rating}, popularity of the dataset. Would be useful (possibly) for site-admin to mark one or more as 'featured' [x] Dashboard + Controller (Related) {1d} [x] Ordering at logic layer (date, views, rating, popularity of package, featured) {1d} [x] date [x] views [x] featured [x] 'Featured' related item with mechanism to fetch it. {0.5d} [ ] UI within dashboard for sysadmins to check/uncheck feature status {0.5d} [x] Changing auth for related. Currently auth is based on deletion being possible by dataset owner and the related owner but it may be that a lot of the auth for related items should be configured to have more restrictive auth. [x] Implement auth changes for publisher auth profile. { 0.5d } [x] General issues [x] Serverside validation of URLs [x] Activity updates [x] Make optional [x] Related item only includes App, Idea, Visualization but not API | Post | Paper | News Article options as in original ticket #2204 [ ] UI Changes [ ] General tidy up, fix form etc (icon for menu bar) [ ] Highlight featured items py:if=""related.featured"" [ ] Show either view count or popularity ${ related.view_count } [ ] A user's related items should be on their home page [ ] Related item plus sign is very poorly aligned within box [ ] Add related items should be in drop down like for resources (?) to make it easy to add items [ ] Hover should show a title that gives some information about what related are (not at all clear) ""Apps, Ideas, Visualization and other material related to this dataset"" [x] Related is a pretty terrible name in the UI - much better to have it called Apps, Ideas etc (perhaps title tag could even give more details e.g. ""Apps, Ideas, Visualization and other material related to this dataset"") -- btw i thought this was in #2332 but realize it wasn't (apologies for that!) - Went with Apps & Ideas (for now) [x] Documentation, documentation, documentation - AFAICT I can't see anything in v1.7 or master docs. I imagine this would be a short section like http://docs.ckan.org/en/ckan-1.7/commenting.html (and probably coming right after that in the ToC) which says * What it does * How to enable (and perhaps includes a nice-screenshot!) * How to customize (e.g. can one customize the list of options of things one can create (e.g. can I set it to just be app and idea or ...) * Also liase with Mark W re a blog post about this from the user perspective (a screenshot walkthrough ...) [ ] Clearly mark the old extension as deprecated from v1.7 forward: https://github.com/okfn/ckanext-apps (I just met someone last week who was working on integrating this and had no idea it was replaced by something better in v1.7)" 1335879539000000 1343226149000000 2350 enhancement icmurray icmurray ckan-v1.9 new Hooks in package controller for validating form data "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" 1335881761000000 1340635966000000 2351 enhancement icmurray icmurray ckan-ecportal closed fixed Install EC Portal on CentOS "Install and document (step-by-step) CKAN (and dependencies, and extensions) onto VM on s031.okserver.org which has CentOS 6.2 installed. Paying particular attention to the fact that we won't have root access on the staging nor production servers, and so a) anything that requires root access must be documented carefully; and b) we want to be able to perform maintenance without being root. == Maintenance == We want to have ''non-root'' access to: - CKAN logs; (relevant) apache logs; qa process' logs; rdf cron logs - restarting CKAN - restarting qa processes - changing/disabling rdf cronjob - our database (through sql) - restarting solr == CKAN and Dependencies == - CKAN installed from source - Required plugins: synchronous_search ecportal ecportal_form organizations multilingual_dataset multilingual_group multilingual_tag qa == Extra configuration == - uploads - analytics (toby) - qa - rdf cron - caching - datastore == Things to remember == - Use ckanext/multilingual/solr/schema.xml and stopword files - Use nginx as proxy. " 1335883455000000 1340615641000000 2383 defect icmurray icmurray ckan-sprint-2012-05-29 closed fixed Date on add/edit resource breaks if offset is specified 1337080275000000 1338197024000000 2392 enhancement icmurray icmurray ckan-sprint-2012-05-29 closed fixed Add language field to dataset "An extra field on datasets called ""metadata_language"". The language that the meta-data is in. Drop-down list needs to be translatable. Default value is ""English""." 1337159501000000 1337270483000000 2393 enhancement icmurray icmurray ckan-sprint-2012-05-29 closed fixed Map licenses with countryCode to license name without countryCode Map licenses: given http://creativecommons.org/licenses/by/2.5/{countrycode}/ as a license value through the API, convert it to http://www.opendefinition.org/licenses/cc-by . Should also work if given http://www.opendefinition.org/licenses/cc-by . NOTE: the API may send through a list of licenses; in this situation, take the head of the list. 1337159564000000 1337270463000000 2405 defect icmurray rgrp ckan-v1.9 assigned Improvements to data viewer embed " * Decent powered by icon for the Embed for the DataHub? (make this text customizable and allow html ...) * Current icon and text looks really bad * Embed link uses uuid rather than dataset name (this goes to perma-url question ...) * Data viewer embed url includes all the resource info (not needed -- just url and backend info ...) * Embed extension urls do not respect original domain but instead use site_url (I'm guessing). E.g. datahub.io domain ends up with links to embed on thedatahub.org " 1337583565000000 1340635981000000 2437 task icmurray icmurray ckan-v1.8 closed fixed Add coding standards to CKAN docs "* [ ] Write up python coding standards as discussed at dev-meetup into CKAN docs. (Mostly written-up as part of dev-meetup notes.) * [ ] Collate frontend coding standards (http://aron.github.com/ckan-style/styleguide/) into same doc(s). " 1338196895000000 1343124799000000 2438 enhancement icmurray icmurray ckan-v1.8 closed fixed resource_search action not accessible via GET request This action is not currently usable via a GET request as it relies upon a nested dict of fields. 1338197305000000 1341406005000000 2439 defect icmurray icmurray ckan-v1.8 closed fixed tag_search and tag_autocomplete not fully available via GET request `tag_search` and `tag_autocomplete`: The `fields` argument is not available when accessing this action with a GET request. 1338197549000000 1341295142000000 2485 defect icmurray nils.toedtmann ckan-v1.9 new Encourage leak containment by limiting the number of requests a CKAN process serves "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. " 1338551229000000 1340636028000000 2550 enhancement icmurray ross datahub-july assigned User types "== Requirements == In the data hub plugin we require the ability to differentiate users between those that have paid for a service, and those that haven't. The distinction isn't boolean as there may be levels of service for paid users, so it may be that we need a 'type' of user where there are various grades of 'paid' which are likely to be strings (specific to the data hub). == Required interface == Once changes have been made to the user schema, for a given user we want to be able to: * determine if they have a paid or a free account, and * get a string name of the type of paid account. Care should be taken to ensure that the 'paid' status of the user cannot be set through the API and only by the datahub plugin. == User Stories == User stories related to the management, setting and changing of a user's payment level, as well as historical information on payments should be done as part of the work that includes actually allowing purchases. For now it is adequate that we can manually control these things through paster commands. Payments types should be linear as I don't believe for this type of service a pick-and-mix modular model would work well. Organizations will inherit the payment level of their owner, so currently there is no requirement for it to affect organizations at all. * As a sysadmin I would like to be able to use a paster command to manually set a user's payment level, or remove it entirely. * As a sysadmin I would like to be able to run a paster command to view a list of users who have a payment plan, grouped by the plan that they have. * As a sysadmin I would like to be able to use the API to change the payment status of a specific user through user_create and user_update. This shouldn't be available to anybody else. * As a user, and only if I have one, I'd like to see my current payment level on my user profile page. == Tasks == [x] Tests [x] Plugin based migration [x] Code [x] Model [x] API [x] Documentation == Estimates == " 1340017590000000 1346669497000000 2603 refactor icmurray icmurray ckan-v1.9 new Remove deprecated 'fields' parameter from resource_search The fields parameter of resource_search was deprecated when fixing #2438. It can be removed in release 1.9, and the action tidied up as a result. 1340730601000000 1340730601000000 2621 refactor icmurray icmurray ckan-v1.9 new Remove the deprecated 'fields' parameter from tag_search and tag_autocomplete "This was deprecated in 1.8 as it wasn't accessible via GET requests due to being a dict. See #2439 In a future release of CKAN (probably 1.9) it can be removed. Internal uses of it were removed in #2439, but there are tests that still use it." 1340900569000000 1340900569000000 2651 enhancement icmurray ross ckan-v1.8 closed fixed Check support for TSV which doesn't appear to work well. "TSV support doesn't seem to work very well, may be the mimetype ( text/tab-separated-values ) See http://thedatahub.org/dataset/wikipedia-e3-timestamp-position-modification/resource/d883ab44-07f4-4992-800a-3e4bf5d53a96 " 1341923318000000 1343209784000000 2672 enhancement icmurray icmurray ckan-v1.8 closed fixed Session.is_modified should use passive=True "According to sqlalchemy docs [1], when calling Session.is_modified(), the `passive` argument needs to be passed in as True. [1] http://docs.sqlalchemy.org/en/rel_0_7/orm/session.html?highlight=is_modified#sqlalchemy.orm.session.Session.is_modified" 1342185523000000 1343124666000000 2679 enhancement icmurray icmurray ckan-v1.9 new Change default behaviour of TemplateController.view to 404. "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." 1342436133000000 1342436133000000 2709 enhancement icmurray markw new Atom feeds are undocumented There doesn't seem to be any documentation yet for Atom feeds. 1342624310000000 1342626212000000 2784 defect icmurray icmurray new model dictize sensitive data The model dictize layer doesn't consistently remove sensitive data from the dictized models. It should use the current context to decide whether to include sensitive data or not. 1343814685000000 1343814685000000 2859 defect icmurray icmurray ckan-v1.8 new Fix the build "The requires files have been removed. These were required by buildkit. We've lost the information regarding which packages were already in ubuntu repos, which conflicted and which were missing. But perhaps we can just package everything up." 1345109217000000 1345109217000000 2878 enhancement icmurray ross ckan 2.0 closed wontfix Roles and Permissions for Organisations "As part of merging Organisations into core, it is necessary that we clarify the capacity field with which the users/datasets are added as members to the group 'subclass'. Rather than the capacity being an opaque string that implies auth but doesn't clearly specify it, we will use role names where roles are defined in the database - with a clearly defined set of standard roles. The Role table is expected to have simply a string name/representation and acts as a container for permissions. Each permission is a string of the form object.action (such as package.add, group.delete) of which several are expected to be associated with a role. This means the permission table will contain a string and a reference to the role. This work will require UI changes to the screens allowing users to be added to a group/organisation so that the list of available roles is available to add those users. [x] Model for Role and Permission [ ] Logic layer changes for managing roles/permissions etc. [ ] Determine default roles, perhaps just admin/editor/viewer [ ] Fix the auth layer to use the permissions/roles - may be better implemented as another ticket. " 1345466266000000 1350561906000000 2880 enhancement icmurray ross ckan 2.0 closed wontfix Datasets (Package) should have owners "Each dataset should have an explicit owner that is an organisation. This is the organisation that owns the dataset* and will be used for specifying who can move a dataset out of the default organisation. This should probably be a foreign key link from dataset to organisation (or rather group). * Currently this won't necessarily be the organisation that the dataset is a member of, but it is likely that this will be the case initially (at least until someone moves it to another organisation)." 1345466535000000 1350561968000000 2959 defect icmurray icmurray ckan 2.0 new Changing a Group's name through the action api disassociates it from its datasets in the index "Repro: - Create a new Group, named ""test-group"". - Add a dataset to it. - Verify the dataset belongs to the group by visiting the Group's read-page - Update the Group through the action api (group_update), using the uid in the ""id"" field, and a new name in the ""name"" field. - Visit the group's read-page. The list of datasets will be empty. This was an issue when editing a Group through the web interface, which was fixed in [1]. However it only fixes the issue in the group controller. [1] https://github.com/okfn/ckan/commit/dbe25d8b8d7fabfc40c5d794a920b91cec349335" 1349363935000000 1349363935000000 62 enhancement dread rgrp v0.10 closed fixed Change tags to contain any character (other than space) Requires us to url encode the tag names when displaying them ... 1240585095000000 1250181376000000 74 enhancement dread rgrp v0.10 closed fixed Add Is It Open links to package pages "On each package page in the openness field if the package is not open provide a link to is it open create enquiry page. Details: * may want to add to the url a query parameter indicating which package this relates to e.g. ?ckan-package=... * http://isitopen.ckan.net/enquiry/create/?ckan-package=... * do we provide link even if package is open (e.g. so that people can make enquiries about e.g. adding open data/content buttons ...) Cost: 0.5h" 1247828218000000 1250182938000000 75 enhancement dread rgrp closed duplicate "Record and display package ""usage"" information" " * Number of package page visits on ckan (can we get this straight from google analytics) * Number of times url or download url is used - now ticket:937 (Record download stats for resoures) How do we do this? * Google analytics will miss a lot of this usage (and how do we get that data out anyway) * Could use javascript but again misses usage. * One option is to redirect link but that is kind of nasty (but may be only option ...) " 1247828785000000 1296341223000000 76 enhancement dread rgrp v0.10 closed fixed Convert to use formalchemy for all forms "Current form stuff is not very good (uses formencode). Switch to formalchemy would improve this, especially on validation. As an extra we could utilize the formalchemy pylons admin interface (pretty much for free). Cost: 12h == Details == 1. Replace htmlfill and formencode extract in controllers/templates with formalchemy 1. Crude and simple 2. Suppress unwanted fields (revision, state, all revisions) and sort out ordering to be similar to before. 3. Sort out tag field with a special renderer 2. Validation - testing definitely required. 3. Fix up description and pretty css etc" 1247829041000000 1251301765000000 77 enhancement dread rgrp v0.11 closed fixed Rate packages "= As a User or Visitor = I wish to rate a package in some way. On the package view, below Openness, there is a 'Rating' heading with the star rating which is selectable. Rating out of 5. One user or IP, one vote. package_rating table: package | user | rating annakarenina | joe.bloggs.openid.com | 4 annakarenina | 154.2.5.47 | 1" 1247829193000000 1255176732000000 79 enhancement dread rgrp v0.10 closed fixed Improvements to package search "Several things: * Default package search (used e.g. on front page) should deal well with multiple items: ""abc xyz"" means search for both abc and xyz (as separate searches) * Should automatically display a list of matching tags in a line at top with number of associated packages * have an option to only search for fully open material (or openly licensed material ...) Since we should be moving to a more sophisticated search solution anyway (to allow prioritisation etc) maybe we should cautious as to what we do now." 1247829864000000 1265890806000000 80 enhancement dread rgrp v0.10 closed fixed Refactor or remove modes code "Get rid of modes in the RESTful API. Do json stuff directly in controllers. * package will have to_dict and from_dict methods (called by rest controller) which provide and consume JSON friendly dictionaries representing the object. from_dict - class_method. stuff in forms for tags as_string, maybe factor out. reuse validation stuff." 1247844263000000 1265890912000000 91 enhancement dread rgrp v0.10 closed fixed Add author and maintainer attributes to package "Add the following attributes to package: * author, author_email * maintainer, maintainer_email Gives us full compatibility to: http://docs.python.org/distutils/setupscript.html#additional-meta-data Column ordering - should come after name, title, url, download_url." 1249049780000000 1250864156000000 94 enhancement dread rgrp v0.10 closed fixed Use sqlalchemy-migrate to handle db/model upgrades "Details of how to go about this here <http://www.rufuspollock.org/2009/07/27/sqlalchemy-migrate-with-pylons/> Cost: 2h" 1249134185000000 1250604808000000 105 enhancement dread rgrp v0.10 closed fixed Package groups (view) "As a user I want to be able to create groups of packages. This functionality is different from tags: * The ability to add a package to a given group is restricted whereas anyone can add a given tag to a package * Specifically groups have owners and only the owners can add a package to that group Group properties * id (primarykey, uuid style) * name (restricted content - same rules as package) * title (no restrictions) * owners -- many:many with user object * description (markdown) * packages -- many:many with package object Don't version groups for now. Groups address in the WUI will be: * /group - browse list of groups (reuse list action) * /group/list - same thing for now * /group/<groupname> - display: group properties with links to packages. No links to user pages (yet). Group editing and searching will be another ticket. Cost: 3d " 1251392282000000 1252488496000000 106 enhancement dread rgrp closed duplicate Regularly convert CKAN data to RDF and put on Talis CC "Sister to ticket:90 (Link to RDF version of CKAN data on Talis Connected Commons). Talis have already kindly done an initial conversion. We should repeat this process regularly and re-upload the data to Talis CC. In the long run may wish to only re-convert packages changed since the last upload. However given relatively smaller size of full dataset this optimization is probably not yet required. Attached is the ruby script used by Talis for conversion Cost: ? (1d+ depending on e.g. how easy integration with Talis CC is)" 1251454474000000 1256140649000000 108 enhancement dread rgrp v0.10 closed fixed Package search in the REST API "Add package search facility in the rest api at /api/search Queries can be provided as for the normal package search either by posting to that url or by performing a get with a query string. E.g. .../api/search/package?q=xyz Query parameters: * q is keyword string (searches name, title, tags by default) * split by words and ANDed * additional parameters for specific fields * qjson is alternative to q for Searching by specific fields (in addition to keyword string). Payload to json is a JSON-encoded dict which is a dictionary with a q field for free text (keywords) and additional key/value pairs for specific fields * if q and qjson specified ignore q and just process qjson value Additional parameters in addition to query (""q"" or ""qjson"") are: * limit * offset * fullinfo=0/1 - return full record for each result (default=0) * order_by=field_name * search_notes=0/1 (default 0) do we search notes field in a keyword search Return value is json encoded dictionary with keys: * 'results': list of results * 'count': total number of results === Extras (for the future) === * Prioritisation is not part of this ticket (requires fulltext support in DB or in external app such as Xapian) " 1251915845000000 1252340511000000 110 enhancement dread dread v0.10 closed fixed Integrate groups into packages " 1. Package needs a groups property (backref Group.packages). 2. Put groups in the search api. 3. Display them on the package, but not editable. (Only editable from the group page.) Follow up to ticket:105 (Groups). Cost: 1d" 1252315956000000 1252488660000000 113 enhancement dread dread v0.11 closed fixed Simple script to test data migration on a production db "Must not alter the db. Related to ticket:112." 1252316523000000 1265294054000000 114 enhancement dread dread v0.10 closed fixed Access Control - model "Create in the model basic operation of Access Control. roles table {{{ name | context | action ----------------------- admin| package | edit admin| package | edit-permissions admin| package | read editor| package | update editor| package | read reader| package | read This data is set-up on db init and will have no interface. }}} user-roles table: {{{ username | context_type | objectid | role rgrp | system | n/a | admin visitor | package | * | reader bob | package | geonames | admin visitor | package | geonames | editor visitor | package | geonames | reader john | group | ukgov | admin dread | group | ukgov | editor visitor | group | ukgov | reader This data will be added when someone is given permissions for the system, a package or a group. }}} Pseudo code: class Package def is_allowed(name, action): is_allowed(name, action, context=self) class Group def is_allowed(name, action): is_allowed(name, action, context=self) def is_allowed(name, action, context=None): ''' name: string - a username or IP for 'visitor' action: string - 'read', 'edit', 'delete', 'edit-permissions' context: object - a Group or a Package or None (which means system) ''' # look up user from name. # look up in user-roles table what roles this user has for this context. # for each roles, look up in roles table what actions are allowed. # return True if action is allowed, else False. " 1252494527000000 1253034529000000 115 enhancement dread dread v0.10 closed fixed Access Control - wui constrained by model "Based on a section of AccessControl design: Reading and writing to packages in the WUI and REST API are now dependent on the authz tables." 1253034394000000 1253091426000000 116 enhancement dread dread v0.10 closed fixed Access Control - edited in wui "Based on a section of AccessControl design: WUI gives controls to user and administrator to change permissions on a package." 1253034802000000 1253709460000000 117 enhancement dread dread v0.10 closed fixed Access Control - group core functionality "Based on a section of AccessControl design: Group reads and edits are controlled by access control. WUI and REST interfaces covered." 1253271333000000 1254735855000000 118 enhancement dread dread v0.10 closed fixed Use paginate in webhelpers "Take out import of paginate in setup.py. Use paginate in webhelpers instead. Make changes to take account of any i/f changes." 1253273657000000 1253784902000000 119 enhancement dread dread v0.10 closed fixed Ensure non-active packages don't show up "Ensure pending packages don't show up in search or browse cost: 4h" 1253529414000000 1253791147000000 120 enhancement dread dread v0.10 closed fixed Security audit "Look for all places where model is accessed and check authorization is checked. Document holes (and, as necessary, suggestions for fixes) as new tickets. Likely areas that need looking at: * search i/f * package WUI commit Write holes are obviously much more significant to us than read holes." 1253529427000000 1254406544000000 121 enhancement dread dread v0.10 closed fixed Add 'Group' to main menu And associated page to browse group. 1253694827000000 1253716782000000 122 enhancement dread dread v0.10 closed fixed Add Group authz page 1253694842000000 1253716757000000 123 enhancement dread dread v0.10 closed fixed Ability to edit Group in WUI "Add Group editing page. If no permissions to change group can't edit group. Also cannot view edit page. Editable attributes: name, title, description No preview needed " 1253708041000000 1254321447000000 125 enhancement dread rgrp v1.0 closed duplicate Edit Generic Package Attributes in WUI Split out from ticket:43 1253709712000000 1258377621000000 126 enhancement dread dread v0.10 closed fixed Change package state in the WUI (delete and undelete) "As a Package Admin I want to change the state of the package. In particular I wish to delete and undelete it. (NB: this is quite separate from ""purging"" objects which is the term we shall use for irrevocable removal of an object from the domain model). * Only Package Admins (and sysadmins) should be able to change state == Implementation Suggestions == * 'delete' action should be renamed to 'change-state' (NB: this requires a db migration ...) * Have new package formalchemy form (created via inheritance?) to incorporate state attribute. Suggest this is rendered as a dropdown (and may be simple object rendering of state, i.e. do NOT need to change it to a single name such 'active'). * This form should then be used when the user satisfies is_authorized(..., model.Action.CHANGE_STATE) instead of the usual fieldset " 1253789571000000 1254740244000000 127 enhancement dread dread v0.10 closed fixed Minor form and UI improvements " * group form: description field for needs to be a text area * group form: make title and name field wider * package view: need to move tags and license above notes " 1253798659000000 1253868048000000 128 enhancement dread rgrp v0.11 closed fixed Add ckan_url attribute to REST JSON representation of a Package "Add ckan_url attribute to REST JSON representation of a Package pointing to the (read) url of package on CKAN. Cost: 30m" 1253866713000000 1275694573000000 130 enhancement dread rgrp v0.10 closed fixed Create a New Group via the WUI "== As a == User == I want to == Create a new group via the WUI == Details == * locate at /group/new/ * You must be logged in to create a group * Group creator is automatically given role of group admin * Edit screen is same as edit screen ..." 1254130212000000 1254735501000000 131 enhancement dread dread v0.10 closed fixed Groups REST interface Controlling Groups through a REST interface. 1254307959000000 1254308115000000 141 task dread rgrp v0.11 closed fixed Search api docs "Write up search api documentation and put it in a template that shows up at api/search/. Cost: 2h" 1254903008000000 1255007583000000 147 enhancement dread dread v0.11 closed duplicate Parser and loader for esw.org data 1255440695000000 1255515162000000 148 enhancement dread dread v0.11 closed fixed Parser and loader for esw.org data " * parse like data4nr code Follow up tickets: ticket:149 and ticket:150" 1255440696000000 1255515222000000 149 enhancement dread dread v0.11 closed fixed Loader for esw data recognises existing packages "Follows on from ticket:148. Sister to ticket:150." 1255440751000000 1257414916000000 150 enhancement dread dread v0.11 closed fixed Loader for esw data uses REST API "(instead of sqlalchemy interface, to facilitate general usage of the loader) * use ckanclient Follows on from ticket:148 and ticket:149" 1255440828000000 1256751974000000 151 enhancement dread rgrp v0.11 closed duplicate User object should have a created attribute "User object should have a ""created"" attribute initialized to current datetime. Require a db migration but o/w very simple. Cost: 1.5h" 1255589694000000 1257414545000000 152 enhancement dread dread v0.11 closed fixed Package has editable 'Extra' fields "Package edit page has fields for extra key-value pairs. Don't use formalchemy. The form displays the existing ones and new ones as follows: {{{ Key Value delete [ country ] [ uk, spain ] [x] }}} When presenting the form, existing pairs and 3 blank pairs are provided. When saving the data, keys that are not changed use the existing !PackageExtra object (perhaps with new value). Deleted keys put the !PackageExtra state to deleted. For new keys, only create a new !PackageExtra if there isn't a state=deleted one to resurrect. Validators ensure no repeated keys." 1255615316000000 1256056193000000 153 enhancement dread dread v0.11 closed duplicate Group's packages listed alphabetically "This is so you can easily look up whether a given package is already listed - otherwise as lists get bigger becomes difficult to see what is already there. Suggested by Jonathan Gray" 1255621515000000 1258971895000000 155 enhancement dread dread v1.0 closed duplicate Adding multiple packages to a group "Ability to add multiple packages to a group in one go (e.g. with 'add' link which makes drop down menu appear - so can add one after another - then submit simultaneously) Use a bit of javascript to add more dropdowns. Suggested by Jonathan Gray " 1255621779000000 1271760041000000 157 enhancement dread rgrp v0.11 closed fixed Log message not persisted through preview "Log message on package edit page is no longer persisted through a preview (no doubt due to recent form upgrades). Let's fix this. cost: 0.5h" 1255694396000000 1256062680000000 158 enhancement dread dread v0.11 closed fixed Add 'extras' to REST API " * Ensure you can add/change/delete extra fields from packages using the REST API. * Update API docs to cover this. On Package get, ensure separation of extra attributes from other attributes. What is the meaning of posting an incomplete dictionary (updating a package)? Option 1 - if field not present, leave field alone * Delete field if field value is None Option 2 - user must supply all fields * Delete field if field absent Prefer option 1. Document this. Follows on from ticket:152" 1255703259000000 1255949818000000 159 defect dread rgrp v0.11 closed fixed Searching for tags:... resulting in lots of tags being found "Search of form: tags: ... behaves differently depending on whether there is a leading space: * tags: postcode - tags found correctly but no packages found * tags:postcode - tags incorrectly found but correct packages found Let's fix this. Cost: 0.5h" 1256030097000000 1256060264000000 160 enhancement dread rgrp v0.11 closed fixed Implement internal links in CKAN notes markup "Suggest form is: key:value (with optional space after ':'. Keys would be for an object, i.e. 'package', 'tag', 'group'. Becomes a link. This would be implemented by implementing a 'Parser' or 'Processor' object which is run before markdown is done. Regex replace. Cost: 4h" 1256030751000000 1265312986000000 161 defect dread rgrp v0.11 closed fixed Tag listing is incorrect "E.g. http://ckan.net/tag/read/postcodes this has no-postcode listed but when you look at that package 'postcodes' isn't a tag ... I suspect this may be to do with search using deleted tags as I think no-postcode had postcodes as a tag at some point earlier ..." 1256030925000000 1258573607000000 162 enhancement dread rgrp v0.11 closed fixed Tags should be automatially lowere-cased if not already "Rather than raising a validation error automatically lower-case tags on submission. Cost: 0.5h" 1256048269000000 1256142462000000 166 enhancement dread dread v0.11 closed fixed Add extras editing to ckanclient Ensure logging is working on server. 1256203581000000 1265891199000000 167 defect dread dread v0.11 closed fixed REST interface you can't update multiple tags Only first tag is updated. 1256209993000000 1265891178000000 169 enhancement dread dread closed duplicate Package derivations "A 'Derived' relationship can be applied from one package to another. e.g. sussex-demography is derived from census-2001 'Derived' relationship is: * directional * many:many * stateful 'derived' table columns: * id (primary key) * source_package (foreign key) * result_package (foreign key) * description (markdown text) Further tickets: * WUI - package view - shows 'derives from package x' and 'derived package y' with UML-like diagram of x -> this package -> y * WUI - package edit form - new option to say it 'derives from' or 'has derivation' and you select the appropriate * REST if - expose reading and writing this property" 1256304927000000 1266928708000000 176 enhancement dread dread closed duplicate Package dependencies "(Related to ticket:169 - Package derivations) A 'dependency' relationship can be applied from one package to another. It implies that a package requires the download or existence of another package which it 'depends on'. (Analogous to software package dependencies.) e.g. london-traffic-visualisation depends on road-map 'Dependency' relationship is: * directional * many:many * stateful 'dependency' table columns: * id (primary key) * dependent (foreign key) * dependency (foreign key) Further tickets: * WUI - package view - have list of dependencies (do not need to list packages which depend on this one) * WUI - package edit form - new option to say 'depends on' (no need for 'has dependent package') * REST api - expose reading and writing 'depends on' property. === Issues === * How do we deal with dependency at a particular version?" 1257162812000000 1266928721000000 179 defect dread rgrp v1.0 closed fixed Restore 404 and 500 messages in WUI "Cost: 0.5h (?) Conjecture this went missing in cset:a35db862a841" 1257412668000000 1265305549000000 184 enhancement dread rgrp closed fixed Stats page "Create /stats/ page displaying main statistics, e.g: * Most highly rated packages * Most edited packages * Largest groups * Top tags (by packages) * Package addition rate * Users with most packages Related to ticket:181 - Stats side-bar == Details == * Should create a stats module and then use some/all of these features on stats page (likely over time that stats features much more extensive than what we display) * For graphs (e.g. additions over time) suggest use javascript graphing -- for examples of how this is done see * http://knowledgeforge.net/econ/hg/file/tip/econ/www/controllers/plot.py * http://knowledgeforge.net/econ/hg/file/tip/econ/www/templates/plot/chart_code.html" 1257534756000000 1266837414000000 189 enhancement dread dread v0.11 closed fixed Multiple download urls "See also: PackageResources which defines a 'distribution' as a package's payload (perhaps with metadata). In our case, at least within CKAN, the representation of the distribution will just be the reference to get it (plus some minor metadata). We are expanding this functionality to be any kind of 'resource' associated with a package since it is likely in some cases people will want to link to a file containing a part, but not the whole, of a package's data. == As a == User (package editor and package user) == I want to == (package editor) Associate multiple distributions with a package. (package user) Easily have access to multiple distributions of a package should they exist. == Implementation == There is an object called 'Resource' with the following attributes: * url (text) (required in UI, but not in db table) * format (text) * description (text) * package (association) - a resource is always associated with 1 package A package's list of resources will have an order which is preserved. The first in the list will be known as the 'default resource' (the presumption will always be that this is a 'distribution'). === How to replace download url === download_url removed and replaced as a proxy attribute. Read returns the url of the default distribution. Write changes the url of the default resource. Ensures backward compatibility. REST API has new attribute in package dictionary 'resouces' - an ordered list. In WUI, replace download url in package read with a table of the distributions. In the WUI package edit, be able to add/remove/edit/reorder distributions. == Example == Example part of package: === Distributions: === || !http://some.com/pollution.pdf || PDF || Original report || || !http://some.com/pollution.csv || csv || Original data || || !http://some.com/pollution || sparql || Linked version of data || Existing data to be migrated to new structure. Cost: 4 days " 1258386120000000 1265284961000000 196 defect dread dread v1.0 closed fixed RDF URI to resolve on CKAN "Provide RDF version of a package at the RDF URI: http://ckan.net/package/rdf/32000-naples-florida-businesses-kml See email on OKFN help: For the information to be Linked Data, the following URI (from the api.talis.com SPARQL call) should be resolvable to RDF, or an RDFa enhanced HTML page." 1258727988000000 1265389771000000 197 enhancement dread dread v0.11 closed fixed Simple dumper "== As a == admin / user == I want to == Admin: export all HEAD data to JSON / CSV / RDF format dump. User: wants to get hold of this dump. == Details == * Just do JSON & CSV for now. * Put this in CLI. * Just do list of packages - as_dict info. CSV needs a bit of flattening. Cost: 2h" 1258972495000000 1258989700000000 203 enhancement dread dread v0.11 closed fixed show package counts for groups in WUI "In two places in the WUI * list of groups * group page in title e.g. ukgov (5) Cost: 1h" 1260187690000000 1265891080000000 204 enhancement dread dread v0.11 closed fixed Custom package input form "== As a == admin == I want to == input government data in a constrained way == so that == you get consistency in the db which is easily searched, discovered and automatically linked. == implementation == Form has fields suitable for government data. (related to custom excel importer ticket) In pylons config specify the form schema to use - whether the existing one or the government one. '''On submission, during validation, warn if a field isn't completed (unless it's optional - agency, maintainer, maintainer_email)''' === Simple fields === * all basic ckan fields * default license to OKD::Crown Copyright * co_id, precision, taxonomy url, agency === Date fields === Date format: machine readable. Can be specific or vague: year or month/year or day/month/year. * date_released * date_updated * temporal_coverage_from, temporal_coverage_to - two date fields combined === Strict selection === Drop down combo * department === Selection or free text === Editable combo * update_frequency - selections: never, weekly, monthly, annually, discontinued * geographic_granularity - selections: national, regional, local authority, ward, point * temporal_granularity - selections: yes, months, weeks, days, hours, point === Specialised fields === * geographic_coverage - UI is tick boxes. store a comma separated list of all that apply from: england, scotland, wales, northern ireland, overseas, global (Idea for future version: Select the most relevant one from a choice of OS hierarchical geographic IDs in the UK. Stored in the database as the RDF URI. Question - what to do beyond the UK?) * national_statisic - UI is check box, store as 'Yes' or 'No' * resources - use standard table, but suggestions for file type are: RDF, CSV, SPARQL, REST, XBRL, SDMX, Other XML, HTML+RDFa, XLS, DOC. Have warning label saying it is not ideal to have PDF, zip or html targets. * categories - multi values from strict selection of ONS categories. Stored as comma-separated. === Field data processed === * tags - in addition to words entered here, search for known keywords in other fields: title, notes, department, agency, geographic coverage & categories. === Future - optional === Each form schemas is made available (or not) in the pylons config, along with the default schema for new packages. If there is more than just the 'basic' schema available then the 'new package' form has at the top a drop-down to select the schema with a 'switch' button. This submits the form's current data and parameter schema=xyz and the form arrives back populated with the existing options. No data should be lost switching views. When you edit a package it detects the schema based on the extra fields that are present. " 1260188965000000 1285082169000000 207 enhancement dread nickstenning v1.0 closed fixed Reimplement tag selection in jQuery "Remove the current dependency on Yahoo YUI toolkit for doing tag autocompletion on package edit forms. The (KForge-derived) behaviour files for CKAN can easily be switched to the new jQuery-based ones: see ticket:212. Once this is done, it would make sense to implement the tag-selection code with jQuery. Relevant pages include: * http://bassistance.de/jquery-plugins/jquery-plugin-autocomplete/ * e.g. http://ckan.net/package/edit/acawiki" 1260200340000000 1271250740000000 208 enhancement dread rgrp v0.11 closed fixed Obfuscate author email and maintainer email field "Obfuscate author email and maintainer email field. Use: webhelpers.html.tools.mail_to e.g. webhelpers.html.tools.mail_to('mike@jones.com', encode='javascript') Do we want to? Surely only public addresses should be on CKAN in which case why obfuscate? " 1260203938000000 1265891070000000 213 enhancement dread dread v0.11 closed fixed Automate CKAN deployment fabric script to automate ckan deployment 1260811707000000 1265891061000000 221 enhancement dread dread v1.0 closed fixed UI Review - Package edit "Package edit page [/package/edit/mypackagename] * Ability to add the package to groups on this page. * Fields could be grouped. * Inconsistent capitalisation (Url -> URL). * Tag editor YUI script appears to break occasionally. * Perhaps move to two column forms to save vertical space? * Notes field to monospace? * Extras fields need some jQuery love -- shouldn't have a fixed number available. * Typography is a bit of a mess. " 1260880175000000 1271756757000000 229 enhancement dread dread v0.11 closed fixed Resource hashes "New field for resources - hash of the resource file. * CKAN itself will not calculate the hash value - user just pastes it in. * Display text field in resource table. * Requires migration script. Questions for the field's value: 1. Which hash to use? Restrict to python hashlib and other major hash libraries. 2. Should we use merkle trees? Thanks to Julien D'Assanges for the suggestion. " 1262686287000000 1265891612000000 230 task dread dread v1.0 closed fixed Refactor 'package preview' to use 'package read' " * Requires Package Read to not use the side-bar * Need to sync params to a package object that is taken out of the session so that it doesn't go into the database." 1262788084000000 1265293953000000 239 task dread dread v1.0 closed fixed Test migrate scripts "Integrate new test upgrade into testmigrate stuff. New ""migrate.ini"" config file programmed with the db to be used for migrate tests and a param saying where the db dump is." 1264439926000000 1265286521000000 247 enhancement dread rgrp v1.0 closed fixed Alternative formats links on package page """Alternative formats"". Has logo for RDF (link to RDF) and JSON (link via CKAN REST i/f). * How do we know if RDF available? Ans: see details in ticket:90. Cost: 1h" 1265890326000000 1271248813000000 248 enhancement dread rgrp v1.0 closed fixed i18n of forms Need to do i18n of forms (not in templates but in code). Should consult with tonfa about this. 1265892313000000 1270745304000000 252 enhancement dread johnbywater closed invalid Change revision object so that it has parent(s) attribute 1266519767000000 1296477560000000 254 enhancement dread dread v1.0 closed fixed Package relationships - 1. model "New domain object: PackageRelationship (revisioned) Attributes: * subject (Package reference) * object (Package reference) * type (string) * comment Relationship type values: depends_on (dependency_of) derives_from (has_derivation) child_of (parent_of) Relationship type is stored as a string, as given in the first column. The reverse relationship (bracketed) is given just for display purposes only. Subject / Object - as in a sentence: ""Dracos is derived from OSM"" is <subject> <predicate> <object>. We'll use 'type' instead of 'predicate' as that is a more familiar word. " 1266928449000000 1273596180000000 255 enhancement dread dread v1.0 closed fixed Package relationships - 2. Read in WUI "WUI: * View: show both sides of the relationship (but think carefully -- e.g. a given package may have *many* dependents ...) " 1266928542000000 1273596174000000 257 enhancement dread dread v1.0 closed fixed Package relationships - 4. Read in API "API: * Appear in package listing Example: 'relationships': [{'is_dependency_of':'osm', comments:'Since version 0.2'}, {'is_parent_of':'bobs_maps'}] " 1266928630000000 1273596170000000 260 enhancement dread rgrp v1.0 closed fixed Display group package list in standard (richer) way "Currently use old ""bullet-point"" style. Should change to now standard style used on e.g. package search results page. Cost: 0.5h" 1267100660000000 1267122137000000 261 defect dread rgrp v1.0 closed fixed License does not work through REST API "Presence of license_id field in JSON input show below breaks REST API (with weird error about int not being subscriptable as if license_id field is being subscripted). Using normal license field does not cause breakage but has no effect. (Also think we should remove license_id from the API since there is no guarantee this cross system compatible since locally generated on install). {{{ ourjson = '''{ ""maintainer"" : ""Applications Division"", ""version"" : ""1999-01-01"", ""license_id"" : 9, ""name"" : ""geogratiswaterfraction1km_v100"", ""author_email"" : ""..."", ""author"" : ""Dissemination Branch"", ""tags"" : [ ""GeoGratis"", ""Canada"", ""GCMD"", ""Hydrosphere"", ""Ground Water"", ""Surface Water"", ""Hydropattern"", ""Earth Science"", ""Land Surface"", ""Land Cover"", ""Landscape"" ], ""extras"" : { ""License"" : ""http://geogratis.ca/geogratis/en/licence.jsp"", ""Ministry"" : ""Natural Resources Canada"", ""Level of Government"" : ""Federal"" }, ""maintainer_email"" : ""richard.fernandes@nrcan.gc.ca"", ""notes"" : ""This product is a raster coverage"", ""url"" : ""http://geogratis.cgdi.gc.ca/geogratis/en/collection/metadata.do?id=67"", ""title"" : ""Geogratis - 1-km Water Fraction From National Topographic Data Base Maps, Canada"" } ''' def test_15_random(self): offset = '/api/rest/package' import urllib tmpjson = simplejson.dumps(simplejson.loads(self.ourjson)) postparams = urllib.urlencode({tmpjson: 1}) res = self.app.post(offset, params=postparams, status=[200], extra_environ=self.extra_environ) model.Session.remove() }}}" 1267134778000000 1267207776000000 264 defect dread rgrp v1.0 closed fixed Investigate why there are revisions with no associated packages "Revision.packages should not include all changes so why are we getting revisions with no associated changes? See e.g. http://ckan.net/revision/read/814e39e1-2540-4449-90d1-ac9a92ab40fb? Investigate and fix. NB: if this is bugfix this should go against stable or metastable branch if at all possible and then be merged into default. Cost: 1.5h (?)" 1267605428000000 1272390013000000 275 defect dread rgrp closed fixed Add forms renderer for JsonType fixing bugs in admin interface "This will solve e.g. issues in formalchemy admin interface (which is due to lack of renderer for Json type) Cost: 0.5h {{{ from ckan.model.types import JsonType forms.FieldSet.default_renderers[JsonType] = formalchemy.fields.TextFieldRenderer }}}" 1269122740000000 1281002082000000 276 defect dread rgrp v1.0 closed fixed Resources in Package form seen multiple times upon preview Create a new package with a name 'blah' and resource format 'blah'. Hit preview. There is an error because of the lack of resource url, but in the resource input boxes, there are now four resources with format 'blah'. 1269255399000000 1272996237000000 278 defect dread dread v1.0 closed fixed Spaces in extra field keys If the key to an extra field has a space in it then various form code doesn't work. Either need to disallow spaces or cope with them. 1269520845000000 1271173752000000 280 defect dread dread v1.0 closed fixed Disappearing extra fields "When I edit a package on no.ckan.net with lots of extra fields, lots of them completely disappear. Metastable branch." 1270209684000000 1271173769000000 281 enhancement dread dread v1.0 closed fixed Refactor forms to be plugin-able 1270542248000000 1270723675000000 286 enhancement dread dread v1.0 closed fixed Refactor forms templates "Use Nick's examples as a basis to revamp the formalchemy usage, principally in the package edit form. * http://static.whiteink.com/css/examples/forms.html * http://whiteink.com/temp/ckan-forms/" 1270723513000000 1270723629000000 287 enhancement dread dread v1.0 closed fixed Customise Canadian package edit form "Spec - see attached, which is a copy of the Pirate Pad from Lauren: http://piratepad.net/2C2iwiLDhd" 1270801086000000 1270801210000000 288 defect dread dread v1.0 closed fixed Foreign and escaped characters in extras fields These don't work. 1271171899000000 1271173777000000 292 defect dread dread v1.0 closed fixed PackageResources are created new on every package edit When you edit a package, all of its resources are deleted and a fresh set created. This causes all history of them to be lost. 1271755964000000 1272286005000000 295 enhancement dread dread v1.0 closed fixed Add multiple packages when editing a group "In Group edit page, you can only add one package at a time. It would be better to use some scripting to allow adding more than one at once, to make it easier and quicker when you have a long list to add. Ticket is split off from ticket:221 See also ticket:155 (duplicate)." 1271756713000000 1272384758000000 303 defect dread dread v1.0 closed fixed Package history & diff & feed to show changes to tags, extras and resources "Currently a package's history page (/package/history/xyz) and related feed only shows changes to the core package i.e. ones which create a PackageResource. This doesn't include changes to tags, extras and resources. These need to be added. There is the complication that the 'diff' function doesn't currently work beyond PackageResource. Unless this is quick and simple to fix, I suggest we let the diff remain slightly broken for now. Rufus suggests alongside the existing methods: {{{ pkg.all_revisions() pkg.diff() }}} we have ones which also include the related objects (tags, extras, resources): {{{ pkg.all_revisions_full() pkg.diff_full() }}} You could have a function which returned these related objects. Ideas: {{{ revobjlist = [ self, resources, extras ] list of tuples: (revobj, changed_revobjs) list of tuples: (revobj, {objtype: [changed_revobjs]}) tuple: (rev1, {Package: [ object_id, object_id], PackageTag: [object_id, object_id2] ...} }}}" 1272370659000000 1272989728000000 310 defect dread rgrp v1.1 closed fixed Commit message box looks wrong in edit page since edit style overhaul "Suggest move this below the label and make full width of screen and only 3/4 rows high (more like a wiki site). * Also change label to: Edit summary (Briefly describe the changes you have made) * Remove: you can markdown formatting here. * Move author: if you have not signed in smaller and closer (like markdown instructions are nwo). * Change commit -> save * Remove ""please save"" just have the bullet points" 1273348714000000 1279300525000000 311 defect dread rgrp v1.1 closed fixed Reordering of package resources can lead to integri "Created a new package resource line and then moved it up above existing one and hit save. Result: 500 error. In logs have: {{{ [Sat May 08 21:55:41 2010] [error] [client 86.26.8.30] Error - <class 'sqlalchemy.exceptions.IntegrityError'>: (IntegrityError) duplicate key value violates unique constraint ""package_resource_revision_pkey"", referer: http://ckan.net/package/edit/cofog [Sat May 08 21:55:41 2010] [error] [client 86.26.8.30] 'INSERT INTO package_resource_revision (id, package_id, url, format, description, hash, position, state, revision_id, continuity_id) VALUES (%(id)s, %(package_id)s, %(url)s, %(format)s, %(description)s, %(hash)s, %(position)s, %(state)s, %(revision_id)s, %(continuity_id)s)' {'hash': '', 'description': 'The Treasury record of COFOG functions. ', 'format': 'XLS', 'url': 'http://www.hm-treasury.gov.uk/d/cofog_definitions_coins250609.xls', 'package_id': '8482334d-fe2e-4285-9114-5243130f80c0', 'state': 'active', 'continuity_id': '8bf302db-8a80-47d3-b5dc-bc07512a3928', 'position': 3, 'revision_id': 'e4e2cb2d-4bd5-414e-b646-e484f174d9ab', 'id': '8bf302db-8a80-47d3-b5dc-bc07512a3928'}, referer: http://ckan.net/package/edit/cofog }}} " 1273348968000000 1274282065000000 315 defect dread rgrp v1.1 closed fixed Improvements and fixes to csv dump "1. Issues with quote in fields: http://lists.okfn.org/pipermail/ckan-discuss/2010-May/000240.html 2. Issues with package resource serialization into csv table. <quote> In the latest dump there were 116(!) sets of the three columns (“resource-[n]-url”, “resource-[n]-format”, and “resource-[n]-description”). However, these are an extract of the packed “resource” column and I’m not sure whether they’re needed. Also, they irritatingly don’t appear in order in the CSV serialisation. If the resource columns could be ordered in the file that would be great; if a second version without the unpacked resource data would be excellent. </quote>" 1274100887000000 1275846764000000 319 defect dread dread closed fixed Local Authority license misnamed in migration script 18 "Migration script 18 converts license ""OKD Compliant::Local Authority Copyright with data.gov.uk rights"" into ""uklocalauthority-withrights"" when it should be ""localauth-withrights"", according to the license service SoS 2. This causes clients difficulties looking it up. " 1274349714000000 1274366882000000 320 enhancement dread rgrp v1.1 closed fixed site_title configuration variable which is used in template "As a sysadmin I want to configure basic site title information for use in the site templates. Implementation: * ckan.site_title config variable * set this on g in app_globals.py e.g. * from pylons import config; g.site_title = config.get('ckan.site_title, 'CKAN - Comprehensive Knowledge Archive Network') * use in head title and in main site title/logo section (use it as alt on logo image) * Also all other pages (e.g. index, about) which talk about CKAN * Is this needed? Would it not be better for people who want to customize the site to simply overwrite those templates? Questions: * Do we want a site_logo variable whic his use for site title/logo section instead of site_title if site_logo defined? * Probably yes, but '''not''' part of this ticket." 1274378967000000 1279130535000000 322 enhancement dread dread v1.1 closed fixed Client interface for Notification Service "=== Use cases === * Register for package changes * Register for all revisions * Notified of a package change * Notified of a revision * Deregistration * Configuration of port in pylons config === Design === * Default port: 5672 (standard for AMQP) * Exchange name: 'ckan' * Exchange type: topic exchange (most flexible) * Routing keys: (see below) === Routing detail === Routing key format: ""OBJ_TYPE"" (NB tags should be identified by their name, not ID) Example routing keys * 'package' - Package edited/created * 'resource' - Resource edited/created * 'revision' - Any change * 'db.clean' * 'db.rebuild' Example queue bindings that clients may use: * * - no filtering - client receives all notifications * package - only changes to packages * revision - all revisions * db - all database operations === Versioning === Since message payloads will be tied into the REST Entities, it makes sense to join up with the REST versioning. This could be achieved by providing new exchanges called 'ckan-1.1' perhaps? === Documentation === * How to use * simple example of an external client?" 1274720042000000 1277722821000000 323 enhancement dread dread v1.1 closed fixed Notification message "=== Which events to notify on === Listed by domain object, these are the notification message 'change types' that will be sent: * Package * !PackageResource Also it is clear that it could be useful to know when db-wide maintenance is carried out: * db - 'clean', 'rebuild' (db is wiped and replaced with new data), 'upgrade' (migration) === Ignored domain objects === These parts of the domain model will not carry notifications as no use case has been identified for them: * Revision * Group * Tag * Rating * User - list of users is sensitive info * Relationships - complicated * Authz - complicated and sensitive info * License - change of a license's metadata is a question for the 'license service' === Message format === A notification message's header contains the routing key, identifying the object type. The client is probably interested in the object (all use cases so far), so it makes sense to send the object in the payload. This should be the JSON-encoded dictionary exactly as provided for the object's REST Entity. For the 'db' notifications there shall be no payload." 1274723333000000 1278578841000000 324 enhancement dread dread v1.1 closed fixed Search indexing using notifications "Currently search indexing is triggered directly using a Postgresql db callback. Now take advantage of the Notification system to register interest in all package changes and db changes to trigger this instead. The indexing shall run in a separate shell/process, managed by supervisord." 1274723483000000 1278599927000000 325 enhancement dread dread v1.1 closed fixed Event push notification "=== As a === CKAN client program === I want to === be notified when changes to the CKAN metadata occur. === Examples of use === 1. An external search engine needing to (re)index a package. (interest: Package) 2. A front-end system that caches package info and wants to know when it changes, to keep in step. (interest: Package or Revision) See further details here: ticket:352 and previous iteration here: ticket:333. 3. A system for automatically checking package URLs and resource URLs as they are put on the system. This could alert to bad URLs and automatically email feedback to (meta)data owners. (interest: !PackageResource) 4. Do some processing on resource (e.g. extract sample data for display) (interest: !PackageResource) === Context === The current state of CKAN can be queried through the REST API, you can keep track of changes by reviewing the feeds, but there is no way to find out the instant something is changed, without costly polling. === Design === Split-off into two tickets: * Notification message - ticket:323 * Which events to notify on * Message format * Interface for Notifier Service - ticket:322 === Testing === To test notifications, Carrot / AMQP will be configured to use a native-Python Queue, instead of requiring RabbitMQ to be running on the machine. === Related === * Run CKAN search indexing using this system - ticket:324 * Run SOLR indexing using this system - ticket:353 * Web hooks for notifications - ticket:327 " 1274723512000000 1278599979000000 326 task dread dread v1.1 closed fixed Centralise importation of json library Later versions of python use json which is better than simplejson, but it must be kept as an option for compatibility. So centralise the import of json to ckan.lib.helpers. 1274784223000000 1274789296000000 328 enhancement dread rgrp v1.1 closed fixed Mention code libraries in API documentation "Should prominently (at the top?) mention existing code libraries for working with ckan api. Have: * Python: ckanclient * Perl: luke closs wrote something * PHP: drupal library? * ...?" 1274988106000000 1275318745000000 330 defect dread dread closed fixed getdata/ons timezone not recognised on non-British servers "The python time module is supposed to recognise timezones such as 'UTC', 'GMT' and 'BST' using the %Z parameter. This works fine on British installs, but the buildbot (for example) gives this error: DateConvertError: Could not read date as ISO format ""%a, %d %b %Y %H:%M:%S %Z"". Date provided: ""Mon, 04 Jan 2010 09:30:00 BST"" It turns out that it only recognises local names of timezones. The ONS import doesn't care much about timezone, so we should just ignore it, avoiding these problems." 1275300271000000 1275303122000000 335 enhancement dread dread v1.1 closed fixed Post-package-edit redirect to configurable URL "== As a == third-party interface to a CKAN instance == I want to == link to CKAN's package creation/editing pages. On 'commit', have the user redirected back to a URL in my interface that I can control. Also, when the package is created new, I need to be told what the new package's name is on return. == Design == 1. The 'return URL' is passed as a parameter to CKAN. 2. CKAN substitutes the package name into the return URL. == Example == Front-end links to: !http://ca.ckan.net/package/new?return_to=http://datadotgc.ca/dataset/<NAME> (but with the parameter URL-encoded) When finished editing and the user commits, CKAN redirects the user to: !http://datadotgc.ca/dataset/pollution_data " 1275408834000000 1276179605000000 336 defect dread donovanhide v1.1 closed fixed Resource Search API "== As a == CKAN client such as !ScraperWiki == I want to == search for Package Resources, either by URL or other field, or just get them all. I want to be able to get all the resource's fields, such as URL. == Proposed implementation == Add resource search API at: /api/search/resource AND resource added to model API at: api/rest/resource (see ticket:358) Functional differences from the !ScraperWiki suggested patch: * URL is not normalised * URLs are not grouped * All fields of the resource object are returned, not just the URL * Package is identified by its ID, not name or full URL. (This is for consistency in the API - you can simple prepend 'http://ckan.net/package/' to the package ID) This is to make our API more general, simple and consistent. It means that the !ScraperWiki client has to do a bit more processing to get exactly what it needs. Is this ok? === Example search === POST {{{ {""url"": ""scraperwiki.com/"", ""all_fields"": 1} }}} to: /api/2/search/resource returns JSON: {{{ [{""id"": ""a3dd8f64-9078-4f04-845c-e3f047125028"", ""package_id"": ""b8a325c8-af2a-43f3-8245-9db7d73dfbfe"", ""URL"": ""http://scraperwiki.com/lincolnshire-councillors"", ""format"": ""CSV"", ""Description"": ""Scrape of www.lincs.gov/councillors.pdf by ScraperWiki."", ""hash"": """", ""position"": 2 }] }}} Note use of package_id instead of package_name is something we're moving towards in the API, since names can change. When we've done ticket:341 then ckan.net/package/lincs-councillors will be a synonym of ckan.net/package/b8a325c8-af2a-43f3-8245-9db7d73dfbfe === Search Parameters === {{{ Key: q Description: Search all resource fields for the value Key: url / description / format / Description: Search particular field for the value Key: all_fields Value: 0 or 1 (0 is default) Description: If 1 (true), the full record of the package resource (and it's package reference) are returned, rather than just the PackageResource ID. }}} May also choose to introduce 'offset' and 'limit' to page through a large number of results. JSONP achieved through API-wide parameter - see ticket:342 Search is case insensitive. == Original request == Hi, have attached a patch for adding a resource list api call. Have also added a JSONP compatible callback section, along the lines of #388. Could also add a search version. Not sure what the best url would be for that though. Haven't written a test as the structure seems to follow a functional spec. Is that document around somewhere? Donovan" 1275411765000000 1279373842000000 340 enhancement dread dread v1.1 closed fixed Web UI theme easier to configure "An install of CKAN should be configurable without changing any of the installed files. This makes it clear to upgrade CKAN. Complete the changes in this wiki page to allow static files to be served from outside CKAN paths over CKAN versions and additional CSS file to be pulled in. http://wiki.okfn.org/ckan/doc/theme" 1276009729000000 1328807317000000 342 enhancement dread dread closed fixed JSONP parameter in API "== As a == CKAN client using JQuery == I want to == call the CKAN API and instead of receiving back JSON I get JSONP. i.e. ""%s(%s)"" % (callback, json_content) == Suggested implementation == All API calls allow the JSONP 'callback' parameter to be specified in the request and this wraps the JSON response. See suggested patch to rest.py by Donovan Hide: http://knowledgeforge.net/ckan/trac/attachment/ticket/336/resource.patch == Test == import re import unittest def test_jsonp_callback(): response = self.app.get('/api/search/resource/?url=http://www.scraperwiki.com&callback=jsoncallback') match = re.match('jsoncallback\(.*\);',response) self.assertTrue(match) response = self.app.get('/api/search/resource/?url=http://www.scraperwiki.com') match = re.match('jsoncallback\(.*\);',response) self.assertFalse(match) I think the point needs to be made that JSONP only works for GET requests and not POST/PUT/DELETE, so there needs to be a check for that in the _finish_ok method. (thanks to Donovan Hide for test)" 1276166426000000 1276278485000000 345 requirement dread johnbywater closed invalid metastable, stable & ultrastable branches shall be automatically built and tested 1276523083000000 1291831615000000 346 defect dread johnbywater ckan-v1.3 closed wontfix Revision search API (response data format and documentation issue) "Whilst going through the API docs for the revision search API, it was noticed that the ""Gdu"" SoS doc doesn't match up. It returns revision IDs (perhaps this is useful to note in the spec?) so the format is probably not 'limitedstring'. Also, they appear to be ordered youngest first, not oldest as stated. And in the revision model, it refers to 'simplestring' which it doesn't define - I guess the names should be 'limitedstring'? Could this be checked out?" 1276523517000000 1296477510000000 352 enhancement dread dread closed wontfix Package notification worker - sends XML-RPC "== As an == external front-end == I want to == be notified (by XML-RPC) about package creations and updates. == Implementation == 1. A message queue worker waits for package update notifications 2. On reception, it constructs XML detailing the changes and PUSHes it to a configured URI. Rather than turning the package fields into XML fields, the JSON dump of the list of package dictionaries will become a single XML parameter. Config - in the CKAN config will be: * URI to callback to * API version to use (version 2 gives packages referred by ID not name)" 1276597996000000 1286375870000000 362 defect dread dread closed invalid Ratings should not be created with a GET "== Background == In the Web UI, when you rate a package it simply links to something like: http://ckan.net/package/rate/mke-liquor-licenses?rating=3 This creates a GET request. This is bad because: * Search engine crawlers follow links to find pages, and in this case end up creating a rating (although we've got a robots.txt to try and avoid this) * There are occasions when we want to make a CKAN instance read-only, so we put a <LimitExcept GET> Apache instruction in. But the database may still get written for these ratings. * Best practise for web requests is for GET to be a read-only request." 1278925451000000 1311176564000000 365 enhancement dread dread closed fixed ResourceNotifications If you change a resource then you not only get a PackageNotification, but also a ResourceNofication. 1279037411000000 1279300621000000 367 enhancement dread dread closed fixed Notfication monitor Runs on the commandline and prints out notifications. 1279303310000000 1279303693000000 373 requirement dread johnbywater closed fixed Sort out gov daily script "Split various jobs up into separate scripts. Change ONS importer to run remotely. Run ONS remotely. Run dump locally. Requested by DGU." 1279885887000000 1286376176000000 390 task dread johnbywater ckan-v1.2 closed fixed Remove a package for SB 1280418625000000 1282214629000000 399 task dread johnbywater ckan-v1.2 closed fixed Import BIS data for SD 1281000890000000 1282294177000000 420 task dread dread ckan-v1.2 closed fixed Release ckan 1.1 1281432518000000 1281522091000000 421 task dread dread ckan-v1.2 closed fixed Upgrade test-hmg.ckan.net to latest ckan 1.1 1281432541000000 1282909772000000 423 task dread johnbywater closed fixed Add examples to documentation about uploading data 1281435260000000 1282812768000000 424 task dread dread ckan-v1.2 closed fixed Tell JF the format spec & examples 1281436534000000 1282919429000000 426 task dread dread ckan-v1.2 closed fixed Ask list for suggestions improving API docs 1281436574000000 1282925305000000 432 defect dread dread ckan-v1.2 closed fixed Creating package over REST gives 500 error "This occurs when CKAN is run with mod_wsgi (not under paster). This is because of a unicode header being creating in rest.py." 1282065101000000 1282552819000000 438 requirement dread dread ckan-v1.3 closed invalid Data importers use minimal processing e.g. ONS importer 1282224383000000 1294661079000000 440 task dread dread closed duplicate Write and pass comprehensive performance tests "Run latest ckan on eu0. Automate some queries and searches. Check load and database connections / processes." 1282226932000000 1294417436000000 441 requirement dread dread ckan-v1.3 closed duplicate CKAN read-only state "When performing maintenance on CKAN it may be necessary to make CKAN obviously read-only, telling the users and restricting access to 'edit' pages. Examples of use: * Administrator wants to upgrade CKAN or move it to another server. During this time the database is being administered and either edits are lost or can't be done. * A CKAN is used just for distributing metadata and so is always read-only. Updates may still arrive through direct db manipulation, e.g.: * another (but writable) CKAN instance is connected to the same db * restoring database dumps from another CKAN db * Should a security be breached, all editing could be stopped " 1282227314000000 1292586309000000 442 requirement dread dread ckan-v1.3 closed worksforme Importing data "Review what chunks of code we have and how to move forward with requirements. Requirements: * Bulk parsing is done away from the CKAN server Possible future requirements: * /importer for importing spreadsheets in WUI * validation-light - 'scoring' a package Current importers: * /importer controller uses: PackageImporter, form, PackageSaver * loader uses: package_importer -> API * API uses: form, PackageSaver Modules * package_importer: * xls/csv --SpreadsheetData--> table * table --DataRecords--> records * records --PackageImporter--> pkg_dicts * pkg_dict --form--> fs & validation * fs --PackageSaver--> package" 1282228977000000 1294661028000000 443 task dread dread ckan-v1.2 closed fixed Get DGU daily dump working (local) "* Producing daily dump file * Publishing at ckan.net/dumps/ or better" 1282299046000000 1282735977000000 451 task dread dread ckan-v1.3 closed invalid Show/Allow only departments associated with user Use drupal api 1282299641000000 1292587233000000 454 story dread dread ckan-v1.2 closed fixed Import ONS data via API 1282299851000000 1286376044000000 457 story dread dread ckan-v1.2 closed fixed Dump database on a daily basis 1282299921000000 1282909051000000 461 task dread johnbywater ckan-v1.2 closed fixed Change ONS data importing to work via API " * Move script out to ckandgu repo * Change script to convert xml into package dicts * Test (against test.ckan.net, hmg.test.ckan.net) * Deploy" 1282303411000000 1283250478000000 462 story dread johnbywater ckan-v1.2 closed fixed Visitor downloads a daily database dump 1282305305000000 1285757238000000 466 requirement dread johnbywater ckan-v1.3 closed wontfix Name of HTTP header for API key shall be configurable 1282308995000000 1294835610000000 470 task dread johnbywater ckan-v1.3 closed fixed "Adjust API key's HTTP header name on DGU ""live"" and ""test""" 1282310854000000 1292587187000000 474 task dread dread closed wontfix Questions related to fi.ckan.net "Several questions to answer (and see file in email). To respond to the Finnish team and copy all Q&A to the ckan-discuss list. 1 ) I have played with two different datasets to get the metadata from those imported to CKAN. The other dataset is in PCAXIS format and other one is in Excel format. Please find the scripts + sample files attached in a zip file that contains instructions too to run the scripts. I looked at import scripts written in object oriented manner and getdata samples in CKAN but it was easier for me too write these from scratch (copied the unicrap function from CKAN samples). If I run the PCAXIS import script I get Unicode decode error (see errors file). When I use the unicrap function then the error does not appear in logs. I assume this is some Python environment setting issue. Of course I would like to run the script without unicrap function to get scandic letter imported correctly to ckan(and displayed in WUI). In Excel case there is no scandic letter issue which is kind of strange but this probably relates how the Excel library handles encoding. To be honest the whole unicode/encoding/decoding issue has been quite difficult to deal with and debug. I hope I would get proper environment configuration to handle scandic letters. 2 ) It seem in CKAN by default the localisation file contains 462 strings. The transifex link Rufus sent contains 400 strings. Is transifex the one we should use as localisation file ? Where are the rest 62 strings then fetched from or are they needed at all. I have found that as I have been using the .po file coming in CKAN source (which has API translations too) this also causes similar unicode problems when an error in API occurs (the API error messages containing scandic letters provide the similar UnicodeDecoding errors as mentioned above). So, it seems the unicode issues appear in various cases. Maybe a proper environment settings will be able to prevent also these problems... If transifex is the one to use I can prepare it and maybe then you could upload it to fi.ckan.net as there will be also other people checking the translations. To run the test and see the API translation errors especially in pcaxis case I would recommend to install attached FI translations to your environment and include lang = fi configuration. It looks like the API errors does not come when running default lang = en. 3 ) Is it possible to change the license selection/options available in license field drop-down ? Where are these located and can these be modified locally ? 4) It looks like the values stored in package extra fields are not searchable. Is this intentional ? It looks more or less that all other fields can be searched using free-text search in CKAN. 5) How package dependencies are defined and managed ? For instance we want to import some packages in a manner that the other package is a child package of another. Does API support this and/or is this possible to do in WUI ? Best Regards, Henri" 1282312255000000 1294916760000000 479 task dread johnbywater ckan-v1.2 closed fixed Suggest DGU presents database dumps through front end 1282324365000000 1288004211000000 502 requirement dread rgrp ckan-v1.3 closed wontfix Data4nr uploading script shall remove deleted packages "Occasionally data4nr removes a data package from its registry. When the latest full data4nr data is imported, these removed packages should be found and removed. " 1282659304000000 1292586466000000 503 task dread rgrp closed fixed Provide exemplar package relationships for some packages " 1. Find some relationships. 2. Add them via API 3. Notify DGU of completion and point to exemplars" 1282659631000000 1314031851000000 504 requirement dread rgrp ckan-v1.3 closed invalid The DGU fieldset shall conform to v3 of DGU metadata specification No need for requirement - closing in favour of #505 1282660246000000 1292586686000000 505 enhancement dread rgrp closed fixed DGU fieldset supports v3 of DGU metadata specification 1282660416000000 1298368280000000 506 task dread rgrp closed fixed Plan transition to DGU metadata-fields v3 1282660490000000 1287080989000000 508 task dread dread ckan-v1.2 closed fixed Create branch ultrastable " * Create a branch named ultrastable that represents latest version of 1.0 ''as found on dgu'' * Going forward ultrastable will act as stable - 1 (and either ultrastable or stable will be on the rock-solid production systems such as dgu) * Do '''not''' deprecate the stable or metastable branch for the present * Ask for recommendations on mailing list about best practice for branching (e.g. versioned based versus a simple HEAD versus stable) and how this affects standard operations such as applying bugfixes. * For useful discussion of how to do backporting and applying bugfix patches see: http://www.python.org/dev/peps/pep-0374/#backport * NB: in general do '''not''' always have to apply in stable/ultrastable and merge upwards for bugfixes -- can use transplant extension as well. " 1282663663000000 1282908795000000 509 story dread dread closed invalid ONS data imported daily 1282665870000000 1291734435000000 510 enhancement dread dread closed fixed Setup cron for ons import 1282665939000000 1294138332000000 536 task dread dread ckan-v1.2 closed fixed Extend base importer merging in resources "Multiple ONS records can go into one package e.g. Stats for Jan, Stats for Feb, Stats for Mar etc. We already identify an existing package by 'external_id'. Now need to find package by title and an extra field (department in ONS case) and allow it to merge in resource and tags. Alert if rest of meta data is different." 1283173313000000 1286376029000000 677 task dread dread ckan-v1.3 closed fixed License change script "* Uses API to change licenses of all packages in a CKAN instance to a particular one. * Run it on DGU." 1286384756000000 1292587315000000 678 task dread dread ckan-v1.2 closed fixed Form for DGU metadata v3 " * Create form * Deploy on test * Deploy on live " 1286385712000000 1286979133000000 680 task dread dread closed fixed Prepare for DGU tech meeting 1286386074000000 1287141809000000 681 task dread dread ckan-v1.3 closed fixed Department field bug https://trac.dataco.coi.gov.uk/projects/datagov/ticket/613 1286386685000000 1290507180000000 682 enhancement dread dread ckan-v1.4-sprint-1 closed fixed Add ckanclient tests to buildbot Some work done on this to make tests run independently. 1286386769000000 1297358266000000 683 story dread dread closed fixed metastable, stable & ultrastable smoketests run by buildbot 1286388134000000 1287142289000000 684 task dread dread closed fixed metastable tested on buildbot 1286388181000000 1286452710000000 685 task dread dread closed fixed stable tested on buildbot 1286388206000000 1287997008000000 686 task dread dread closed wontfix ultrastable tested on buildbot 1286388225000000 1287997047000000 687 task dread dread ckan-v1.2 closed fixed Release ckanclient 0.4 "Done. Added release process here: wiki:ReleaseProcess" 1286452098000000 1286452650000000 731 bug dread dread ckan-v1.3 closed worksforme Geo coverage field losses in Form API Sometimes editing a package via api on dgu results in some countries being lost in geo coverage. 1287738539000000 1288038226000000 732 task dread dread ckan-v1.3 closed fixed Reproduce and investigate (geo coverage issue) 1287738761000000 1288038335000000 733 task dread dread ckan-v1.3 closed invalid Fix problem (geo coverage issue) 1287738764000000 1288038341000000 734 task dread dread ckan-v1.3 closed fixed Investigate department issue (ONS import) "Creation of duplicate packages named with trailing underscore ww 22/9/10: >> Need to ... >> merge some packages (the ""find packages by attributes"" >> is not 100% reliable because of inconsistent data >> already in there). The ""find by tags"" algorithm uses (title, department). Unfortunately some of the data already there has no department. This causes it to make a new package (with trailing underscore). dread 24/9/10: I've done a test for the missing department issue and I can't reproduce the problem. This may be due to my general tidy up and getting tests passing using the latest ckanclient. Anyway, can you check over my test to see if this is what you mean?: dgu/ckanext/dgu/tests/ons/test_ons_loader.py:TestOnsLoadMissingDept ww 20/10/10: you should uncover it if you run against (a copy of) the dgu database." 1287747273000000 1292587603000000 735 task dread dread closed fixed Investigate 'deduping' (ONS import) "ww 22/9/10: (discussion of ticket:509) This leads us to deduping which should be the next order of business oin this thread... ww 20/10/10: if a dataset is missing a department and the ons script makes a new version of it with a department we now have two reccords for the same dataset. these should be manually merged - need a merge tool where you can tell it that two datasets are the same." 1287748786000000 1292957248000000 742 task dread dread ckan-v1.3 closed fixed Release ckan 1.2 to metastable Need to make sure #700 is fixed. 1288002397000000 1289824163000000 777 task dread dread ckan-v1.3 closed fixed Put 503-returning middleware into a module Also configure hmgckan, hmgapi, test-hmg and dev-hmg machines. 1288608324000000 1292586843000000 798 task dread dread ckan-v1.3 closed fixed cospread importer using API Move existing getdata/cospread.py into dgu repo and use the importer/loader mechanism. 1289475362000000 1294916973000000 805 task dread dread ckan-v1.4-sprint-2 closed fixed Migration scripts on buildbot 1289816755000000 1298379084000000 823 defect dread dread closed fixed Etags cache doesn't update when only non-core package fields changed. "1. Create a package. 2. Edit package and add a resource. 3. View package in browser - no sign of the resource - ERROR. 4. View package in API - resource is there. Reason: hash doesn't change because package.revision only takes account of core fields." 1290505078000000 1290506116000000 824 enhancement dread dread closed fixed 'Getdata' moved out of CKAN "Data importers should use API instead of object model directly: * saves load on server * much better error checking and authentication * eating our own dogfood (tests the API well)" 1290595507000000 1290595559000000 825 enhancement dread dread closed fixed Document fabric tool 1290609160000000 1290624449000000 840 enhancement dread dread ckan-v1.4-sprint-6 closed fixed On/off switch for ETags cache " * Use config variable to switch ETags caching on or off. Consider joining in with 'cache_enabled'. * Default setting for (all) caching should be off. * Needs documenting in configuration.rst" 1291308727000000 1302694133000000 858 defect dread dread closed fixed Tests for diff Test coverage for ckan.lib.diff is 24%. Need to improve 1291724171000000 1291734297000000 867 enhancement dread dread ckan-v1.3-sprint-1 closed fixed ckanclient raises exceptions "To be more pythonic, raise exceptions when ckanclient gets status which isn't 200. " 1291915162000000 1299866685000000 873 defect dread dread closed fixed ONS loader assigns packages to same package even when dept name added manually "e.g. national_child_measurement_programme had no department but ""Information Centre for Health and Social Care"" for agency, and TNA inferred it should be under department DoH. But now the next ONS update to this series expects a blank department, so creates a new package national_child_measurement_programme_." 1292437253000000 1292939274000000 897 defect dread dread closed duplicate """New package"" highlighted in Navigator when searching" "On ckan.net 1.3.1b, click on ""Search"" in the Navigator. Now both ""Search"" and ""New Package"" are highlighted." 1294648815000000 1294914333000000 919 enhancement dread dread ckan-v1.4-sprint-6 closed fixed Package preview contains API & datapkg instructions "1. Edit a package 2. Hit 'preview'. The preview contains the section ""CKAN API / datapkg"" which seems irrelevant at this point. Looking at ckan.net previews, the Comments section only appears when you view a package and not when you preview it. This seems more sensible - can this be done for the ""CKAN API / datapkg"" section too?" 1295346730000000 1303202627000000 931 enhancement dread dread ckan-v1.4-sprint-1 closed fixed Search results generator hides paging functionality ckanclient's search results list only packages up to the 'limit'. It would be good to return a generator instead of a list. When the limit is reached on the generator then another 'page' is loaded automatically. 1296147360000000 1298379187000000 932 enhancement dread dread ckan-v1.3 closed fixed Move to SQLAlchemy-Migrate 0.6 "Basic steps from kindly: * changing the setup.py dependencies for sqlalchemy-migrate and sqlalchemy to their latest versions. * running the migrate script on the repository (or changing the repository scripts manually). * checking in both these changes at once." 1296156660000000 1297076710000000 950 enhancement dread dread ckan-v1.3 closed fixed Move importer controller to ckanext-importer "ckan/controllers/importer.py provides a Pylons UI for importing spreadsheet data into CKAN. This would better live in an extension than core CKAN. In the same move, ckan/tests/misc/test_spreadsheet_importer.py, which is used by importer.py as well as various dgu data importers, should move into ckanext." 1296666038000000 1297079743000000 955 defect dread dread ckan-v1.3 closed fixed Tidy up tests "* Removal of init_db from every setup etc. * Get them working" 1296819300000000 1297342534000000 982 enhancement dread rgrp ckan-v1.4-sprint-2 closed fixed Remove various pip-requirements versions "We can just use the branch name to pull down specific versions of pip requirements so we don't need all the different versions in head. Remove them and update any client systems. Cost: 20m" 1297516060000000 1298887980000000 983 defect dread dread ckan-v1.3 closed fixed 'db upgrade' creates system priviledges (should leave priviledges alone) 1297518265000000 1297773407000000 1002 enhancement dread rgrp ckan-sprint-2011-12-05 closed fixed Remove changeset model code This code is unused and tests are disabled i belive. I suggest stripping this out (can always be re-added in an extension later). If we remove we should probably delete the relevant tables (and so a migration is needed). 1298489773000000 1322515696000000 1005 defect dread dread closed duplicate Editing in ckan missing publishers Package edit form at hmg.ckan.net has no publishers any more. 1298561348000000 1300100085000000 1018 task dread dread ckan-v1.4-sprint-3 closed fixed Remove gov form (It has been moved into ckanext-dgu) 1299072516000000 1299073340000000 1025 enhancement dread dread ckan-v1.4-sprint-3 closed fixed Default authz can be set in config "Currently the default authz for a package is hard-coded to: {{{ <PackageRole user=""visitor"" role=""editor"" context=""Package"">, <PackageRole user=""logged_in"" role=""editor"" context=""Package"">, }}} This should be configurable in the config, so that you can have a more locked down instance etc. " 1299596110000000 1299751045000000 1026 enhancement dread dread ckan-v1.4-sprint-3 closed fixed cli for creating users It's handy to be able to create users using the cli (e.g. dgu migration) 1299604652000000 1299605128000000 1028 defect dread dread ckan-v1.4-sprint-3 closed fixed Open redirect in locale setting 1299759883000000 1299760360000000 1033 defect dread dread closed fixed Register user with blank password causes 500 Go to http://ckan.net/user/register and fill in all the fields apart from password. On submit you get 500 error. 1299796274000000 1308310446000000 1038 enhancement dread dread ckan-v1.4 closed fixed Authz tool - operate on all packages at once Add 'package:all' to authz tool to allow mass changes of authz. 1300212788000000 1300212841000000 1039 enhancement dread dread ckan-v1.4 closed fixed Default user roles read from config (instead of being hard coded) 1300212822000000 1300212856000000 1042 task dread dread closed fixed 'Ckanext' split-up "It's not good to have ckanext doing lots of different things with different dependencies. Split it off into: * ckanext-importlib etc. And then deprecate the ckanext repo itself." 1300293907000000 1300969865000000 1045 defect dread dread ckan-v1.4-sprint-4 closed fixed Group identified by ID in API "{{{ http://ckan.net/api/2/rest/group }}} returns group IDs but I can only reach a group by name: {{{ http://ckan.net/api/2/rest/group/economics }}} when I also want to get a group by ID: {{{ http://ckan.net/api/2/rest/group/04fb43d2-8ddf-4485-9bf5-66d47d3672f3 }}}" 1300360642000000 1300793261000000 1048 enhancement dread dread ckan-v1.4-sprint-4 closed fixed Complete making groups versioned " * Deleting a group changes state to 'deleted' rather than purging it * Adding authz tests for deleted groups" 1300387655000000 1300702752000000 1052 defect dread dread ckan-v1.4-sprint-4 closed fixed Authz holes "No authz on: * Group creation/edit/listing * Package relationship create/edit/delete" 1300709144000000 1300895410000000 1053 defect dread dread ckan-v1.5 closed fixed Deletion in Model API "Currently in the API if you DELETE a package/group/user (and you have the required permissions) then it purges the object, when it should probably just set the state to deleted. There is no way to delete objects at the moment - changes to 'state' are ignored in the API. Do we need an alternative way to purge objects in the API?" 1300790039000000 1310126546000000 1055 defect dread dread ckan-v1.4-sprint-4 closed fixed @search_related tests not running "Tests marked decorated ""@search_related"" should only be run against postgresql, but in fact they don't get run at all. " 1300985228000000 1300992395000000 1056 defect dread pudo ckan-v1.4-sprint-6 closed fixed User links for OpenID users are broken "Use case: * Login using OpenID * Click on 'My account' - results in 404 Solutions: * User user.id instead of their name * Escape the URL properly. " 1301060249000000 1302882616000000 1058 defect dread dread ckan-v1.4-sprint-4 closed fixed Give 400 error (not 500) for invalid locale or package_form "Examples which prompt annoying exception emails: {{{ http://ckan.net/locale?locale=ja Module ckan.i18n:21 in set_session_locale assert locale in _KNOWN_LOCALES }}} A bot has caused these: {{{ http://ca.ckan.net/package/new?package_form=gov Module ckan.forms.registry:32 in get_fieldset raise ValueError('Could not find package_form name %r in those found: \n%r' % (package_form, [en.name for en in entrypoints])) ValueError: Could not find package_form name u'gov)' in those found: ['gov', 'standard', 'ca'] }}}" 1301302303000000 1301303315000000 1059 defect dread dread ckan-v1.4-sprint-5 closed fixed Loader coping better with poor search indexing Loader currently checks for same name, but also should check for name_, name__ etc. 1301310596000000 1301312516000000 1061 enhancement dread dread ckan-v1.4-sprint-5 closed invalid Orphaned home/license page No links to home/license and it contains out of date references to knowledgeforge. Remove it. 1301392968000000 1301922350000000 1066 enhancement dread dread ckan-v1.4-sprint-5 closed fixed Default reader role too permissive "The definition of the 'reader' role includes creating packages, which is too permissive for some CKAN instances (e.g. DGU). 'Reader' suggests only reading, so I think this role should avoid creating and editing. All projects so far want all roles to be able to create users, so this stays as a Reader action for now, as a convenience. Implementation: * Action.PACKAGE_CREATE removed from reader's default_role_actions * Visitor has a new default role, called 'anon_editor' which can edit packages, but not groups / auth groups - you have to log in for that. * Migration script not needed? * Code comments written, to make clear the suggested policy" 1301645250000000 1301932136000000 1067 enhancement dread dread ckan-v1.4-sprint-5 closed fixed CLI for loading/dumping complete databases Use 'db dump' and 'db load' for 'pg_dump' and 'psql -f' of a database. Use pylons config to find out database options. 1301645463000000 1302186503000000 1068 defect dread dread ckan-v1.4-sprint-5 closed fixed metadata_modified problem "This test has been failing since the clocks changed: {{{ ====================================================================== FAIL: ckan.tests.models.test_package.TestPackageRevisions.test_02_metadata_created_and_modified ---------------------------------------------------------------------- Traceback (most recent call last): File ""/home/dread/hgroot/pyenv-ckan2/lib/python2.6/site-packages/nose-0.11.3-py2.6.egg/nose/case.py"", line 186, in runTest self.test(*self.arg) File ""/home/dread/hgroot/ckan2/ckan/tests/models/test_package.py"", line 283, in test_02_metadata_created_and_modified assert out == exp, (out, exp) AssertionError: (datetime.datetime(2011, 4, 1, 10, 45, 50, 875509), datetime.datetime(2011, 4, 1, 9, 45, 50, 875509)) ---------------------------------------------------------------------- }}}" 1301652085000000 1302109505000000 1071 defect dread dread ckan-v1.4-sprint-5 closed fixed Package history API moved to /api/rest/package/revisions "api/rest/package_history is not RESTful or follow API naming conventions. Therefore move it to /api/rest/package/revisions Also, API docs incomplete." 1301937882000000 1301943180000000 1072 enhancement dread dread ckan-v1.4-sprint-5 closed fixed Add filters to authztool It takes several minutes to print the 'rights' on DGU, which is annoying when you only want to grep for a few lines. Much quicker than grepping is to filter in the query. 1302106311000000 1302106474000000 1073 enhancement dread dread ckan-v1.4-sprint-5 closed fixed Search index checker "Tool that checks which packages have not been indexed. Required for DGU: https://trac.dataco.coi.gov.uk/projects/datagov/ticket/940" 1302185444000000 1302185825000000 1085 defect dread johnlawrenceaspden closed fixed local development copy of ckan depends on existence of ckan.net "ckan.net appears to have either gone down or be running ultra slowly. this means that ckan copies running locally on my machine run very slowly indeed. is this behaviour desirable? This command finds lots of http://~~~ckan.net references in python, html and javascript files: find ~/pyenv/src \( -name ""*.py"" -or -name ""*.html"" -or -name ""*.js"" \) -print0 | xargs -0 -e grep --color -nH -e ""http://.*ckan.net"" output for reference: ------------------------------------------------------------------- /home/okfn/pyenv/src/ckan/ckan/__init__.py:5:Network (CKAN) site: http://www.ckan.net. /home/okfn/pyenv/src/ckan/ckan/lib/create_test_data.py:346:<http://ckan.net/> /home/okfn/pyenv/src/ckan/ckan/lib/rdf.py:3:DOMAIN = 'http://ckan.net' /home/okfn/pyenv/src/ckan/ckan/lib/rdf.py:4:CKAN_NAMESPACE = 'http://ckan.net/#' /home/okfn/pyenv/src/ckan/ckan/lib/talis.py:60: 'ckan':'http://ckan.net/ns#', /home/okfn/pyenv/src/ckan/ckan/public/scripts/bookmarklet.js:2: f='http://ckan.net/package/new?url='+encodeURIComponent(window.location.href)+'&title='+encodeURIComponent(document.title); /home/okfn/pyenv/src/ckan/ckan/public/scripts/test_bookmarklet.html:16: addtockan.src='http://ckan.net/scripts/bookmarklet.js'; /home/okfn/pyenv/src/ckan/ckan/public/scripts/test_bookmarklet.html:27: <p><strong>Proper bookmarklet (compressed -- need to escape &):</strong> <a href=""javascript:(function(){f='http://ckan.net/package/new?url='+encodeURIComponent(window.location.href)+'&title='+encodeURIComponent(document.title);if((n=document.getElementsByName('description')[0])&&(d=n.content)){f+='&notes='+encodeURIComponent(d);}a=function(){if(!window.open(f)){location.href=f;}};if(/Firefox/.test(navigator.userAgent)){setTimeout(a,0)}else{a()}})()"">Add to CKAN</a> /home/okfn/pyenv/src/ckan/ckan/templates/home/license.html:31: For convenience, all material - including all package, tag and revision information - is available in bulk, in the form of a full dump of the CKAN database. This (gzipped) dump file is updated daily and can be downloaded from <a href=""http://www.ckan.net/dump/"">http://www.ckan.net/dump/</a>. /home/okfn/pyenv/src/ckan/ckan/tests/dictization.py:71: 'notes': u'Some test notes\n\n### A 3rd level heading\n\n**Some bolded text.**\n\n*Some italicized text.*\n\nForeign characters:\nu with umlaut \xfc\n66-style quote \u201c\nforeign word: th\xfcmb\n \nNeeds escaping:\nleft arrow <\n\n<http://ckan.net/>\n\n', /home/okfn/pyenv/src/ckan/ckan/tests/dictization.py:137: 'notes': u'Some test notes\n\n### A 3rd level heading\n\n**Some bolded text.**\n\n*Some italicized text.*\n\nForeign characters:\nu with umlaut \xfc\n66-style quote \u201c\nforeign word: th\xfcmb\n \nNeeds escaping:\nleft arrow <\n\n<http://ckan.net/>\n\n', /home/okfn/pyenv/src/ckan/ckan/tests/dictization.py:447: 'notes': u'Some test notes\n\n### A 3rd level heading\n\n**Some bolded text.**\n\n*Some italicized text.*\n\nForeign characters:\nu with umlaut \xfc\n66-style quote \u201c\nforeign word: th\xfcmb\n \nNeeds escaping:\nleft arrow <\n\n<http://ckan.net/>\n\n', /home/okfn/pyenv/src/ckan/ckan/tests/dictization.py:458: 'notes': u'Some test notes\n\n### A 3rd level heading\n\n**Some bolded text.**\n\n*Some italicized text.*\n\nForeign characters:\nu with umlaut \xfc\n66-style quote \u201c\nforeign word: th\xfcmb\n \nNeeds escaping:\nleft arrow <\n\n<http://ckan.net/>\n\n', /home/okfn/pyenv/src/ckan/ckan/tests/functional/api/base.py:178: assert '""ckan_url"": ""http://test.ckan.net/package/annakarenina""' in msg, msg /home/okfn/pyenv/src/ckanclient/ckanclient/__init__.py:116: api e.g. http://ckan.net/api rather than http://ckan.net/api/rest) /home/okfn/pyenv/src/ckanclient/ckanclient/__init__.py:261: :param base_location: default *http://www.ckan.net/api* /home/okfn/pyenv/src/ckanclient/ckanclient/__init__.py:267: base_location = 'http://www.ckan.net/api' --------------------------------------------------------------------" 1302620434000000 1302625314000000 1089 enhancement dread dread ckan-v1.4-sprint-6 closed fixed "Check for ""--ckan"" when running nosetests" (because if you forget, you get difficult to understand errors, and more than one person has tripped up on this) 1302631189000000 1302631733000000 1090 defect dread dread ckan-v1.4-sprint-6 closed fixed Visitor can't create packages on new CKAN install "Default visitor roles in default config is reader, not anon_editor. Problem caused by changes in #1066 (released in 1.3.3) New installs will be affected, although simple to just increase permissions when the installer realises a visitor can't create packages. The solution to the config getting out of sync with the code like this is to not have the default_roles in the config - refer to the code in the configuration instructions." 1302635219000000 1302635699000000 1093 defect dread dread ckan-v1.4-sprint-6 closed fixed 500 errors on GET to api/rest/licenses CKAN gets its license list from a license service, which can be a local file, but is often the http://licenses.opendefinition.org/2.0/ckan_original server. This server is currently flakey, but I think we only request the list on start up. The problem is we query it much more often than required. It is queried for every request to api/rest/licenses, and we are returning lots of 500 errors when the license server is timing out. 1302862261000000 1302865470000000 1097 enhancement dread dread ckan-v1.4-sprint-6 closed fixed Sidebar hideable The web interface has a sidebar (#primary) which should be hidden in some pages. This is for QA extension and useful for package new and edit pages. Must be compatible with DGU theme. 1303293416000000 1303293476000000 1098 task dread dread ckan-v1.4-sprint-6 closed fixed --ckan-migration tests not initialised correctly Only tests with failing --ckan-migration fail, due to authz not being initialised. 1303377336000000 1303406017000000 1104 defect dread johnlawrenceaspden ckan-v1.4-sprint-7 closed fixed create-test-data doesn't index the packages it creates "With the default test data created by paster db clean paster db init paster create-test-data going to the front page shows two recently changed packages A Wonderful Story A Novel by Tolstoy But none of those words ""Wonderful"", etc produce search hits. In fact as far as I can tell, nothing produces any search hits. That isn't true on ckan.net, where searching seems to work. " 1303494635000000 1303920791000000 1112 enhancement dread dread ckan-v1.4-sprint-7 closed fixed Allow searching for all packages "{{{ GET api/search/package?q= }}} returns all packages. This is so you can filter them e.g. by openness, which is not currently possible." 1304007852000000 1304358643000000 1114 enhancement dread dread ckan-v1.4-sprint-7 closed fixed CLI for viewing search index of a package To see what lexemes are generated for debug purposes. 1304078353000000 1304085484000000 1116 defect dread dread ckan-v1.4-sprint-7 closed fixed api search loses boolean q options filter_by_openness and filter_by_downloadable options don't work when specified as URI parameters. (They do work in qjson parameters) 1304086823000000 1304358664000000 1123 requirement dread nils.toedtmann closed fixed "Please re-package CKAN packages as ""noarch""" "... or, if the CKAN packages do contain architecture-specific binary code, build packages for i386 too. Currently, http://apt-alpha.ckan.org/debian only offers packages for amd64, but e.g. ""m1.small"" EC2 instances are i386. We would need this in order to migrate the community instances to a packaged based CKAN. Rufus, pls prioritise." 1304530050000000 1311863806000000 1125 enhancement dread nils.toedtmann closed fixed "Debian package ""ckan"" should not depend on ""postgresql""" "The debian package ""ckan"" with the two scripts ""ckan-create-instance"" and ""ckan-instance-maintenance"" depends against ""postgresql"". But ""ckan-create-instance"" is quite handy even when the DB is remote: it creates all the data dirs with the correct permissions, and the ckan and apache configs. Please add a flag ""--without-local-db"" to ""ckan-create-instance"" and remove the postgres dependancy from the debain package." 1304538095000000 1310134813000000 1126 enhancement dread dread ckan-v1.4-sprint-7 closed fixed Exceptions arising from error page "I'm not completely clear what the use case is for loading the error page in this way, but somehow original_request is None and that creates an unnecessary exception with the logic refactor. {{{ http://ckan.net/error/document?__cache=39020485 ... Module ckan.controllers.error:29 in document << original_response = request.environ.get('pylons.original_response') # Bypass error template for API operations. if original_request.path.startswith('/api'): return original_response.body # Otherwise, decorate original response with error template. >> if original_request.path.startswith('/api'): AttributeError: 'NoneType' object has no attribute 'path' }}}" 1304586683000000 1304587078000000 1128 task dread dread ckan-sprint-2011-10-28 closed fixed Upload Scotland gov data "Upload to ckan.net: https://sites.google.com/site/scotlandsdata/" 1304712293000000 1310568028000000 1131 defect dread dread ckan-v1.4-sprint-7 closed fixed Search param validation exception not caught "Example request: {{{ http://nl.ckan.net/api/2/search/package?q=delft&order_by=&offset=&limit=&tags= }}} Gives 500 error: {{{ <type 'exceptions.ValueError'>: invalid literal for int() with base 10: '' }}}" 1304942023000000 1305537897000000 1143 enhancement dread dread ckan-v1.5-sprint-2 closed fixed Improve stats page " * Ensure we don't include deleted packages in the stats * Some visual improvements: * Number of packages: * fix x axis to start at first revision * fix y axis to start at zero * Fix problem with legend to 'Revisions to packages' graph. * Hide sidebar in the template, so it isn't right-cropped in the DGU theme * Add some testing of the stats lib - results of basic stats" 1305734836000000 1307024681000000 1169 enhancement dread dread ckan-v1.5-sprint-2 closed fixed Link to csv/json dumps on ckan.net 1306749768000000 1306754833000000 1170 defect dread dread ckan-v1.5-sprint-2 closed fixed Production deployment docs out of date "Need to cover pip-requirements.txt on different branches in the doc/deployment.rst. Also could do with tidying up upgrade.txt into this document too." 1306864171000000 1306864422000000 1172 defect dread thejimmyg ckan-sprint-2011-10-28 closed fixed Remove all try: except: blocks that don't re-raise the original exception The current codebase has one or two try: except; blocks that don't catch specific exceptions. Under no circumstances should any broad try: except: blocks be allowed unless the exceptions they catch are immediately re-raised. Uncaught exceptions are wasting us quite a lot of time when trying to track down problems. 1306926049000000 1314118883000000 1175 defect dread fccoelho@… closed invalid Stats extension not working "Hi, I get a 500, Internal server error when I enable ckanext-stats. Flavio" 1307350823000000 1325355170000000 1180 defect dread dread ckan-v1.5-sprint-3 closed fixed Links in markdown can be badly formed "User can insert bad anchor tags into the User-About and Package-Notes fields and when you view them (web interface) it causes a 500 error. Need to improve filtering for anchors in markdown. {{{ <a href=""http://xxxsex.com>nasty/website }}} Also check this related exception: {{{ Module ckan.controllers.user:59 in read << c.is_myself = user.name == c.user c.api_key = user.apikey c.about_formatted = self._format_about(user.about) revisions_q = model.Session.query(model.Revision ).filter_by(author=user.name) >> c.about_formatted = self._format_about(user.about) Module ckan.controllers.user:167 in _format_about << def _format_about(self, about): about_formatted = ckan.misc.MarkdownFormat().to_html(about) return genshi.HTML(about_formatted) def _get_form_password(self): >> return genshi.HTML(about_formatted) WebApp Error: <class 'genshi.input.ParseError'>: junk characters in start tag: u'\u201dhttp://www.settingu': line 1, column 3 }}}" 1307469037000000 1307544223000000 1181 defect dread dread closed fixed Link spam vulnerability in Notes and User-About fields "When viewing a user and a package, the about/notes fields contain Markdown, which may have links. These should have rel=""nofollow"" to discourage link spam." 1307523160000000 1307532816000000 1187 enhancement dread dread ckan-v1.5-sprint-3 closed fixed Stop spam users with links in the 'about' field When you edit a user, you should be stopped from putting links in the 'about' field, because this is a common tactic by spammers. 1308142999000000 1308143605000000 1191 defect dread dread ckan-v1.5-sprint-3 closed fixed Unicode in user password gives 500 error on user registration Create/register a user with a unicode character in the password. It creates the user, but the redirect to the user page doesn't work and results in 500 error. 1308312895000000 1308650930000000 1196 defect dread dread ckan-v1.5-sprint-3 closed fixed Markdown logging ignores config settings Markdown produces Debug logging, even when the pylons logging config is set to level of Info or Warning. This clogs up the logfile. 1308743476000000 1308743857000000 1207 enhancement dread dread closed fixed ckanclient.package_entity_get should raise more specific exception When package does not exist in ckan catalogue, ckanclient.package_entity_get should raise more specific exception, such as CkanNotFoundError instead of generic CkanApiError. 1309515582000000 1311325343000000 1210 defect dread dread ckan-v1.5-sprint-4 closed fixed POST application/json error handling with newer WebOb "WebOb from v1.0.7 has some interesting new behaviour with reading request data for different Content-Types: * It seems that looking at request.body mangles request.POST. See fix in ckan cset:e83bad9caa1b (problem with WebOb v1.0.7 but may go back to v1.0.4?) * A particular request caused an AssertionError during looking at request.body, so we need to enclose this in a try/except. I couldn't recreate it in a test unfortunately (problem with WebOb v1.0.7 but may go back to v1.0.2?) Example: {{{ Module ckan.controllers.api:206 in create << log.debug('create: %s' % (context)) try: request_data = self._get_request_data() except ValueError, inst: response.status_int = 400 >> request_data = self._get_request_data() Module ckan.lib.base:149 in _get_request_data << cls.log.debug('Retrieving request params: %r' % request.params) cls.log.debug('Retrieving request POST: %r' % request.POST) cls.log.debug('Retrieving request POST body: %r' % request.body) if request.POST: try: >> cls.log.debug('Retrieving request POST body: %r' % request.body) Module paste.registry:137 in __getattr__ << def __getattr__(self, attr): return getattr(self._current_obj(), attr) def __setattr__(self, attr, value): >> return getattr(self._current_obj(), attr) Module webob.request:470 in _body__get << Return the content of the request body. """""" self.make_body_seekable() # we need this to have content_length r = self.body_file.read(self.content_length) self.body_file.seek(0) >> self.make_body_seekable() # we need this to have content_length Module webob.request:697 in make_body_seekable << self.body_file_raw.seek(0) else: self.copy_body() >> self.copy_body() Module webob.request:714 in copy_body << self.body = self.body_file_raw.read(length) elif self.is_body_readable: self.body = self.body_file_raw.read() self._copy_body_tempfile() else: >> self.body = self.body_file_raw.read() Module webob.request:1190 in read << def read(self, size=-1): body = self._get_body() if size < 0: v = body[self.position:] >> body = self._get_body() Module webob.request:1207 in _get_body << self._body = _encode_multipart(self.vars, self.content_type) else: assert 0, ('Bad content type: %r' % self.content_type) return self._body >> assert 0, ('Bad content type: %r' % self.content_type) AssertionError: Bad content type: '; charset=utf-8' }}}" 1309949451000000 1309974781000000 1214 defect dread dread closed worksforme API improvements (following javascript use) "Notes on the CKAN API from Aron: * Server returns text/html for errors even when ""Accept: application/json"" header is set. * DELETE package request requires a Content-Length? Should be 405 Method Not Allowed? * Tag returned as a JSON object when updating but as a string when requesting. Same with ""extras"" content. * How to remove key from ""extras"" object? Passing None as described in the docs is invalid JSON and using null doesn't work. * Tags return package names rather than ids when querying GET /tag/{id} * Doesn't return rendered_text property on package update. * Relationships use ""object"" key rather than id or package_id." 1309975222000000 1314029628000000 1217 defect dread dread ckan-sprint-2011-11-07 closed invalid Diff exception "Exception raised doing this particular diff. http://ckan.net/revision/diff/sudocfr?diff_entity=package&oldid=a18b2520-09e0-44be-80dd-4fea94ffe7d1&diff=3934ff16-a3a7-4481-b390-72944903b945 {{{ ... Module ckan.controllers.revision:142 in diff << if c.diff_entity == 'package': c.pkg = model.Package.by_name(id) diff = c.pkg.diff(c.revision_to, c.revision_from) elif c.diff_entity == 'group': c.group = model.Group.by_name(id) >> diff = c.pkg.diff(c.revision_to, c.revision_from) Module ckan.model.package:449 in diff << display_id = to_obj_rev.tag.name elif obj_class.__name__ == 'PackageExtra': display_id = to_obj_rev.key else: display_id = related_obj_id[:4] >> display_id = to_obj_rev.key AttributeError: 'NoneType' object has no attribute 'key' }}} Seems to be to do with this particular extra key: {{{ [<PackageExtraRevision id=ba1f3b3e-f61f-4924-bae0-ec3dd2163ae4 package_id=febe4da9-5874-4411-a7da-b497fdebf739 key=namespace value=http://www.sudoc.fr/ state=active revision_id=5ec8e730-c73d-4f1c-989b-2e015eb3d315 continuity_id=ba1f3b3e-f61f-4924-bae0-ec3dd2163ae4 expired_id=None revision_timestamp=2011-07-08 13:48:11.027260 expired_timestamp=9999-12-31 00:00:00 current=True>] }}} Is it because it was created between the from_revision and to_revision?" 1310375498000000 1320663277000000 1218 enhancement dread minspamboks@… ckan-sprint-2011-10-28 closed fixed Colour the History tab icon "Change the color of the ""History"" tab icon to yellowish, like the rest of the icons in the other tabs (""View"" and ""Edit"", ""Authorization""). == Reasoning == When you view a data package, for instance http://ckan.net/package/thesaurus-w, you will see ""View"", ""Edit"", ""History"" tabs on the top. ""History"" tab has a black-and-white icon which makes it look like an inactive/disabled tab (since the text is also grayed out when the tab is not selected). This is not a major issue, but it is a little bit confusing for the users. This icon exists in v1.3.2 and also in v1.4.1a (that runs on ckan.net). The simple solution would be to change the color of the ""History"" tab icon and give it the same yellowish color like the rest of the icons in the other tabs (e.g. ""View"" and ""Edit"")." 1310375768000000 1310389390000000 1221 defect dread dread ckan-sprint-2011-10-28 closed fixed Password reset tidy up " * No tests. * 500 error given when user is not found." 1310475661000000 1310556607000000 1222 defect dread dread ckan-sprint-2011-10-28 closed fixed Mailer has no tests 1310479136000000 1310556618000000 1225 enhancement dread dread ckan-sprint-2011-10-28 closed fixed Tool for mass tag changes Using ckanapi 1310642161000000 1310642407000000 1228 enhancement dread dread ckan-sprint-2011-10-28 closed fixed Display OpenID login errors When there are errors when logging into OpenID, these don't get displayed. You just get the login screen again. 1311086562000000 1311325161000000 1229 enhancement dread thejimmyg ckan-sprint-2011-10-24 closed fixed Refactor all database code out of the controllers and into the logic layer "Progress can be tracked in this document: https://spreadsheets.google.com/spreadsheet/ccc?key=0Atp3cZFjuIOAdFQzRnVoUHV6ckoyblI5TUdEcnJLVlE&hl=en_US#gid=0" 1311093924000000 1319645778000000 1234 enhancement dread dread ckan-sprint-2011-10-28 closed fixed Setting locale error conditions handled badly Needs tests for error conditions for bad locale and redirect parameters. 1311179871000000 1311183328000000 1236 enhancement dread dread ckan-sprint-2011-11-07 closed fixed View a package at a given revision "As a user I want to view a package at a given revision: * When I visit /package/osm@yyyy-mm-dd or /package/osm@rrrrrrr I should be shown package at date yyyy-mm-dd or revision rrrrrrr. * viewing this page, it should say it is the old revision, just like wikipedia * package history page should provide links to these pages " 1311269333000000 1330019788000000 1248 defect dread dread ckan-sprint-2011-11-07 closed fixed License exception "Exception received on test.ckan.net at 10.12 on 29/7/11 {{{ http://test.ckan.net/package?__cache=2759373&page=4 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:153 in search << } query = get.package_search(context,data_dict) c.page = h.Page( >> query = get.package_search(context,data_dict) Module ckan.logic.action.get:514 in package_search << for package in query.results: result_dict = table_dictize(package, context) result_dict = _extend_package_dict(result_dict,context) results.append(result_dict) >> result_dict = _extend_package_dict(result_dict,context) Module ckan.logic.action.get:537 in _extend_package_dict << license_id = package_dict['license_id'] if license_id: isopen = model.Package.get_license_register()[license_id].isopen() package_dict['isopen'] = isopen else: >> isopen = model.Package.get_license_register()[license_id].isopen() Module ckan.model.license:59 in __getitem__ << return default else: raise KeyError, ""License not found: %s"" % key def get(self, key, default=None): >> raise KeyError, ""License not found: %s"" % key KeyError: u'License not found: None' }}} and a similar one: {{{ http://test.ckan.net/tag/barbecue Module pylons.wsgiapp:324 in dispatch << if log_debug: log.debug(""Calling controller class with WSGI interface"") return controller(environ, start_response) def load_test_env(self, environ): >> return controller(environ, start_response) Module ckan.lib.base:118 in __call__ << # available in environ['pylons.routes_dict'] try: return WSGIController.__call__(self, environ, start_response) finally: model.Session.remove() >> return WSGIController.__call__(self, environ, start_response) Module pylons.controllers.core:221 in __call__ << return response(environ, self.start_response) response = self._dispatch_call() if not start_response_called: self.start_response = start_response >> response = self._dispatch_call() Module pylons.controllers.core:172 in _dispatch_call << req.environ['pylons.action_method'] = func response = self._inspect_call(func) else: if log_debug: >> response = self._inspect_call(func) Module pylons.controllers.core:107 in _inspect_call << func.__name__, args) try: result = self._perform_call(func, args) except HTTPException, httpe: if log_debug: >> result = self._perform_call(func, args) Module pylons.controllers.core:60 in _perform_call << """"""Hide the traceback for everything above this method"""""" __traceback_hide__ = 'before_and_this' return func(**args) def _inspect_call(self, func): >> return func(**args) Module ckan.controllers.tag:2 in read Module ckan.lib.cache:167 in wrapper << log = __import__(""logging"").getLogger(""proxy_cache"") def wrapper(func, *args, **kwargs): result = func(*args, **kwargs) pylons = get_pylons(args) >> result = func(*args, **kwargs) Module ckan.controllers.tag:64 in read << data_dict = {'id':id} try: c.tag = get.tag_show(context,data_dict) except NotFound: abort(404, _('Tag not found')) >> c.tag = get.tag_show(context,data_dict) Module ckan.logic.action.get:341 in tag_show << extended_packages = [] for package in tag_dict['packages']: extended_packages.append(_extend_package_dict(package,context)) tag_dict['packages'] = extended_packages >> extended_packages.append(_extend_package_dict(package,context)) Module ckan.logic.action.get:537 in _extend_package_dict << license_id = package_dict['license_id'] if license_id: isopen = model.Package.get_license_register()[license_id].isopen() package_dict['isopen'] = isopen else: >> isopen = model.Package.get_license_register()[license_id].isopen() Module ckan.model.license:59 in __getitem__ << return default else: raise KeyError, ""License not found: %s"" % key def get(self, key, default=None): >> raise KeyError, ""License not found: %s"" % key KeyError: u'License not found: CreativeCommonsAttributionCCBY25' }}}" 1311954136000000 1319797763000000 1254 task dread dread ckan-sprint-2011-10-28 closed fixed Feature sheet Compose a feature list for CKAN. Use the existing Feature Matrix. Basic explanation of terms. For use by customers. 1312211925000000 1313401629000000 1263 enhancement dread dread closed fixed Bad name for logic action in API causes Exception "A bad action name: e.g. curl http://test.ckan.net/api/action/user_showaa -d '{}' causes 500 response. Occurs only on 1.4.3 beta." 1312479020000000 1314029279000000 1265 defect dread dread ckan-sprint-2011-10-28 closed fixed user/edit error conditions cause exceptions "We get exceptions on these occasions: * user/edit if not logged in * user/edit/bob if bob is not a known user These are a problem only on 1.4.3b. Introduced in #1229 - merge of branch feature-1229-db-out-of-controllers" 1312565788000000 1312566052000000 1266 defect dread dread ckan-sprint-2011-10-28 closed fixed Timestamps without microseconds causing exception "I'm not sure why some timestamps are missing microseconds in the ckan.net data, but plenty seem to. This causes this exception when viewing the package rss feed: {{{ URL: http://ckan.net/package/history/sfk_publishing?format=atom&days=7 In Module ckan.lib.helpers:227 in date_str_to_datetime WebApp Error: <type 'exceptions.ValueError'>: time data '2008-04-13T20:40:20' does not match format '%Y-%m-%dT%H:%M:%S.%f' }}} Only seen with ckan 1.4.3b" 1312794831000000 1312797477000000 1267 defect dread dread closed fixed Random exception: cannot set the body to a unicode value "Occasionally see this problem when producing an error page. Here's an example {{{ WebApp Error: <type 'exceptions.TypeError'>: You cannot set the body to a unicode value without a charset URL: http://at.ckan.net/authorizationgroup/new Module weberror.errormiddleware:162 in __call__ << __traceback_supplement__ = Supplement, self, environ sr_checker = ResponseStartChecker(start_response) app_iter = self.application(environ, sr_checker) return self.make_catching_iter(app_iter, environ, sr_checker) except: >> app_iter = self.application(environ, sr_checker) Module beaker.middleware:73 in __call__ << self.cache_manager) environ[self.environ_key] = self.cache_manager return self.app(environ, start_response) >> return self.app(environ, start_response) Module beaker.middleware:152 in __call__ << headers.append(('Set-cookie', cookie)) return start_response(status, headers, exc_info) return self.wrap_app(environ, session_start_response) def _get_session(self): >> return self.wrap_app(environ, session_start_response) Module routes.middleware:130 in __call__ << environ['SCRIPT_NAME'] = environ['SCRIPT_NAME'][:-1] response = self.app(environ, start_response) # Wrapped in try as in rare cases the attribute will be gone already >> response = self.app(environ, start_response) Module pylons.wsgiapp:125 in __call__ << controller = self.resolve(environ, start_response) response = self.dispatch(controller, environ, start_response) if 'paste.testing_variables' in environ and hasattr(response, >> response = self.dispatch(controller, environ, start_response) Module pylons.wsgiapp:324 in dispatch << if log_debug: log.debug(""Calling controller class with WSGI interface"") return controller(environ, start_response) def load_test_env(self, environ): >> return controller(environ, start_response) Module ckan.lib.base:117 in __call__ << # available in environ['pylons.routes_dict'] try: return WSGIController.__call__(self, environ, start_response) finally: model.Session.remove() >> return WSGIController.__call__(self, environ, start_response) Module pylons.controllers.core:284 in __call__ << if log_debug: log.debug(""Calling Response object to return WSGI data"") return response(environ, self.start_response) if log_debug: >> return response(environ, self.start_response) Module webob.exc:248 in __call__ << return [] if not self.body and not self.empty_body: return self.generate_response(environ, start_response) return Response.__call__(self, environ, start_response) >> return self.generate_response(environ, start_response) Module webob.exc:239 in generate_response << status=self.status, headerlist=headerlist, content_type=content_type ) return resp(environ, start_response) >> content_type=content_type Module webob.response:94 in __init__ << if charset is None: raise TypeError( ""You cannot set the body to a unicode value without a charset"") body = body.encode(charset) self._body = body >> ""You cannot set the body to a unicode value without a charset"") TypeError: You cannot set the body to a unicode value without a charset }}}" 1312889084000000 1312897724000000 1270 defect dread dread ckan-sprint-2011-10-28 closed fixed Default site www.ckan.net is a redirect and loses POSTs "The default site was www.ckan.net, which had an Apache 301 redirect to ckan.net, but the problem was urllib was not rePOSTing stuff. This affected search parameters: {{{ In [1]: import ckanclient In [2]: c = ckanclient.CkanClient() In [3]: c2 = ckanclient.CkanClient('http://ckan.net/api') In [4]: c.package_search('', search_options={'groups':'openspending'}) Out[4]: {u'count': 2102, u'results': <generator object _result_generator at 0x10168b1e0>} In [5]: c2.package_search('', search_options={'groups':'openspending'}) Out[5]: {u'count': 29, u'results': <generator object _result_generator at 0x10168b410>} }}} Thanks to borior for finding this and raising it." 1312911847000000 1312912188000000 1283 enhancement dread dread ckan-backlog closed fixed Deleted packages shouldn't be searchable or browsable "A package in deleted state doesn't show to general users, but admins DO see them. The idea is that they can resurrect them if they want. But now we have the trash can that lists deleted packages. So we don't want admins to see the deleted packages anywhere else. (But an admin should still be able to READ and EDIT a deleted package, so if he clicks on it in the trash list he can see it to decide whether to resurrect and actually be able to change its state.) Same in the Web interface and API. This ticket ties in with #948 highlighting a package being deleted (when viewing or editing) and follows on from the introduction of the trash can #1076." 1314112481000000 1330083933000000 1284 defect dread rgrp closed fixed Lots of revisions being created on datahub.org Revisions aren't assigned to packages. Where are they coming from? This seems to have been occurring since the upgrade to 1.4.3b a couple of weeks ago? 1314113015000000 1315215626000000 1290 enhancement dread dread ckan-backlog closed fixed Better error when blank database "When installing CKAN, when doing ""paster serve development.ini"", lots of users encounter the error for every request: {{{ ProgrammingError: (ProgrammingError) relation ""user"" does not exist }}} This is because the database tables have not been created - they have forgotten or missed the ""paster db init"" step. Can we provide a better error to say that the database is not initialised yet? == Implementation options == 1. At the start of every request we reflect the database tables and check they are there. This is rather expensive! 2. Uncached requests to the home page start with a cheap database query. If there is an exception then return this error about database setup. I really like Drupal's page for this that has in large letters that the site is currently off-line. Below a line, in small letters, there are developer suggestions on what is wrong and where to look to fix it." 1314264255000000 1314270894000000 1292 enhancement dread dread ckan-sprint-2011-11-07 closed fixed Internationalization improvements " * Review process of releases and updating strings (pot) and translations (po) files * c.f. http://lists.okfn.org/pipermail/ckan-dev/2011-May/000718.html * Get language changing thing to get home page to mostly work - push to key strings translated (or don't advertise the translation?) * Review long list of strings for improvement * Consolidate any? * Get rid of i18n for strings in api * Try and remove javascript * Add in extensions * #1374 Fix switching to en from other default language * #1417 Fix browser language detection" 1314303314000000 1320145732000000 1310 defect dread dread ckan-sprint-2011-09-12 closed fixed API GET of a revision that has been approved causes exception "e.g. this particular revision on ckan.net: http://ckan.net/api/rest/revision/9601fbcb-03a7-4ebc-981d-5aa16df4852c (most others have not been approved) Causes 500 error." 1315234899000000 1315820419000000 1312 enhancement dread florian.marienfeld@… ckan-sprint-2011-10-28 closed invalid Particular characters in JSON cause exception creating package on API "From Florian: {{{ I am having trouble with the characters ""=&;"". if they occur e.g. in the title of a package, I get a 400-Bad-Request when I try to register a package by POSTing to ckan/rest/api/package However, when I PUT the same package as an edit to ckan/rest/api/package/existing_package, it works and the title shows correctly on the front end and API. }}} == Reproduced == {{{ (pyenv-ckan)dread@dread-laptop:~/hgroot/ckan$ curl -i http://localhost:5000/api/rest/package -d '{""name"": ""test3"", ""title"": ""Test &""}' -H ""Authorization:tester"" HTTP/1.0 400 Bad Request Server: PasteWSGIServer/0.5 Python/2.6.5 Date: Tue, 06 Sep 2011 14:09:31 GMT Pragma: no-cache Cache-Control: no-cache Content-Type: application/json;charset=utf-8 Content-Length: 87 ""Bad request - JSON Error: Unterminated string starting at: line 1 column 27 (char 27)"" }}}" 1315318863000000 1315327743000000 1315 enhancement dread dread ckan-sprint-2011-11-07 closed fixed Document /api/action We need some documentation for the /api/action. Even though it's beta and subject to change it would be good to have a guide. 1315396722000000 1320173768000000 1318 defect dread dread ckan-sprint-2011-10-28 closed fixed 'Register user' doesn't log you in "When you register a user, it doesn't seem to be logged in properly straight away. Top-right it invites you to ""log in"" and ""register"". Also the ""create package"" menu option doesn't appear. Going to /user/me sends you to login page. If you then login, then all these things are corrected." 1315415783000000 1315569362000000 1321 defect dread dread ckan-sprint-2011-10-24 closed fixed Flash message deferred "When you reset a password, the flash message saying ""check your email"" sometimes doesn't display on the next page. You then click on the link in your email and it displays on that page (i.e. too late). Seen this on thedatahub.org. To do with the proxy caching?" 1315474657000000 1319814460000000 1323 enhancement dread dread ckan-sprint-2011-10-28 closed fixed GET /authorizationgroup causes Exception when logged in on thedatahub.org 1315475685000000 1315594333000000 1325 defect dread dread ckan-sprint-2011-09-12 closed fixed python 2.5 incompatibilities "We claim to support Python 2.5 (useful for Lenny), yet a few problems have crept in: * 'with' statement requires {{{from __future__ import with_statement}}} * import json from ckan.lib.helpers, rather than directly, since it copes with reverting to simplejson, used in python 2.5." 1315580452000000 1315587113000000 1329 defect dread amercader ckan-sprint-2011-10-28 closed fixed i18n poor in some templates - missing i18n tags "Just a tip for developers regarding translations: * When writing templates, mark <p>, <div>, etc elements with the i18:msg attribute, otherwise the messages don't get extracted properly. Good: https://bitbucket.org/okfn/ckan/src/1996b0439e81/ckan/templates/home/about.html#cl-40 {{{ <p i18n:msg="""">More about CKAN, and the background to its creation can be found in <a href=""http://m.okfn.org/files/talks/opentech_20080705/"">these slides</a>.</p> }}} gives this: https://bitbucket.org/okfn/ckan/src/1996b0439e81/ckan/i18n/ca/LC_MESSAGES/ckan.po#cl-1238 Bad: https://bitbucket.org/okfn/ckan/src/1996b0439e81/ckan/templates/package/new_package_form.html#cl-211 {{{ <p class=""hints""> <strong>Important:</strong> By submitting content, you agree to release your contributions under the <a href=""http://opendatacommons.org/licenses/odbl/1.0/"">Open Database License</a>. Please <strong>refrain</strong> from editing this page if you are <strong>not</strong> happy to do this. </p> }}} gives this: https://bitbucket.org/okfn/ckan/src/1996b0439e81/ckan/i18n/ca/LC_MESSAGES/ckan.po#cl-1384 The message is split in different parts that not necessarily match the grammar or syntax of the translated language." 1315824288000000 1317404566000000 1331 defect dread dread closed worksforme Setting a tag twice causes exception "To reproduce: 1. Create a package with two tags the same: ""bulk bulk"" 2. Click 'save' 3. 500 ERROR - 'Server Error'" 1315905959000000 1325355631000000 1340 defect dread dread ckan-sprint-2011-10-28 closed fixed Editing non-existent group causes Exception "e.g. http://ckan.net/group/edit/history {{{ Module ckan.controllers.group:135 in edit << try: old_data = get_action('group_show')(context, data_dict) c.grouptitle = old_data.get('title') c.groupname = old_data.get('name') >> old_data = get_action('group_show')(context, data_dict) Module ckan.logic.action.get:347 in group_show << if group is None: raise NotFound check_access('group_show',context, data_dict) >> raise NotFound }}}" 1315991374000000 1315991534000000 1346 defect dread dread ckan-sprint-2011-10-28 closed fixed 'get_authorization_group_dict not found' exception "This stems from a feature to allow you to prefill fields in the authorizationgroup creation form. e.g. http://ckan.net/authorizationgroup/new?name=science It's not tested, not supported in the new logic layer and therefore broken. I don't think anyone uses it - can remove it." 1316081974000000 1316094632000000 1347 defect dread dread ckan-sprint-2011-10-28 closed fixed Exception caused by New Group form POST with bad formed parameter "Exception caused by bots POSTing 'new group' form, but with bad (old-style) parameters. {{{ <type 'exceptions.ValueError'>: invalid literal for int() with base 10: 'cache' ... Module ckan.controllers.group:102 in new << if context['save'] and not data: return self._save_new(context) data = data or {} >> return self._save_new(context) Module ckan.controllers.group:152 in _save_new << try: data_dict = clean_dict(unflatten( tuplize_dict(parse_params(request.params)))) context['message'] = data_dict.get('log_message', '') group = create.group_create(data_dict, context) >> tuplize_dict(parse_params(request.params)))) Module ckan.logic:57 in tuplize_dict << for num, key in enumerate(key_list): if num % 2 == 1: key_list[num] = int(key) tuplized_dict[tuple(key_list)] = value return tuplized_dict >> key_list[num] = int(key) ValueError: invalid literal for int() with base 10: 'cache' }}}" 1316094466000000 1316094608000000 1365 defect dread dread ckan-sprint-2011-11-07 closed fixed Support old search formats "Lots of things rely on the old (i.e. pre-SOLR) search param formats, including ckanclient / DGU. Need a translation layer to convert these params (in api v1&2) to SOLR syntax. This functionality was broken by the changes in #1277 which went into 1.5a" 1317233338000000 1319815052000000 1367 defect dread dread closed fixed PyPI ckan broken "manifest.cfg was not included in the pypi package, causing InvalidRepositoryError when you do 'paster db init'. Appears to affect most CKAN PyPI releases up to and including 1.4.3." 1317379931000000 1317394273000000 1374 defect dread dread ckan-sprint-2011-10-24 closed fixed Can't switch to English if default is non-English e.g. cz.ckan.net defaults to Czech (config option lang=cs_CZ) but it fails when you try to switch to English. 1317893975000000 1319648746000000 1385 enhancement dread dread closed fixed Resolve postgres permissions issues "Currently there is a problem because the docs guide us to set the sqlalchemy url to use 'localhost' i.e. loopback, whereas paster commands don't specify '-h localhost' so use unix sockets (you need to do 'sudo -u postgres'). These should be the same. Also do we need to tell people to add a line to their postgres authentication config /etc/postgresql/8.4/main/pg_hba.conf to help things? Florian suggests: {{{ local   std         std                          md5 }}} /etc/postgresql/8.4/main/pg_hba.conf " 1318418537000000 1326218703000000 1394 defect dread dread ckan-sprint-2012-01-09 closed fixed Resource validation error messages misleading "(Editing a dataset) If the second resource contains any validation error then it says ""Resources: Package resource(s) incomplete"" and ""Resource 1:""." 1318515262000000 1325604784000000 1405 defect dread jonathan.gray@… ckan-sprint-2011-11-07 closed fixed You can add a package twice to a group "To reproduce (from Jonathan Gray): * I go to add an item to the group * As I type, I get autocomplete options (cool!) * When I click on one, it adds this, and copies the same autocomplete option in the box * When I click submit, it seems to add the item twice * On the main group page I think it just shows up once, but when I click edit it shows two identical boxes, both ticked - and the count includes two copies of the same item Basically the problem is allowing the same package associated multiple times with a group. This is an issue on CKAN 1.5b and probably earlier." 1318856354000000 1320152291000000 1416 defect dread dread ckan-sprint-2011-11-07 closed fixed Registering with blank email can cause exception "This might well be a bot, but not POSTing the email field should not cause an exception - it should be 400 and then the sysadmin doesn't get these nags. {{{ http://www.publicdata.eu/user/register ... Module ckan.controllers.user:79 in register << c.login = request.params.getone('login') c.fullname = request.params.getone('fullname') c.email = request.params.getone('email') if not model.User.check_name_available(c.login): h.flash_error(_(""That username is not available."")) >> c.email = request.params.getone('email') Module webob.multidict:335 in getone << values were found. """""" return self._decode_value(self.multi.getone(self._encode_key(key))) def mixed(self): >> return self._decode_value(self.multi.getone(self._encode_key(key))) Module webob.multidict:99 in getone << v = self.getall(key) if not v: raise KeyError('Key not found: %r' % key) if len(v) > 1: raise KeyError('Multiple values match %r: %r' % (key, v)) >> raise KeyError('Key not found: %r' % key) KeyError: ""Key not found: 'email'"" }}} {{{ HTTP_USER_AGENT 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; MRA 4.3 (build 01218); .NET CLR 1.1.4322)' webob._parsed_post_vars (MultiDict([('login', 'ahusernames9'), ('fullname', 'ahusernames9'), ('password1', '******'), ('password2', '******'), ('s', 'Sign up')]), <FakeCGIBody at 0xb9d7c5ec viewing MultiDict([('lo...p')])>)" 1319533989000000 1320153507000000 1417 defect dread dread ckan-sprint-2011-10-24 closed fixed Browser language detection doesn't work "In Firefox: * Edit | Preferences | Content | Languages - put 'de' at top language * Clear cookies * Load thedatahub.org - it should be in German, but it's in the default language - English." 1319539010000000 1319651617000000 1418 defect dread dread ckan-sprint-2011-10-28 closed duplicate If default language is not 'en' then you can't switch language to 'en' "e.g. cz.ckan.net has lang=cz but when you click on Home page link ""English"" it flashes message ""Language has been set to: English"" but the rest of the page is still Czech." 1319539146000000 1319539691000000 1421 defect dread dread ckan-sprint-2011-10-28 closed fixed Tag cloud recipe broken "home page doesn't have c.facets setup. Only affects 1.5 branch - ok 1.4.3.1. Was broken in cset:05f60f2d26e8." 1319638575000000 1319639311000000 1422 enhancement dread dread closed fixed Remove proxy & etag caching "Rufus decided this was more trouble than it was worth. Removes ckan/lib/cache.py" 1319639663000000 1319645722000000 1426 defect dread dread ckan-sprint-2011-10-28 closed invalid Validation errors cause 409 not 400 response "Validation error is incorrect arguments, so should be a ""400 Bad Request"" response. ""409 Conflict"" is for when there is a conflict creating two resources with the same identifier. Yet we get 409 for all validation errors." 1319708619000000 1319709236000000 1427 enhancement dread dread ckan-sprint-2011-10-28 closed fixed Tags validation needs to limit length to 100 characters The tag name is limited in length in the db table to 100 characters. If you try and create a longer one you get an exception. This should cause a ValidationError and tell the user this sensibly. 1319708698000000 1319709925000000 1428 defect dread dread ckan-sprint-2011-11-07 closed fixed config options not used or documented Need to ensure config options in the deployment.ini_tmpl match up with doc/configuration.rst. Remove any unused ones too. 1319803594000000 1319804773000000 1431 defect dread dread ckan-v1.5 closed fixed Captcha field - foreign chars cause exception "During registering a user, the user inputs foreign chars into the captcha field. {{{ URL: http://thedatahub.org/user/register ... Module ckan.lib.captcha:22 in check_recaptcha << remoteip=client_ip_address, challenge=recaptcha_challenge_field, response=recaptcha_response_field)) f = urllib2.urlopen(recaptcha_server_name, params) data = f.read() >> response=recaptcha_response_field)) Module urllib:1267 in urlencode << for k, v in query: k = quote_plus(str(k)) v = quote_plus(str(v)) l.append(k + '=' + v) else: >> v = quote_plus(str(v)) UnicodeEncodeError: 'ascii' codec can't encode character u'\xea' in position 0: ordinal not in range(128) }}}" 1320078849000000 1320084104000000 1437 defect dread dread ckan-sprint-2011-11-07 closed fixed JSONP parameter in Action API "Action API needs JSONP support - be able to return responses encapsulated in a function of a supplied name. This is important for remote sites running javascript to interact with a CKAN site. Specifying the callback parameter is the way we've achieved JSONP with the RESTful and Search APIs. It should work like this: {{{ curl http://test.ckan.net/api/action/package_show?callback=jsoncallback -d '{""id"": ""fd788e57-dce4-481c-832d-497235bf9f78""}' }}} Or maybe the callback should be specified in the payload in the context or data_dict? (My understanding is that CORS is similar - when more browsers support it, can we drop JSONP?) " 1320161088000000 1320173795000000 1440 defect dread dread ckan-sprint-2011-11-07 closed fixed 'paster db load' doesn't update search index "{{{paster db load ckan.pgdump}}} will load in the database but not update the search index, no we're using SOLR. = implementation = We can't tack on 'rebuild' to this command, because it needs a 'db upgrade' first. I'm tempted to make 'db load' do the upgrade and rebuild all in one command." 1320232415000000 1320235084000000 1441 defect dread dread closed fixed Use local ckan logo image Using local image rather than the same image at assets.okfn.org reduces dependency on another server that may be down, slow or remote. James agrees. 1320234597000000 1320235062000000 1442 defect dread dread ckan-sprint-2011-11-07 closed fixed You can't GET then POST a dataset as new "If you try to GET a dataset, purge it then POST it again, it fails checking authz for the group: {{{ Module ckan.controllers.api:278 in create << (register, subregister)) try: response_data = action(context, data_dict) location = None if ""id"" in data_dict: >> response_data = action(context, data_dict) Module ckan.logic.action.create:240 in package_create_rest << api = context.get('api_version') or '1' check_access('package_create_rest', context, data_dict) dictized_package = package_api_to_dict(data_dict, context) >> check_access('package_create_rest', context, data_dict) Module ckan.logic:129 in check_access << # log.debug('Valid API key needed to make changes') # raise NotAuthorized logic_authorization = new_authz.is_authorized(action, context, data_dict) if not logic_authorization['success']: msg = logic_authorization.get('msg','') >> logic_authorization = new_authz.is_authorized(action, context, data_dict) Module ckan.new_authz:16 in is_authorized << auth_function = _get_auth_function(action) if auth_function: return auth_function(context, data_dict) else: raise ValueError(_('Authorization function not found: %s' % action)) >> return auth_function(context, data_dict) Module ckan.logic.auth.create:115 in package_create_rest << return {'success': False, 'msg': _('Valid API key needed to create a package')} return package_create(context, data_dict) def group_create_rest(context, data_dict): >> return package_create(context, data_dict) Module ckan.logic.auth.create:15 in package_create << else: check2 = check_group_auth(context,data_dict) if not check2: return {'success': False, 'msg': _('User %s not authorized to edit these groups') % str(user)} >> check2 = check_group_auth(context,data_dict) Module ckan.logic.auth.create:90 in check_group_auth << groups = set() for group_dict in group_dicts: id = group_dict.get('id') if not id: continue >> id = group_dict.get('id') AttributeError: 'unicode' object has no attribute 'get' }}} (using RESTful Model API) The reason is the POST is expecting the group to be expressed as a dict, not the list of names that GET returns." 1320263318000000 1320275623000000 1443 defect dread dread ckan-sprint-2011-11-07 closed fixed language detection "If language detected doesn't match any of the offered CKAN languages, you get the default language, but see an error flash up for every page, saying: {{{ Could not change language to 'None': IOError: [Errno 2] No translation file found for domain: 'ckan' }}} Affects 1.5b only." 1320425588000000 1320432511000000 1444 defect dread dread ckan-future closed wontfix Language detection defaults to en_us? "Using curl you always get English, even if ckan.locale_default=de. Find out why. (1.5b) Maybe we should disable locale detection for this release if lots of people's browsers don't have it set correctly (e.g. chinese with us internet explorer)" 1320432634000000 1340190852000000 1452 enhancement dread dread closed wontfix Offer detected browser language, rather than auto-switch "There are issues with setting the site's language according to the browser detection: * Many browsers have the language setting incorrectly set. e.g. people who download US versions of Mozilla, pirated US copies in the far east. * Although thedatahub.org has a worldwide audience, many CKAN instances are designed for a particular country's citizens. So Open Berlin should probably be in German as default for all. I suggest the site should have a default language saved in the config. The browser language *should* be detected, and that prompts a flash message offering to change to that language. And if you change language that is saved in the cookie (as we currently do). Then do some testing to see if this suits people." 1320682652000000 1340190587000000 1454 enhancement dread dread ckan-sprint-2011-11-21 closed fixed postgres search code/data removal "We made SOLR the main and only supported way to do CKAN search three months ago (#1275), but I notice that we still have remnants of the postgres full-text search hanging around: * model code (ckan/model/search_index.py) * table in the database (package_search) The presence of these still create sqlalchemy warnings and add to our db, (& db backups etc), so it would be good to get rid of them if we are not using them. John says this can probably be removed " 1320838999000000 1320849527000000 1470 defect dread amercader ckan-sprint-2011-11-21 closed fixed Check user name in the profile form 1321446143000000 1324473955000000 1473 defect dread dread ckan-sprint-2011-11-21 closed fixed max name length validators missing "Max length of package name and version field is 100 characters, but the validators seem to enforce this, although in the web interface the javascript limits typing in these fields, so it just affects the API really. " 1321631452000000 1321872717000000 1479 defect dread dread ckan-sprint-2011-12-05 closed fixed Can't edit a user with a unicode email address " 1. Register User with an email address with a unicode char (e.g. u'\u044e') 2. View the User in the UI (/user/) or with 'user_show' Action API Exception: {{{ Module ckan.controllers.user:98 in read << try: user_dict = get_action('user_show')(context,data_dict) except NotFound: h.redirect_to(controller='user', action='login', id=None) >> user_dict = get_action('user_show')(context,data_dict) Module ckan.logic.action.get:488 in user_show << check_access('user_show',context, data_dict) user_dict = user_dictize(user_obj,context) if not (Authorizer().is_sysadmin(unicode(user)) or user == user_obj.name): >> user_dict = user_dictize(user_obj,context) Module ckan.lib.dictization.model_dictize:189 in user_dictize << result_dict['display_name'] = user.display_name result_dict['email_hash'] = user.email_hash result_dict['number_of_edits'] = user.number_of_edits() result_dict['number_administered_packages'] = user.number_administered_packages() >> result_dict['email_hash'] = user.email_hash Module ckan.model.user:59 in email_hash << if self.email: e = self.email.strip().lower() return hashlib.md5(e).hexdigest() def get_reference_preferred_for_uri(self): >> return hashlib.md5(e).hexdigest() UnicodeEncodeError: 'ascii' codec can't encode character u'\u044e' in position 17: ordinal not in range(128) }}}" 1321960486000000 1321961592000000 1480 enhancement dread dread ckan-sprint-2011-12-05 closed fixed Munge functions in util munge_title_to_name, munge_tag v. useful for client software importing things into CKAN. I want it for ONS. 1321965837000000 1321978546000000 1484 defect dread dread ckan-sprint-2011-12-05 closed fixed Creating package with duplicate tags causes exception "e.g. {{{ curl http://localhost:5000/api/action/package_create -d '{""name"":""test5"", ""tags"":[{""name"": ""tag6""}, {""name"": ""tag6""}]}' -H 'Authorization:tester' }}} Also broken in Web UI (adding a package). Affects API and Web UI in 1.5 and I think all versions from 1.4.1" 1322052046000000 1322059006000000 1488 enhancement dread dread ckan-sprint-2011-11-21 closed fixed List of installed extensions - add to the status_show Add the list of extensions install (config's ckan.plugins) to status_show logic action (See #1087) 1322130555000000 1322241966000000 1493 defect dread dread ckan-sprint-2011-12-05 closed fixed 'search-index rebuild/clear' doesn't work if no ckan.site_id "You can't delete things from the SOLR search index if the ckan.site_id and ckan.site_url are blank. Should assert that one of these are set up." 1322484422000000 1324474360000000 1497 enhancement dread dread ckan-sprint-2011-12-05 closed fixed Suppress benign warnings We really shouldn't have lots of benign stuff printed on stderr when we run every command. It confuses users and hides important stuff. 1322569640000000 1322569805000000 1499 enhancement dread dread ckan-sprint-2011-12-05 closed fixed list/read/delete packages on the command-line It would be useful to be able to manipulate packages using the paster command-line interface. In particular listing, reading and deleting packages. Seeing which packages were deleted too. 1322591656000000 1322591888000000 1500 defect dread dread ckan-sprint-2011-12-05 closed fixed Slug API calls tidy up " * API call documented but don't exist any more: dataset create_slug * API call not documented but exists: is_slug_valid * API call not documented, badly sited in API and using custom code in controller (not logic layer): /package/autocomplete" 1322600285000000 1323166918000000 1503 task dread markbrough ckan-sprint-2011-12-05 closed fixed Move from Bitbucket to Github "Reasons: more people familiar with Git, bigger Open Source community on Github. Keeping track of the move here: https://docs.google.com/spreadsheet/ccc?key=0AvCDqUH8jVN8dGNVNEpXLWk3UTlJZXhFMjBPbXVtRmc&hl=en_GB#gid=0" 1322745084000000 1323793662000000 1504 defect dread dread ckan-sprint-2011-12-05 closed fixed Action API given blank data causes exception "This is what caused the exception: {{{ curl http://localhost:5000/api/action/package_search -d='{""q"": ""osm""}' }}} The problem is the content-type is formencoding, the '=' is the first character of the request, and so internally the data_dict is set to ' ', which needs to be a dictionary." 1322756748000000 1324035928000000 1505 defect dread dread ckan-sprint-2011-12-05 closed fixed SearchError and SearchQueryError cause exception in Action API "This query caused ckan to except because ckan/controllers/api.py doesn't catch SearchError and SearchQueryError: {{{ curl http://localhost:5000/api/action/package_search -d '{""sort"": ""metadata_modified""}' }}}" 1322758968000000 1324474577000000 1513 defect dread dread ckan-sprint-2012-02-06 closed fixed Logged in/out problems "Richard Cyganiak: I often see a problem where half the system thinks that I'm logged in, while the other half insists I'm not. Logout then login again may fix it. David Read: I think I've seen it several times that the ""My Account"" link is given (suggesting you're logged in) but when you click it it asks you to log in, which means you weren't." 1323100353000000 1328205099000000 1529 enhancement dread dread ckan-sprint-2011-12-19 closed fixed Display user name when logged in "Currently when you log in it says ""logged-in"". Most sites show your user-name and this is helpful when you have more than one account or human using the computer." 1323252086000000 1324318628000000 1536 defect dread dread ckan-sprint-2011-12-19 closed fixed Group deletion doesn't work In the Web interface and API, an administrator can set the 'state' field of a group to 'deleted' but this change is ignored in the save/submit and it doesn't get deleted. 1323346766000000 1330020599000000 1548 enhancement dread dread ckan-sprint-2011-12-19 closed fixed Simplfy inheritance in functional tests It's hard to understand what's going on with the functional tests because there is so much going on in inherited classes. Would be better to be explicit in constructors, even if it involves cut & paste. 1323859687000000 1323888271000000 1552 enhancement dread dread ckan-sprint-2011-12-19 closed fixed Be able to set password on the command line when creating users (instead of using the prompt) - needed for deployment 1324056178000000 1324056240000000 1575 enhancement dread dread ckan-sprint-2012-01-23 closed fixed tag punctuation lost in ca.ckan.net import Last week I imported ca.ckan.net datasets into thedatahub.org, but the tags seem to have lost their dashes, underscores and dots. 1324316860000000 1326808657000000 1613 defect dread dread ckan-sprint-2012-01-23 closed wontfix Post-dataset-edit URL has #section " 1. Viewing a dataset, hit 'Edit' 2. Click on the ""Basic Information"" tab (note: URL has suffix #section-basic-information 3. Click 'Save' 4. URL still has suffix #section-basic-information Affects 1.5, 1.5.1, 1.5.2a" 1325685555000000 1326813924000000 1623 enhancement dread dread ckan-sprint-2012-01-23 closed fixed Dump to exclude deleted objects "The database dump currently contains all Packages and their associated objects, even those that have been set to state=deleted. We should exclude these from the dump now. Dump = paster db simple-dump-csv/json == reasoning == The dumps are designed for end-users to be able to run scripts on the mass of data. Since end-users don't see state=deleted packages then they shouldn't need them in the dump. In fact their presence in the dump probably confuses them. Admins get the full database anyway in the backup pg_dump. We only included them in the user dump because it was designed before use of state=deleted was established. Time estimate: 2h" 1326118987000000 1326892264000000 1624 defect dread pudo ckan-sprint-2012-01-23 closed fixed Typo in dataset edit mode "Futher Information -> Further Information " 1326121197000000 1326216362000000 1626 enhancement dread dread ckan-sprint-2012-01-23 closed fixed 'About CKAN' page update thedatahub.org/about contains info that is very general to the CKAN and really quite technical. The text should be changed to be both specific to thedatahub.org and provide the context in a non-technical way. It should be easy to customise the About page to be appropriate for say new-york.ckan.net - a bit of info about who runs it, plus the general stuff about CKAN powering it and it was written by OKF to further open data. 1326205236000000 1326215877000000 1627 defect dread dread ckan-sprint-2012-01-23 closed fixed favicon broken "On thedatahub.org the favicon doesn't display. i.e. the CKAN logo should appear in the browser's tab. Original ticket #48" 1326207102000000 1326890614000000 1629 defect dread dread ckan-sprint-2012-01-23 closed fixed permissions changed during upgrade to 1.5.1 This was seen on datacatalogs. When we upgraded it 1.5 to 1.5.1 we saw some permissions being reset so that it could be spammed. Anonymous and logged in users were given anon_editor and editor permissions. I don't know what the previous config was. Permissions for sysadmins remain unaffected. 1326215162000000 1326823222000000 1659 defect dread dread ckan-sprint-2012-01-23 closed fixed Cannot logout if CKAN mounted at non-root url "If you set WSGIScriptAlias to mount CKAN at a URL other than / then you cannot logout without adjusting the OpenID logged_out_url to match in who.ini config. e.g. [plugin:openid] ... logged_out_url = /sub/dir/user/logged_out Note: all the other URLs in who.ini should not have the /sub/dir/ - it is just this one that doesn't take account of the mounting point. The solution is to fix-up the repoze.who OpenID plugin to take account of the mounting point." 1326716302000000 1326747205000000 1682 enhancement dread dread ckan-v1.6 closed duplicate [super] Translatability for EC "We need to be able to translate: * EC extension (templates, form) * Currently the pot file is just for CKAN core. New pot file for CKAN core and this extension? Or separate ones for extensions? * Field values in taxonomy (e.g. country names - Eurovoc) * #1665 Research into Eurovoc * Display Taxonomy in different languages * Field values not in taxonomy (e.g. title & description) * Use extra fields e.g. _i18n_title_fr = Le data. * (If lots of fields would need translating then would consider having a new package for each language, linked together with PackageRelationships. But I think it is just title and description (resource description etc. are so minor, not worth translating?), so using extra field better.) Timescale to complete this - Mar/Apr. Related work to interface with: * Eurovoc - Sean * i18n in search index - Adria" 1326911899000000 1330038786000000 1683 defect dread dread ckan-sprint-2012-01-23 closed fixed Dataset search results - last item out of order "On each page of package search results, all the items are neatly sorted apart from the last item of the page. SOLR gets the sorting of the results incorrect. This is a known issue: https://issues.apache.org/jira/browse/SOLR-1777 affecting SOLR 1.4 only (which comes with Ubuntu 10.04) It is highlighted in CKAN test ckan/tests/functional/test_pagination.py:TestPaginationPackage of commit 39096ed54bda86d043521b08b2e14fc5e283a0ff which fails most of the time it is run (passes intermittently)." 1326971864000000 1326976925000000 1688 enhancement dread dread ckan-sprint-2012-02-06 closed fixed API for changing the permissions on an object "We need an API for changing the authorization (permissions) on a model object. This was neglected in #1253 because of various changes to authz were looming. But six months later it still hasn't been done. Suggest this is just moving _add_user_object_role from ckan/lib/base.py to the logic layer, but no doubt it will be more complicated. Estimate: 3 days" 1327061809000000 1328289101000000 1695 enhancement dread dread closed fixed Relationships - improvements "Suggested by Richard Cyganiak in http://lists.okfn.org/pipermail/ckan-discuss/2012-January/001977.html * new relationship type links_to / linked_from * Maybe with extra 'count' property? * creating a new relationship should be post to the relationship register, not the source entity. * add missing doc about creating a new relationship * 'Model Formats' section seems to be missed out of the docs since release 1.4.2. See: http://readthedocs.org/docs/ckan/en/ckan-1.4.2/api/version2.html#model-formats " 1327323280000000 1330085001000000 1708 defect dread dread ckan-sprint-2012-02-06 closed fixed SOLR configuration lost "The SOLR url, user and password defined in the CKAN config file are ignored and the default SOLR url is used. This causes: * ""0 datasets"" displayed on the home page * Dataset searches result in 0 results and a small message ""There was an error while searching"". (Nothing about it in the logs) == To reproduce == This bug is only visible if your SOLR instance is not at the default place. To quickly reproduce this problem, setup your machine as a SOLR multicore instance and run: ""paster db clean && paster create-test-data && paster serve development.ini"". It quits with the error: ""solr.core.SolrException: HTTP code=400, reason=Missing solr core name in path"" == Code affected == * Does not affect any released versions (1.5.1 is clean). * Introduced to master: https://github.com/okfn/ckan/commit/627382e6ff575146da221efc50321a41152d8b0f by Ross" 1327493428000000 1327580995000000 1709 defect dread dread ckan-sprint-2012-01-23 closed fixed Simple_search fails with all packages "The home page always shows the total number of packages as 0, because the query is '*:*' and SQL search doesn't know how to handle it. Also, simple_search configuration is not documented. Also, no tests for sql search." 1327498366000000 1327659722000000 1710 enhancement dread dread ckan-sprint-2012-02-06 closed fixed 'Announce' email list for thedatahub "We want to make email announcements to users of thedatahub.org. The most simple way to do this is to get a dump of the email addresses and subscribe/invite them to a mailman list. Different ways to do it: * 'paster dump-users-csv' creates a CSV file. Apache serves up the directory using password protection. Is this secure enough? * CKAN admin pages provides a button to produce the CSV and download it. A config option may be necessary to enable this (disabled by default). Something more advanced in the future could be: * CKAN tells mailman about new subscribers using the mailman web interface. Could be brittle. * Mailman doesn't have an Internet API, but it does have a python interface. So CKAN could tell mailman about new subscribers using a python proxy. There may be one out there, or maybe easy to do. But annoying to have to maintain another process running on machine. * CKAN sends out the emails itself. A sysadmin is given a form. Users have an opt in/out option in their account. But receiving emails is a sensitive thing so it would need to be right first time, and there are several risks to this approach. " 1327579259000000 1327583922000000 1725 defect dread dread ckan-sprint-2012-02-06 closed fixed Tag autocompletion and commas don't mix "If you use tag autocompletion, it automatically adds a comma after the tag. This is fine if you are going to add another tag, but not fine if it is the last one. If you don't manually remove the final comma than you get form validation error ""Tag string: Tag """" length is less than minimum 2"" Affects only version 1.5.2a." 1328006709000000 1328204489000000 1783 defect dread dread ckan-sprint-2012-02-20 closed fixed Locale change exception when unicode in URL If the current page URL has unicode in it (e.g. {{{u'/tag/biocombust\xedveis'}}}) then I'm not sure how why it isn't more encoded, but we are seeing links such as {{{http://beta.dados.gov.br/dados/locale?locale=hu&return_to=/dados/tag/biocombust%C3%ADveis&hash=7fd941b5ba1a28bc84406c4191bf07b45a42a251}}} which cause an exception when the foreign character is passed to ckan.lib.hash.get_message_hash(). 1328611485000000 1328612744000000 1786 enhancement dread mirko.spasic@… ckan-sprint-2012-02-20 closed fixed Relationships lost when editing package If I have a relationship between two packages, and then I edit any property of one of them (Author email, for example), the relationship will automatically be lost. 1328635226000000 1328640597000000 1791 defect dread dread ckan-sprint-2012-02-20 closed fixed Changing locale on /dataset/new causes exception "When you are on the /dataset/new page and you try and change locale then you get a 500 error. This is because it adds the '__cache' parameter, to ensure any proxy cache in the chain does not just send the cached page. e.g. http://127.0.0.1:5000/dataset/new?__cache=37713707 " 1329134556000000 1329138315000000 1799 defect dread dread ckan-sprint-2012-03-05 closed fixed To login as a different user or register, you need to logout first "When you are logged in, you cannot login as a different user before first logging out. (This is a restricting in repoze.who, which gives priority to an existing recognised identity over another one you supply.) Yet, the CKAN login form appears when you try to do something you're not allowed to, even if you are logged in already. You login with a different identity and nothing happens - you remain as the first identity - this is incorrect. (It is also a little confusing to be sent to the log-in page, although we do have a flash message explaining, and you might want to relogin as a superuser if you can.) Whilst in this area, it would be worth fixing the problem for developers where you are logged in, do ""paster db clean"" and then try to log in - AuthTkt recognises your old cookie but the User object doesn't exist, so you get an error logging in. In this instance we should tell people to log-out." 1329402820000000 1330002176000000 1802 enhancement dread dread ckan-sprint-2012-03-05 closed fixed Investigate CKAN deployment on Windows "See how possible it is to run CKAN on a Windows server. Plan: * Get CKAN code and dependencies installed on Windows * ideally as similar to standard package install as possible * virtualenv/pip should work * try Cygwin to help * SOLR and Postgres could potentially run on other servers if necessary. * Try to run on Apache * See if there are any issues" 1329409512000000 1329830097000000 1829 defect dread dread ckan-sprint-2012-03-05 closed fixed Changing back to English prints the flash message in the previous non-English language "On the homepage click ""francais"" and then ""English"". The flash message reads ""Le langage a été fixé à: français"" when it should say ""The language is now: English""." 1330000660000000 1330001990000000 1830 enhancement dread dread ckan-sprint-2012-03-05 closed fixed OpenID disablable "Allow OpenID to be disabled as a login option. Currently (CKAN 1.6) there is a config option openid_enabled which stops the login option being displayed, but: * In the User edit form you can still add your OpenID * The repoze.who.openid middleware is still required - can it be avoided?" 1330002137000000 1330089912000000 2266 defect dread dread ckan-sprint-2012-04-02 closed fixed Can't delete all of a package's resources over REST API Nothing happens if you set resources=[] or resources=null. 1332932504000000 1332932634000000 2281 enhancement dread dread ckan-sprint-2012-04-16 closed fixed Pagination styling converted to Bootstrap "Make the search results pagination styled by Bootstrap. Needs putting into a <ul> structure. Current page and '..' need become links that are styled disabled. Wanted by DGU." 1333967506000000 1333967862000000 2315 enhancement dread dread ckan-sprint-2012-04-30 closed fixed Change Cookie expiry "Change login cookie from a default expiry of 50 years to 2 years. You can also uncheck a 'remember me' checkbox on the login form for the cookie to just last the session. Background conversation on ckan-dev: DR: I wonder if anyone objects to the expiry of the login cookie to be changed from 50 years to 2 years? 50 years might be appropriate for thedatahub.org, but for government sites it seems (to me) to be too lax. Toby: is this the repoze.who cookie? If so that seems sensible to me. Rufus: Definitely agree. I would also like to see introduction of a standard ""remember me"" checkbox (set to true by default). At the moment a login lasts forever (until you logout) automatically." 1334919449000000 1334919522000000 2325 enhancement dread dread ckan-sprint-2012-04-30 closed fixed Format alphabet pager (tags page) for bootstrap Also need to fix bug where 'Other' is never highlighted. 1335366110000000 1335366188000000 2373 defect dread dread ckan-sprint-2012-05-15 closed fixed Group autocomplete doesn't work with multiple words "e.g. 'Cabinet Office' returns 0 results, whereas 'Cabinet' returns 'Cabinet Office'. {{{ /api/2/util/authorizationgroup/autocomplete?q=Cabinet%20Office }}} This feature only seems to be used by DGU at the moment (I think)" 1336139787000000 1336142514000000 2384 enhancement dread dread ckan-sprint-2012-05-15 closed fixed Rights tool factored out The command line tool 'rights' is quite handy but it is glued to the CLI. I'm going to factor out the bit which searches for objects etc so it can be used by CreateTestData etc and will be used by DGU. 1337080794000000 1337100810000000 2390 enhancement dread dread ckan-sprint-2012-05-29 closed fixed create_test_data for multiple users, rights It would be useful (well for DGU, but no doubt for core too) to have be able to create multiple users with full properties using one commit. Also to be able to create rights (UserObjectRoles). 1337098459000000 1337100788000000 2394 enhancement dread dread closed fixed Separate off create_test_data CLI We need to separate the CLI part of CreateTestData from the bit which creates test fixtures. This is because of the problem with imports and logging. Otherwise we have to do unpythonic things to get logging to work when deriving from CreateTestData from an extension such as ecportal / dgu. I've only introduced logging into CreateTestData but I think it is a good thing to have. This change doesn't cause breakages 1337159591000000 1337161917000000 2401 enhancement dread dread ckan-sprint-2012-05-29 closed fixed CLI for time/speed profiling To enable you to easily track down what is taking all the time when you make a request. 1337269571000000 1337273042000000 2942 defect dread dread closed wontfix API POST barfs on interesting Content-Type headers "When POSTing to the API, if specified, the 'Content-Type' header must be blank or 'application/x-www-form-urlencoded'. Otherwise we get an error like: ""Bad request - JSON Error: Could not extract request body data: Bad content type: \'; charset=utf-8\'"""" The problem is that this is a very reasonable header to send. Indeed requests 0.14 sends this particular header. This affects all versions of CKAN. This is due to webob/requests.py:1248 being pretty basic." 1348593156000000 1348611144000000 2955 defect dominik dominik ckan 2.0 closed fixed Recline should be updated 1349270534000000 1350577952000000 2961 enhancement dominik dominik ckan 2.0 assigned Preview plugin endpoint "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" 1349696367000000 1350577990000000 3013 defect dominik dominik new common-error-messages is unreadable "Since the update of the doc theme, the page became unreadable. http://docs.ckan.org/en/latest/common-error-messages.html" 1352553505000000 1352553505000000 1558 enhancement David Raznik jilly mathews ckan-future new Publisher Tools Summarise final set of requirements for this and finish development and test. Estimated 10 working days. 1324291573000000 1324291573000000 1560 enhancement David Raznik jilly mathews ckan-future new Follow extension "Estimate 2 days to finish dev and test. David can you add any info needed here?" 1324291879000000 1324291879000000 1561 enhancement David Raznik jilly mathews ckan-future new To do extension Can we finish this ready for release on data hub and CKAN Hosted. 1324291972000000 1324291972000000 1563 enhancement David Raznik jilly mathews ckan-future closed invalid Finish Data Storage Unsure what needs to happen here. Need to list outstanding tasks and implement. 1324292346000000 1324314806000000 1564 enhancement David Raznik jilly mathews ckan-future new Structured Data (Data API) "Basic websotre exists but this may be not what is described yet. CKAN provides a rich API for the data itself, allowing users to query retrieve and use data instantly from datasets in CKAN without needing to download or process it first." 1324292834000000 1324292834000000 1566 enhancement David Raznik jilly mathews ckan-v1.7 closed fixed [super] Finalize Google analytics extension " * ~~(Deploy it)~~ * Integrate with stats plugin (now that is in core) - #1101 * Blog about it #1581 * (Other tickets re upgrading for v1.5.1 - done but where are tickets?) " 1324293168000000 1338203338000000 1567 enhancement David Raznik jilly mathews ckan-future new Finish QA extension Requires change to celeryd. Estimated 4 weeks. 1324293599000000 1324293599000000 1568 enhancement David Raznik jilly mathews ckan-future closed duplicate Moderated Edits Can this be released as a standard CKAN feature? 1324293776000000 1325267998000000 1569 enhancement David Raznik jilly mathews ckan-future new Wordpressser How much effort will this be to be ready to use? 1324294056000000 1324294056000000 1570 enhancement David Raznik jilly mathews ckan-future closed invalid Integrated file Storage Is this ready for release? What needs to be done? 1324294142000000 1324314741000000 1572 enhancement David Raznik jilly mathews ckan-future new Meta data Harvester Need to write custom harvesters for each client. Is it worth having one for data hub? 1324294509000000 1324294509000000 1573 enhancement David Raznik jilly mathews ckan-future new Apps and Ideas Estimate 2 weeks for someone to finish and test. 1324294593000000 1324294593000000 1557 enhancement David Rasnik jilly mathews ckan-future new Complete Webstore Preview Extension "Finish any work out standing on web store preview extension to be able to package and release. Ref James and I going through existing features and trying to mention any polishing that needed doing to get exiting features ready for release with projects such as CKAN hosted." 1324291253000000 1324291253000000 1553 defect aron.carroll dread demo phase 5 closed fixed Upload handles non-logged in user badly "When you install ckanext-store (Storage extension) then CKAN displays 'Upload a file' button in the dataset/resource edit tab. If you are not logged in, then this feature doesn't work, but there is nothing to indicate this. The button should be disabled. Furthermore, it lets you think you are starting the upload process, the spinner spins, it says 'Uploading...' and stays like that for a long while. This is a problem CKAN 1.4.3(ish) - 1.5.1 (current version) when you install the current ckanext-storage." 1324056405000000 1343226756000000 1718 defect aron.carroll dread closed fixed Deprecated JS properties used "I get this warning when viewing the home page: {{{ event.layerX and event.layerY are broken and deprecated in WebKit. They will be removed from the engine in the near future. }}} CKAN: latest master Browser: Chrome Ubuntu Minor, but worth checking?" 1327665842000000 1340703280000000 2225 enhancement aron.carroll rgrp demo phase 2 closed fixed Run jshint on our javascript and clean up as needed 1331407316000000 1343220502000000 2267 enhancement aron.carroll rgrp demo phase 5 closed fixed Add generator=ckan tag in head Add generator=ckan tag in head of templates to identify site as generated by CKAN 1333040018000000 1343229146000000 2354 enhancement aron.carroll aron.carroll demo phase 5 closed wontfix Front end performance improvements [super] "Try and increase the page load times for the front end. = Now = * Always include scripts at the bottom * Include CSS at the top * Load fonts with JS * Concatenate and minify JavaScript files * Create a build script to load dependancies seperately * Enable Gzip compression on resources * Enable future cache headers on resources = Next = * Support serving assets from a CDN * Look into optimising the CSS - Remove large portions of unused CSS * Remove extreaneous libraries, can jQuery UI be replaced with bootstrap? = Tools = * Webkit Inspector Audits * YSlow Firebug Plugin - http://yslow.org/ * Speed Tracer - https://chrome.google.com/webstore/detail/ognampngfcbddbfemdapefohjiobgbdl = Continuous Integration = YSlow can be hooked up to Jenkins via Phantom JS" 1335885042000000 1343317505000000 2356 enhancement aron.carroll aron.carroll ckan-sprint-2012-05-15 closed fixed Localise JavaScript strings 1335886092000000 1338205356000000 2357 enhancement aron.carroll aron.carroll demo phase 5 accepted Create build script for front-end resources Should minify and concatenate JavaScript and CSS as part of #2354 1335886181000000 1343220524000000 2367 enhancement aron.carroll aron.carroll closed fixed Style the analytics view counts on datasets Currently an eye and a number, needs to look a little nicer. 1335892789000000 1336035031000000 2372 task aron.carroll aron.carroll closed fixed Create frontend style guide "This should cover formatting and best practices for HTML, CSS and JavaScript Perhaps this should sit in it's own repository (ckan-styleguides?) or gh-pages branch. " 1336071043000000 1343220160000000 2408 enhancement aron.carroll markw demo phase 3 closed fixed Only 4 'extras' can be added at a time The settings > extras page for a dataset allows extra fields to be added, but only four can be added a time in a single atomic update. It would be helpful to have an 'add another' button on the form that can be used any number of times. 1337683639000000 1343657014000000 2418 enhancement aron.carroll aron.carroll closed fixed Facets disappear once selected "Currently facets in the new demo site disappear from the sidebar once they are selected. http://s031.okserver.org:2375/dataset?tags=fibre&tags=terrestrial&q=Africa Instead they should be marked with an ""active"" class and clicking the link should remove the filter in the same way as clicking the cross in a token below the search field works." 1337793330000000 1341833880000000 2419 enhancement aron.carroll aron.carroll closed fixed Add dataset form needs hooking up to action/controller Currently for some reason I'm not getting the errors/data dict in the package/new.html template. 1337793401000000 1343220027000000 2421 enhancement aron.carroll toby closed fixed demo-theme pills break in dataset search if pills cross onto 2 lines they split which they shouldn't to see just add some tags/formats till it breaks 1337865196000000 1343220041000000 2441 enhancement aron.carroll aron.carroll ckan-sprint-2012-06-25 closed fixed Create demo search page "Discussion: https://okfn.basecamphq.com/projects/9558659-demo-ckan-front-end/posts/61906351/comments Implementation: http://s031.okserver.org:2375/dataset/" 1338210155000000 1339670118000000 2442 enhancement aron.carroll aron.carroll ckan-sprint-2012-06-25 closed fixed Create demo dataset overview "Discussion: https://okfn.basecamphq.com/projects/9558659-demo-ckan-front-end/posts/61752357/comments Implementation: http://s031.okserver.org:2375/dataset/adur_district_spending" 1338210249000000 1339670612000000 2443 enhancement aron.carroll aron.carroll ckan-sprint-2012-06-25 closed fixed Create demo dataset data (resource) page "Discussion: https://okfn.basecamphq.com/projects/9558659-demo-ckan-front-end/posts/62308209/comments Implementation: (to be added once test server is working)" 1338210382000000 1341824663000000 2444 enhancement aron.carroll aron.carroll ckan-sprint-2012-06-25 closed fixed Create demo dataset related page "Discussion: https://okfn.basecamphq.com/projects/9558659-demo-ckan-front-end/posts/62821386/comments Implementation: http://s031.okserver.org:2375/dataset/adur_district_spending/related" 1338210559000000 1339670232000000 2447 enhancement aron.carroll aron.carroll demo phase 5 closed fixed Create demo add dataset page "Discussion: https://okfn.basecamphq.com/projects/9558659-demo-ckan-front-end/posts/62234769/comments Implementation: http://s031.okserver.org:2375/dataset/new http://s031.okserver.org:2375/dataset/new_resource" 1338210835000000 1343924125000000 2448 enhancement aron.carroll aron.carroll ckan-sprint-2012-06-25 closed fixed Create demo groups overview page "Discussion: https://okfn.basecamphq.com/projects/9558659-demo-ckan-front-end/posts/61911712/comments Implementation: http://s031.okserver.org:2375/group" 1338210960000000 1339669678000000 2449 enhancement aron.carroll aron.carroll ckan-sprint-2012-06-25 closed fixed Create demo group page "Discussion: https://okfn.basecamphq.com/projects/9558659-demo-ckan-front-end/posts/61911712/comments Implementation: http://s031.okserver.org:2375/group/test-group" 1338211060000000 1339670041000000 2450 enhancement aron.carroll aron.carroll ckan-sprint-2012-06-25 closed fixed Create demo add group form "Discussion: https://okfn.basecamphq.com/projects/9558659-demo-ckan-front-end/posts/61911712/comments Implementation: http://s031.okserver.org:2375/group/new" 1338211136000000 1339670997000000 2452 enhancement aron.carroll aron.carroll demo phase 5 closed fixed Create demo user profile page "Discussion: https://okfn.basecamphq.com/projects/9558659-demo-ckan-front-end/posts/62268474/comments Implementation: http://s031.okserver.org:2375/user/aron" 1338211295000000 1343924143000000 2453 enhancement aron.carroll aron.carroll demo phase 5 closed fixed Create demo edit user profile page "Discussion: https://okfn.basecamphq.com/projects/9558659-demo-ckan-front-end/posts/62268474/comments Implementation: http://s031.okserver.org:2375/user/edit" 1338211351000000 1343924178000000 2455 enhancement aron.carroll aron.carroll ckan-sprint-2012-06-25 closed fixed Create demo register page "Discussion: https://okfn.basecamphq.com/projects/9558659-demo-ckan-front-end/posts/62998362/comments Implementation: http://s031.okserver.org:2375/en/user/register" 1338211541000000 1338998214000000 2456 enhancement aron.carroll aron.carroll ckan-sprint-2012-06-25 closed fixed Create demo forgot password page "Discussion: https://okfn.basecamphq.com/projects/9558659-demo-ckan-front-end/posts/62935295/comments Implementation: http://s031.okserver.org:2375/en/user/reset" 1338211604000000 1339670080000000 2458 enhancement aron.carroll aron.carroll demo phase 3 closed fixed Create demo statistics page "Discussion: https://okfn.basecamphq.com/projects/9558659-demo-ckan-front-end/posts/62998513/comments Implementation: http://s031.okserver.org:2375/en/stats" 1338211906000000 1344262256000000 2474 enhancement aron.carroll aron.carroll ckan-sprint-2012-06-25 closed fixed Trial Jinja 2 as templating system "Percieved benefits of switching to Jinja 2 * Block inheritance for base templates which is much simpler to understand. * Large number of developers (and designers) are familiar with it due to its similarities with the Django templates. * Should be much faster at parsing and rendering templates. * Has localisation support. * Good documentation both on it's website and on sites like Stack Overflow. We should convert a couple of existing templates to test the switchover and then get peoples feedback." 1338307326000000 1338982780000000 2493 enhancement aron.carroll toby demo phase 5 accepted Demo site 404 needs some love "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" 1338986081000000 1343135815000000 2504 enhancement aron.carroll aron.carroll ckan-sprint-2012-06-25 closed fixed Remove all Genshi templates from demo theme 1339156577000000 1339409776000000 2510 enhancement aron.carroll aron.carroll ckan-sprint-2012-06-25 closed fixed Demo tag lists should link to the search page "Instead of pointing to /tags/{tagname} all tag links should just point to a dataset search filtered by that tag. Examples are on the homepage and the dataset pages." 1339513217000000 1339670520000000 2511 enhancement aron.carroll toby closed fixed header logo should be link to / 1339513880000000 1339517817000000 2522 enhancement aron.carroll toby closed fixed view user gatavar not sqaure the user pic should be square on the user read page 1339604954000000 1341499095000000 2525 enhancement aron.carroll aron.carroll demo phase 1 closed fixed Demo theme should auto-generate slugs on forms 1339679954000000 1341497344000000 2526 enhancement aron.carroll aron.carroll demo phase 5 closed fixed Demo theme new custom form fields should be created when needed "Implementation: http://s031.okserver.org:2375/dataset/new_metadata" 1339680105000000 1343924205000000 2527 enhancement aron.carroll aron.carroll ckan-sprint-2012-06-25 closed wontfix Implement a method of loading templates into the demo site "JavaScript needs to be able to insert html templates into the document. There are three common solutions to templating at the moment. 1. Insert the html into <script> tags at the bottom of the page and pull them in using the DOM and innerHTML. This is a very simple solution but not very portable. 2. Request the HTML snippets as plain text/html using XHR. This adds an extra HTTP request per template but is very clean. It would also be possible to inline the HTML into the JS at the minification stage for production. 3. Include the HTML in JavaScript strings (horrible to maintain and bloats the js) It makes sense to keep these with the other templates so that we can take advantage of localisation where possible. This indicates 1 or 2." 1339682884000000 1340116130000000 2528 enhancement aron.carroll aron.carroll demo phase 1 closed fixed Create demo edit dataset page "Implementation: http://s031.okserver.org:2375/dataset/edit/5b451cab-8671-4513-91c4-257784c1f484" 1339686982000000 1340617176000000 2556 enhancement aron.carroll aron.carroll demo phase 1 closed fixed Update module styles on the demo theme "They've become inconsistent as the design has changed. * Remove white stripe * Make text sizes consistent * Make white space around text boxes consistent" 1340035028000000 1340212090000000 2557 enhancement aron.carroll aron.carroll demo phase 1 closed fixed Demo issues on the search dataset page " * Crosses have disappeared * Formats should stretch across the page" 1340035222000000 1340185609000000 2558 enhancement aron.carroll aron.carroll demo phase 1 closed fixed Demo site add dataset has missing functionality " * Needs tags * Needs groups * Needs slug * Licenses links to something * Needs tooltips (Ira to write some tooltips)" 1340035280000000 1340615257000000 2561 enhancement aron.carroll aron.carroll demo phase 1 closed fixed Demo theme edit dataset is missing functionality "* Add tags * Add groups * JavaScript for custom fields" 1340035457000000 1341497328000000 2563 enhancement aron.carroll aron.carroll demo phase 1 closed fixed Add font based icons to the demo theme "Allowing them to be displayed in many sizes, colours and resolutions. http://www.zurb.com/playground/foundation-icons" 1340035831000000 1341501320000000 2564 enhancement aron.carroll shevski demo phase 1 closed fixed Updates to additional info fields on datasets "E.g. http://s031.okserver.org:2375/en/dataset/adur_district_spending/resource/04127ad5-77e5-4a08-9f40-12d3c383e460 When there are no maintainer/contact details or extra fields we should hide the additional info box completely. Otherwise hide the last updated and licence fields which are already displayed in sidebar. Update sidebar to provide context - so 'CSV' -> 'CSV format' + 'unknown' -> 'Last updated: unknown' " 1340038534000000 1340118952000000 2565 enhancement aron.carroll shevski demo phase 1 closed fixed Social links to open in new tab/JS lightbox Share this (twitter/fb) links open in new tab (no JS) or nice lightbox of some description in demo 1340039322000000 1340116053000000 2567 enhancement aron.carroll shevski demo phase 1 closed fixed remove resource type field from add data step No real need/use for this for demo/ODS yet 1340039447000000 1340120447000000 2568 enhancement aron.carroll shevski ckan-sprint-2012-06-25 closed fixed Crop/shorten titles in breadcrumb headings So that they don't interfere with buttons such as here: http://s031.okserver.org:2375/en/dataset/afterfibre/resource/5d19f9fa-c5a4-426c-84de-c624d6e8c3b3 1340039534000000 1340108132000000 2570 enhancement aron.carroll shevski ckan-sprint-2012-06-25 closed fixed add 'back to dataset' button to resource pages Suggest making this consistent with http://s031.okserver.org:2375/dataset/adur_district_spending/related by adding same button in top right of resource pages 1340039680000000 1340107841000000 2576 enhancement aron.carroll toby demo phase 1 closed fixed resource side box in dataset resource view broken "assuming you have datahub data http://localhost:5000/en/dataset/2008_facility_ghg_emissions_by_province_territory/resource/28650645-8878-4826-9405-f20b9dfa4c12 also the breadcrumb becomes overly long too " 1340199857000000 1340617688000000 2584 enhancement aron.carroll toby demo phase 1 closed fixed edit profile needs new theme " http://localhost:5000/user/edit/<my user name>" 1340359925000000 1340620576000000 2598 enhancement aron.carroll toby demo phase 1 closed fixed stages css broken in FF I see X where none should be 1340708102000000 1341218567000000 2610 enhancement aron.carroll shevski demo phase 1 closed duplicate Text / link changes "In the footer: Change 'Powered by CityData' to Powered by DataSuite (with link to ckan.org/datasuite) Links in left hand side of footer should change to a link to ckan.org, link to OKFN, link to ckan.org/datasuite/about and link to Pricing Page (on ckan.org .. will be /datasuite/solutions) In create dataset form, prefilled tag examples should include one example with a space, e.g. ""mental health""" 1340810738000000 1341501424000000 2611 enhancement aron.carroll shevski demo phase 1 closed fixed Text / link changes "In the footer: Change 'Powered by CityData' to Powered by DataSuite (with link to ckan.org/datasuite) Links in left hand side of footer should change to a link to ckan.org, link to OKFN, link to ckan.org/datasuite/about and link to Pricing Page (on ckan.org .. will be /datasuite/solutions) In create dataset form, prefilled tag examples should include one example with a space, e.g. ""mental health"" Change 'Groups' to 'Publishers' everywhere Homepage copy/images (Ira to supply?)" 1340810740000000 1342008509000000 2613 enhancement aron.carroll shevski demo phase 2 closed wontfix Javascript functionality " 1. file uploads on dataset creation 2. create dataset validation 3. create dataset slugs 4. Add dataset to group process: pop-up allowing you to quickly search for a pick a dataset to add to group. Must check you have necc auth over dataset to be added validation of user name 5. Language box 6. toggling activity stream 7. Search sorting 8. autocomplete on tags 9. add and remove custom fields on forms 10. the rest: tooltip on popular datasets with number of views facets to update automatically creating a dataset without reloading page between steps hover on licences information autocomplete on search terms group filtering add comment to datasets social share buttons in lightboxes dataset counts on homepage?" 1340814271000000 1342620543000000 2614 enhancement aron.carroll toby demo phase 3 closed fixed improve the documentation around less/node "needs to move to a better home better ubuntu install instructions plus test they work `apt-get install nodejs` integrate with paster" 1340815928000000 1343685572000000 2617 enhancement aron.carroll aron.carroll demo phase 2 closed fixed Move data preview into demo 1340875192000000 1342088744000000 2626 enhancement aron.carroll toby closed invalid ff render issue in edit dataset "http://localhost:5000/dataset/edit/2010-nigeria-budget the edit url button appears too high up" 1341499419000000 1341499834000000 2636 enhancement aron.carroll aron.carroll demo phase 2 closed duplicate Style activity stream in user profile 1341835166000000 1342090614000000 2637 enhancement aron.carroll aron.carroll demo phase 2 closed fixed Submit search form when user changes sort order 1341835218000000 1342617226000000 2643 enhancement aron.carroll aron.carroll demo phase 2 closed fixed Demo homepage redesign "Discussion: https://okfn.basecamphq.com/projects/9558659-demo-ckan-front-end/posts/61696765/comments" 1341848685000000 1342617247000000 2647 enhancement aron.carroll toby demo phase 5 closed fixed api bullshit button make it as a snippet calling thing like aron would love 1341920530000000 1343229185000000 2659 defect aron.carroll shevski demo phase 2 closed fixed HTML preview window in demo too small "See http://demo.ckan.org/dataset/example-dataset/resource/d8797e51-b497-46ca-a274-8675533d110b David previously fixed this on some version of demo, seems to have regressed. Just want the window to be longer" 1342010723000000 1342089310000000 2661 enhancement aron.carroll toby demo phase 2 closed fixed delete dataset/group javascript confirm "in 2375-demo-theme-development templates/package/confirm_delete.html needs to be made to look nice note some writing in black delete button needs nice home on dataset/edit you can add js support add ?confirm=yes to url on dataset button to force delete Please note delete is not yet implemented - but will be in the next few hours" 1342012395000000 1342716070000000 2665 enhancement aron.carroll toby demo phase 2 closed fixed add dataset stages need to be form buttonable "the stages snippet needs to be inside <form> so I can make some links buttons - eg stage 1 -> stage 2 I want to save the dataset not just move to add resource if you can just move it within the form html leaving everything else the same - I can then add buttons and pass back for styling" 1342023971000000 1342088650000000 2666 enhancement aron.carroll toby closed fixed templates/package/resource_edit.html "There is a new template for editing resources outside of the add dataset logic this is the template it just throws some crap onto the page at the moment - we need to create a form - the form will end up with the usual data/edit stuff but for now you can use the resource to populate the form and I can then change it to use data - I just want to know which fields we'll have templates/package/resource_edit.html when done reassign to me and I'll get it functioning" 1342084373000000 1343220176000000 2669 enhancement aron.carroll toby demo phase 5 closed fixed style [Draft] "I've added [Draft] to partial completed datasets in the package list and read commit 6a8e74d0 templates/snippets/package_list.html templates/package/read.html do you want to style them in some way?" 1342174110000000 1343907572000000 2675 defect aron.carroll shevski demo phase 2 closed fixed editing related item uses 'create' button instead of save "see http://s031.okserver.org:2375/dataset/gold-prices/related/edit/46ba1174-3666-486e-b822-b5b45ffbb703 when editing a record, button at bottom right should change to save instead of create" 1342435576000000 1342461534000000 2677 enhancement aron.carroll shevski demo phase 2 closed fixed related item links should open in new tab Clicking on the blue buttons or images on related page http://s031.okserver.org:2375/dataset/gold-prices/related should take you to a new tab instead of navigating you away 1342435923000000 1342461576000000 2681 enhancement aron.carroll shevski demo phase 2 closed duplicate autofill on resource format "This is pretty key for standardization. Also would like us to change the grey text to be: e.g. CSV, JSON, [more examples... i have no idea what they key ones are tbh]" 1342440406000000 1343135874000000 2684 enhancement aron.carroll toby demo phase 2 closed fixed .js leaving forms warning "I think it would be nice to have all form pages monitor their forms - excluding search ones - and if a field has changed then warn the user that they have not saved the form data but are leaving the page. This would help with things like changing resources on the add dataset resource form etc." 1342510477000000 1342539637000000 2687 defect aron.carroll shevski demo phase 2 closed fixed uploading file breaks add dataset process "Once you upload a file, all the buttons on the page stop working. You can't complete & go to next step or save & add another or go to previous Clicking on these just seems to re-load the page http://s031.okserver.org:2375/dataset/new_resource/super" 1342518422000000 1342534855000000 2689 enhancement aron.carroll shevski demo phase 2 closed fixed clicking on 'save & add another' doesn't act as expected "Clicking on 'save & add another' button here http://s031.okserver.org:2375/dataset/new_resource/yo takes you to step 3 instead of leaving you on step 2 when you haven't added any data. Instead it should show an alert/ message that no data has been added & that you need to link to a file or upload something Also, can upload be option 2 instead of 3?" 1342538126000000 1342617293000000 2690 enhancement aron.carroll shevski demo phase 2 closed fixed long URL misaligns edit button for slug See attachment. Just need to amke sure that there's enough spacing around the edit button and that it lines up so it doesn't look too wierd 1342538301000000 1342542394000000 2692 defect aron.carroll shevski demo phase 2 closed fixed 'add your own data' link in no search results wrong "the ""add your own data"" link in ""Try another search term, browse the datasets below or add your own data."" here http://s031.okserver.org:2375/dataset?q=stuff doesn't take you to add a dataset, just back to the search/datasets page" 1342540803000000 1342617328000000 2695 enhancement aron.carroll shevski demo phase 2 closed fixed autocomplete for tags in dataset creation / edit form 1342619891000000 1343138240000000 2696 enhancement aron.carroll shevski demo phase 2 closed fixed autocomplete for resource format in create/edit dataset forms 1342619938000000 1343138454000000 2700 enhancement aron.carroll shevski demo phase 3 closed fixed language box lang box improvements: styling, images, submit upon selection 1342620223000000 1344505614000000 2706 enhancement aron.carroll shevski demo phase 2 closed fixed hide all prefilled fileds from resource edit form page i.e. mimetype, size, last updated etc 1342621381000000 1342707718000000 2713 enhancement aron.carroll toby demo phase 3 closed fixed button colour not set properly in variables.css "to reproduce run paster color fuchsia -c development.ini then go to http://localhost:5000/dataset/new Add button is blue gradient at the top this should be overridden in variables.less when added send this ticket to me and i'll update the color command to change it" 1342706428000000 1343656865000000 2720 enhancement aron.carroll shevski demo phase 2 closed fixed no padding around gravitars on all users page "http://s031.okserver.org:2375/user needs some spacing between the image & user name We could also display some stats here (e.g. number of dataset created, timestamp of last activity)" 1342948111000000 1343219999000000 2722 defect aron.carroll shevski demo phase 3 closed fixed Ordering or search of datasets of a group brings up 'no results' "1. go to a group, e.g. http://s031.okserver.org:2375/group/data-explorer 2. Order by anything, e.g. choose 'popular' and click go 3. ""sorry no datasets found"" message appears instead of ordering the group datasets in wanted order http://s031.okserver.org:2375/group/data-explorer?q=&sort=views_recent+desc" 1342948854000000 1344510010000000 2723 defect aron.carroll shevski demo phase 2 closed fixed Search result summary badly displayed "Text goes over the order by text, with drop down floating on top meaning it's all impossible to read http://s031.okserver.org:2375/dataset?q=unemployment%2C+data&sort=metadata_modified+desc" 1342949143000000 1343136190000000 2739 enhancement aron.carroll shevski demo phase 3 closed fixed Help text for format field "Can we please add some text next to the format field when user adding a new resource along the lines of: ""This will be generated automatically, but you can edit if you wish"" It always seems to work better when the user does not fill it themselves..." 1343123175000000 1343817919000000 2744 defect aron.carroll toby demo phase 2 closed fixed license dropdown is cramped "http://s031.okserver.org:2375/dataset/new license dropdown - when open we need some line spacing at least in FF I think it'd be nice to fix this in phase 2" 1343144543000000 1343219298000000 2749 enhancement aron.carroll toby demo phase 5 closed fixed page title issue with super() super() "title broken for http://s031.okserver.org:2375/en/dataset/new_resource/gold-prices we have inherited the title from the extended page not from the base should be 'add data - ckan' not 'add data - create dataset - ckan' any idea how we fix this?" 1343215828000000 1343232304000000 2753 enhancement aron.carroll shevski demo phase 2 closed fixed rename breadcrumb on user page "Currently lower case 'active' is the name of this page: http://s031.okserver.org:2375/user Should be 'All Users' or 'Active Users'" 1343225088000000 1343227431000000 2754 enhancement aron.carroll shevski demo phase 2 closed fixed Add + icon to two buttons Specifically the 'add resource' button and the 'add item' button in related section 1343225177000000 1343227446000000 2759 enhancement aron.carroll toby demo phase 3 closed fixed resource upload pointer incorrect "On the add resource forms new or existing dataset when hovering over `Upload a file` css cursor should be pointer not text" 1343289469000000 1343651082000000 2760 enhancement aron.carroll shevski demo phase 3 closed fixed fix spacing between data API button and other buttons on dataset page "see spacing between 'download' button and 'data api' button http://s031.okserver.org:2375/dataset/afterfibre/resource/66f5b980-06db-4ccd-a005-c18de4d68a4b" 1343297360000000 1343319140000000 2765 enhancement aron.carroll aron.carroll demo phase 3 closed fixed Demo login error messages "I'd suggest we add a generic ""failed to login, invalid fields"" in the error_summary block. Then more specific ""this field is required"" when a required field is left empty. So in general, provide an error dict" 1343317842000000 1343817858000000 2767 enhancement aron.carroll aron.carroll demo phase 3 closed fixed Upgrade macro form.select to use tuples instead of dicts This keeps the intended order. 1343319298000000 1343645517000000 2776 enhancement aron.carroll shevski demo phase 3 closed fixed add styled text field for header title "to use on demos instead of the ckan logo & tag line. Design here: https://okfn.basecamphq.com/projects/9558659-demo-ckan-front-end/posts/63387712/comments#190457381 (First, text only one at the bottom)" 1343724603000000 1343824375000000 2778 enhancement aron.carroll toby demo phase 3 closed fixed apps dashboard needs some design love "apps dashboard available at http://localhost:5000/apps in main dev branch I have got this to work in the demo however a) it is a bit ugly b) the template could do with some sorting eg the dropdowns should be being created in a nicer way " 1343734040000000 1343841130000000 2779 enhancement aron.carroll shevski demo phase 3 closed fixed add 'deleted' to deleted datasets that admins can view "Currently, as a logged in admin, you can view deleted datasets just as if they are live datasets. Nothing distinguishes them apart from normal datasets other than they don't show up on the dataset page This is potentially very confusing Can we add some kind of banner / label to deleted datasets to show they have been deleted? & Do you guys need Sam to design this? Related ticket for undeleting datasets - http://trac.ckan.org/ticket/2780" 1343737077000000 1343903455000000 2781 enhancement aron.carroll shevski demo phase 3 closed fixed add way to edit homepage text to simple theming "demo.ckan.org has a small field for adding text on homepage current text: ""Welcome to the CKAN demo Try out standard CKAN functionality in a sandbox environment. Search for datasets directly from the homepage or by navigating to the Datasets search page where you can facet by tags, groups and format."" Want to make this editable for demos" 1343738523000000 1344510922000000 2789 enhancement aron.carroll toby demo phase 3 closed fixed logo fixups "With the text logo I'd like the tag line to be under the site name so some css like `float:left;clear:left;font-size:13px;line-height:0.1;` Also the site name can be larger if no tagline commit daac54dbd856 I've added a new global g.header_css that sets the hgroup class to 'header-image' 'header-text-logo' 'header-text-logo-tagline' I think maybe we should also have 'header-image-css' for the equivalent of the class=""logo"" in the link to allow/stop the image replacement " 1343835141000000 1343835904000000 2791 enhancement aron.carroll toby demo phase 3 closed fixed Logo fix "@aron We should be able to have longish tag lines that look ok currently they wrap and stop the logo text being clickable Can we have `white-space:nowrap;` for the tagline so long ones don't wrap and maybe look at aligning long ones " 1343895034000000 1343906891000000 2792 enhancement aron.carroll toby demo phase 3 closed fixed dropdown fixes - open correctly "http://s031.okserver.org:2375/ language dropdown expands downwards it should open upwards select2 can do this see http://ivaynberg.github.com/select2/#documentation can you see if we can get this in ckan demo " 1343895296000000 1343901501000000 2794 enhancement aron.carroll toby demo phase 3 closed fixed top buttons missing on edit resource "http://s031.okserver.org:2375/dataset/resource-markdown/resource_edit/ba1b094d-697c-47c4-a72a-6c2557da5409 should have `back to resource` as a minimum" 1343897926000000 1343903064000000 2797 enhancement aron.carroll toby demo phase 3 closed fixed plain_textarea styling "http://localhost:5000/ckan-admin/config uses a plain (non markup) textarea for custom css I've added form macro plain_textarea to provide one, however it renders without a bottom border due to markup textarea styling can you fix this - thanks" 1344000422000000 1344250973000000 2800 enhancement aron.carroll shevski demo phase 5 closed worksforme tooltip on popular datasets with number of views be good to do this in phase 3 1344243925000000 1344544461000000 2801 defect aron.carroll shevski demo phase 3 closed fixed no way to see full description of a related item "e.g. see here: http://s031.okserver.org:2375/apps same with related page on a dataset" 1344245809000000 1344531016000000 2802 enhancement aron.carroll aron.carroll demo phase 3 closed fixed Need to tweak the JSON formatting of the localisations "This is what we need the JSON to look like. Taken from the Jed documentation (http://slexaxton.github.com/Jed/). {{{ { // The empty string key is used as the configuration // block for each domain """" : { // Domain name ""domain"" : ""the_domain"", // Language code ""lang"" : ""en"", // Plural form function for language ""plural_forms"" : ""nplurals=2; plural=(n != 1);"" }, // Other keys in a domain contain arrays as values // that map to the translations for that key. // Gettext suggests that you use english as your keys // in case the key isn't found, and it can just pass // the value directly through. // Note: by convention, the 0-index location of the translations // is never accessed. It's just a thing, I guess. ""a key"" : [ null, ""the translation"", ""the plural translations"", ... ], // The plural form string is converted into a function // and the value that's passed into the gettext call // is passed into the plural form function. It's result // (plus 1) is the index that the translation comes from. // We're using sprintf interpolation on our keys so we can // then sub in the _actual_ values into the result. ""%d key"" : [ null, ""%d key"", ""%d keys"" ], // Contexts are keys that are just prefixed with a context string // with a unicode \u0004 as the delimiter. // You can use it for anything. Usually it's just for being content aware // in some way (e.g. male vs. female, product vs. category) ""context\u0004%d key"": [ null, ""context %d key"", ""context %d keys"" ] } }}} This looks like an appropriate python library to do the formatting. http://pypi.python.org/pypi/pojson/ but I'll leave to your discretion. Finally an API endpoint that returns the appropriate request would save us making requests to the i18n directory. {{{ /api/i18n/{locale} }}} For example if the current url is http://localhost:5000/pl/dataset then the client would request: {{{ http://localhost:5000/api/i18n/pl }}} This should return the Content-Type: application/json and a 200 with an appropriate JSON body (this can be the language requested or an appropriate fallback). I think that if the fallback is the default language (in most cases English) then we just return a 204 No Content to save data. " 1344248847000000 1344269446000000 2803 enhancement aron.carroll aron.carroll demo phase 3 closed fixed Convert all JS translations to use keywords 1344251817000000 1344256274000000 2804 enhancement aron.carroll shevski demo phase 3 closed fixed please make download button blue "on resource pages (e.g. http://s031.okserver.org:2375/dataset/afghanistan-election-data/resource/f6331f99-51f6-44d9-95b9-b20f3b74f360), same as old ckan for continuity and to highlight!" 1344252255000000 1344269865000000 2807 enhancement aron.carroll toby demo phase 3 closed fixed autocomplete.js error "@aron, edit dataset has a js error http://localhost:5000/dataset/edit/1-kmwaterfractionfromnationaltopographicdatabasemapscanada TypeError: options is undefined [Break On This Error] this.lookup(options.term, options.callback); autocomplete.js (line 231)" 1344266228000000 1344270190000000 2808 enhancement aron.carroll toby demo phase 3 closed fixed Confirm delete dialog badly placed on small screen "If you make your browser window short - say half screen height on a page with delete eg http://localhost:5000/dataset/edit/1-kmwaterfractionfromnationaltopographicdatabasemapscanada the dialog box is partially off the screen - it should try to stay on screen" 1344333474000000 1345023693000000 2809 enhancement aron.carroll toby demo phase 3 closed fixed _ not defined for modules "eg on confirm delete http://localhost:5000/zh_TW/dataset/edit/1-kmwaterfractionfromnationaltopographicdatabasemapscanada _(....) gives [object Object] not translation" 1344335863000000 1344347814000000 2837 enhancement aron.carroll toby demo phase 3 closed fixed checkbox styling Is this done I know checkboxes are a pain but it looks a bit out of place compared to the other items. 1344605993000000 1344851271000000 2840 enhancement aron.carroll toby demo phase 3 closed fixed tag line styling "@aron Is it possible to get the tagline text to float the other way at the moment we have ...........Title Tag line to here I'd like ...........Title ...........Tag line to here is this possible or too much pain based partly on this comment Markw wrote A minor problem visible on the home page <http://s031.okserver.org:2375/> and other pages, when viewing in both Chrome and Firefox: if the browser width is not very wide, the tag line 'Open source data portal' vanishes off the *left* hand side of the screen. For some reason the browser doesn't even recognise this with a horizontal scroll bar (as it does when stuff is off the *right* hand side) - it just chops off the text." 1344851307000000 1344852538000000 2841 enhancement aron.carroll amercader demo phase 3 closed fixed Slug generation fails on demo dev "On the add dataset form, slug generation fails with JS error: {{{ Uncaught TypeError: Object [object Object] has no method 'incompleteFormWarning' basic-form.js:5 }}} " 1344855653000000 1344857415000000 1142 enhancement annapowellsmith rgrp ckan-v1.5 closed fixed [super] Major Overhaul and Extension of CKAN Documentation "Child tickets: * #1041 Start Using the CKAN Wiki for Tutorial-style documentation * #1192 Convert CKAN Sphinx docs into admin/reference manual Previous super ticket (from 3m ago): http://trac.ckan.org/ticket/927 * CKAN 1-page overview (for enterprise and for data hackers) * Administrator's Guide (including install) * Extensions Guide * Separate CKAN.net info from Software Documentation (?) Also now a wiki page with more detail: http://wiki.ckan.net/Documentation_Plans == Minor Items == " 1305727452000000 1313775665000000 1192 task annapowellsmith annapowellsmith ckan-sprint-2011-10-28 closed fixed Convert CKAN Sphinx docs into admin/reference manual "As part of the general documentation overhaul (ticket:1142) we (APS and RGRP) want to convert the current Sphinx docs into: * An Admin Manual which is task-based and aims to cover everything a developer would need to know to set up and customize a CKAN install. * A Reference Manual which is the primary source of reference for CKAN software - this includes API docs. The current chapters of the Sphinx docs should be moved as follows: * index.rst - copy some stuff from README.txt, keep short * README.txt - split out installation - stop symlinking in, keep separate, write new intro in index.rst * [NEW] install.rst - new file on installation * [NEW] theming.rst - move over from wiki * api - will stay (gradually move tutorials/getting started to wiki.ckan.net user guide) * i18n.rst: internationlization. say we have x langauges. just set lang config option. if your lang not there yet see wiki page for how to prepare a translation file * design.rst - REMOVE (can copy some over if you can be bothered to http://wiki.ckan.net/Vision (all philosophical stuff should go!)) * loaders.rst: move to wiki.ckan.net/Using_Loaders * feeds.rst: move to User Manual (CKAN_Feeds or just Feeds) * importer.rst: remove (don't even copy) * forms.rst: remove (ping david read and ckan-dev asking for replacement documentation -- do we need this in core ckan -- do we want pure js ...?). Suggest we start with (stub out) http://wiki.ckan.net/Customizing_Forms * forms-integration.rst: remove * model.rst: leave but move to reference (only for core devs) * load-testing.rst -> move to http://wiki.ckan.net/Load_Testing * distributed.rst -> remove * admin.html should consolidate with authorization.html (some of authorization.html is probably in ref section but howto in main manual) <-- high priority * deb.html -> go into reference (query james gardner on list about moving this to wiki?)" 1308324593000000 1312191462000000 728 requirement amercader johnbywater ckan-backlog assigned CSW Harvesting shall be optimised in respect of reharvesting only records that have changed Hi Will, this is important again because some CSW servers we use have over 300 documents in. Could you take a look at modifying the filter please? 1287675340000000 1310124784000000 736 requirement amercader johnbywater ckan-v1.4-sprint-7 closed fixed URL validation for CSW and WMS links "Robust against slightly incorrect URLs (e.g. with trailing slash, or without /csw), and non-CWS service which also return <ows:ExceptionReport ... />. Both cases would be resolved by checking capabilities (with !CswClient's check_get_capabilities() method)." 1287749416000000 1304963598000000 794 requirement amercader johnbywater ckan-backlog assigned Investigate reconciling UKLP Publisher and Provider with DGU "This needs more analysis, but the GEMINI2 attribute ""metadata point of contact"" must be reconciled with the registered publisher (or agent). This might also be used to filter records harvested from a CSW source, but filtering also needs more analysis, as does distinction between agent and provider." 1289227811000000 1311179581000000 1030 defect amercader thejimmyg closed fixed Move harvesting out of the rest API 1299776418000000 1303117978000000 1037 defect amercader thejimmyg ckan-v1.4-sprint-6 closed fixed More Robust Harvesting for DGU "CKAN's harvesting facility is now live on DGU but there are some major improvements that could be made to make it more robust and better fit the generic CKAN harvesting framework proposed in #987. Some of the key issues: * Error reports do not currently contain the ID or title of the document with the error. * We only have ""added"" and ""error"" logging on jobs when we really need a report of ""added"", ""updated"", ""not changed"" and ""errors"" with the items in each referencing a real metadata document for which harvesting was attempted * We need deletion and editing of sources, without deleting the harvested documents or packages * We need a more robust harvesting mechanism than a cron job or we need to deal with the case of multiple cron jobs running at once. * We need to know the last time a list of documents was scheduled for harvest and the last time each one was fetched. " 1300197602000000 1304937601000000 1152 enhancement amercader amercader ckan-backlog new True support for generic CSW servers "The CSW harvesters implemented at the moment were developed with the DGU project in mind, and they assume all remote CSW servers to implement the Gemini 2 specification. Gemini 2 is the profile defined in the UK for INSPIRE complying metadata, so obviously catalogs from other countries or non-INSPIRE complying ones won't be able to be harvested. The changes needed to support generic CSW servers (i.e. those implementing the ISO 19139 profile) are: * Handling the validators (right now are hardcoded in the harvester code). This probably involves issues discussed in the CREP 3 (ticket #1134) * Changes in the model to adapt the specification to ISO 19139 * Renaming objects and classes which are now Gemini-centric List of CSW servers tested: https://spreadsheets.google.com/spreadsheet/ccc?key=0Atp3cZFjuIOAdDBVQWRINnlfN1d0b2lleHVEdjBSb2c&hl=en_US&authkey=CNu4hsEB#gid=0" 1306141334000000 1313411822000000 1160 enhancement amercader amercader pdeu-1 closed wontfix Havest CSW servers on PDEU "It could be interesting for the publicdata.eu project to add some CSW datasources. Thanks to the INSPIRE directive, there are quite a few national catalogs of geodata that could be worth harvesting. Work on this should include: * Compose Endpoint List (1d) * Harvest on staging system and evaluate which sources have useful material (2d) First point is being performed in this GDoc: https://spreadsheets.google.com/spreadsheet/ccc?key=0Atp3cZFjuIOAdDBVQWRINnlfN1d0b2lleHVEdjBSb2c&authkey=CNu4hsEB&hl=en_US#gid=0" 1306407271000000 1309804038000000 1162 enhancement amercader amercader pdeu-1 closed fixed Define a common extra for storing the geographic extent "We need a common extra across the different harvested sources that defines the extent of the data. We will have mainly national level catalogues, but also at a lower level (region, city). Relevant discussion: http://lists.okfn.org/pipermail/ckan-discuss/2011-May/001245.html " 1306408704000000 1308647187000000 1164 enhancement amercader amercader pdeu-1 closed fixed Cloropleth Map of European Data Availability for PDEU A nice map in the homepage showing the availability of data across Europe 1306408824000000 1308647224000000 1166 enhancement amercader amercader ckan-sprint-2011-10-10 closed fixed Less stringent filters for displaying the WMS preview "Right now, for the ""View available WMS layers"" link to be displayed, the package needs to have an ""INSPIRE=True"" extra, a ""resource-type=service"" extra and a resource of type ""WMS"". This is due to DGU (the project this was developed for) related reasons, but for a generic support, the resource type should probably be enough. (The repository for this is ckanext-spatial, but it's not on the list)" 1306422646000000 1317381932000000 1173 enhancement amercader amercader pdeu-1 closed fixed Offer a DCat representation for packages in the API /api/rest/package/foo.rdf should return a DCat representation of the package. To create it, we will use the functions in ckanext-rdf. 1306939639000000 1307615271000000 1253 enhancement amercader amercader ckan-sprint-2011-10-28 closed fixed Authz refactor We agreed on a system that allows overriding the authz checks at a logic function level (e.g. package_create, user_show) and supports the old (current) authz system. 1312199491000000 1313401367000000 1301 defect amercader amercader ckan-sprint-2011-09-12 closed fixed Give access to extensions from the old formalchemy controllers This was removed during the auth refactoring, but it's needed in the old controllers 1314882888000000 1314893744000000 1303 defect amercader amercader ckan-sprint-2011-09-12 closed fixed User can not login again if he has edited his profile "Only happens if the user does not update the password. Most probably introduced during #1229." 1314889472000000 1314978842000000 1304 enhancement amercader amercader ckan-sprint-2011-09-12 closed fixed Show more descriptive error messages when sending emails Sending emails is failing in some cases, and the error message just says 'Could not send reset link'. 1314893206000000 1314893749000000 1333 enhancement amercader amercader ckan-sprint-2011-10-28 closed fixed Move form converters to ckan core Functions like convert_to_extras and convert_from_extras will be widely used from extensions and should be on ckan core. 1315909268000000 1316951285000000 1334 defect amercader amercader ckan-sprint-2011-10-28 closed fixed """AttributeError: 'NoneType' object has no attribute 'name'"" exception when logging in" "On same cases this exception is thrown when logging in: {{{ File '/home/adria/dev/envs/iati/src/ckan/ckan/controllers/user.py', line 252 in logged_in user_dict = get_action('user_show')(context,data_dict) File '/home/adria/dev/envs/iati/src/ckan/ckan/logic/action/get.py', line 414 in user_show revision_dict = revision_show(context,{'id':revision.id}) File '/home/adria/dev/envs/iati/src/ckan/ckan/logic/action/get.py', line 332 in revision_show ref_package_by=ref_package_by) File '/home/adria/dev/envs/iati/src/ckan/ckan/model/__init__.py', line 317 in revision_as_dict for pkg in revision.packages] AttributeError: 'NoneType' object has no attribute 'name' }}} " 1315909508000000 1319798961000000 1337 defect amercader amercader ckan-sprint-2011-10-28 closed fixed Group extras are JSON endoded in the REST API responses "Instead of this: {{{ extras: { type: """"Primary source"""" license_id: """"localauth-withrights"""" publisher_frequency: """"2Pre\u00f1o \u20ac $ \u00e0dri\u00e0"""" } }}} we should return this: {{{ extras: { type: ""Primary source"", license_id: ""localauth-withrights"", publisher_frequency: ""2Preño € $ àdrià"", } }}}" 1315924727000000 1316951259000000 1338 defect amercader amercader ckan-sprint-2011-10-28 closed fixed Exception when trying to use a custom form schema from an extension "Both with the package and group controllers, when overriding the default _db_to_form_schema method (which does nothing) from an extension, you get an exception because the context is not passed to the validators. {{{ File '/home/adria/dev/envs/iati/src/ckan/ckan/controllers/group.py', line 140 in edit old_data, errors = validate(old_data, schema) File '/home/adria/dev/envs/iati/src/ckan/ckan/lib/navl/dictization_functions.py', line 215 in validate converted_data, errors = _validate(flattened, schema, context) File '/home/adria/dev/envs/iati/src/ckan/ckan/lib/navl/dictization_functions.py', line 270 in _validate convert(converter, key, converted_data, errors, context) File '/home/adria/dev/envs/iati/src/ckan/ckan/lib/navl/dictization_functions.py', line 178 in convert converter(key, converted_data, errors, context) File '/home/adria/dev/envs/iati/src/ckan/ckan/logic/validators.py', line 108 in group_name_validator model = context['model'] KeyError: 'model' }}}" 1315925217000000 1317117738000000 1354 enhancement amercader amercader ckan-v1.5 closed wontfix Pass the context object to plugins implementing the IPackageController and IGroupController "Plugins implementing some IPackageController or IGroupController operations (i.e. read, create, edit, delete) may need the context used in the logic action. For instance, to access the Session that created a package to perform additional queries from the extension (In that case the main logic action will still perform the final commit). " 1316955680000000 1316970374000000 1375 enhancement amercader amercader ckan-sprint-2011-10-10 closed fixed Define new package id before sending it to the IPackageController plugins "When creating a package, the package_create logic function sends the newly created package object to all plugins implementing the IPackageController interface https://bitbucket.org/okfn/ckan/src/93194933ea75/ckan/logic/action/create.py#cl-64 At this point, the changes have not yet been commited and the id of the package is not set (It has a default value of make_uuid, which is set when commited). For this reason, plugins have no way of knowing the package id. E.g. the spatial query plugin needs to know this id to link the package extent to the actual package. One possible solution would be to set the package id in the data dict received by package_create (if it's not defined): {{{ from ckan.model.types import make_uuid if not 'id' in data or not data['id']: data['id'] = make_uuid() }}}" 1317910441000000 1318260008000000 1381 enhancement amercader pudo ckan-sprint-2011-10-24 closed fixed Managing groups via package entity API "It is not currently possible to assign or remove groups by adding or removing their group name from the ""groups"" list on the REST API. This should be allowed, as it is easier than first adding a package and then editing each group it must belong to. " 1318266706000000 1324037815000000 1456 enhancement amercader amercader ckan-sprint-2011-11-21 closed fixed Use resource description instead of name if both are present If a resource has both description and name the name is used. Descriptions are generally more, well, descriptive, so let's use those. 1320862619000000 1324472178000000 1462 defect amercader thejimmyg ckan-sprint-2011-12-19 closed fixed Multi-Instance CKAN Solr Search Issues "With the 1.5 package release, CKAN instances over-write each other's indexes. Adria has a fix. I'd like to see a new CKAN 1.5.1 release with the Solr changes merged and the Solr site ID set up as part of the install ckan.site_id = dgu-os.okfn.org. I'd also like the ability to search on ID and to have the ID directly visible on the package page. We need to decide how to do this upgrade without affecting existing CKAN solr indexes." 1321375470000000 1330083671000000 1469 enhancement amercader thejimmyg ckan-sprint-2012-03-05 closed fixed Geo-spatial search on the front end Now that we have a geospatial search API, we should build a front-end that integrates with the existing search for displaying results. 1321376324000000 1330102878000000 1490 enhancement amercader amercader ckan-sprint-2011-12-05 closed fixed Standardize output from package listings coming from the logic layer "Right now, the two logic functions that return a list of packages (package_search [1] and group_packages_list [2])use custom functions to generate the output dict. That's suboptimal because: - The template function that renders the package listing (package_list_from_dict) could end up receiving different dicts. - Not all package properties are available at the template level (e.g extras, tags...). These can be really useful to customize the listing from an extension. In general only the functions present in lib/dictization/model_dictize.py should be used to build the output of a logic function, in that case package_dictize. If necessary, they can be modified to include missing properties, like on this particular case the ""isopen"" property, needed by the template renderer. [1] https://github.com/okfn/ckan/blob/master/ckan/logic/action/get.py#L685 [2] https://github.com/okfn/ckan/blob/master/ckan/logic/action/get.py#L442" 1322225239000000 1324033557000000 1498 enhancement amercader amercader ckan-sprint-2011-12-05 closed fixed Support multiple SOLR schema versions "At some point the SOLR schema used by CKAN will need to be changed and the changes won't be always backward compatible, so we need a mechanism to support instances that use older versions of the schema. This process will involve: * Better documentation on how to deploy SOLR, as single instance or multicore * A convention on how to tag schema versions and SOLR endpoints to ensure that CKAN instances point to the correct SOLR URL. * (If possible) Checks in CKAN core that deal with different schema versions." 1322585264000000 1323165876000000 1516 task amercader amercader ckan-sprint-2011-12-19 closed fixed Update SOLR schema after 1.5.1 release and set up multicore SOLR instances if needed "CKAN 1.5.1 will introduce changes in the SOLR schema and functions to support multiple schema versions. Unfortunately the changes in the schema will be backwards incompatible so either both CKAN and SOLR are upgraded, or SOLR is configured as multicore, with one core for each schema. The solr cores would look like: {{{http://<solr-server>/solr/schema-<version>}}} Different scenarios: * Single SOLR instance used by only one CKAN site (e.g. SOLR running on the same machine): * Update CKAN * Update SOLR schema (symlink to suitable version in CKAN source) * Rebuild search index * Single SOLR instance used by multiple CKAN sites. * Update CKAN source * Configure SOLR as multicore, one core for version 1.2 and another for 1.3 of the schema (symlink to appropriate version in CKAN source) * Update solr_url on each of the CKAN sites with the suitable core * Rebuild search index These are the SOLR and CKAN instances that need to be updated (Please add any missing ones): * Same machine as the CKAN site: * ~~test.ckan.net~~ * ~~iati.test.ckan.net~~ * data.gov.uk/ catalogue.data.gov.uk (confirm) * ~~s046.okserver.org~~ * ~~iatiregistry.org~~ * ~~s052.okserver.org~~ * ~~datacatalogs.org~~ * ~~s004.okserver.org / eu4.okfn.org / solr.okfn.org~~ * thedatahub.org (=www.ckan.net) * datagm.org.uk * ~~publicdata.eu~~ * hri.fi (dev.fvh.fi?) * it.ckan.net * ie.ckan.net * cz.ckan.net * register.data.overheid.nl (nl.ckan.net?) * no.ckan.net / datakilder.no * br.ckan.net * colorado.ckan.net * at.ckan.net TODO: which SOLR server are using these instances? * data.norge.no * nederland.ckan.net * lt.ckan.net * pl.ckan.net * datadotmontreal.ca/ * ca.ckan.net / datadotgc.com " 1323108431000000 1323362689000000 1540 defect amercader amercader ckan-sprint-2012-01-09 closed fixed Search API returns an error if empty parameters are provided "Both in 1.5.1b: http://thedatahub.org/api/search/dataset?groups=lodcloud&title= and 1.5.2a (current master): http://test.ckan.net/api/search/dataset?groups=lodcloud&title= Although the error message in 1.5.2a is more verbose: ""Bad request - Bad search option: HTTP code=400, reason=org.apache.lucene.queryParser.ParseException: Cannot parse 'groups:lodcloud title:': Encountered \""<EOF>\"" at line 1, column 22. Was expecting one of: \""(\"" ... \""*\"" ... <QUOTED> ... <TERM> ... <PREFIXTERM> ... <WILDTERM> ... \""[\"" ... \""{\"" ... <NUMBER> ..."" Some parameter validation before sending it to Solr should do the trick" 1323359388000000 1326060385000000 1547 enhancement amercader amercader ckan-sprint-2012-01-23 closed fixed Add search methods (before and after) to the IPackageController interface "Time estimate: 1d Add a two search method to the IPackageController interface so extensions can: * Modify the query being sent to Solr {{{ def before_search(search_params): return search_params }}} * Modify the results returned (`after_search`) {{{ def after_search(search_results, search_params): return search_results }}} Please see this pad for implementation details: http://ckan.okfnpad.org/search" 1323778996000000 1330084379000000 1590 enhancement amercader amercader closed fixed Create customized feeds for the IATI Registry "We need a way to track changes on the registry (datasets edited or updated), globally and on a per country/publisher/etc. basis. RSS and Atom feeds are really popular, and after closing #191 and #1498 crating them from the search results should be fairly easy. The following URLs are pretty self-explanatory: {{{ http://localhost:5000/feed/registry.rss http://localhost:5000/feed/country/AF.rss http://localhost:5000/feed/publisher/worldbank.rss http://localhost:5000/feed/organisation_type/10.rss }}} As we need to implement custom wrappers for countries, publishers, etc, we might as well offer a fully customizable feed, e.g.: {{{ http://localhost:5000/feed/custom.rss?q=activity_count:[* TO 100] http://localhost:5000/feed/custom.rss?publishertype=primary_source }}} Apart from the actual feeds, there will be a small amount of work at the template level to add the links to the suitable pages (and maybe a generic page showing all available feeds) " 1324486965000000 1326711608000000 1592 enhancement amercader amercader ckan-sprint-2012-01-09 closed fixed Add metadata_modified and metadata_created to package_dictize output The dict returned by package_dictize does not include metadata_modified and metadata_created. These are really useful properties, so it's worth having them on the standard package dict representation, which is used in several places, like at the template level. 1324488909000000 1326304321000000 1601 enhancement amercader rgrp ckan-v1.7 closed fixed [super] Well integrated Geo-spatial support including search "Need thoughts from Adria and James. RP thoughts * Integration into WUI search: #1469 * JS Editor for adding/editing spatial attribute: #1818 * Theme/template hook for adding the map e.g. on dataset page (or elsewhere) * Clear Documentation * Deployment * Announce post * (?) Map page for stats section showing location of datasets Extras (probably separate): * csw support ..." 1325259821000000 1338204029000000 1616 defect amercader amercader ckan-sprint-2012-04-02 closed fixed Catch exceptions when rebuilding the search index Right now if an exception is found while reindexing, the whole process stops and the remaining datasets are left out of the index. The process should continue after logging the exception. If more than a certain number of exceptions occur in a row, the process should stop. 1325844669000000 1332327635000000 1640 enhancement amercader dread closed fixed Setup publicdata.eu harvester for Serbian CKAN datasets Set-up publicdata.eu to harvest datasets at rs.ckan.net (Serbian community CKAN). 1326370425000000 1327340939000000 1641 enhancement amercader amercader ckan-sprint-2012-01-23 closed fixed ckanext-archiver: Content-length header not reliable to check if resource has been modified "The download task in ckanext-archiver performs a HEAD request on the resource URL and checks if the ""Content-Type"" and ""Content-Length"" headers differ from the values stored to see if the resource needs to be updated [1]. The ""Content-Length"" header, although widely used, is not mandatory and some servers don't provide it, e.g.: {{{ $ curl -I http://portfolio.theglobalfund.org/en/IATI/Activities?countryCode=AFG HTTP/1.1 200 OK Cache-Control: private Transfer-Encoding: chunked Content-Type: text/xml Vary: Accept-Encoding Server: Microsoft-IIS/7.5 Set-Cookie: ASP.NET_SessionId=3qhqekddgmre0kmk5cynq0sy; path=/; HttpOnly X-AspNetMvc-Version: 3.0 content-disposition: attachment; filename=AFG_IATI_12012012.xml X-AspNet-Version: 4.0.30319 X-Powered-By: ASP.NET Date: Thu, 12 Jan 2012 12:36:43 GMT }}} Also worth noting that [http://docs.python-requests.org/ requests], the python library that uses ckanext-archiver, sets an ""Accept-Encoding: gzip"" header by default, which depending on the configuration of the remote web server, may prevent the ""Content-Length"" server from being sent, e.g.: {{{ $ curl -H ""Accept-Encoding: gzip"" -I http://iatistandard.org/published-temp/adb-activities.xml HTTP/1.1 200 OK Date: Thu, 12 Jan 2012 12:12:46 GMT Server: Apache Last-Modified: Mon, 28 Nov 2011 15:55:35 GMT Accept-Ranges: bytes Vary: Accept-Encoding Content-Encoding: gzip Content-Type: application/xml curl -I http://iatistandard.org/published-temp/adb-activities.xml HTTP/1.1 200 OK Date: Thu, 12 Jan 2012 11:56:23 GMT Server: Apache Last-Modified: Mon, 28 Nov 2011 15:55:35 GMT Accept-Ranges: bytes Content-Length: 2686720 Vary: Accept-Encoding Content-Type: application/xml }}} All this can lead to some resources never getting updated, and of course the size property of the resource not being set. As we need to download the resource anyway, it would be better to check if the real length of the data has been modified (and store it). [1] https://github.com/okfn/ckanext-archiver/blob/0a189262dca4ab5b286fb6a02b4ab8a201f639f3/ckanext/archiver/tasks.py#L72" 1326376420000000 1326376777000000 1654 task amercader amercader ckan-v1.7 closed fixed [super] Update Publicdata.eu to the latest CKAN stable version "Tasks include: * #1813 Update ckanext-pdeu (4d) * #1814 Update harvesters (2d) * #1649 Verify ckanext-rdf works with latest CKAN (3d) * #1815 Reenable Sparql endpoint (?) * #1816 Update ckanext-apps (2-3d) " 1326710647000000 1338203166000000 1655 task amercader amercader ckan-sprint-2012-01-23 closed fixed Setup issues on s025 (Publicdata.eu) "Time estimate: 2d * Fix logs (apache, ckan, harvest): rotate, set suitable levels * Fix harvesting jobs: supervisord for gather consumer, cron job * Fix backups Also it may be worth setting up a test instance ( on s023 ?)" 1326710844000000 1327312857000000 1678 enhancement amercader amercader ckan-v1.8 closed fixed Make synchronous search the default behaviour "Right now you need to explicitly load the synchronous_search plugin in your ini file, when this is probably the behaviour that all users expect by default. We could keep a config flag to deactivate it, but synchronous search should be the default behaviour." 1326807604000000 1341405749000000 1701 enhancement amercader kindly ckan-sprint-2012-02-06 closed fixed Normalize character encoding for ckan search. "Make sure accented characters are normalized when indexed and when searched for. " 1327419050000000 1330085360000000 1702 enhancement amercader kindly ckan-sprint-2012-02-06 closed duplicate Normalize character encoding for ckan search. "Make sure accented characters are normalized when indexed and when searched for. " 1327419369000000 1327419922000000 1726 enhancement amercader amercader ckan-sprint-2012-02-06 closed fixed Update harvesting model "We need: * ""current"" column in harvest_object * ""harvest_source_id"" column in harvest_object, foreign key to harvest_source * ""title"" column in harvest_source The extension should check on startup if the db needs updating and run the necessary scripts." 1328007127000000 1328523253000000 1727 enhancement amercader amercader ckan-sprint-2012-02-06 closed fixed "Add ""current"" property to harvest objects" "Right now is quite difficult to get the most current version of a package via the harvest objects, and the queries involved are prone to errors. A new ""current"" field will be added which will identify unequivocally the most recent harvested object. Unfortunately this will involve some major changes: * Model update (See #1726) * Update queries for getting harvest sources' datasets * Update ckanext-csw queries for getting the objects * Update inspire and ckan harvesters * Document new field" 1328007254000000 1328523641000000 1728 enhancement amercader amercader ckan-sprint-2012-02-20 closed fixed Update UKLP harvesters "Three small changes: * Set Resource type to None instead of 'Undefined' * Set extra 'UKLP' = True instead of 'INSPIRE' = True These two changes will require manual update of the database. * Allow datasets to be updated if the old source is inactive, even if the metadata date hasn't changed: {{{ if last_harvested_object.metadata_modified_date is None \ or last_harvested_object.metadata_modified_date < self.obj.metadata_modified_date \ or self.force_import \ or last_harvested_object.metadata_modified_date == self.obj.metadata_modified_date and last_harvested_object.source.active is False: }}}" 1328007610000000 1329498181000000 1731 enhancement amercader amercader ckan-sprint-2012-03-19 closed fixed Publisher support for harvesting "Estimate: 4-5d Only sysadmins can manage harvest sources right now, we need to allow publishers to handle their own sources. We need to decide if there will be two different profiles on ckanext-harvest, the current one with only sysadmins allowed to manage the harvesting and a new one supporting publishers (ckan core can be configured to not use the publisher model) Tasks include: * Auth checks on the different controller actions (and the command line interface?) * Modify the index page to just show sources the logged user has permissions on. (Talk with Ross about the specific functions to use) * Create/edit form to show a dropdown with the user available publishers. " 1328007919000000 1332152540000000 1733 enhancement amercader amercader ckan-sprint-2012-02-20 closed fixed Delete (inactivate) harvest sources "Right now harvest sources can be inactivated (only via the cli), but we need to make sure: * Expose this on the web interface (only for sysadmins, see #1731) * Inactive sources are not shown in the web interface Also for deleted packages: a) Deleted packages get state=""deleted"" (not actually purged) so they are hidden on front end ACTION: need a button on the front end for ""Delete"" for sysamdins Done in #1425. Not sure if the button is only shown to sysadmins. b) No undelete: If you reharvest a deleted package, it remains deleted * Publisher should create a new record with new identifier and same/different content as applicable. * If publisher reharvests, a deleted document they get a error and are told to create new identifier for their updated. * You won't get the state where a package is updated in its deleted state * If they change the ID and reharvest, a new record appears on DGU. c) Update CSW interface so that export doesn't export deleted packages d) Check geospatial search doesn't search deleted pacakges e) Check deleted packages don't appear in harvest source details, or in the counts or anywhere in the harvest interface or API. " 1328008287000000 1329754689000000 1734 enhancement amercader amercader ckan-v1.7 closed fixed [super] Updates on harvesting for UKLP "Some changes are needed in ckanext-harvest to support the new piece of work in the UKLP harvesters, mainly related to the deletion of existing sources. * #1726 Update harvesting model * #1727 Add ""current"" field to harvesting objects * #1728 Update UKLP harvesters * #1733 Delete (inactivate) harvest sources At some point we also want to support a publisher model for the harvesting: * #1731 Publisher support for harvesting" 1328008474000000 1332167315000000 1813 task amercader amercader ckan-sprint-2012-03-05 closed fixed Upadate ckanext-pdeu to work with CKAN 1.6 "Tasks include: Estimate 4d * Update requirements (git) * Search facets error * Error on dataset read (extras in context) * Url generator for rdf * Make templates work with latest theme * Use dicts in templates (isopen())" 1329757128000000 1330102557000000 1814 enhancement amercader amercader ckan-sprint-2012-03-19 closed fixed Check publicadata.eu harvesters "Estimate 2d Once ckanext-pdeu is running on CKAN 1.6, upgrade ckanext-harvest to be able to update the CKAN harvesters (default tags and extras). Also check non-CKAN harvesters (specially scrappers) to see if they are still working. Make a list of current harvesters with status and potential ones." 1329757408000000 1332152596000000 1815 task amercader amercader ckan-future new Reenable Sparql endpoint on publicdata.eu "Estimate: ? The 4store Sparql endpoint has been down for a long time. It needs to be reenabled and we need to check that the necessary informtion is pushed when creating /editing a dataset." 1329757723000000 1338204641000000 1816 enhancement amercader amercader ckan-sprint-2012-03-19 closed fixed Update ckanext-apps to work with CKAN 1.5.1 - 1.6 "Estimate [2-3d] If possible, it should work with both 1.5.1 and 1.6. Needed for PDEU, also at some point for IATI" 1329757864000000 1331302835000000 1818 enhancement amercader amercader ckan-future new Spatial metadata editor "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 " 1329763941000000 1338203195000000 2231 defect amercader amercader ckan-sprint-2012-04-02 closed fixed Base harvester broken on 1.6.1 "On its current version, ckanext-harvest passed a custom schema to package_create and package_update to allow defining an id for new packages (the same as in remote ckan instances) [1] Recent changes in the logic layer have made that the context object is no longer directly read from the context, but only get from plugins [2]. This makes the schema sent from ckanext-harvest to be ignored and the harvesting fails because the id field is not expected {{{ ValidationError: {'Id': u'The input field id was not expected.'} }}} We need a way to either: 1. Be more flexible accepting schemas on the logic functions 2. Modify the harvester plugin to implement the necessary interface [1] https://github.com/okfn/ckanext-harvest/blob/master/ckanext/harvest/harvesters/base.py#L115 [2] https://github.com/okfn/ckan/blob/0c07d3be846777318b35c31325215dff00e99313/ckan/logic/action/create.py#L38" 1331815499000000 1333374735000000 2232 defect amercader amercader ckan-sprint-2012-04-02 closed fixed Unicode Exception when rebuilding the search index "In some cases this exception is fired when building the search index. As explained in #1616 this makes the whole process stop. {{{ File ""/var/lib/ckan/pdeu/pyenv/lib/python2.6/site-packages/solr/core.py"", line 326, in wrapper return self._update(content, query) File ""/var/lib/ckan/pdeu/pyenv/lib/python2.6/site-packages/solr/core.py"", line 550, in _update rsp = self._post(selector, request, self.xmlheaders) File ""/var/lib/ckan/pdeu/pyenv/lib/python2.6/site-packages/solr/core.py"", line 639, in _post return check_response_status(self.conn.getresponse()) File ""/var/lib/ckan/pdeu/pyenv/lib/python2.6/site-packages/solr/core.py"", line 1096, in check_response_status raise ex SolrException: HTTP code=400, reason=ParseError at [row,col]:[1,2354] Message: An invalid XML character (Unicode: 0x1) was found in the element content of the document. Traceback (most recent call last): File ""/var/lib/ckan/pdeu/pyenv/bin/paster"", line 9, in <module> load_entry_point('PasteScript==1.7.3', 'console_scripts', 'paster')() File ""/var/lib/ckan/pdeu/pyenv/lib/python2.6/site-packages/paste/script/command.py"", line 84, in run invoke(command, command_name, options, args[1:]) File ""/var/lib/ckan/pdeu/pyenv/lib/python2.6/site-packages/paste/script/command.py"", line 123, in invoke exit_code = runner.run(args) File ""/var/lib/ckan/pdeu/pyenv/lib/python2.6/site-packages/paste/script/command.py"", line 218, in run result = self.command() File ""/var/lib/ckan/pdeu/pyenv/src/ckan/ckan/lib/cli.py"", line 298, in command rebuild() File ""/var/lib/ckan/pdeu/pyenv/src/ckan/ckan/lib/search/__init__.py"", line 134, in rebuild {'id': pkg.id} File ""/var/lib/ckan/pdeu/pyenv/src/ckan/ckan/lib/search/index.py"", line 54, in insert_dict return self.update_dict(data) File ""/var/lib/ckan/pdeu/pyenv/src/ckan/ckan/lib/search/index.py"", line 79, in update_dict self.index_package(pkg_dict) File ""/var/lib/ckan/pdeu/pyenv/src/ckan/ckan/lib/search/index.py"", line 153, in index_package raise SearchIndexError(e) ckan.lib.search.common.SearchIndexError: HTTP code=400, reason=ParseError at [row,col]:[1,2354] Message: An invalid XML character (Unicode: 0x1) was found in the element content of the document. }}}" 1331816582000000 1332331660000000 2252 defect amercader amercader ckan-sprint-2012-04-16 closed fixed UKLP harvesters returning errors when importing due to schema changes "See trace below. As in #2231, the schema passed with the context is no longer used on the logic layer (in this case the one used on the DGU form is used). This can be fixed allowing a schema to be passed with the context. {{{ File ""/var/lib/ckan/std/pyenv/src/ckanext-inspire/ckanext/inspire/harvesters.py"", line 139, in import_stage self.import_gemini_object(harvest_object.content) File ""/var/lib/ckan/std/pyenv/src/ckanext-inspire/ckanext/inspire/harvesters.py"", line 163, in import_gemini_object package = self.write_package_from_gemini_string(unicode_gemini_string) File ""/var/lib/ckan/std/pyenv/src/ckanext-inspire/ckanext/inspire/harvesters.py"", line 386, in write_package_from_gemin package = self._create_package_from_data(package_dict, package = package) File ""/var/lib/ckan/std/pyenv/src/ckanext-inspire/ckanext/inspire/harvesters.py"", line 486, in _create_package_from_dat package_dict = action_function(context, package_dict) File ""/usr/lib/pymodules/python2.6/ckan/logic/action/update.py"", line 169, in package_update data, errors = validate(data_dict, schema, context) File ""/usr/lib/pymodules/python2.6/ckan/lib/navl/dictization_functions.py"", line 216, in validate converted_data, errors = _validate(flattened, schema, context) File ""/usr/lib/pymodules/python2.6/ckan/lib/navl/dictization_functions.py"", line 289, in _validate convert(converter, key, converted_data, errors, context) File ""/usr/lib/pymodules/python2.6/ckan/lib/navl/dictization_functions.py"", line 179, in convert converter(key, converted_data, errors, context) File ""/var/lib/ckan/std/pyenv/src/ckanext-dgu/ckanext/dgu/validators.py"", line 81, in validate_license if data[('license_id',)]== '__extra__': KeyError: ('access_constraints',) 2012-03-19 10:47:41,736 ERROR [ckanext.inspire.harvesters] Error importing Gemini document: ('access_constraints',) }}}" 1332333907000000 1334567502000000 2263 enhancement amercader amercader closed fixed "IATI: Get ""Record updated"" field from the registry" Don't provide a field in the form or spreadsheet import for this, just use dataset.metadata_modified. 1332766145000000 1332846807000000 2271 defect amercader amercader ckan-sprint-2012-04-16 closed fixed IATI: Some datasets not being indexed "When importing a CSV file for a certain publisher, records don't come up on the search index. After some investigation this has tunrn out to be caused by the records being deleted. We need to investigate if this was caused by the import or just made by the users. " 1333375469000000 1334567582000000 2332 enhancement amercader rgrp ckan-v1.7 closed fixed Fixes for v1.7 release "A place to list crucial fixes for v1.7 release: Related extension: All not complete now moved to #2347 * ~~Related Item has comments on index page (they should not show up here -- why is this happening!)~~ * ~~Related item should be to left of history (history could in fact move to RHS)~~ * What about losing icons since we duplicate for related item * Related item plus sign is very poorly aligned within box * Add related items should be in drop down like for resources (?) to make it easy to add items * Hover should show a title that gives some information about what related are (not at all clear) * Related item only includes App, Idea, Visualization but not API | Post | Paper | News Article options as in original ticket #2204 Search results: * #2331 - search should add not or * ~~Search results should be similar across group pages and normal search results (suggest adopting group page style)~~ * Search results resource link should link to resource page rather than url for that resource * Suggest we could tidy this a bit (e.g. have resources in mini-sidebar of search result ...?) Data viewer: * ~~Merge updates to Recline (that did go in before deadline but do not seem to have made v1.7 branch) https://github.com/okfn/ckan/commit/146a5c1130cc77cb2ad2c6ef6b3a53074908bf07~~ * Ensure still using read-only (this seems to have been lost in upgrade) * Do not show failed preview with red-bar (esp when just empty datastore ...) a) Data Viewer checks if datastore is empty nad falls back to ther options if emtpy b) DataStore enabled is off by default and only turned on either explicitly by user or by DataStorer on successful store ... * (? not really a fix) Give out a link as well as embed instructions (I often want to link to the explorer in a given state) * Should this link to the resource page or to a dedicated viewer page - cf # 2322 (resource sub-urls like /download, /api ...) * Do #2322 ... * Decent powered by icon for the Embed for the DataHub (make this text customizable and allow html ...) * Embed link uses uuid rather than dataset name (this goes to perma-url question ...) * Data viewer embed url includes all the resource info Dataset page: * Put home page link somewhere more prominent (e.g. the top of the sidebar) * Put author more prominent (at top right) * (? - new work) List CKAN owners at top right in sidebar * Make resources stand out more * Rename resources tab and heading to Data & Resources Dataset edit and create: * Corrections to dataset creation form for v1.7 - #2317 * Better auto-complete for groups on dataset edit/new page - #2319 * Remove groups box and replace with tags on the new page (or is this needed for organizations stuff?) * Description / notes text area is not wide enough. * Should also be larger on edit page * Problem with date instructions on add/edit resource: ""Dates are in ISO Format — eg. 2012-12-25 or %c2010-05-31T14:30%d."" * Add/edit resource: new code to auto-check urls being added is great but from UX point of view has draw back that (esp on low speed connections) page just seems to hang for a long time with nothing happening. I wonder if either * A) this could happen after resource created on form (e.g. it creates, and then an overlay comes up saying: checking url and gathering url information or similar) * Or B) we still do this before creating new resource form on page but we still should show something like a spinner and some info like ""checking url and gathering url info ...) Resource view: * Do not show no description in no description (just show dataset info) Theme: * ~~Fix spacing above page title (i.e. dataset title etc)~~ * ~~Bootstrap 2.0.2 (@zephod was *supposed* to have done this) - should be trivial and gives important bugfixes for data viewer~~ * ~~Fix subnav width on resources pages (does not extend all the way to the right like it should)~~ * ~~Fix spacing of top menu and search box (do not look right)~~ * Group pages: * view page: image / logo is really poorly locate and sized, see e.g. http://datahub.io/group/wikimedia * ~~view page: admin heading on RHS sidebar is wrongly indented~~ Miscellaneous: * Ensure that we out-of-the-box config for CKAN has (#2388): * Only logged in users able to create * Creation permissions have only creators able to update a dataset Deployments (without deployment we cannot know these are working): * ~~Social extension~~ * ~~Analytics~~" 1335644116000000 1340033281000000 2358 task amercader amercader ckan-sprint-2012-05-15 closed fixed Finish off Release 1.7 "Various stuff related with release 1.7: * Review patches sent to the release branch * Regularly update TDH with latest changes * write changelog, announce email, etc * ... " 1335887030000000 1336641577000000 2359 task amercader amercader ckan-sprint-2012-05-15 closed fixed Investigate pycsw integration "Tom Kralidis kindly told us on IRC [1] that the latest trunk of pycsw includes support for wsgi and different backends, which sounds like could be really useful for CKAN integration. [1] http://irclogs.okfn.org/ckan/2012-04-25.txt 17:16" 1335887299000000 1337016578000000 2360 enhancement amercader amercader ckan-sprint-2012-05-15 closed fixed Finish INSPIRE support proposal I've been writing a doc with different issues regarding INSPIRE support in CKAN. It is mostly done, except for some sections on CSW support. Depends on #2359 1335887409000000 1337016284000000 2361 enhancement amercader amercader ckan-sprint-2012-05-15 closed fixed Install ckanext-googleanalytics and ckanext-stats on PDEU ditto 1335887476000000 1337016768000000 2382 task amercader amercader ckan-future new Investigate options for basic geocoding A simple way for geocoding place names would be very useful, e.g in the spatial search, defining a geometry for a dataset (on the form or bulk) 1337017160000000 1338205325000000 2388 enhancement amercader amercader ckan-v1.8 closed fixed "Update ""out of the box"" settings for CKAN" " * Only logged in users able to create * Creation permissions have only creators able to update a dataset * Synchronous search is enabled (#1678) " 1337095269000000 1342104475000000 2389 defect amercader amercader ckan-v1.8 closed fixed More robust handling of DataExplorer errors "US-0a Do not show failed preview with red-bar (esp when just empty datastore ...) * Data Viewer checks if datastore is empty nad falls back to ther options if emtpy * DataStore enabled is off by default and only turned on either explicitly by user or by DataStorer on successful store ... Loading/showing error reports " 1337095447000000 1341222201000000 2399 defect amercader seanh ckan-v1.8 closed fixed Model cleanup in CKAN core has broken ckanext-spatial "root@lucid32:/usr/local/feature-2375-demo-theme/pyenv/src/ckan# sudo -u www-data /usr/local/feature-2375-demo-theme/pyenv/bin/paster --plugin=ckanext-spatial spatial initdb 4326 --config=/usr/local/feature-2375-demo-theme/pyenv/src/ckan/development.ini Traceback (most recent call last): File ""/usr/local/feature-2375-demo-theme/pyenv/bin/paster"", line 9, in <module> load_entry_point('PasteScript==1.7.3', 'console_scripts', 'paster')() File ""/usr/local/feature-2375-demo-theme/pyenv/lib/python2.6/site-packages/paste/script/command.py"", line 84, in run invoke(command, command_name, options, args[1:]) File ""/usr/local/feature-2375-demo-theme/pyenv/lib/python2.6/site-packages/paste/script/command.py"", line 123, in invoke exit_code = runner.run(args) File ""/usr/local/feature-2375-demo-theme/pyenv/lib/python2.6/site-packages/paste/script/command.py"", line 218, in run result = self.command() File ""/usr/local/feature-2375-demo-theme/pyenv/src/ckanext-spatial/ckanext/spatial/commands/spatial.py"", line 38, in command self._load_config() File ""/usr/local/feature-2375-demo-theme/pyenv/src/ckan/ckan/lib/cli.py"", line 53, in _load_config load_environment(conf.global_conf, conf.local_conf) File ""/usr/local/feature-2375-demo-theme/pyenv/src/ckan/ckan/config/environment.py"", line 204, in load_environment plugin.configure(config) File ""/usr/local/feature-2375-demo-theme/pyenv/src/ckanext-spatial/ckanext/spatial/plugin.py"", line 60, in configure setup_model() File ""/usr/local/feature-2375-demo-theme/pyenv/src/ckanext-spatial/ckanext/spatial/model.py"", line 20, in setup define_spatial_tables(srid) File ""/usr/local/feature-2375-demo-theme/pyenv/src/ckanext-spatial/ckanext/spatial/model.py"", line 66, in define_spatial_tables package_extent_table = Table('package_extent', metadata, NameError: global name 'metadata' is not defined" 1337173470000000 1340706702000000 2407 enhancement amercader markw ckan-v1.9 new 'Access denied' message is unhelpful "This chap tried to use the API to add a dataset to a group and got the uninformative message 'Access denied': http://lists.okfn.org/pipermail/ckan-dev/2012-May/002229.html The problem was he didn't have access to the group. A message like 'You don't have access to the group ""LODcloud""' would have been clearer." 1337612500000000 1340633440000000 2467 defect amercader amercader ckan-v1.8 closed fixed Fix stats extension frontend After moving to Bootstrap the tables on the frontend look broken. 1338213230000000 1340981885000000 2468 enhancement amercader amercader ckan-sprint-2012-06-25 closed fixed Finish off SlickGrid based Recline view "Please see these GitHub issues: https://github.com/okfn/recline/issues/130 https://github.com/okfn/recline/issues/131" 1338213375000000 1339757934000000 2472 enhancement amercader kindly ckan-v1.8 closed fixed clean up datastore controller to get rid of datastore_url enables checks "Datastore_url enabled checks are useless. We should probably change this to datastore_url = 'active' and only update the flag to when a attempt at a post is made. This will need to be removed from the form at some point." 1338293407000000 1341222195000000 2505 enhancement amercader amercader ckan-sprint-2012-06-25 closed fixed Docs improvements for 1.7.1 "There are some areas where the documentation could use some improvement and it would be good to have it available for 1.7.1. * Add an introduction to harvesting support * Add an introduction to CSW support * Better upgrade docs: Some users suggested improvements to the upgrade docs on the list [1]. Also we should mention how the upgrade would work for point point releases * Source install: see #2406 [1] http://lists.okfn.org/pipermail/ckan-dev/2012-May/002178.html" 1339166533000000 1340018770000000 2534 defect amercader seanh ckan-v1.8 closed duplicate ckanext-spatial is broken with CKAN 1.8b "Looks like recent cleanups in CKAN broke an import in the extension: https://gist.github.com/2935688" 1339754762000000 1340631124000000 2604 enhancement amercader amercader ckan-v1.8 closed fixed Add Requests as requirement for tests "Requests (http://python-requests.org) is really useful to deal with http requests and saves a lot of time. I propose we include it as a requirement for the tests for the time being, and even for core if necessary at a later stage." 1340790229000000 1340968458000000 2639 enhancement amercader amercader ckan-v1.8 closed fixed Update recline version for 1.8 release New recline version has significant improvements like the SlickGrid based grid view, it'd be good to have it on 1.8. 1341845809000000 1350296205000000 2640 enhancement amercader amercader demo phase 2 closed fixed Update recline on the demo site Depends on #2639 1341845911000000 1342112730000000 2788 enhancement amercader amercader ckan-v1.9 new Speed improvements on creating/updating and indexing "Specially needed when importing large numbers of datasets. Profiling the import command from the harvesting extension has shown some areas where improvements could be made. " 1343832992000000 1343832992000000 2949 defect amercader amercader new Reenable Data API button on the new theme The checks to show or not the button need to be updated for the latest datastore version 1349107464000000 1349107464000000 3022 defect amercader amercader ckan 2.0 closed fixed setup_template_variables method of IDatasetForm never called On the package controller the package_type is not passed to the lookup function, so the setup_template_variables defined on the extensions is never called 1353602743000000 1358254781000000 3023 enhancement amercader amercader new New methods on IPackageController to provide access to the data_dict 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 1353603657000000 1353603657000000 3025 enhancement amercader amercader new Add requests to core requirements Because yes please 1354052124000000 1354052124000000 3026 enhancement amercader amercader new Support icons on nav_named_link nav_named_link won't include the nice icon even when passing the icon keyword param. 1354301516000000 1354301516000000 1562 enhancement Adria jilly mathews ckan-future new Finish Geo Spatial Estimated 4 weeks of Adria's time. I guess this will need to be broken down into more tickets. This feature is being requested by a number of potential customers and we have some ideas of requirements between Rufus and Jilly for this. This is the most popular new feature we talk about to new clients. 1324292193000000 1324292193000000 2757 enhancement Adria seanh ckan-v1.8 closed fixed Write documentation for upgrading a CKAN install from an older to a newer version of CKAN 1343235242000000 1343392006000000 140 enhancement rgrp ckan-backlog new News section on front page "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?" 1254902541000000 1265625159000000 182 enhancement rgrp v1.0 closed fixed Improve openness icons "Tick and cross aren't clear enough. Propose: * Icon for downloadability (nothing if absent ...(?)) * Icon for open license? (Need something if closed ...) Cost: 2h (?)" 1257534590000000 1270567116000000 253 enhancement dread ckan-backlog assigned Package relationships "= 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)." 1266854721000000 1339774726000000 256 requirement dread ckan-backlog assigned Package relationships - 3. Edit in WUI "WUI: * Editable as part of package or separately? (e.g. like authz) * Do we normalize to only one type name of the pair? * Do we allow create of relationship from both ends (e.g. only from dependency to dependent or either way?) " 1266928561000000 1339774714000000 285 enhancement rgrp assigned Paginate list of packages on tag read page "Is this worth doing? On hmg.ckan.net start to have a lot of packages with a given tag ... " 1270664606000000 1340631923000000 301 enhancement rgrp assigned Package discussion pages "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." 1272301033000000 1340632055000000 331 enhancement rgrp ckan-backlog new Timezone of CKAN timestamps should be configurable "Revisions are timestamped using the server's clock, which may not relate to the expected timezone for the site. e.g. the Norway site has a server on GMT. No timezone info is displayed either. Would like to set timezone for a CKAN instance to use in rendering revision timestamps. For example, use CET or EST timezone." 1275302440000000 1339774701000000 333 enhancement dread v1.1 closed wontfix CKAN front end requirements for package notifications "== Use case: new package == 1. An external front-end system provides a web page with a list of packages. Each package has the option to edit it or and there is also a button to create a new package. 2. User: clicks 'new package'. 3. CKAN presents the package/new form to the user. 4. (After a couple of previews) User: clicks 'commit'. 5. Notification message goes from CKAN to the front-end detailing the new package. 6. The user is redirected back to the front-end web page displaying the list of packages, which contains the new one. The notification message (step 5) has to get through to the front-end that the new package is created before the redirect (step 6). This suggests that the message sending needs to be *synchronous*, i.e. acknowledged by the front-end, before CKAN redirects the user to the front-end package listing page (step 6). In addition, this use case suggests the front-end listens for package notifications, to save another call to CKAN to get the package details, before the displaying the list of packages. If this isn't possible (see next use case) and it must listen for revision notifications instead, then perhaps it is worth including the full package details in the payload for the revision notification message. Would there be a problem with such a large message in the next use case, with 100 packages? == Use case: CKAN imports packages == 1. CKAN administrator runs a script that adds 100 new packages into CKAN. 2. CKAN sends notification message to front-end to report the new packages/revisions. 3. Knowing there are new revisions, the front-end queries the CKAN revision interface to get the list of new packages. 4. The front-end queries CKAN for each new package one-by-one. 5. A new user request to the front-end will include the info about the new packages. The package addition could be achieved in 1 revision, 100 revisions or some compromise: * If it is 1 revision then potentially there are problems displaying the long list of packages in the 'recent changes'. * If it is 100 revisions, then the notification webhook would be called 100 times, which creates unnecessary load on the front-end. Suppose each Webhook call-back (step 2) triggers the front-end to make a call to CKAN to get the latest revisions (step3), in this case it would make 100 calls, most of them fruitless, causing unnecessary load on CKAN. This use case suggests a bulk import of packages should go into one revision, and therefore generate one revision notification message and 100 package notification messages. The front-end client should listen to only revision messages." 1275324042000000 1275407987000000 339 defect johnbywater closed fixed Remove download_url from package data format in API Version 2, but maintain the old data format in the old version of the interface (API Version 1) 1275901499000000 1278074705000000 341 enhancement dread closed fixed Web UI accepts package IDs in URLs "(in the same way that we can refer to packages in the API by ID as well as name.) == As a == client of CKAN == I want to == link to a package page in the UI, referring to it by ID" 1276162400000000 1277483030000000 344 defect dread closed fixed REST Create package with incorrect format gives 500 error "PUT to /rest/api/package of {{{ {""name"": ""name"", ""resources"": [""someurl.com/data""] } }}} (i.e. resource is a string, not a dictionary) gives 500 error, when it should give a 400 error and helpful error message. Exception: {{{ Module ckan.controllers.rest:154 in create << if register == 'package' and not subregister: fs = ckan.forms.get_standard_fieldset() request_fa_dict = ckan.forms.edit_package_dict(ckan.forms.get_package_dict(fs=fs), request_data) fs = fs.bind(model.Package, data=request_fa_dict, session=model.Session) elif register == 'package' and subregister in model.PackageRelationship.get_all_types(): >> request_fa_dict = ckan.forms.edit_package_dict(ckan.forms.get_package_dict(fs=fs), request_data) Module ckan.forms.package_dict:88 in edit_package_dict << for res_dict in value: res_dict_str = {} for key, value in res_dict.items(): res_dict_str[str(key)] = value resources.append(res_dict_str) >> for key, value in res_dict.items(): AttributeError: 'unicode' object has no attribute 'items' }}}" 1276341172000000 1277477712000000 350 enhancement dread ckan-backlog reopened Search engine optimisation "Need to research what can easily be done to improve CKAN packages in the search rankings. Comments from Glen Barnes: We've been pretty successful at SEO without even really trying (see http://www.google.co.nz/search?client=safari&rls=en&q=auckland+google+transit+feed&ie=UTF-8&oe=UTF-8&redir_esc=&ei=dsYSTOzJLs2eceuZiI8I as an example). This to me is key. If we are to make data available it has to be findable which is the main reason for a catalogue. There are probably things we should be doing on CKAN like using slugged urls (http://www.ckan.net/package/ascoe -> http://www.ckan.net/package/ascoe/atmospheric-chemistry-studies-in-the-oceanic-environment), setting the H1 tag correctly (""Atmospheric Chemistry Studies in the Oceanic Environment"" on the example above). Some basic SEO 101 on page optimisations. " 1276594541000000 1339774690000000 351 enhancement dread ckan-backlog new Homepage: list new, updated and 'hot' packages "Have a simpler list of exciting data, as opposed to the big revision list. For example: {{{ Hot data =========== New packages: package1, package2, package3 Updated resources: package1, package2, package3 Popular packages: }}}" 1276595816000000 1339774677000000 353 defect dread closed fixed SOLR search indexing "== As a == SOLR instance == I want to == keep my search index of CKAN packages up-to-date == Implementation == * Using asynchronous event notifications * Running in a separate process to CKAN" 1277123480000000 1280756399000000 356 enhancement rgrp v1.1 closed fixed Search box in at top of page (UI) "A small but useful ui improvement would be to have a search box at top right on every page. As an example see the one here on trac or on github.com or bitbucket.org. * It would be particularly good to include a small advanced search link that took you to the full search page. Need to keep it small because screen real-estate here is limited (see how github.com does this for inspiration)." 1277235411000000 1278931830000000 364 defect dread ckan-v1.3 closed fixed Search for 'statistic' returns nothing "On ckan.net there are plenty of packages (and indeed their tags) with the word 'statistic' in them, but no packages turn up when you search for it: http://ckan.net/package/search?q=statistic&search=Search+Packages+%C2%BB (Using Postgres full text search)" 1278949620000000 1291637291000000 368 defect anonymous closed wontfix 500 Server error when creating package " I've just started writing the importer from cap.open.org.nz and was running an initial import of just the package name and titles. The packages were created however I received a 500 error in response: ""publish: New Zealand Coastline (new-zealand-coastline)"" opening connection to nz.ckan.net... opened <- ""POST /api/rest/package HTTP/1.1\r\nContent-Type: application/x-www-form-urlencoded\r\nConnection: close\r\nAuthorization: 81179ade-fa4a-4632-9b89-3d0c98bfc8b8\r\nContent-Length: 64\r\nHost: nz.ckan.net\r\n\r\n"" <- ""{\""name\"":\""new-zealand-coastline\"",\""title\"":\""New Zealand Coastline\""}"" -> ""HTTP/1.1 500 Internal Server Error\r\n"" -> ""Date: Tue, 20 Jul 2010 10:20:35 GMT\r\n"" -> ""Server: Apache/2.2.9 (Debian) mod_wsgi/2.5 Python/2.5.2\r\n"" -> ""Vary: Accept-Encoding\r\n"" -> ""Content-Type: text/html; charset=iso-8859-1\r\n"" -> ""Cache-Control: proxy-revalidate\r\n"" -> ""Content-Length: 640\r\n"" -> ""Connection: close\r\n"" -> ""\r\n"" reading 640 bytes... -> ""<!DOCTYPE HTML PUBLIC \""-//IETF//DTD HTML 2.0//EN\"">\n<html><head>\n<title>500 Internal Server Error\n\n

Internal Server Error

\n

The server encountered an internal error or\nmisconfiguration and was unable to complete\nyour request.

\n

Please contact the server administrator,\n [no address given] and inform them of the time the error occurred,\nand anything you might have done that may have\ncaused the error.

\n

More information about this error may be available\nin the server error log.

\n
\n
Apache/2.2.9 (Debian) mod_wsgi/2.5 Python/2.5.2 Server at nz.ckan.net Port 80
\n\n"" read 640 bytes Conn close The server should not respond with a 500 error if the package was created. " 1279622462000000 1291831811000000 369 enhancement shudson@… ckan-backlog new """Package Listing Key"" should appear on Tag results" "Currently there's a nice legend titled ""Package Listing Key"" that appears in right side of ""Browse Packages"" results. The same key should show on other search results like when searching for a tag." 1279821634000000 1339774666000000 370 enhancement shudson@… ckan-backlog new Use better email encryption for author_email and maintainer_email "The JavaScript email encryption used is not very reassuring. Google's MailHide is a much better solution that is easily implemented. http://www.google.com/recaptcha/mailhide/ Check on the Mailhide API where there are even some Python libraries already built." 1279821819000000 1339774649000000 377 enhancement glen@… ckan-future closed wontfix API Should return JSON in all cases "When the API returns any response it should always retunr JSON. For example a 404 response should return something like {{{ {'status': 404, 'message': 'package somename not found'} }}} When errors are encountered when creating a package: {{{ {'status': nnn, 'message': 'Validation Errors', 'errors':['description':'name cannot be blank', 'description':'license code must be an integer']} }}} Not authorised: {{{ {'status': 503, 'message': 'You are not authorised to create this package.'} }}} The reason being that screeds of html coming back in the response just makes it harder to debug and understand. Having the proper error codes/messages means that you can see why your package was not created. " 1280268158000000 1338206349000000 381 defect johnbywater closed invalid Test defect please ignore 1280345937000000 1294410466000000 395 task pudo ckan-v1.3 closed duplicate Set up profiling to analyze performance issues "At the moment, some pages within CKAN tend to load slowly. We should create a profiling setup in which we can measure response times for complete requests and individual methods calls. This could be used to identify bottlenecks and find an appropriate caching or tuning strategy to improve CKAN performance. NB: We should also agree on a maximum request latency. TODO: Read up on all those QoS tickets to avoid overlapping efforts. " 1280824739000000 1294417538000000 403 requirement pudo closed fixed Create web service for OFS storage "Create a thin web service that will allow users to upload files to OFS on S3 without knowing S3 credentials. This could also provide static urls for all stored resources. * relates to #307" 1281346110000000 1287392451000000 407 requirement dread closed wontfix Link to Scraperwiki "== As a == user browsing a CKAN package which has a resource in a bad format == I want to == be alerted to the possibility of scraping it on scraperwiki == Implementation == This should be done in a CKAN extension. It should appear in a side-bar on the package read page. If the package does not have a resource with scraperwiki.com in the url, then it displays this message: Title: Scrape it[[BR]] Image: (Scraperwiki dumper truck)[[BR]] Body text: Could this data be in a better format? Why not use Scraperwiki to extract data from tables, Excel or PDF for everyone's benefit? You can [http://scraperwiki.com/market/request/ request] this data is scraped or even [http://scraperwiki.com/editor/ write the scraper] yourself. " 1281348368000000 1330769956000000 412 requirement johnbywater closed fixed Data format for package importing shall be documented "Requirements: * cater naturally for multiple packages with multiple resources * international encoding * large number of packages" 1281430809000000 1289822092000000 415 task dread ckan-v1.2 closed fixed Chase Talis about loading RDF from CKAN. 1281431656000000 1288003954000000 418 task dread closed invalid With COI, get SOLR working 1281431691000000 1291637919000000 422 story dread ckan-v1.3 closed fixed Administrator imports meta-data into CKAN "Requirements: * cater naturally for multiple packages with multiple resources * international encoding * large number of packages" 1281433490000000 1292586586000000 428 requirement dread ckan-v1.2 closed fixed Daily dump of DGU CKAN available End users want to get hold of a JSON & CSV dump of the DGU data. 1281703251000000 1285757316000000 429 requirement dread ckan-v1.2 closed fixed ONS data is imported daily to DGU 1281703294000000 1285757274000000 433 defect wwaites datapkg-0.8 closed fixed Data package metadata in the Egg "Still not sure if we shouldn't use the existing setuptools machinery to manage this -- there is already a way to get at the metadata. In any event, I've just made an addition to datapkg that makes it possible to put datapkg_sources as a dictionary in your package's setup.py. Afterwards it is possible to pull the metadata out of the egg. Of course this could easily be changed to save the information in whatever form, indeed if you pass it a string instead of a dictionary it will just write whatever you gave it into the datapkg_sources.spec. The point is, I think that the egg is a good place to stuff this information. For non-python users, it is always possible to simply put up the datapkg_sources.spec somewhere on the web so they can directly retrieve the data files. From the docstring:: {{{ This is the implementation for an [egg_info.writers] entrypoint. Datapkg adds an argument to setuptools's setup() function called datapkg_sources. The argument should be a dictionary of the form: .. code-block:: python setup( ..., datapkg_sources = { ""cra2009"" : ""http://www.hm-treasury.gov.uk/d/cra_2009_db.csv"" } ) The result of this is that there will be a file in the egg called datapkg_sources.spec that looks like this:: [sources] cra2009=http://www.hm-treasury.gov.uk/d/cra_2009_db.csv How do you get at this data? Simple:: .. code-block:: python import pkg_resources dist = pkg_resources.get_distribution(""ukgov_treasury_cra"") spec = dist.get_metadata(""datapkg_sources.spec"") and 'spec' will be the contents of the file as a string. }}} " 1282078660000000 1283183647000000 434 defect dread ckan-v1.2 closed fixed Logged in user to si.ckan.net causes genshi exception "Here's the trace: {{{ [Wed Aug 18 11:10:19 2010] [error] [client 89.212.104.197] Error - : list index out of range [Wed Aug 18 11:10:19 2010] [error] [client 89.212.104.197] mod_wsgi (pid=6195): Exception occurred processing WSGI script '/home/okfn/var/srvc/si.ckan.net/py env/bin/si.ckan.net.py'. [Wed Aug 18 11:10:19 2010] [error] [client 89.212.104.197] Traceback (most recent call last): [Wed Aug 18 11:10:19 2010] [error] [client 89.212.104.197] File ""/home/okfn/var/srvc/si.ckan.net/pyenv/lib/python2.5/site-packages/paste/cascade.py"", line 130, in __call__ [Wed Aug 18 11:10:19 2010] [error] [client 89.212.104.197] return self.apps[-1](environ, start_response) [Wed Aug 18 11:10:19 2010] [error] [client 89.212.104.197] File ""/home/okfn/var/srvc/si.ckan.net/pyenv/lib/python2.5/site-packages/paste/registry.py"", line 375, in __call__ [Wed Aug 18 11:10:19 2010] [error] [client 89.212.104.197] app_iter = self.application(environ, start_response) [Wed Aug 18 11:10:19 2010] [error] [client 89.212.104.197] File ""/home/okfn/var/srvc/si.ckan.net/pyenv/lib/python2.5/site-packages/repoze/who/middleware.py "", line 107, in __call__ [Wed Aug 18 11:10:19 2010] [error] [client 89.212.104.197] app_iter = app(environ, wrapper.wrap_start_response) [Wed Aug 18 11:10:19 2010] [error] [client 89.212.104.197] File ""/home/okfn/var/srvc/si.ckan.net/pyenv/lib/python2.5/site-packages/pylons/middleware.py"", l ine 214, in __call__ [Wed Aug 18 11:10:19 2010] [error] [client 89.212.104.197] self.app, new_environ, catch_exc_info=True) [Wed Aug 18 11:10:19 2010] [error] [client 89.212.104.197] File ""/home/okfn/var/srvc/si.ckan.net/pyenv/lib/python2.5/site-packages/pylons/util.py"", line 94 , in call_wsgi_application [Wed Aug 18 11:10:19 2010] [error] [client 89.212.104.197] app_iter = application(environ, start_response) [Wed Aug 18 11:10:19 2010] [error] [client 89.212.104.197] File ""/home/okfn/var/srvc/si.ckan.net/pyenv/lib/python2.5/site-packages/weberror/errormiddleware .py"", line 156, in __call__ [Wed Aug 18 11:10:19 2010] [error] [client 89.212.104.197] return self.application(environ, start_response) [Wed Aug 18 11:10:19 2010] [error] [client 89.212.104.197] File ""/home/okfn/var/srvc/si.ckan.net/pyenv/lib/python2.5/site-packages/beaker/middleware.py"", l ine 73, in __call__ [Wed Aug 18 11:10:19 2010] [error] [client 89.212.104.197] return self.app(environ, start_response) [Wed Aug 18 11:10:19 2010] [error] [client 89.212.104.197] File ""/home/okfn/var/srvc/si.ckan.net/pyenv/lib/python2.5/site-packages/beaker/middleware.py"", l ine 152, in __call__ [Wed Aug 18 11:10:19 2010] [error] [client 89.212.104.197] return self.wrap_app(environ, session_start_response) [Wed Aug 18 11:10:19 2010] [error] [client 89.212.104.197] File ""/home/okfn/var/srvc/si.ckan.net/pyenv/lib/python2.5/site-packages/routes/middleware.py"", l ine 130, in __call__ [Wed Aug 18 11:10:19 2010] [error] [client 89.212.104.197] response = self.app(environ, start_response) [Wed Aug 18 11:10:19 2010] [error] [client 89.212.104.197] File ""/home/okfn/var/srvc/si.ckan.net/pyenv/lib/python2.5/site-packages/pylons/wsgiapp.py"", line 125, in __call__ [Wed Aug 18 11:10:19 2010] [error] [client 89.212.104.197] response = self.dispatch(controller, environ, start_response) [Wed Aug 18 11:10:19 2010] [error] [client 89.212.104.197] File ""/home/okfn/var/srvc/si.ckan.net/pyenv/lib/python2.5/site-packages/pylons/wsgiapp.py"", line 324, in dispatch [Wed Aug 18 11:10:19 2010] [error] [client 89.212.104.197] return controller(environ, start_response) [Wed Aug 18 11:10:19 2010] [error] [client 89.212.104.197] File ""/home/okfn/var/srvc/si.ckan.net/pyenv/src/ckan/ckan/lib/base.py"", line 73, in __call__ [Wed Aug 18 11:10:19 2010] [error] [client 89.212.104.197] return WSGIController.__call__(self, environ, start_response) [Wed Aug 18 11:10:19 2010] [error] [client 89.212.104.197] File ""/home/okfn/var/srvc/si.ckan.net/pyenv/lib/python2.5/site-packages/pylons/controllers/core. py"", line 221, in __call__ [Wed Aug 18 11:10:19 2010] [error] [client 89.212.104.197] response = self._dispatch_call() [Wed Aug 18 11:10:19 2010] [error] [client 89.212.104.197] File ""/home/okfn/var/srvc/si.ckan.net/pyenv/lib/python2.5/site-packages/pylons/controllers/core. py"", line 172, in _dispatch_call [Wed Aug 18 11:10:19 2010] [error] [client 89.212.104.197] response = self._inspect_call(func) [Wed Aug 18 11:10:19 2010] [error] [client 89.212.104.197] File ""/home/okfn/var/srvc/si.ckan.net/pyenv/lib/python2.5/site-packages/pylons/controllers/core. py"", line 107, in _inspect_call [Wed Aug 18 11:10:19 2010] [error] [client 89.212.104.197] result = self._perform_call(func, args) [Wed Aug 18 11:10:19 2010] [error] [client 89.212.104.197] File ""/home/okfn/var/srvc/si.ckan.net/pyenv/lib/python2.5/site-packages/pylons/controllers/core. py"", line 60, in _perform_call [Wed Aug 18 11:10:19 2010] [error] [client 89.212.104.197] return func(**args) [Wed Aug 18 11:10:19 2010] [error] [client 89.212.104.197] File ""/home/okfn/var/srvc/si.ckan.net/pyenv/src/ckan/ckan/controllers/error.py"", line 32, in doc ument [Wed Aug 18 11:10:19 2010] [error] [client 89.212.104.197] ckan_template = render('error_document_template.html') [Wed Aug 18 11:10:19 2010] [error] [client 89.212.104.197] File ""/home/okfn/var/srvc/si.ckan.net/pyenv/src/ckan/ckan/lib/base.py"", line 38, in render [Wed Aug 18 11:10:19 2010] [error] [client 89.212.104.197] return render_template() [Wed Aug 18 11:10:19 2010] [error] [client 89.212.104.197] File ""/home/okfn/var/srvc/si.ckan.net/pyenv/src/ckan/ckan/lib/base.py"", line 36, in render_templ ate [Wed Aug 18 11:10:19 2010] [error] [client 89.212.104.197] return literal(stream.render(method=method, encoding=None)) [Wed Aug 18 11:10:19 2010] [error] [client 89.212.104.197] File ""/home/okfn/var/srvc/si.ckan.net/pyenv/lib/python2.5/site-packages/genshi/core.py"", line 18 3, in render [Wed Aug 18 11:10:19 2010] [error] [client 89.212.104.197] return encode(generator, method=method, encoding=encoding, out=out) [Wed Aug 18 11:10:19 2010] [error] [client 89.212.104.197] File ""/home/okfn/var/srvc/si.ckan.net/pyenv/lib/python2.5/site-packages/genshi/output.py"", line 57, in encode [Wed Aug 18 11:10:19 2010] [error] [client 89.212.104.197] return _encode(''.join(list(iterator))) [Wed Aug 18 11:10:19 2010] [error] [client 89.212.104.197] File ""/home/okfn/var/srvc/si.ckan.net/pyenv/lib/python2.5/site-packages/genshi/output.py"", line 339, in __call__ [Wed Aug 18 11:10:19 2010] [error] [client 89.212.104.197] for kind, data, pos in stream: [Wed Aug 18 11:10:19 2010] [error] [client 89.212.104.197] File ""/home/okfn/var/srvc/si.ckan.net/pyenv/lib/python2.5/site-packages/genshi/output.py"", line 670, in __call__ [Wed Aug 18 11:10:19 2010] [error] [client 89.212.104.197] for kind, data, pos in stream: [Wed Aug 18 11:10:19 2010] [error] [client 89.212.104.197] File ""/home/okfn/var/srvc/si.ckan.net/pyenv/lib/python2.5/site-packages/genshi/output.py"", line 771, in __call__ [Wed Aug 18 11:10:19 2010] [error] [client 89.212.104.197] for kind, data, pos in chain(stream, [(None, None, None)]): [Wed Aug 18 11:10:19 2010] [error] [client 89.212.104.197] File ""/home/okfn/var/srvc/si.ckan.net/pyenv/lib/python2.5/site-packages/genshi/output.py"", line 586, in __call__ [Wed Aug 18 11:10:19 2010] [error] [client 89.212.104.197] for ev in stream: [Wed Aug 18 11:10:19 2010] [error] [client 89.212.104.197] File ""/home/okfn/var/srvc/si.ckan.net/pyenv/lib/python2.5/site-packages/genshi/core.py"", line 288, in _ensure [Wed Aug 18 11:10:19 2010] [error] [client 89.212.104.197] for event in stream: [Wed Aug 18 11:10:19 2010] [error] [client 89.212.104.197] File ""/home/okfn/var/srvc/si.ckan.net/pyenv/lib/python2.5/site-packages/genshi/template/base.py"", line 618, in _include [Wed Aug 18 11:10:19 2010] [error] [client 89.212.104.197] for event in tmpl.generate(ctxt, **vars): [Wed Aug 18 11:10:19 2010] [error] [client 89.212.104.197] File ""/home/okfn/var/srvc/si.ckan.net/pyenv/lib/python2.5/site-packages/genshi/template/base.py"", line 618, in _include [Wed Aug 18 11:10:19 2010] [error] [client 89.212.104.197] for event in tmpl.generate(ctxt, **vars): [Wed Aug 18 11:10:19 2010] [error] [client 89.212.104.197] File ""/home/okfn/var/srvc/si.ckan.net/pyenv/lib/python2.5/site-packages/genshi/template/base.py"", line 605, in _include [Wed Aug 18 11:10:19 2010] [error] [client 89.212.104.197] for event in stream: [Wed Aug 18 11:10:19 2010] [error] [client 89.212.104.197] File ""/home/okfn/var/srvc/si.ckan.net/pyenv/lib/python2.5/site-packages/genshi/template/markup.py"", line 327, in _match [Wed Aug 18 11:10:19 2010] [error] [client 89.212.104.197] for event in stream: [Wed Aug 18 11:10:19 2010] [error] [client 89.212.104.197] File ""/home/okfn/var/srvc/si.ckan.net/pyenv/lib/python2.5/site-packages/genshi/template/base.py"", line 545, in _flatten [Wed Aug 18 11:10:19 2010] [error] [client 89.212.104.197] for kind, data, pos in stream: [Wed Aug 18 11:10:19 2010] [error] [client 89.212.104.197] File ""/home/okfn/var/srvc/si.ckan.net/pyenv/lib/python2.5/site-packages/genshi/filters/i18n.py"", line 177, in _generate [Wed Aug 18 11:10:19 2010] [error] [client 89.212.104.197] for event in msgbuf.translate(gettext(msgbuf.format())): [Wed Aug 18 11:10:19 2010] [error] [client 89.212.104.197] File ""/home/okfn/var/srvc/si.ckan.net/pyenv/lib/python2.5/site-packages/genshi/filters/i18n.py"", line 1029, in translate [Wed Aug 18 11:10:19 2010] [error] [client 89.212.104.197] parts = parse_msg(string) [Wed Aug 18 11:10:19 2010] [error] [client 89.212.104.197] File ""/home/okfn/var/srvc/si.ckan.net/pyenv/lib/python2.5/site-packages/genshi/filters/i18n.py"", line 1143, in parse_msg [Wed Aug 18 11:10:19 2010] [error] [client 89.212.104.197] parts.append((stack[-1], string)) [Wed Aug 18 11:10:19 2010] [error] [client 89.212.104.197] IndexError: list index out of range }}} ckan: 1e403927f2bb (metastable) genshi: 0.6 lang: slovenian" 1282130515000000 1283189807000000 436 bug dread ckan-v1.2 closed wontfix Investigate exception: resource search JSON "Here's the dump from 22:10 last night: URL: http://ckan.net/api/search/resource?all_fields=1&offset=0&limit=20&qjson=%3Cspan%20class= Module weberror.errormiddleware:162 in __call__ << __traceback_supplement__ = Supplement, self, environ sr_checker = ResponseStartChecker(start_response) app_iter = self.application(environ, sr_checker) return self.make_catching_iter(app_iter, environ, sr_checker) except: >> app_iter = self.application(environ, sr_checker) Module beaker.middleware:73 in __call__ << self.cache_manager) environ[self.environ_key] = self.cache_manager return self.app(environ, start_response) >> return self.app(environ, start_response) Module beaker.middleware:152 in __call__ << headers.append(('Set-cookie', cookie)) return start_response(status, headers, exc_info) return self.wrap_app(environ, session_start_response) def _get_session(self): >> return self.wrap_app(environ, session_start_response) Module routes.middleware:130 in __call__ << environ['SCRIPT_NAME'] = environ['SCRIPT_NAME'][:-1] response = self.app(environ, start_response) # Wrapped in try as in rare cases the attribute will be gone already >> response = self.app(environ, start_response) Module pylons.wsgiapp:125 in __call__ << controller = self.resolve(environ, start_response) response = self.dispatch(controller, environ, start_response) if 'paste.testing_variables' in environ and hasattr(response, >> response = self.dispatch(controller, environ, start_response) Module pylons.wsgiapp:324 in dispatch << if log_debug: log.debug(""Calling controller class with WSGI interface"") return controller(environ, start_response) def load_test_env(self, environ): >> return controller(environ, start_response) Module ckan.lib.base:73 in __call__ << # available in environ['pylons.routes_dict'] try: return WSGIController.__call__(self, environ, start_response) finally: model.Session.remove() >> return WSGIController.__call__(self, environ, start_response) Module pylons.controllers.core:221 in __call__ << return response(environ, self.start_response) response = self._dispatch_call() if not start_response_called: self.start_response = start_response >> response = self._dispatch_call() Module pylons.controllers.core:172 in _dispatch_call << req.environ['pylons.action_method'] = func response = self._inspect_call(func) else: if log_debug: >> response = self._inspect_call(func) Module pylons.controllers.core:107 in _inspect_call << func.__name__, args) try: result = self._perform_call(func, args) except HTTPException, httpe: if log_debug: >> result = self._perform_call(func, args) Module pylons.controllers.core:60 in _perform_call << """"""Hide the traceback for everything above this method"""""" __traceback_hide__ = 'before_and_this' return func(**args) def _inspect_call(self, func): >> return func(**args) Module ckan.controllers.rest:400 in search << response.status_int = 400 return gettext('Blank qjson parameter') params = json.loads(request.params['qjson']) elif request.params.values() and request.params.values() != [u''] and request.params.values() != [u'1']: params = request.params >> params = json.loads(request.params['qjson']) Module simplejson:384 in loads << parse_constant is None and object_pairs_hook is None and not use_decimal and not kw): return _default_decoder.decode(s) if cls is None: cls = JSONDecoder >> return _default_decoder.decode(s) Module simplejson.decoder:402 in decode << """""" obj, end = self.raw_decode(s, idx=_w(s, 0).end()) end = _w(s, end).end() if end != len(s): >> obj, end = self.raw_decode(s, idx=_w(s, 0).end()) Module simplejson.decoder:420 in raw_decode << obj, end = self.scan_once(s, idx) except StopIteration: raise JSONDecodeError(""No JSON object could be decoded"", s, idx) return obj, end >> raise JSONDecodeError(""No JSON object could be decoded"", s, idx) JSONDecodeError: No JSON object could be decoded: line 1 column 0 (char 0) CGI Variables DOCUMENT_ROOT '/htdocs' GATEWAY_INTERFACE 'CGI/1.1' HTTP_ACCEPT 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8, application/json' HTTP_ACCEPT_CHARSET 'ISO-8859-1,utf-8;q=0.7,*;q=0.7' HTTP_ACCEPT_ENCODING 'gzip,deflate' HTTP_ACCEPT_LANGUAGE 'en-us,en;q=0.5' HTTP_CONNECTION 'keep-alive' HTTP_COOKIE '__utma=27730403.1245320310.1281386803.1281386803.1282164955.2; __utmz=27730403.1282164955.2.2.utmcsr=jira|utmccn=(referral)|utmcmd=referral|utmcct=/browse/PLATFORM-892; __utmb=27730403.3.10.1282164955; __utmc=27730403' HTTP_HOST 'ckan.net' HTTP_KEEP_ALIVE '300' HTTP_REFERER 'http://jira/browse/PLATFORM-892' HTTP_USER_AGENT 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7' PATH '/usr/local/bin:/usr/bin:/bin' PATH_INFO '/api/search/resource' PATH_TRANSLATED '/home/okfn/var/srvc/ckan.net/pyenv/bin/ckan.net.py/api/search/resource' QUERY_STRING 'all_fields=1&offset=0&limit=20&qjson=%3Cspan%20class=' REMOTE_ADDR '64.235.97.218' REMOTE_PORT '20720' REQUEST_METHOD 'GET' REQUEST_URI '/api/search/resource?all_fields=1&offset=0&limit=20&qjson=%3Cspan%20class=' SCRIPT_FILENAME '/home/okfn/var/srvc/ckan.net/pyenv/bin/ckan.net.py' SCRIPT_URI 'http://ckan.net/api/search/resource' SCRIPT_URL '/api/search/resource' SERVER_ADDR '10.226.226.118' SERVER_ADMIN '[no address given]' SERVER_NAME 'ckan.net' SERVER_PORT '80' SERVER_PROTOCOL 'HTTP/1.1' SERVER_SIGNATURE '
Apache/2.2.9 (Debian) mod_wsgi/2.5 Python/2.5.2 Server at ckan.net Port 80
\n' SERVER_SOFTWARE 'Apache/2.2.9 (Debian) mod_wsgi/2.5 Python/2.5.2' WSGI Variables application beaker.cache beaker.get_session > beaker.session {'_accessed_time': 1282165818.0880959, '_creation_time': 1282165818.0880959} mod_wsgi.application_group 'ckan.net|' mod_wsgi.callable_object 'application' mod_wsgi.listener_host '' mod_wsgi.listener_port '80' mod_wsgi.process_group '' mod_wsgi.reload_mechanism '0' mod_wsgi.script_reloading '1' mod_wsgi.version (2, 5) paste.cookies (, '__utma=27730403.1245320310.1281386803.1281386803.1282164955.2; __utmz=27730403.1282164955.2.2.utmcsr=jira|utmccn=(referral)|utmcmd=referral|utmcct=/browse/PLATFORM-892; __utmb=27730403.3.10.1282164955; __utmc=27730403') paste.parsed_querystring ([('all_fields', '1'), ('offset', '0'), ('limit', '20'), ('qjson', ' 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'search', 'controller': u'rest', 'register': u'resource'} repoze.who.logger repoze.who.plugins {'openid': , 'auth_tkt': } routes.route routes.url webob._parsed_query_vars (GET([('all_fields', '1'), ('offset', '0'), ('limit', '20'), ('qjson', ' wsgiorg.routing_args (, {'action': u'search', 'controller': u'rest', 'register': u'resource'}) " 1282206959000000 1288003983000000 437 bug dread ckan-v1.2 closed fixed Buildbot test failures - ascii codec "On today's buildbot: http://buildbot.okfn.org/builders/buildbot-test/builds/201 2 failures about ascii (ignore other 2)" 1282223640000000 1288004009000000 439 task dread closed fixed Plan server requirements for DGU "Using use cases for security etc. Draw diagram to satisfy use cases. Communicate to Paul and therefore TSO." 1282224452000000 1294413903000000 444 task dread closed duplicate Discuss package relationships ideas with JF "* Create test data on visible ckan * Discuss with JF" 1282299238000000 1294414008000000 446 task dread closed invalid Server configuration query (?) " * Ensure use case is in design - ""an admin writes to the CKAN API"" (and see JB notes on paper) * Communicate how this is planned to be achieved in design to JF" 1282299385000000 1294414077000000 450 task dread closed fixed Assist with proxying of static media for forms John did this a while ago. 1282299573000000 1287997487000000 452 task dread closed fixed Assist with using package update error form 1282299647000000 1287997540000000 455 task johnbywater closed invalid SOLR - suggest 1 pager about how system would work Either CKAN writes to SOLR and Drupal reads from SOLR, or CKAN writes to SOLR and Drupal reads SOLR via CKAN API (so search resource locations are unaffected). 1282299913000000 1291637172000000 459 bug johnbywater ckan-v1.2 closed fixed Versions on branches are broken 1282299973000000 1282921783000000 463 defect dread ckan-v1.3 closed worksforme package diff exception "Investigate exception: {{{ URL: http://ckan.net/revision/diff/dbtune-audioscrobbler?diff=66a47b9e-232a-4838-8674-66fa1a5c76e1&oldid=a99c98be-767a-4e49-9025-2472b2d18b9c Module weberror.errormiddleware:162 in __call__ << __traceback_supplement__ = Supplement, self, environ sr_checker = ResponseStartChecker(start_response) app_iter = self.application(environ, sr_checker) return self.make_catching_iter(app_iter, environ, sr_checker) except: >> app_iter = self.application(environ, sr_checker) Module beaker.middleware:73 in __call__ << self.cache_manager) environ[self.environ_key] = self.cache_manager return self.app(environ, start_response) >> return self.app(environ, start_response) Module beaker.middleware:152 in __call__ << headers.append(('Set-cookie', cookie)) return start_response(status, headers, exc_info) return self.wrap_app(environ, session_start_response) def _get_session(self): >> return self.wrap_app(environ, session_start_response) Module routes.middleware:130 in __call__ << environ['SCRIPT_NAME'] = environ['SCRIPT_NAME'][:-1] response = self.app(environ, start_response) # Wrapped in try as in rare cases the attribute will be gone already >> response = self.app(environ, start_response) Module pylons.wsgiapp:125 in __call__ << controller = self.resolve(environ, start_response) response = self.dispatch(controller, environ, start_response) if 'paste.testing_variables' in environ and hasattr(response, >> response = self.dispatch(controller, environ, start_response) Module pylons.wsgiapp:324 in dispatch << if log_debug: log.debug(""Calling controller class with WSGI interface"") return controller(environ, start_response) def load_test_env(self, environ): >> return controller(environ, start_response) Module ckan.lib.base:73 in __call__ << # available in environ['pylons.routes_dict'] try: return WSGIController.__call__(self, environ, start_response) finally: model.Session.remove() >> return WSGIController.__call__(self, environ, start_response) Module pylons.controllers.core:221 in __call__ << return response(environ, self.start_response) response = self._dispatch_call() if not start_response_called: self.start_response = start_response >> response = self._dispatch_call() Module pylons.controllers.core:172 in _dispatch_call << req.environ['pylons.action_method'] = func response = self._inspect_call(func) else: if log_debug: >> response = self._inspect_call(func) Module pylons.controllers.core:107 in _inspect_call << func.__name__, args) try: result = self._perform_call(func, args) except HTTPException, httpe: if log_debug: >> result = self._perform_call(func, args) Module pylons.controllers.core:60 in _perform_call << """"""Hide the traceback for everything above this method"""""" __traceback_hide__ = 'before_and_this' return func(**args) def _inspect_call(self, func): >> return func(**args) Module ckan.controllers.revision:119 in diff << c.revision_to = model.Session.query(model.Revision).get( request.params.getone('diff')) diff = pkg.diff(c.revision_to, c.revision_from) c.diff = diff.items() c.diff.sort() >> diff = pkg.diff(c.revision_to, c.revision_from) Module ckan.model.package:340 in diff << display_id = to_obj_rev.tag.name elif obj_class.__name__ == 'PackageExtra': display_id = to_obj_rev.key else: display_id = related_obj_id[:4] >> display_id = to_obj_rev.key AttributeError: 'NoneType' object has no attribute 'key' CGI Variables AUTH_TYPE 'cookie' DOCUMENT_ROOT '/htdocs' GATEWAY_INTERFACE 'CGI/1.1' HTTP_ACCEPT 'application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5' HTTP_ACCEPT_CHARSET 'ISO-8859-1,utf-8;q=0.7,*;q=0.3' HTTP_ACCEPT_ENCODING 'gzip' HTTP_ACCEPT_LANGUAGE 'en-US,en;q=0.8' HTTP_CACHE_CONTROL 'max-age=0' HTTP_COOKIE '__utmz=27730403.1281000628.1.6.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=ckan; auth_tkt=""e919c7bb40f890a0184ed7be95465e1a4c6d130bhttp://pudo.org/!""; auth_tkt=""e919c7bb40f890a0184ed7be95465e1a4c6d130bhttp://pudo.org/!""; __utma=27730403.1381387877.1281962773.1282248244.1282250173.11; __utmc=27730403; __utmb=27730403.6.10.1282250173' HTTP_HOST 'ckan.net' HTTP_REFERER 'http://ckan.net/package/history/dbtune-audioscrobbler' HTTP_USER_AGENT 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; en-US) AppleWebKit/534.6 (KHTML, like Gecko) Chrome/6.0.490.1 Safari/534.6' PATH '/usr/local/bin:/usr/bin:/bin' PATH_INFO '/revision/diff/dbtune-audioscrobbler' PATH_TRANSLATED '/home/okfn/var/srvc/ckan.net/pyenv/bin/ckan.net.py/revision/diff/dbtune-audioscrobbler' QUERY_STRING 'diff=66a47b9e-232a-4838-8674-66fa1a5c76e1&oldid=a99c98be-767a-4e49-9025-2472b2d18b9c' REMOTE_ADDR '92.226.62.168' REMOTE_PORT '55102' REMOTE_USER 'http://pudo.org/' REMOTE_USER_TOKENS [''] REQUEST_METHOD 'GET' REQUEST_URI '/revision/diff/dbtune-audioscrobbler?diff=66a47b9e-232a-4838-8674-66fa1a5c76e1&oldid=a99c98be-767a-4e49-9025-2472b2d18b9c' SCRIPT_FILENAME '/home/okfn/var/srvc/ckan.net/pyenv/bin/ckan.net.py' SCRIPT_URI 'http://ckan.net/revision/diff/dbtune-audioscrobbler' SCRIPT_URL '/revision/diff/dbtune-audioscrobbler' SERVER_ADDR '10.226.226.118' SERVER_ADMIN '[no address given]' SERVER_NAME 'ckan.net' SERVER_PORT '80' SERVER_PROTOCOL 'HTTP/1.1' SERVER_SIGNATURE '
Apache/2.2.9 (Debian) mod_wsgi/2.5 Python/2.5.2 Server at ckan.net Port 80
\n' SERVER_SOFTWARE 'Apache/2.2.9 (Debian) mod_wsgi/2.5 Python/2.5.2' WSGI Variables application beaker.cache beaker.get_session > beaker.session {'_accessed_time': 1282252047.603267, '_creation_time': 1282252047.603267} mod_wsgi.application_group 'ckan.net|' mod_wsgi.callable_object 'application' mod_wsgi.listener_host '' mod_wsgi.listener_port '80' mod_wsgi.process_group '' mod_wsgi.reload_mechanism '0' mod_wsgi.script_reloading '1' mod_wsgi.version (2, 5) paste.cookies (, '__utmz=27730403.1281000628.1.6.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=ckan; auth_tkt=""e919c7bb40f890a0184ed7be95465e1a4c6d130bhttp://pudo.org/!""; auth_tkt=""e919c7bb40f890a0184ed7be95465e1a4c6d130bhttp://pudo.org/!""; __utma=27730403.1381387877.1281962773.1282248244.1282250173.11; __utmc=27730403; __utmb=27730403.6.10.1282250173') paste.parsed_querystring ([('diff', '66a47b9e-232a-4838-8674-66fa1a5c76e1'), ('oldid', 'a99c98be-767a-4e49-9025-2472b2d18b9c')], 'diff=66a47b9e-232a-4838-8674-66fa1a5c76e1&oldid=a99c98be-767a-4e49-9025-2472b2d18b9c') 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'diff', 'controller': u'revision', 'id': u'dbtune-audioscrobbler'} repoze.who.identity repoze.who.logger repoze.who.plugins {'openid': , 'auth_tkt': } routes.route routes.url webob._parsed_query_vars (GET([('diff', '66a47b9e-232a-4838-8674-66fa1a5c76e1'), ('oldid', 'a99c98be-767a-4e49-9025-2472b2d18b9c')]), 'diff=66a47b9e-232a-4838-8674-66fa1a5c76e1&oldid=a99c98be-767a-4e49-9025-2472b2d18b9c') webob.adhoc_attrs {'language': 'en-us'} wsgi process 'Multi process AND threads (?)' wsgi.file_wrapper wsgiorg.routing_args (, {'action': u'diff', 'controller': u'revision', 'id': u'dbtune-audioscrobbler'}) }}}" 1282306037000000 1294916148000000 465 requirement johnbywater ckan-v1.3 closed wontfix Require API key for all API requests. 1282308904000000 1294411534000000 467 story johnbywater ckan-v1.3 closed duplicate Admin configures CKAN to expect API key in named HTTP header 1282310562000000 1294411681000000 469 task johnbywater ckan-v1.2 closed fixed Unit test to check API key in correctly named HTTP header is accepted by server 1282310760000000 1282932682000000 471 story johnbywater ckan-v1.2 closed API user sends API key in correctly named header 1282312088000000 1283248729000000 472 story johnbywater ckan-v1.2 closed API user sends API key in incorrectly named header 1282312108000000 1282932740000000 473 story johnbywater ckan-v1.2 closed API user discovers correct header for sending API key 1282312203000000 1283248736000000 475 task johnbywater ckan-v1.2 closed fixed Unit test to check API key in incorrectly named HTTP header is not accepted by server 1282312802000000 1282932705000000 476 requirement johnbywater ckan-v1.3 closed wontfix Daily database dumps shall be discoverable and downloadable 1282313433000000 1294411741000000 477 story johnbywater ckan-v1.3 closed duplicate Discover location of the daily database dumps 1282313788000000 1294411761000000 478 task johnbywater ckan-v1.2 closed fixed "Unit test for ""interface resource"" in API" We don't want /api to be an HTML page, but rather provide information about the API in a JSON structure. 1282315067000000 1283248713000000 481 story johnbywater ckan-v1.3 closed fixed Unrestricted total read-only access to catalogue API 1282422697000000 1294248359000000 483 story johnbywater closed invalid Restricted total read-write access to catalogue Web UI 1282422801000000 1294417216000000 484 story johnbywater closed invalid Restricted partial read-write access to catalogue Web UI 1282422858000000 1294417248000000 485 story johnbywater closed duplicate Performance beats QoS criteria 1282425219000000 1294411946000000 486 requirement johnbywater ckan-v1.3 closed duplicate Catalogue service shall notify and query SOLR service 1282425790000000 1291639321000000 487 story johnbywater closed duplicate Notify SOLR service of model events 1282425910000000 1291639404000000 488 requirement johnbywater closed wontfix Catalogue service shall notify RDF service 1282426021000000 1320930240000000 490 requirement johnbywater closed fixed The system shall support registering a harvest source via the CKAN API 1282426875000000 1286200804000000 491 story johnbywater ckan-v1.2 closed Get form for creating harvest source entity 1282427008000000 1284493173000000 492 story johnbywater ckan-v1.2 closed Submit harvest source create form response to the API 1282427042000000 1284493145000000 493 story johnbywater ckan-v1.2 closed Get harvest source entity 1282427083000000 1284493130000000 494 story johnbywater ckan-v1.2 closed Get form for updating remote metadata entity 1282427106000000 1285198894000000 495 story johnbywater ckan-v1.2 closed Put form for updating remote metadata entity 1282427150000000 1285198898000000 498 story johnbywater closed invalid "Search packages within location ""bounding box""" 1282427412000000 1294412520000000 500 defect dread ckan-v1.2 closed duplicate Exception from diff "Investigate exception occured occasionally in last couple of days on ckan.net: {{{ WebApp Error: : 'NoneType' object has no attribute 'key' URL: http://ckan.net/revision/diff/dbtune-audioscrobbler?diff=66a47b9e-232a-4838-8674-66fa1a5c76e1&oldid=a99c98be-767a-4e49-9025-2472b2d18b9c Module weberror.errormiddleware:162 in __call__ << __traceback_supplement__ = Supplement, self, environ sr_checker = ResponseStartChecker(start_response) app_iter = self.application(environ, sr_checker) return self.make_catching_iter(app_iter, environ, sr_checker) except: >> app_iter = self.application(environ, sr_checker) Module beaker.middleware:73 in __call__ << self.cache_manager) environ[self.environ_key] = self.cache_manager return self.app(environ, start_response) >> return self.app(environ, start_response) Module beaker.middleware:152 in __call__ << headers.append(('Set-cookie', cookie)) return start_response(status, headers, exc_info) return self.wrap_app(environ, session_start_response) def _get_session(self): >> return self.wrap_app(environ, session_start_response) Module routes.middleware:130 in __call__ << environ['SCRIPT_NAME'] = environ['SCRIPT_NAME'][:-1] response = self.app(environ, start_response) # Wrapped in try as in rare cases the attribute will be gone already >> response = self.app(environ, start_response) Module pylons.wsgiapp:125 in __call__ << controller = self.resolve(environ, start_response) response = self.dispatch(controller, environ, start_response) if 'paste.testing_variables' in environ and hasattr(response, >> response = self.dispatch(controller, environ, start_response) Module pylons.wsgiapp:324 in dispatch << if log_debug: log.debug(""Calling controller class with WSGI interface"") return controller(environ, start_response) def load_test_env(self, environ): >> return controller(environ, start_response) Module ckan.lib.base:73 in __call__ << # available in environ['pylons.routes_dict'] try: return WSGIController.__call__(self, environ, start_response) finally: model.Session.remove() >> return WSGIController.__call__(self, environ, start_response) Module pylons.controllers.core:221 in __call__ << return response(environ, self.start_response) response = self._dispatch_call() if not start_response_called: self.start_response = start_response >> response = self._dispatch_call() Module pylons.controllers.core:172 in _dispatch_call << req.environ['pylons.action_method'] = func response = self._inspect_call(func) else: if log_debug: >> response = self._inspect_call(func) Module pylons.controllers.core:107 in _inspect_call << func.__name__, args) try: result = self._perform_call(func, args) except HTTPException, httpe: if log_debug: >> result = self._perform_call(func, args) Module pylons.controllers.core:60 in _perform_call << """"""Hide the traceback for everything above this method"""""" __traceback_hide__ = 'before_and_this' return func(**args) def _inspect_call(self, func): >> return func(**args) Module ckan.controllers.revision:119 in diff << c.revision_to = model.Session.query(model.Revision).get( request.params.getone('diff')) diff = pkg.diff(c.revision_to, c.revision_from) c.diff = diff.items() c.diff.sort() >> diff = pkg.diff(c.revision_to, c.revision_from) Module ckan.model.package:340 in diff << display_id = to_obj_rev.tag.name elif obj_class.__name__ == 'PackageExtra': display_id = to_obj_rev.key else: display_id = related_obj_id[:4] >> display_id = to_obj_rev.key AttributeError: 'NoneType' object has no attribute 'key' CGI Variables DOCUMENT_ROOT '/htdocs' GATEWAY_INTERFACE 'CGI/1.1' HTTP_ACCEPT '*/*' HTTP_ACCEPT_ENCODING 'gzip' HTTP_ACCEPT_LANGUAGE 'zh-cn,zh-tw' HTTP_CONNECTION 'close' HTTP_HOST 'ckan.net' HTTP_USER_AGENT 'Baiduspider+(+http://www.baidu.com/search/spider.htm)' PATH '/usr/local/bin:/usr/bin:/bin' PATH_INFO '/revision/diff/dbtune-audioscrobbler' PATH_TRANSLATED '/home/okfn/var/srvc/ckan.net/pyenv/bin/ckan.net.py/revision/diff/dbtune-audioscrobbler' QUERY_STRING 'diff=66a47b9e-232a-4838-8674-66fa1a5c76e1&oldid=a99c98be-767a-4e49-9025-2472b2d18b9c' REMOTE_ADDR '123.125.66.32' REMOTE_PORT '63767' REQUEST_METHOD 'GET' REQUEST_URI '/revision/diff/dbtune-audioscrobbler?diff=66a47b9e-232a-4838-8674-66fa1a5c76e1&oldid=a99c98be-767a-4e49-9025-2472b2d18b9c' SCRIPT_FILENAME '/home/okfn/var/srvc/ckan.net/pyenv/bin/ckan.net.py' SCRIPT_URI 'http://ckan.net/revision/diff/dbtune-audioscrobbler' SCRIPT_URL '/revision/diff/dbtune-audioscrobbler' SERVER_ADDR '10.226.226.118' SERVER_ADMIN '[no address given]' SERVER_NAME 'ckan.net' SERVER_PORT '80' SERVER_PROTOCOL 'HTTP/1.1' SERVER_SIGNATURE '
Apache/2.2.9 (Debian) mod_wsgi/2.5 Python/2.5.2 Server at ckan.net Port 80
\n' SERVER_SOFTWARE 'Apache/2.2.9 (Debian) mod_wsgi/2.5 Python/2.5.2' WSGI Variables application beaker.cache beaker.get_session > beaker.session {'_accessed_time': 1282385101.4243281, '_creation_time': 1282385101.4243281} mod_wsgi.application_group 'ckan.net|' mod_wsgi.callable_object 'application' mod_wsgi.listener_host '' mod_wsgi.listener_port '80' mod_wsgi.process_group '' mod_wsgi.reload_mechanism '0' mod_wsgi.script_reloading '1' mod_wsgi.version (2, 5) paste.cookies (, '') paste.parsed_querystring ([('diff', '66a47b9e-232a-4838-8674-66fa1a5c76e1'), ('oldid', 'a99c98be-767a-4e49-9025-2472b2d18b9c')], 'diff=66a47b9e-232a-4838-8674-66fa1a5c76e1&oldid=a99c98be-767a-4e49-9025-2472b2d18b9c') 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'diff', 'controller': u'revision', 'id': u'dbtune-audioscrobbler'} repoze.who.logger repoze.who.plugins {'openid': , 'auth_tkt': } routes.route routes.url webob._parsed_query_vars (GET([('diff', '66a47b9e-232a-4838-8674-66fa1a5c76e1'), ('oldid', 'a99c98be-767a-4e49-9025-2472b2d18b9c')]), 'diff=66a47b9e-232a-4838-8674-66fa1a5c76e1&oldid=a99c98be-767a-4e49-9025-2472b2d18b9c') webob.adhoc_attrs {'language': 'en-us'} wsgi process 'Multi process AND threads (?)' wsgi.file_wrapper wsgiorg.routing_args (, {'action': u'diff', 'controller': u'revision', 'id': u'dbtune-audioscrobbler'}) }}}" 1282553033000000 1287747652000000 501 requirement pudo ckan-v1.2 closed duplicate Read-only maintenance mode CKAN should have a read-only maintenance mode with a nice little banner on all pages, appropriate REST messages etc. Bonus points if this is triggered via an environment variable and thus can be triggered by the surrounding apache. 1282554617000000 1282724566000000 507 story johnbywater closed fixed Upgrade a CKAN service 1282661646000000 1282909852000000 511 requirement dread ckan-v1.3 closed worksforme Better warnings and errors when using API 1282754677000000 1297075354000000 512 story dread closed duplicate User creates package via API with incorrect core fields specified 1282754750000000 1294917121000000 513 task dread closed wontfix Creating a package with API should warn if there are incorrect fields "When you create a package using the API, you might get a core field name wrong e.g. 'title' mispelt as 'titel' or 'groups' (which can't be specified in package creation). Currently that field will be ignored by the API. It should warn or give an error, rather than give 200 OK. " 1282754802000000 1302774329000000 514 defect dread ckan-v1.2 closed duplicate Inconsistent use of 'location' header in API "When you create a package then the 'location' header gets set. This doesn't happen for any other domain objects. I think this should be consistent - either none or all. I've removed the info about the header in the docs in the meantime." 1282757357000000 1282757391000000 516 defect dread ckan-v1.2 closed fixed Double-escaped text visible - revision page "At: http://ckan.net/revision you can see: ""Next »"" on pager This doesn't seem to be a problem with earlier (1.0.1) version." 1282829539000000 1288002933000000 533 requirement johnbywater ckan-v1.3 closed invalid The performance of CKAN shall scale "CKAN uses a database. We can put the database on another machine and then clone the CKAN machine. Then there are two machines calling the database and converting SQL results into HTTP responses. How many machines can you have before the database becomes the bottleneck? At that point, what QoS can be obtained with normal hardware? Afterwards, can CKAN be made to scale further than this with a little development? Can its Postgres database be mirrored in realtime? Or can we change SQL writes (create/updates) to write to many databases? Are there any other options for scaling the persistence mechanism?" 1282910499000000 1292957374000000 535 defect dread ckan-v1.2 closed duplicate genshi error when logged into sl.ckan.net Genshi exception when rendering the page whilst logged in to sl.ckan.net. 1283165774000000 1283167040000000 544 requirement pudo ckan-v1.3 closed duplicate Backport facet browsing to CKAN 1.2 "This is in IATI, would be nice to have in generic CKAN. * http://bitbucket.org/okfn/iati/changeset/378431974c76" 1283267292000000 1291638966000000 557 defect pudo ckan-v1.3 closed invalid Remove siblings from link_to/from relationship display Displaying siblings is not needed for link_to/from. 1283542595000000 1297075159000000 558 defect pudo ckan-v1.2 closed fixed Sort extras, relationships by key/object alphabetically 1283542680000000 1283781883000000 561 defect pudo ckan-v1.2 closed duplicate Deleted packages are returned in the API Anja is reporting this, severe bug, I think. 1283775578000000 1283775711000000 562 defect pudo ckan-v1.2 closed fixed OpenID Login fails using Yahoo and Google "reported by LOD folks. subsidary bug: error messages from OpenID providers are not shown on the form return page. " 1283941119000000 1284063574000000 564 requirement johnbywater ckan-v1.3 closed wontfix The system shall support location based search 1284033829000000 1294412714000000 567 story johnbywater ckan-v1.2 closed Post new harvest job for given harvest source 1284039943000000 1284689374000000 573 story johnbywater closed duplicate Add metadata entity to harvesting queue 1284045353000000 1284220987000000 574 story johnbywater closed duplicate Create UKLII package with attributes from remote metadata record 1284045805000000 1284222410000000 575 requirement johnbywater ckan-v1.2 closed fixed The system shall notify remote metadata harvesting errors 1284047959000000 1288012749000000 577 story johnbywater ckan-v1.2 closed Get remote metadata harvest job errors 1284209381000000 1285348049000000 578 story johnbywater ckan-v1.2 closed Get remote metadata harvest job 1284209407000000 1284493202000000 579 story johnbywater ckan-v1.2 closed Delete remote metadata harvest job 1284209440000000 1285260356000000 580 story johnbywater closed duplicate Write (create or update) CKAN package for metadata document 1284210730000000 1284223068000000 582 task johnbywater ckan-v1.2 closed fixed Domain object class for harvest source 1284211104000000 1284261402000000 583 task johnbywater ckan-v1.2 closed fixed Define fieldset object for harvest source forms 1284211169000000 1284261424000000 584 task johnbywater ckan-v1.2 closed fixed Migration script to add harvest source table 1284211204000000 1284483760000000 585 task johnbywater ckan-v1.2 closed fixed Method on API controller to return harvest source create form 1284211302000000 1284261448000000 586 task johnbywater ckan-v1.2 closed fixed Routing configuration for harvest source create form API resource 1284211336000000 1284261447000000 587 task johnbywater ckan-v1.2 closed fixed Documentation for getting harvest source create form from API 1284211364000000 1284492381000000 588 task johnbywater ckan-v1.2 closed fixed Method on API controller to accept valid harvest source create form submission 1284211575000000 1284318555000000 589 task johnbywater ckan-v1.2 closed fixed Method on API controller to reject invalid harvest source create form submission 1284211620000000 1284318561000000 590 task johnbywater ckan-v1.2 closed fixed Documentation for submitting harvest source create form submission to API 1284211659000000 1284492397000000 591 task johnbywater ckan-v1.2 closed fixed Routing configuration for harvest source entity API resource 1284212082000000 1284342925000000 592 task johnbywater ckan-v1.2 closed fixed Methods to return harvest source entity as JSON 1284212338000000 1284342904000000 593 task johnbywater ckan-v1.2 closed fixed Method on API controller to return remote metadata edit form 1284212498000000 1285198853000000 594 task johnbywater ckan-v1.2 closed fixed Routing configuration for remote metadata edit form API resource 1284212532000000 1285198859000000 595 task johnbywater ckan-v1.2 closed fixed Documentation for getting remote metadata edit form from API 1284212572000000 1285198863000000 596 task johnbywater ckan-v1.2 closed fixed Method on API controller to accept valid remote metadata edit form submission 1284212662000000 1285198874000000 597 task johnbywater ckan-v1.2 closed fixed Method on API controller to reject invalid remote metadata edit form submission 1284212689000000 1285198885000000 598 story johnbywater ckan-v1.2 closed List remote metadata entities for given publisher 1284213730000000 1286200795000000 599 task johnbywater ckan-v1.2 closed fixed Routing configuration for listing remote metadata entities for a given publisher 1284213814000000 1284347290000000 600 task johnbywater ckan-v1.2 closed fixed Method on API controller for listing remote metadata entities for a given publisher 1284213854000000 1284347296000000 601 task johnbywater ckan-v1.2 closed fixed Documentation for listing remote metadata entities for a given publisher via API 1284213928000000 1284493045000000 602 task johnbywater ckan-v1.2 closed fixed Method on API controller to accept valid harvest job 1284217587000000 1284336801000000 603 task johnbywater ckan-v1.2 closed fixed Method on API controller to reject invalid harvest job 1284217624000000 1284338918000000 604 task johnbywater ckan-v1.2 closed fixed Domain object class for harvest job 1284217689000000 1284326615000000 605 task johnbywater ckan-v1.2 closed fixed Routing configuration for harvest job register 1284217966000000 1284336788000000 606 task johnbywater ckan-v1.2 closed fixed Methods to return harvest job as JSON 1284218102000000 1284344127000000 607 task johnbywater ckan-v1.2 closed fixed Routing configuration for harvest job entity 1284218136000000 1284344113000000 608 task johnbywater ckan-v1.2 closed fixed Routing configuration for register of harvest jobs with error status 1284218378000000 1285347281000000 609 task johnbywater ckan-v1.2 closed fixed Methods to return harvest jobs with error status as JSON 1284218437000000 1285347285000000 618 task johnbywater ckan-v1.2 closed fixed Domain object class for metadata document 1284219669000000 1284598039000000 619 task johnbywater ckan-v1.2 closed fixed Get HTTP response for given resource locator 1284220327000000 1284675079000000 620 task johnbywater ckan-v1.2 closed fixed Identify remote metadata entity as metadata document, WAF, or CSW 1284220527000000 1284689400000000 624 task johnbywater ckan-v1.2 closed fixed Read attribute 'title' from local copy of metadata document 1284221083000000 1284675746000000 625 task johnbywater ckan-v1.2 closed fixed Read attribute 'abstract' from local copy of metadata document 1284221101000000 1284675753000000 626 task johnbywater ckan-v1.2 closed fixed Read attribute 'point of contact' from local copy of metadata document 1284221117000000 1285443038000000 627 task johnbywater ckan-v1.2 closed fixed Read attribute 'guid' from local copy of metadata document 1284221134000000 1284598028000000 628 task johnbywater ckan-v1.2 closed fixed Read attribute 'bounding-box' from local copy of metadata document 1284221156000000 1285443047000000 629 task johnbywater ckan-v1.2 closed fixed Read attribute 'keywords' from local copy of metadata document 1284221191000000 1285443055000000 630 task johnbywater ckan-v1.2 closed fixed Read attribute 'use constraints' from local copy of metadata document 1284221210000000 1285443069000000 631 task johnbywater ckan-v1.2 closed fixed Read attribute 'resource-locator' from local copy of metadata document 1284221223000000 1284675741000000 632 task johnbywater ckan-v1.2 closed fixed Read attribute 'topic category' from local copy of metadata document 1284221246000000 1285443078000000 633 task johnbywater ckan-v1.2 closed fixed Read attribute '' from local copy of metadata document 1284221272000000 1285443112000000 634 task johnbywater ckan-v1.2 closed fixed Read attribute '' from local copy of metadata document 1284221284000000 1285443115000000 635 task johnbywater ckan-v1.2 closed fixed Read attribute '' from local copy of metadata document 1284221305000000 1285443119000000 636 task johnbywater ckan-v1.2 closed fixed Method on API controller to delete given harvest job 1284221790000000 1285260342000000 637 task johnbywater closed invalid Read UKLII package data from given metadata document 1284222536000000 1284223104000000 638 task johnbywater ckan-v1.2 closed fixed Documentation for getting harvest source entity from API 1284225805000000 1284491185000000 639 task johnbywater ckan-v1.2 closed fixed Documentation for posting harvest job to API 1284226008000000 1284491239000000 640 task johnbywater ckan-v1.2 closed fixed Documentation for getting harvest job entity from API 1284226036000000 1284491233000000 641 task johnbywater ckan-v1.2 closed fixed Documentation for getting harvest job errors from API 1284226049000000 1285348033000000 642 task johnbywater ckan-v1.2 closed fixed Migration script to add harvest job table 1284226154000000 1284483747000000 643 task johnbywater ckan-v1.2 closed fixed Migration script to add metadata document table 1284226255000000 1284675721000000 644 task johnbywater ckan-v1.2 closed fixed Documentation for deleting harvest job entity 1284226402000000 1285260346000000 646 requirement johnbywater closed wontfix Web UI shall support registering harvest sources 1284740303000000 1294413500000000 648 requirement pudo ckan-v1.3 closed fixed Enable lock-down of package creation " - copy exisiting tests, modify authz in setUp, adapt and extend tests * Problem: default_role_actions is read by init_db * Solution: nuke db after monkey-patching * role = model.Role('Reader'), del role.actions[...] self.PRE_MAUTHZ_RULES = copy(mauthz.default_role_actions) mauthz.default_role_actions.remove((Role.READER, Action.CREATE)) #raise Exception(mauthz.default_role_actions) model.Session.remove() model.repo.rebuild_db() 3. Start from the functional * Both the api controllers and wui controllers to do * tests/function/test_authz.py extended to check CREATE in lockedDown mode. fails nicely. http://bitbucket.org/pudo/ckan-authz2 is_authorized(user, Action.Create, model.Package) -> Doing this will put 'Package' in the context field of the user_object_role table. This will trigger SQLAlchemy to attempt a join towards PackageRole in all queries. Since for class-level role assignments there never is a PackageRole join table entry, this will never return any results. * cf branch ""classes"": http://bitbucket.org/pudo/ckan-authz2/src/6fd0475e0c66 * No possibility of including ""instance"" column in inheritance decision. * Even if this can be cirumvented, it must happen on a per-query level and would require a major re-modelling. * have a ckan install that would not allow visitors to either list packages or list groups * two paths: create the listing, but for each group/pkg decide that you cannot show this * lock down the whole page (/package/list) - this is class-based, not object-based is_authorized(user, Action.Package_Create, model.System()) is_authorized(user, Action.Group_Create, model.System()) [Separating Package and Group roles may be useful going forward: PackageEditor, GroupEditor etc] 4. Find a standard way to lock down classes * possibly add default rows in user_object_role * introduce lock-down into controllers: group new, package new, REST equivalents, * confirm tests" 1284889519000000 1284889656000000 649 story pudo closed fixed Introduce Authorization Groups in model "Authorization Groups: * Rename UserObjectRole to SubjectObjectRole * Create database migration to do the rename in DB * Make sure all the tests are passing again (Doing this first seems more stable since we first want to ""re-gain"" exisiting functionality) * Create authz.py and model tests for authorization_group-based auth * tests: functional: create fixtures, do actual requests lib-tests: test for membership addition, removal, group-right additions affecting all members, group-right removal, group rights affecting non-members. # * Adapt model to get these passing * Integration into existing controllers should be negligible but may want ot have tests - do not want that. would mean design is broken * Need to create a new controller for editing authz groups (will have same permissions as any other object -- Reader, Editor, Administrator) " 1284889884000000 1284889983000000 651 requirement pudo closed fixed Improve javascript helper for package/user addition on groups/authzgroups This needs to be abstracted and we still need to be able to remove items before saving. 1284972211000000 1311171104000000 652 requirement pudo ckan-v1.2 closed fixed Allow for addition and removal of groups on package/edit Much more natural place to do this, even at the risk of overloading the package edit form. 1284998134000000 1284998201000000 653 requirement dread ckan-backlog new Trackback links for packages "When people link to a package, a track-back link is auto-created. (Similar system as for blogs). As suggested by Tim Davies: Allowing some form of ‘track back’ against datasets When a non-technical user comes to look at a dataset it would be really useful for them to be able to see if anyone has created an interface interpretation of it already. I found quite a few cases in research of end-users struggling to make sense of a dataset when good interfaces to that data had already been built and blogged about, but without there being any link from the dataset listing to those data uses. Accepting track backs could also make it easier for technical users to find blog posts / shared code etc. relating to a given dataset. " 1285062025000000 1339774636000000 654 bug johnbywater ckan-v1.2 closed Harvest sources and jobs should return 404 when missing (not 500) 1285170717000000 1285254097000000 655 story johnbywater ckan-v1.2 closed Return status code 404 when harvest source is not found 1285252399000000 1285254088000000 656 story johnbywater ckan-v1.2 closed Return status code 404 when harvesting job is not found 1285252429000000 1285254084000000 657 task johnbywater ckan-v1.2 closed fixed Fix harvesting job entity get method to default to returning 'None' rather than raising an exception 1285252536000000 1285254068000000 658 task johnbywater ckan-v1.2 closed fixed Fix harvest source entity get method to default to returning 'None' rather than raising an exception 1285252579000000 1285254072000000 660 requirement dread closed invalid Check CKAN instance works As an admin I want to check a CKAN instance works having just upgraded it or configured it. 1285348463000000 1311183115000000 661 task dread ckan-v1.3 closed fixed Create CKAN site tester "From Rufus: {{{ 'blackbox' testing command (read-only only would be fine) -- very useful for upgrade on sunday On blackbox thinking of something like: paster test-site http://hmg.ckan.net {package-name} Or (maybe better): paster test-site --site-spec {myconfig.json} my-config is a json file with info for testing (could overload --config rather than site-spec): site-url: http://hmg.ckan.net/ package-name: package-title: ...etc ... Then: Test front-page Test /revision/ Test /package/{page} -- check title Test /package/history Test /api/rest/package/ ... Test /api/search/package ... etc }}}" 1285348558000000 1288271266000000 666 requirement johnbywater ckan-v1.2 closed fixed The system shall support updating packages from new versions of previously harvested dataset or service metadata 1285590374000000 1288013526000000 673 task johnbywater closed Construct and send CSW GetRecordById request 1286214712000000 1286786758000000 674 task johnbywater closed Extract metadata documents from CSW GetRecordById 1286214780000000 1286787032000000 693 requirement wwaites ckan-v1.2 closed fixed Support ETag in cache decorator ... and make cache-control header optional 1286831051000000 1286831188000000 714 bug johnbywater closed fixed DGU package form shall have a read only field for ??? attribute So that Drupal doesn't need to make any adjustments to the form, and risk data being lost on submission. 1287581408000000 1291733788000000 729 bug pudo closed fixed Assets to be loaded from assets.okfn.org, not m.okfn.org Move from hetzner box to s3. 1287736519000000 1288012854000000 730 task rgrp closed duplicate Back up package data from all CKAN packages to storage.ckan.net "Write a worker that scans all packages in a ckan instance and uploads the data to storage.ckan.net. * Naming scheme? * Bucket: {ckan-instance-id}-{package-name}? {ckan-instance-id}-{package-id}? * What happens if names change * File: filename? hash? * Store hash back on ckan instance?" 1287737109000000 1291139609000000 737 enhancement dread ckan-backlog new Markdown syntax summary page "I suggest we produce a quick Markdown cheat-sheet page, showing the key runes: e.g. create a title and quote some text. This page can link to the full Markdown docs for advanced users. A user going to the Markdown docs that we link will have to read a couple of pages of the raison-d'etre of Markdown before he gets to the syntax. And it's not very easy to read, and being white on black it looks like proper geek stuff. " 1287766749000000 1323170239000000 741 enhancement ollyc ckan-v1.2 closed fixed Extension / Plugin system for CKAN "Create plugin system using Specification in CEP-003 (browser:doc/cep/cep-003.txt) and " 1287996890000000 1291989194000000 743 story johnbywater closed wontfix Create harvest source registration via Web UI 1288012860000000 1294412807000000 744 story johnbywater closed wontfix Update harvest source registration via Web UI 1288012960000000 1294412813000000 745 requirement johnbywater ckan-v1.3 closed wontfix Web UI shall accept requests for harvesting jobs 1288013148000000 1294412820000000 746 story johnbywater closed wontfix Request new harvesting job via Web UI 1288013198000000 1294412827000000 747 story johnbywater closed wontfix Track harvesting jobs via Web UI 1288013217000000 1294412834000000 748 story johnbywater closed duplicate Link new sample package to previous sample package of continuous series 1288013849000000 1294412976000000 749 story johnbywater closed duplicate Fold up continuous series in search results behind newest sample package 1288014002000000 1294412986000000 751 story johnbywater closed duplicate Get harvested document for a given package 1288014518000000 1288014616000000 761 story dread closed invalid Read-only CKAN for maintenance Administrator wants to upgrade CKAN or move it to another server. During this time the database is being administered and either edits are lost or can't be done. 1288090334000000 1288091977000000 762 story dread closed invalid Permanently Read-Only CKAN instance "A CKAN is used just for distributing metadata. Updates may still arrive through direct db manipulation, e.g.: * another (but writable) CKAN instance is connected to the same db * restoring database dumps from another CKAN db " 1288090578000000 1288091982000000 763 enhancement dread ckan-future assigned Read-only mode - Setup "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)." 1288091506000000 1338206204000000 765 enhancement dread ckan-backlog assigned Read-only mode - API usage "All writes to the API are captured and you are returned an error explaining the reason. Possible errors: * 503 temporary maintenance * 403 forbidden (if server if permanently read-only)" 1288091897000000 1338206123000000 771 story johnbywater ckan-v1.3 closed worksforme Run CLI help command without arguments Should return something sensible (currently reports an error). 1288190318000000 1294413256000000 772 story johnbywater ckan-v1.3 closed duplicate Run CLI harvester command without arguments Should return help for the harvester (currently crashes). 1288190373000000 1294413313000000 773 task johnbywater ckan-v1.3 closed duplicate Fix CLI help command to return CLI help message 1288190475000000 1294413400000000 774 task johnbywater ckan-v1.3 closed duplicate Fix CLI harvester command to return harvester help message 1288190522000000 1294413412000000 796 defect pudo ckan-v1.3 closed invalid AlphaPage for non-latin languages "The AlphaPage implementation assumes that all packages start with a latin character. This is not true for Russian, Chinese, Arabian and Persian languages etc. We should either use a unicode solution (i.e. display a full class of characters based on the current locale) or use generic paging instead. " 1289296662000000 1291640040000000 807 enhancement rgrp ckan-v1.3 closed wontfix Handle robot traffic better "We get a lot of robot traffic. Notice that robots are visiting package edit pages. Suggest: * Add rel=nofollow to various links * Throttle some robots (not all seem to respect robots.txt) " 1289899826000000 1297075372000000 809 requirement pudo ckan-v1.3 closed wontfix Link to the Wiki pages in package form "This would allow for a community-driven definition of field values, conventions, etc. Plus: create wiki.ckan.net " 1289992231000000 1297075561000000 811 defect cygri ckan-backlog new Extra field editing form layout breaks when there are long field names 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. 1289994812000000 1323170289000000 812 defect cygri ckan-backlog new Package edit form only allows three extra fields "= 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." 1289995010000000 1311176917000000 813 requirement cygri ckan-v1.3 closed fixed Add link to “Register new package” to the homepage "A link to the “register new package” page would be handy somewhere on the front page. As a frequent editor, I often go to http://ckan.net in order to create a new package. I don't want to hunt around for the link to the “new package” form. The link could go into the bar next to “About / Statistics”. Or into the “More information” sidebar. Neither of these truly make sense, but it's a frequently accessed link and that's reason enough to put it somewhere onto the frontpage. " 1289995253000000 1294411047000000 814 requirement cygri ckan-v1.3 closed fixed Have an “About CKAN” link on every page "A link “About CKAN” pointing to http://ckan.net/about should be visible on every page. This is important because people often land on subpages and may have trouble figuring out what CKAN is. I would put this link into the main navigation bar, on the very right next to “Revision History”. Then I would also remove the “Home” item from the main navigation bar because it is redundant. The CKAN logo is already a link to the homepage. The only other subpage in the “Home” section is “Statistics” and that's already linked from the homepage sidebar. But anywhere else would be fine as well." 1289995821000000 1294411109000000 815 requirement cygri ckan-v1.3 closed duplicate Autocomplete for the search field The search field (on the homepage and in the top right corner of each page) should have autocomplete for package name. If a package name is selected, it should not do a search but go straight to the package page. 1289995951000000 1294410951000000 817 requirement cygri ckan-v1.3 closed worksforme Proposed redesign of Resources table on package pages "There are some problems with the Resources table on package pages: 1. The column labelled “URL” doesn't contain URLs, but just the word “Download”. 2. The links labelled “Download” often are not download links, but something else (example links, API endpoints, documentation links). Attached is a screenshot for a proposed redesign. The changes are: 1. Move the Format column to the right of the Description column (description is more important) 2. Make the description a clickable link 3. Drop the “URL/Download” column because it's now redundant 4. Rename “Description” to “Resource” (not that important)" 1289997384000000 1297073724000000 818 requirement cygri ckan-backlog new Rethinking the author and maintainer fields "The semantics of the Author and Maintainer fields are really unclear at the moment. This leads to very inconsistent usage. Also, perhaps Name and Email are not the only fields that are needed for a contact. Here is a table that shows the current usage of these fields in CKAN: http://richard.cyganiak.de/2010/ckan/ckan-ppl.html We note several problems: * Author and Maintainer are often the same * Author and Maintainer are often used interchangeably * People really want to specify URLs for the contacts and stick them into random places because there is no field for it * Multiple comma-separated names in a single field I'm not sure what to do about this, but a redesign is necessary in my opinion. Some ideas: * Remove the maintainer field? * Make really clear that Author doesn't refer to the metadata on CKAN, but to the original data * Add an “author URL” field?" 1290003524000000 1339774621000000 819 defect cygri ckan-backlog closed fixed Tag autocompletion widget broken "The widget for tag autocompletion is broken in various ways. For example, if I edit a package that is tagged ""music"", and just tab through the form fields to get to the Author field, then the widget changes to ""industrial-music"" as I tab through it. Or if the tag is ""foo bar"" and I hit alt-right to jump to the end of the text field (with the intent of adding a third tag), then the contents change to ""foo barbecue""." 1290004121000000 1323171435000000 820 defect dread closed fixed Exception browsing /user/apikey when not logged in "Should fail gracefully (not the existing 500 error) when you go to ckan.net/user/apikey (manually typing in the url) but haven't logged in. {{{ WebApp Error: : 'NoneType' object has no attribute 'apikey' URL: http://test-hmg.ckan.net/user/apikey }}}" 1290006079000000 1311325226000000 821 defect dread ckan-v1.4-sprint-2 closed worksforme Some resources have disappeared in CKAN "Simon has spotted 31 packages whose resources have disappeared in CKAN, but still appear in the Drupal front-end. Here are the details: * in CKAN's package view (in web interface, API and dump) no resources display * but they WERE created in CKAN, as shown by the revision diffs. * they are in the Drupal front-end So these resources must have been in the CKAN API at some point and then disappeared without trace/revision to alert Drupal. Packages affected: anti-social-behaviour-orders-1999-2007 asylum-applications-jan-mar-2009 control-of-immigration-quarterly-statistical-summary-united-kingdom-2009-october-december coroners-statistics-england-and-wales courts-statistics-user-survey-england-and-wales court-statistics-company-insolvency-and-bankruptcy-england-and-wales court-statistics-england-and-wales court-statistics-mortages-and-landlord-possession-england-and-wales crime-in-england-and-wales crime-statistics-local-reoffending-england-and-wales crime-statistics-prison-and-probation-england-and-wales crime-statistics-reoffending-of-adults-england-and-wales crime-statistics-reoffending-of-juvenilles-england-and-wales data_gov_uk-datasets digest-uk-energy-statistics-2008 directgov-central-hottest-pages-monthly directgov-central-internal-search-terms-monthly directgov-section-visits-monthly electricity-consumption-2007 electricity-gas-consumption-2007 energy-consumption-uk-2008 final-energy-consumption-2007 foi-statistics-uk-central-government fuel-poverty-statistics-2007 gas-consumption-2007 gb-reported-bicycling-accidents gb-road-traffic-counts gb-traffic-matrix greenhouse-gas-emissions-2008 high-level-indicators-energy-use-2006 judicial-and-court-statistics-england-and-wales laboratory-tests-and-prices local-authority-carbon-dioxide-emissions-2007 magistrates-courts-statistics-survey-england-and-wales monthly-energy-prices monthly-energy-trends ni_012_refused_and_deferred_houses_in_multiple_occupation_hmos_licence_applications_leading_to_immig ni_013_migrants_english_language_skills_and_knowledge ni_023_perceptions_that_people_in_the_area_treat_one_another_with_respect_and_consideration ni_024_satisfaction_with_the_way_the_police_and_local_council_dealt_with_anti-social_behaviour ni_025_satisfaction_of_different_groups_with_the_way_the_police_and_local_council_dealt_with_anti-so ni_026_specialist_support_to_victims_of_a_serious_sexual_offence ni_029_gun_crime_rate ni_031_re-offending_rate_of_registered_sex_offenders ni_032_repeat_incidents_of_domestic_violence ni_034_domestic_violence_-_murder ni_036_protection_against_terrorist_attack ni_038_drug_related_class_a_offending_rate ni_078_reduction_in_number_of_schools_where_fewer_than_30_of_pupils_achieve_5_or_more_a-_c_grades_at ni_101_looked_after_children_achieving_5_a-c_gcses_or_equivalent_at_key_stage_4_including_english_an ni_109_delivery_of_sure_start_childrens_centres ni_126_early_access_for_women_to_maternity_services ni_127_self_reported_experience_of_social_care_users ni_128_user_reported_measure_of_respect_and_dignity_in_their_treatment ni_181_time_taken_to_process_housing_benefit-council_tax_benefit_new_claims_and_change_events ni_184_food_establishments_in_the_area_which_are_broadly_compliant_with_food_hygiene_law ni_185_co2_reduction_from_local_authority_operations ni_190_achievement_in_meeting_standards_for_the_control_system_for_animal_health ni_194_air_quality_-_reduction_in_nox_and_primary_pm10_emissions_through_local_authorities_estate_an other-fuels-consumption-2006 police-use-firearms-england-wales-2007-2008 prison-end-of-custody-licence-releases-and-recalls-england-and-wales prison-population-england-and-wales probation-offender-management-caseload-statistics-england-and-wales probation-statistics-quarterly-brief-england-and-wales quality-indicators-energy-data-2007 quarterly-energy-prices quarterly-energy-trends road-transport-energy-consumption-2007 sentencing-statistics-england-and-wales statistics-terrorism-arrests-outcomes-2001-2008 ukba-control-of-immigration-statistics-2008 ukba-control-of-immigration-statistics-2008-supplementary-tables uk-energy-in-brief-2008 uk-energy-sector-indicators-background-2008 uk-energy-sector-indicators-key-supporting-2008 uk-exportcontrollists uk-exportcontrol-sanctions uk-export-control-statistics uk-glossary-exportcontrol uk-ipo-offences weekly-fuel-prices" 1290015776000000 1298486642000000 822 enhancement Javier de la Cueva closed fixed Docs: Configuration as site-available instead of site-enabled for apache "The documentation for setting up Apache uses sites-enabled instead of sites-available and a2ensite demo.ckan.net " 1290107103000000 1290506354000000 830 enhancement rgrp closed fixed Themes for CKAN "Already have the basic capacity using *_extras paths for templates and public directory (see http://wiki.okfn.org/ckan/doc/theme). However, would be nice to have a proper 'theme' structure (e.g. would allow for theme switching) that also avoids directly polluting 'public'. Could be inspired by: http://packages.python.org/Flask-Themes/" 1290760612000000 1311180263000000 834 task Alexander ckan-v1.3 closed worksforme Searching in CKAN "Hello. I've installed stable CKAN v1.1 from PyPI. I can't find any docs about using CKAN API in order to query packages. Query ./api/search/package?q=str works fine, but with extra parameters, such as limit, offset, fullinfo, order_by, search_notes, don't. Should I use new version for this? How can I perform this query via Ckanclient? Is it possible? Also I'm interested how to find open-licensed files? I tied URL ./api/search/package?q=str&open_only=1&downloadable_only=1 and Ckanclient: result = ckan.package_search('str', {'open_only': 1, 'downloadable_only': 1}) As result nothing found. Thanks." 1290769564000000 1291633657000000 836 enhancement rgrp ckan-v1.3-sprint-1 closed fixed Use site_url config option in templates "A user reported wanting to install ckan at a suburl. Apparently this does not work well because some urls are hard-coded: http://lists.okfn.org/pipermail/ckan-discuss/2010-November/000726.html Instead we should use the site_url config option where necessary. Cost: 1h" 1291132434000000 1302882808000000 837 enhancement rgrp ckan-backlog new CKAN integration with freebase gridworks / google refine "Thread: http://lists.okfn.org/pipermail/ckan-discuss/2010-November/000718.html === Scenario 1 === 1. User installs Refine and CKAN extension for refine 2. On booting refine and asked to load data they can choose from any data package on CKAN.net (or any other CKAN instance) 3. They edit the dataset on Refine 4. On save (or perhaps as a separate option) they are prompted as to whether they wish to sync the dataset back to CKAN (either as a new package or as a new resource on the existing package) NB: for the dataset sync back some form of ""CKAN"" storage would be required (we already have storage.ckan.net running but a closer integration would be required) === Scenario 2 === 1. User visits a package on CKAN.net (or another CKAN instance) 2. There is a button on the page ""View and edit this dataset in Google Refine"" 3. Click button -- ask them if they have Google refine installed * Yes: instructions for loading dataset into refine * No: load dataset in hosted version of google refine (we could run this) 4. User edits dataset and hits save. As in previous scenario they are prompted to sync the dataset." 1291140609000000 1339774605000000 843 enhancement wwaites closed fixed user list ui for group curation " * perhaps we should show the openid as well to distinguish between users with the same name. * perhaps on account creation, the user should be redirected to their personal details page to encourage them to fill in a human readable name. * also the list is much too long. can we make it work some other way? javascript is an option, but must be careful to fail gracefully when the browser does not support it." 1291484245000000 1319721601000000 845 enhancement dread ckan-v1.3-sprint-1 closed fixed Required fields "Allow a form to specify fields that are required. Currently name and resource url are required. * Show required fields with asterisks by the input box. * Resource fields to be included in this." 1291634995000000 1291723492000000 848 enhancement pudo ckan-v1.3-sprint-1 closed fixed Ability to hide extras fields on package read for helsinki regional infoshare. 1291714316000000 1291751275000000 849 defect pudo closed duplicate Import extra CSS from main template The CSS @import directive at the bottom of the main CKAN css file is not understood in all browsers, move this to a seperate import. 1291714923000000 1291715179000000 857 defect dread closed invalid Tests for CLI Test coverage for ckan.lib.cli is 34%. Need to improve that. 1291724131000000 1311182581000000 870 defect memespring ckan-v1.3-sprint-1 closed fixed Menu items not selecting correctly "Since the main menu items have changed (part of the UI redesign) the selected items are not functioning correctly. Specifically if Home / About or Add Package / Search are selected both menu items are highlighted. This is because the code assumes only one top-level menu item per controller." 1292243583000000 1294914243000000 871 defect nils.toedtmann closed invalid Check whether localhost-only exim installtions need upgrading too "The infamous [http://www.exim.org/lurker/message/20101207.215955.bb32d4f2.en.html exim bug] only needs one mail with prepared headers to travel through a exim system infect it. All local processes could do that, and some services (e.g. cron, webapps) send messages and might be convinced by malicious remote users to produce evil headers. We should either rule out that this could happen on our systems, or upgrade all exims regardless of whether they are localhost-only or not. BTW did we already run a rootkit checker like [http://rkhunter.sourceforge.net/ Rootkit hunter] on eu1? If not we should maybe do it now - there was already an exploit out in the wild. ByteMark has (a) already observed infections and (b) notified us because they remotely fingerprinted our mailer to be exim<4.70 (our EHLO banner contains the exim version), just as anyone could. " 1292264117000000 1296340558000000 874 enhancement pudo ckan-v1.3-sprint-2 closed fixed Extract solr search backend into an extension Move the solr SearchBackend to a seperate code base, remove any mentions of the CKAN model. 1292844422000000 1293057151000000 880 defect dread ckan-v1.3-sprint-2 closed fixed ONS loader tripping up on deleted packages Deleted packages with the same title and extra fields as an active package trip up the loader. It finds them in the search, but due to ckanclient not using the apikey when you 'get' the package to examine it further, it causes an exception. 1292939379000000 1292945137000000 893 defect pudo ckan-v1.4 closed wontfix ExtrasField should not overwrite more specific extras At the moment, ExtrasField cannot be used in conjunction with more specific extra fields, such as TextExtraField or SuggestTextExtraField. 1294135783000000 1298293527000000 895 defect memespring ckan-backlog new Add version number (or simular) to css/js includes query string "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" 1294343382000000 1339774593000000 896 story thejimmyg closed duplicate Distributed Data and Syncing Between CKAN Instances "Based on the ideas in: * DistributingChanges * SyncingInstances Merging the tickets #296, #297, #298, #299 into this one. Related ideas include: * Using dcat to exchange data * Using couchDB to have a stub package record synchronised between multiple CKAN instances, each linking to the main record in the correct instance This should be considered a wishlist item for the timebeing. " 1294406999000000 1300217375000000 900 defect dread closed fixed Intermittent error with new revision not having id "There are still some intermittent errors due to objects not having a revision_id, if you save an object at the same time as the revision. We add the uuid earlier to fix this. https://bitbucket.org/kindly/vdm/changeset/0050d023ca4e. From David Raznick" 1294659696000000 1294916587000000 907 enhancement rgrp ckan-v1.3-sprint-3 closed fixed Data previews: preview package resource data in the WUI "As a user I want to preview a dataset ('resource') before downloading it. == Implementation == This will be implemented as an [wiki:Extensions Extension] NB: This ticket requires a way to get data out of a remote url (the dataset). We do '''not want to put this data load/streaming into ckan core''' due to a) complexity b) load problems (do not want to take ckan out by accidentally pulling in a 1GB file) 1. Need a 'data proxy' - see ticket:698 and ticket:888 2. Preview using javascript in WUI - do this in an extension http://bitbucket.org/okfn/ckanext-dataapi " 1295261173000000 1297072303000000 909 enhancement pudo ckan-backlog assigned DCat importer for CKAN "Write an importer that supports most well known variants of DCat in importing the data as CKAN packages. In particular, the following sources should be supported: * CKANrdf generated exports * opengov.se RDF (not really DCat) * Sunlight Nationdatacatalog as harvested by dcat-tools. " 1295265958000000 1346669602000000 924 enhancement dread ckan-backlog new Search box has no search button "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: ?" 1295867533000000 1323170436000000 925 defect dread ckan-backlog closed fixed Change the search box icon to remove the down arrow Is there a good reason why the search box has a 'down arrow' icon when there is no drop-down menu? Or can this be usefully removed? 1295867593000000 1323168588000000 933 enhancement kindly ckan-v1.4 closed fixed get rid of self when it should be cls in classmethods use pylint 1296174526000000 1297348975000000 934 enhancement kindly closed invalid Key value store for extensions to store data "We need to allow plugins to store information. Each plug-in should have its own name space and allow any data to be set. There are two options. * make a key value table in ckan that will hold random information. * use redis (or other key value store) If in sql suggest schema of form: * (namespace, obj_id, key, value [, value_type]) * value is json" 1296228758000000 1323171047000000 939 enhancement rgrp closed fixed Notification bar at top of site shown to new users pointing them to simple instructions "On http://getthedata.org/ or stackoverflow there is a pop-up bar for new users that give them some simple instructions. Talking with users it is clear that some people are not clear how ckan.net (or other sites) work and what they are and are not 'allowed to do. This could help make this better. == Implementation == * Pop-up bar (based on a cookie or just being not logged in?) - uses ticket:938 (message flashing) * FAQ/instructions page (use the new wiki?) == Depends == * ticket:938 == Estimate == * Cost: 1h" 1296399008000000 1323171158000000 947 enhancement rgrp closed duplicate Move the assignment of roles to a package on package creation to an extension "At the moment the assignment of user roles on package creation is done in setup_user_roles method in ckan/model/authz.py and is hard-coded. This can be a pain to override (you can use a Plugin listening for package create events) and makes some things such as putting system in restricted mode more complex than it should be (see ticket:833). An elegant solution would be to move this into an Extension this simplifies the code and make it easier for people override (just remove the default extension and plugin your own)." 1296557478000000 1314031310000000 948 enhancement dread ckan-future assigned Highlight (to a sysadmin) which packages are deleted "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." 1296646369000000 1338206280000000 951 defect adrian.pohl@… closed invalid Can't add a package to group "I can't add a package (e.g. http://ckan.net/package/ub-konstanz) to a group (e.g. http://ckan.net/group/bibliographic). It's neither possible when editing a package (the only group in drop down menu is ""history"") nor on the group page." 1296726886000000 1314031006000000 958 enhancement kindly ckan-v1.5 closed duplicate ui for new kind field Ui for related new field in resource (#957) 1296822896000000 1320664462000000 974 defect dread ckan-v1.3 closed fixed Document site_description Configuration option 'ckan.site_description' isn't documented 1297342254000000 1297342599000000 976 defect dread ckan-v1.3 closed fixed Documentation references knowledgeforge.net 1297346649000000 1297346954000000 977 defect dread ckan-v1.3 closed fixed db_upgrade errors " * db_upgrade (in ckan/model/__init__) makes call to validate_authorization_setup but forgets about rest of initialisation. * it uses self.metadata.bind.url when it should be self.metadata.bind it seems (confused by sqlmigrate update?)" 1297420558000000 1297420742000000 990 defect rene.kapusta closed fixed umlauts in title / text "It's not possible to use umlauts (like ""CKAN Österreich"") in the title / text." 1297801036000000 1311180850000000 991 defect dread ckan-v1.3 closed fixed Checkbox defaults to True "Form for new package has CheckboxExtraField checked, when the value is False. (as used in ckanext-dgu package v3 form)" 1298035175000000 1298037717000000 1020 defect kindly closed fixed harvesting doc revision table add revisioning to harvested document table 1299205012000000 1300196215000000 1029 defect kindly ckan-v1.4-sprint-3 closed fixed synchronous search erroring when harvesting is run. Errors are caused when harvesting documents. This also makes the count not show up correctly on the ckan search page. 1299768337000000 1301311643000000 1034 defect dread closed duplicate Flash message cached " 1. Login (shows ckan home page with flash message ""Welcome back xyz"") 2. Click away, to ""Add package"" say 3. Click back to ckan ""Home"". It shows ""Welcome back xyz"" again - it shouldn't, I assume? " 1299845308000000 1320174353000000 1043 defect kindly closed fixed stop sqlalchemy message saying at least one scoped seession already present see summary. 1300310326000000 1300321033000000 1049 defect dread closed invalid Fix database errors on offener.datenkatalog.at etc. "We're getting these sorts of exceptions from http://offener.datenkatalog.at/ like we had from ckan.net, which was due to small errors in migration scripts. Is it worth fixing this database, and in fact all the ckans on eu3 at once? {{{ WebApp Error: : (IntegrityError) duplicate key value violates unique constraint ""group_revision_pkey"" 'INSERT INTO group_revision (id, name, title, description, created, state, revision_id, continuity_id) VALUES (%(id)s, %(name)s, %(title)s, %(description)s, %(created)s, %(state)s, %(revision_id)s, ... }}} Thoughts James and Rufus?" 1300444912000000 1323169424000000 1057 defect dread closed fixed JSONP parameter isn't escaped "{{{ $ curl ""http://127.0.0.1:5000/api/rest/package/annakarenina?callback=