id type owner reporter milestone status resolution summary description PosixTime ModifiedTime 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 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 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 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 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 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 13 enhancement somebody rgrp closed invalid Delete a release 1152550611000000 1218545330000000 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 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 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 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 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 26 enhancement somebody johnbywater closed duplicate A registered person creates their own tags for a package 1152551351000000 1152555283000000 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 28 enhancement somebody johnbywater closed wontfix Provide a dump of all packages listed on the system in XML 1152551416000000 1200902911000000 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 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 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 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/ (could also use the plural i.e. /tag/)" 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 34 defect somebody zool closed worksforme Page Not Found - returns with 200 rather than 404 as it should 1163008961000000 1253781550000000 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 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 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 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 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 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 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 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 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 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 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: * 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 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 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 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 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 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 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 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: {{{ }}} * 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 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 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 94 enhancement dread rgrp v0.10 closed fixed Use sqlalchemy-migrate to handle db/model upgrades "Details of how to go about this here Cost: 2h" 1249134185000000 1250604808000000 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 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 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 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/ - 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 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 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 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 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 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 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 124 enhancement rgrp rgrp v1.0 closed fixed Display Generic Package Attributes in WUI Split out from ticket:43 1253709702000000 1254735558000000 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 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 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 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/ 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 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 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 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/) * 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 143 enhancement thejimmyg dread ckan-backlog assigned Most active users listed on homepage Display league of users' recent activity on homepage. 1255010373000000 1312372381000000 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 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 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 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 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 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 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 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 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 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 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 168 enhancement rgrp dread closed duplicate Show admins for a group in group view 1256291481000000 1257414795000000 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 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 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 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 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 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 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 183 enhancement rgrp rgrp closed worksforme Browse packages by rating At moment order packages by title. 1257534606000000 1290604779000000 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 213 enhancement dread dread v0.11 closed fixed Automate CKAN deployment fabric script to automate ckan deployment 1260811707000000 1265891061000000 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 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 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