{22} Trac tickets (2647 matches)

Results (2401 - 2500 of 2647)

Id Type Owner Reporter Milestone Status Resolution Summary Description Posixtime Modifiedtime
#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
#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
#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
#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
#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
#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
#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
#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
#1155 enhancement pudo pudo pdeu-1 closed fixed Harvester for data.london.gov.uk

Write a harvester for data.london.gov.uk to import catalogue metadata into PDEU. API (or at least documentation) is available at: http://sourceforge.net/projects/londondatastore/files/

1306337318000000 1306773174000000
#1156 enhancement pudo pudo pdeu-1 closed fixed Scraping harvesters for Paris and Vienna Catalogues

Import metadata from both sources into PDEU via the Harvesting framework but by scraping their respective catalogue pages.

1306337428000000 1306855111000000
#1157 enhancement pudo pudo pdeu-1 closed fixed A simple theme for publicdata.eu, CKAN

Change the visual style of CKAN to be more like these sites:

This does not include major UX work.

1306337573000000 1309804029000000
#1158 enhancement pudo pudo pdeu-1 closed fixed Put PDEU into read-only mode and remove unneeded functions

PDEU should be in a mode where:

  • 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
#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
#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
#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
#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
#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
#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
#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
#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
#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/
  1. 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
#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
#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
#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
#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
#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 <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
#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
#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
#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
#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
#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
#21 enhancement somebody johnbywater v0.11 closed fixed Undelete a package 1152550936000000 1265891796000000
#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
#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
#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

1248943742000000 1265890334000000
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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):

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
#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
#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
#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
#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
#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
Note: See TracReports for help on using and creating reports.