ticket,summary,component,version,milestone,type,owner,status,created,_changetime,_description,_reporter
2859,Fix the build,ckan,,ckan-v1.8,defect,icmurray,new,2012-08-16T09:26:57Z,2012-08-16T09:26:57Z,"The requires files have been removed. These were required by buildkit.
We've lost the information regarding which packages were already in ubuntu repos, which conflicted and which were missing. But perhaps we can just package everything up.",icmurray
2582,Do not hide notes / readme on dataset pages,ckan,,ckan-v1.9,enhancement,,new,2012-06-21T20:59:00Z,2012-06-25T11:50:09Z,"Current we hide most of readme and then let users reveal it. Stop doing this and if necessary add a quick link down to resources section. (Maybe also rename resources to Data and Resources ...?)
Aside: believe I have mentioned this somewhere a month + ago but could not find the ticket.",rgrp
2766,prevent draft datasets making it to activity stream,ckan,,demo phase 4,enhancement,seanh,assigned,2012-07-26T16:06:35Z,2012-08-09T20:13:13Z,"The new ckan creates datasets as part of a 3 phase process. To allow for this partially created datasets can have a state that is 'draft' or 'draft-complete'. These datasets should not be seen as active by the activity stream.
If we click 'add dataset' and then complete the first phase of adding a dataset then we end up having a activity stream created. When we add a resource in the next phase (add data) again an activity stream item xxx added resource to dataset is created
We do not want these adding. Essentially if a dataset has a state.startswith('draft') then we want the activity stream to ignore all actions involving it.
finally when the state is changed form state.startswith('draft') to state=='active' we want a xxx has created dataset ... to be added to the stream.
The best way to do this would be to branch from 2375-demo-theme-stable and get it to work there.
Let me know if you need any help with this ticket or a better explanation of the problem.",shevski
2686,enabling datastore & data API breaks recline,ckan,,ckan-backlog,defect,,assigned,2012-07-17T09:06:51Z,2012-09-03T09:08:20Z,"First I noticed that the gold prices dataset preview was not displaying & has data API enabled
Secondly I tried enabling datastore for http://datahub.io/dataset/adur_district_spending/resource/281dffa6-ea9b-4446-be41-05dced06591f and after I saved the preview no longer worked. Unticking the datastore & data api checkbox brought it back
Is this a known issue?",shevski
1198,Publisher hierarchy,ckan,,ckan-backlog,enhancement,,new,2011-06-23T09:16:32Z,2012-06-15T15:30:00Z,"'Publisher' entities in the model. They are hierarchical.
'User-Publisher' connections with one or more roles (e.g. drafter, moderator).
Authorization settings can control who can set what values in a 'published by' type field.
Publishers and User-Publishers available to read in the API.
Future tickets will provide:
* API to write Publishers and User-Publishers
* UI to edit Publishers and User-Publishers
(This feature deprecates authorization groups)",dread
1466,Need to support https login for multiple instances as part of the CKAN package install,ckan,,ckan-backlog,enhancement,,new,2011-11-15T16:52:58Z,2012-02-06T11:51:02Z,,thejimmyg
1832,dataset purge API,ckan,,ckan-backlog,enhancement,,assigned,2012-02-24T10:02:25Z,2012-06-15T15:21:46Z,"Purging datasets (deleting them fully, not just changing the state to 'deleted') is important for users testing dataset creation over the API on a test CKAN instance.
Without this, they need to resort to more difficult methods such as:
* cleaning and reloading the database
* setting the test datasets to state 'deleted' and also appending a suffix '_00' and incrementing the number until there is no clash of names.
Requested for NHSIC.
== Implementation ==
* This could slot into the Action API.
* Of course we would need to ensure the user's had been given the specific right to purge.
* I suggest we log the full details of the dataset being purged.",dread
2751,check translations for full demo site,ckan,,demo phase 5,enhancement,toby,new,2012-07-25T11:40:43Z,2012-08-06T08:50:46Z,need to check everything gets translated - sean did this before so will have info,toby
2949,Reenable Data API button on the new theme,ckan,,,defect,amercader,new,2012-10-01T16:04:24Z,2012-10-01T16:04:24Z,The checks to show or not the button need to be updated for the latest datastore version,amercader
1244,Notes field carriage-returns converted to CRLF,ckan,,,enhancement,,assigned,2011-07-26T14:10:56Z,2012-06-20T11:20:53Z,"When you edit a package in the web form, if the notes field had {{{\n}}} as the End Of Line symbol, it gets lost when you preview or save the package, and the notes field is displayed all on one line.
This can be seen when editing annakarenina (as created by 'paster create-test-data'). The diff shows for example:
{{{
- Some test notes
+ Some test notes
? +
}}}
but it would more clearly be shown as:
{{{
- Some test notes\n
+ Some test notes
? ++
}}}
This is a significant problem with DGU, since a lot comes in via the API.
It's not clear what we should do about it. We could standardise on \n or \r\n when the form submission comes in. Do different browsers on different platforms do different things with EOLs?
== Analysis ==
Displaying the package: the Markdown processor respects both EOLs when displaying the field, putting each line in a
tag.
Creating the package edit form: placed into .
Browser displaying package edit form: displays \n and \r\n as EOL. But \n\n gets compressed to one EOL. But on submission, both are returned as \r\n.
Receiving the edited package: Somewhere along the line the EOL gets converted to \n\n.
",dread
1322,Action API improvements,ckan,,,enhancement,,assigned,2011-09-08T09:39:09Z,2012-06-20T11:18:08Z,"Focusing on improving Action API as the v3 API:
* have an optional parameter of the data_dict called ""options"". Options would contain items that would get passed into the context. e.g. {{{{""options"" : {""ref_package_by"": ""id""}}. }}}
* instead of using API version to change the way packages are referenced, use the ref_package_by.
* All package_show, group_show etc. to accept an object 'name' as an alternative to object 'id'.
* Action API is v3 of api, replacement for v1 & v2. Default for most urls is still v1, but if url is /api/action then default to v3.
Next steps:
* Add search API (package, resource,
* Add Util API
* Clarify JSONP still applies
* Add doc strings, clarifying parameters",dread
1460,Improve extensions documentation,ckan,,,enhancement,,assigned,2011-11-12T16:15:23Z,2012-06-20T11:16:41Z,"Current extensions documentation needs some work: http://docs.ckan.org/en/latest/plugins.html
* Queue extension section may now be out of date (?)
* Think about how it integrates with https://github.com/okfn/ckanext-example (especially tutorial and example extension)
* Document all plugin points (auto-extract from CKAN source??)",rgrp
1689,List deleted datasets in API,ckan,,,enhancement,kindly,assigned,2012-01-20T12:23:34Z,2012-06-20T11:00:40Z,"The admin extension allows deleted datasets to be viewed, but there is no equivalent in the API. The package_list API call filters to just 'state=active' datasets.
'state' could be a parameter on the package_list call
* Easy to call and implement
* But getting permissions right for the different state values may not be easy - maybe a separate logic function is better?
",dread
2635,Non-destructive SOLR reindex,ckan,,,enhancement,,new,2012-07-09T10:23:14Z,2012-07-09T10:23:14Z,"You can't run the search-index reindex on a live server because it will give us bad results for 2 to 3 hours while it runs. Can there be an option that doesn't delete the entire index at the start?
Instead it could just delete any items that don't exist any more, then delete them and regenerate them one by one. So the total number of datasets doesn't change much.",dread
3019,Cannot delete dataset extras,ckan,,ckan 2.0,defect,,new,2012-11-14T18:44:38Z,2012-11-14T18:44:38Z,Deleting extras in the web interface is broken,seanh
3011,Recline fixes and updates for CKAN 2.0,ckan,,ckan 2.0,enhancement,johnglover,new,2012-11-07T11:40:55Z,2012-11-07T11:40:55Z,Fixes and updates to Recline / Datapreview for CKAN 2.0.,johnglover
3017,New stable branch for the demo server,ckan,,ckan 2.0,enhancement,johnglover,new,2012-11-13T15:04:48Z,2012-11-13T15:04:48Z,,johnglover
1134,CREP0003: Description and Configuration of Harvesters,ckan,,ckan-backlog,CREP,,new,2011-05-11T10:14:28Z,2012-06-15T15:35:54Z,"'''Proposer''': Adrià Mercader
== Abstract ==
The new harvester interface allows to create harvesters for different
sources, but right now harvesters don't have many ways to describe and
configure themselves. We need a way of allowing them to:
* Expose their type and other details so they can be used internally
and on the UI.
* Define configuration settings for particular harvester instances.
== The Problem ==
=== Harvester description ===
The current UI for adding and editing harvest sources is the same used
in ckanext-dgu, and thus the 3 harvester types used in DGU to harvest
various GEMINI realted sources are hardcoded in the form. The form will
be migrated to a DGU-independent one, so we need the harvesters to
provide all the necessary data. There is a current {{{get_type}}} method
that returns the harvester type, but for make it compatible with the DGU
forms, it returns a machine-readable string (e.g. ""CSW Server""), making
it error prone.
=== Arbitrary configuration ===
In the current implementation, when the harvest process is started,
ckanext-harvest looks for all the available plugins that implement the
{{{IHarvester}}} interface and calls the appropiate methods for the
current stage ({{{gather_stage}}},{{{fetch_stage}}},{{{import_stage}}}).
At these stages, harvesters have no way of applying arbitrary
configuration options, so all harvesters of the same type behave on the
same way.
For instance, the CKAN harvester needs a way to define the API version
to use when harvesting remote instances (Right now, the version 2 is
hardcoded on the code).
== Specification ==
=== Harvester description ===
Harvesters will need to provide the following information so the UI form
can be built:
* name: machine-readable name (e.g. ""waf""). This will be the value
stored in the database, and the one used by ckanext-harvest to
call the appropiate harvester.
* title: human-readable name (e.g. ""Web Accessible Folder (WAF)"").
This will appear in the form's select box.
* description: a description of what the harvester does (e.g. ""A Web
Accessible Folder (WAF) displaying a list of GEMINI 2.1
documents""). This will appear on the form as a guidance to the
user.
The way to provide it will be an {{{info}}} method that all harvesters
must implement, which will return a dictionary with the previous
elements:
{{{
{
'name': 'csw',
'title': 'CSW Server',
'description': 'A server that implements OGC's Catalog Service
for the Web (CSW) standard'
}
}}}
=== Arbitrary configuration ===
As different harvesters will have very different needs, we need to
provide a way to persist arbitrary configuration flags for each harvest
source. The more flexible way given the current architecture in my
opinion would be to store the configuration options as a JSON encoded
object as a property of the harvest source (There already is an unused
DB field called {{{config}}} in the database) (Maybe using JsonType?).
This will mean adding an extra field in the harvest source form to allow
entering the configuration. This could be just a simple text field where
users enter the JSON encoded object or a more clever mechanism (i.e an
""Add a configuration flag"" link that adds two new text fields for the
key and value for each flag, and a mechanism to later build the JSON
object). In any case, this should probably be hidden in an ""Advance
options"" section.
== Why do it this way ==
=== Harvester description ===
The {{{info}}} method would provide a single point to get all the
information related to the harvester, and future properties could be
added to the dictionary returned without having to modify the interface.
=== Arbitrary configuration ===
There is an already existing {{{config}}} field in the database, so we
won't need to change the model.
Harvesters could access the config object at any of the stages. Of
course they could provide default values in their implementations so
users don't need to enter them everytime.
== Implementation plan ==
=== Deliverables ===
=== Risks and mitigations ===
The highest risk on the harvesters {{{info}}} method side is that
harvester implementation don't offer one of the necessary properties
(namely name and title). This could fire a warning when showing the
UI form or using the CLI.
=== Participants ===
Adrià Mercader to do it.
=== Progress ===
None yet.",amercader
1447,disk space leakage,ckan,,ckan-backlog,defect,kindly,assigned,2011-11-07T11:54:03Z,2012-06-26T16:15:30Z,"Periodically we see some CKAN servers fall over because they run out of disk space. We need to find out if there is a common cause and fix it.
One problem in the past has been file handles running out when creating lots of tiny files in the data directory.
Another problem has been several enourmous backups being created every day - pdeu on eu25.",dread
1577,Can't upload file with foreign chars in filename,ckan,,ckan-backlog,defect,rgrp,new,2011-12-19T18:00:59Z,2012-01-02T03:06:04Z,"Looks like uploading a file with foreign characters fails due to encoding reasons.
{{{
URL: http://thedatahub.org/api/storage/auth/form/2011-12-19T124447/Ministerstvo-financ%C3%AD-%C4%8Cesk%C3%A9-republiky-_-P%C5%99%C3%ADprava-rozpo%C4%8Dtu.pdf
Module weberror.errormiddleware:162 in __call__
<< __traceback_supplement__ = Supplement, self, environ
sr_checker = ResponseStartChecker(start_response)
app_iter = self.application(environ, sr_checker)
return self.make_catching_iter(app_iter, environ, sr_checker)
except:
>> app_iter = self.application(environ, sr_checker)
Module beaker.middleware:73 in __call__
<< self.cache_manager)
environ[self.environ_key] = self.cache_manager
return self.app(environ, start_response)
>> return self.app(environ, start_response)
Module beaker.middleware:152 in __call__
<< headers.append(('Set-cookie', cookie))
return start_response(status, headers, exc_info)
return self.wrap_app(environ, session_start_response)
def _get_session(self):
>> return self.wrap_app(environ, session_start_response)
Module routes.middleware:130 in __call__
<< environ['SCRIPT_NAME'] = environ['SCRIPT_NAME'][:-1]
response = self.app(environ, start_response)
# Wrapped in try as in rare cases the attribute will be gone already
>> response = self.app(environ, start_response)
Module pylons.wsgiapp:125 in __call__
<<
controller = self.resolve(environ, start_response)
response = self.dispatch(controller, environ, start_response)
if 'paste.testing_variables' in environ and hasattr(response,
>> response = self.dispatch(controller, environ, start_response)
Module pylons.wsgiapp:324 in dispatch
<< if log_debug:
log.debug(""Calling controller class with WSGI interface"")
return controller(environ, start_response)
def load_test_env(self, environ):
>> return controller(environ, start_response)
Module ckan.lib.base:123 in __call__
<< # available in environ['pylons.routes_dict']
try:
return WSGIController.__call__(self, environ, start_response)
finally:
model.Session.remove()
>> return WSGIController.__call__(self, environ, start_response)
Module pylons.controllers.core:221 in __call__
<< return response(environ, self.start_response)
response = self._dispatch_call()
if not start_response_called:
self.start_response = start_response
>> response = self._dispatch_call()
Module pylons.controllers.core:172 in _dispatch_call
<< req.environ['pylons.action_method'] = func
response = self._inspect_call(func)
else:
if log_debug:
>> response = self._inspect_call(func)
Module pylons.controllers.core:107 in _inspect_call
<< func.__name__, args)
try:
result = self._perform_call(func, args)
except HTTPException, httpe:
if log_debug:
>> result = self._perform_call(func, args)
Module pylons.controllers.core:60 in _perform_call
<< """"""Hide the traceback for everything above this method""""""
__traceback_hide__ = 'before_and_this'
return func(**args)
def _inspect_call(self, func):
>> return func(**args)
Module ckanext.storage.controller:2 in auth_form
Module ckan.lib.jsonp:26 in jsonpify
<< Very much modelled after pylons.decorators.jsonify .
""""""
data = func(*args, **kwargs)
return to_jsonp(data)
>> data = func(*args, **kwargs)
Module ckanext.storage.controller:301 in auth_form
<< method = 'POST'
authorize(method, bucket, label, c.userobj, self.ofs)
data = self._get_form_data(label)
return data
>> authorize(method, bucket, label, c.userobj, self.ofs)
Module ckanext.storage.controller:79 in authorize
<< if method != 'GET':
# do not allow overwriting
if ofs.exists(bucket, key):
abort(409)
# now check user stuff
>> if ofs.exists(bucket, key):
Module ofs.remote.botostore:53 in exists
<< if bucket is None:
return False
return (label is None) or (label in bucket)
def claim_bucket(self, bucket):
>> return (label is None) or (label in bucket)
Module boto.s3.bucket:87 in __contains__
<< def __contains__(self, key_name):
return not (self.get_key(key_name) is None)
def startElement(self, name, attrs, connection):
>> return not (self.get_key(key_name) is None)
Module boto.s3.bucket:144 in get_key
<< response = self.connection.make_request('HEAD', self.name, key_name,
headers=headers,
query_args=query_args)
# Allow any success status (2xx) - for example this lets us
# support Range gets, which return status 206:
>> query_args=query_args)
Module boto.s3.connection:388 in make_request
<< if isinstance(key, Key):
key = key.name
path = self.calling_format.build_path_base(bucket, key)
boto.log.debug('path=%s' % path)
auth_path = self.calling_format.build_auth_path(bucket, key)
>> path = self.calling_format.build_path_base(bucket, key)
Module boto.s3.connection:88 in build_path_base
<< def build_path_base(self, bucket, key=''):
return '/%s' % urllib.quote(key)
class SubdomainCallingFormat(_CallingFormat):
>> return '/%s' % urllib.quote(key)
Module urllib:1222 in quote
<< safe_map[c] = (c in safe) and c or ('%%%02X' % i)
_safemaps[cachekey] = safe_map
res = map(safe_map.__getitem__, s)
return ''.join(res)
>> res = map(safe_map.__getitem__, s)
KeyError: u'\xed'
CGI Variables
AUTH_TYPE 'cookie'
CONTENT_TYPE '; charset=utf-8'
DOCUMENT_ROOT '/htdocs'
GATEWAY_INTERFACE 'CGI/1.1'
HTTP_ACCEPT '*/*'
HTTP_ACCEPT_CHARSET 'ISO-8859-1,utf-8;q=0.7,*;q=0.3'
HTTP_ACCEPT_ENCODING 'gzip,deflate,sdch'
HTTP_ACCEPT_LANGUAGE 'en-US,en;q=0.8'
HTTP_CACHE_CONTROL 'max-age=259200'
HTTP_CONNECTION 'keep-alive'
HTTP_COOKIE 'thedatahub_net=27a7f095fcca1ea6b36df996d595e3278b16f4538862bf7f88d49e2000b9246547c8fd0e; auth_tkt=""f9c6ab2b0d9fcd71c4c2408bc12fab544eef1c45elenaibp!userid_type:unicode""; auth_tkt=""f9c6ab2b0d9fcd71c4c2408bc12fab544eef1c45elenaibp!userid_type:unicode""; ckan_user=elenaibp; ckan_display_name=""Elena Mondo""; ckan_apikey=decd48b1-49ee-4250-bff4-98ccca9c02a5; hide_welcome_message=1; __utma=119670349.1809834699.1323782464.1324293066.1324298316.4; __utmb=119670349.3.10.1324298316; __utmc=119670349; __utmz=119670349.1323782464.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)'
HTTP_HOST 'thedatahub.org'
HTTP_REFERER 'http://thedatahub.org/dataset/edit/budget-library-czeck-republic'
HTTP_USER_AGENT 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.63 Safari/535.7'
HTTP_VIA '1.1 localhost (squid/3.0.STABLE19)'
HTTP_X_FORWARDED_FOR '87.114.74.190'
HTTP_X_REQUESTED_WITH 'XMLHttpRequest'
PATH '/usr/local/bin:/usr/bin:/bin'
PATH_INFO '/api/storage/auth/form/2011-12-19T124447/Ministerstvo-financ\xc3\xad-\xc4\x8cesk\xc3\xa9-republiky-_-P\xc5\x99\xc3\xadprava-rozpo\xc4\x8dtu.pdf'
PATH_TRANSLATED '/home/okfn/var/srvc/ckan.net/pyenv/bin/ckan.net.py/api/storage/auth/form/2011-12-19T124447/Ministerstvo-financ\xc3\xad-\xc4\x8cesk\xc3\xa9-republiky-_-P\xc5\x99\xc3\xadprava-rozpo\xc4\x8dtu.pdf'
REMOTE_ADDR '193.34.146.142'
REMOTE_PORT '55419'
REMOTE_USER u'elenaibp'
REMOTE_USER_DATA 'userid_type:unicode'
REMOTE_USER_TOKENS ['']
REQUEST_METHOD 'GET'
REQUEST_URI '/api/storage/auth/form/2011-12-19T124447/Ministerstvo-financ%C3%AD-%C4%8Cesk%C3%A9-republiky-_-P%C5%99%C3%ADprava-rozpo%C4%8Dtu.pdf'
SCRIPT_FILENAME '/home/okfn/var/srvc/ckan.net/pyenv/bin/ckan.net.py'
SCRIPT_URI 'http://thedatahub.org/api/storage/auth/form/2011-12-19T124447/Ministerstvo-financ\xc3\xad-\xc4\x8cesk\xc3\xa9-republiky-_-P\xc5\x99\xc3\xadprava-rozpo\xc4\x8dtu.pdf'
SCRIPT_URL '/api/storage/auth/form/2011-12-19T124447/Ministerstvo-financ\xc3\xad-\xc4\x8cesk\xc3\xa9-republiky-_-P\xc5\x99\xc3\xadprava-rozpo\xc4\x8dtu.pdf'
SERVER_ADDR '193.34.146.146'
SERVER_ADMIN '[no address given]'
SERVER_NAME 'thedatahub.org'
SERVER_PORT '80'
SERVER_PROTOCOL 'HTTP/1.0'
SERVER_SIGNATURE 'Apache/2.2.14 (Ubuntu) Server at thedatahub.org Port 80\n'
SERVER_SOFTWARE 'Apache/2.2.14 (Ubuntu)'
WSGI Variables
application
beaker.cache
beaker.get_session >
beaker.session {'_accessed_time': 1324298703.071357, '_creation_time': 1324293077.4139669}
mod_wsgi.application_group 'ckan.net|'
mod_wsgi.callable_object 'application'
mod_wsgi.listener_host ''
mod_wsgi.listener_port '80'
mod_wsgi.process_group 'ckan.net'
mod_wsgi.reload_mechanism '1'
mod_wsgi.script_reloading '1'
mod_wsgi.version (2, 8)
paste.cookies (, 'thedatahub_net=27a7f095fcca1ea6b36df996d595e3278b16f4538862bf7f88d49e2000b9246547c8fd0e; auth_tkt=""f9c6ab2b0d9fcd71c4c2408bc12fab544eef1c45elenaibp!userid_type:unicode""; auth_tkt=""f9c6ab2b0d9fcd71c4c2408bc12fab544eef1c45elenaibp!userid_type:unicode""; ckan_user=elenaibp; ckan_display_name=""Elena Mondo""; ckan_apikey=decd48b1-49ee-4250-bff4-98ccca9c02a5; hide_welcome_message=1; _ _utma=119670349.1809834699.1323782464.1324293066.1324298316.4; __utmb=119670349.3.10...)|utmcmd=(none)')
paste.registry
paste.throw_errors True
pylons.action_method >
pylons.controller
pylons.environ_config {'session': 'beaker.session', 'cache': 'beaker.cache'}
pylons.pylons
pylons.routes_dict {'action': u'auth_form', 'controller': u'ckanext.storage.controller:StorageAPIController', 'label': u'2011-12-19T124447/Ministerstvo-financ\xed-\u010cesk\xe9-republiky-_-P\u0159\xedprava-rozpo\u010dtu.pdf'}
repoze.who.identity
repoze.who.logger
repoze.who.plugins {'openid': , 'friendlyform': , 'ckan.lib.authenticator:UsernamePasswordAuthenticator': , 'auth_tkt': , 'ckan.lib.authenticator:OpenIDAuthenticator': }
routes.route
routes.url
webob._parsed_query_vars (GET([]), '')
webob.adhoc_attrs {'language': 'en-us'}
wsgi process 'Multiprocess'
wsgi.file_wrapper
wsgiorg.routing_args (, {'action': u'auth_form', 'controller': u'ckanext.storage.controller:StorageAPIController', 'label': u'2011-12-19T124447/Ministerstvo-financ\xed-\u010cesk\xe9-republiky-_-P\u0159\xedprava-rozpo\u010dtu.pdf'})
}}}",dread
1661,Wrong Routes version installed by CKAN package,ckan,,ckan-backlog,defect,,assigned,2012-01-16T12:47:41Z,2012-06-15T15:25:49Z,"Jaakko Louhio reported that the wrong Routes version got installed during CKAN's package install.
He is using Ubuntu 10.04 and he believes it install Routes 1.12.3 instead of what we use which is 1.11.",dread
1041,Start Using the CKAN Wiki for Tutorial-style documentation,ckan,,ckan-backlog,enhancement,thejimmyg,assigned,2011-03-16T14:11:55Z,2011-08-03T11:52:47Z,"For example, I will document the following:
* A specific guide on using mercurial when working with our branching and merging policy
* DONE - http://wiki.ckan.net/Becoming_a_CKAN_Developer
* Policy document on how we use tickets, plan sprints and make releases
* DONE - http://wiki.ckan.net/Becoming_a_CKAN_Developer
* How to package software as .deb file for project deployment
I'd love if someone else would write:
* An authorisation tutorial covering the core model, the command line tools and examples of every possible way of using the system
* A HOWTO guide with screenshots for adding a package
",thejimmyg
1163,Improvements to Storage Extension,ckan,,ckan-backlog,enhancement,rgrp,new,2011-05-26T11:19:38Z,2011-07-08T14:03:28Z,"Storage is now working but there are
* Integrate with Resources (e.g. create a resource for each file upload and give option to associate with a package)
* Should we introduce rule that files *not* associated with a Resource are periodically deleted?
* Allow setting of a file name/path before upload
* Allow for file overwriting/deleting etc (how should this work -- do we want to allow this sort of thing)
* Integrate local file upload stuff in api/auth/*
== Different Backend Issues ==
Local file store is rather different from 'remote' storage in various ways:
* For remote you don't want to use many buckets as there are bucket limits while for local you want to. Should we there have a single path that users provide which we then partition differently for different backends.
",rgrp
1168,Test system for deb packaging,ckan,,ckan-backlog,enhancement,thejimmyg,assigned,2011-05-26T20:33:14Z,2012-03-05T23:33:43Z,"Get buildbot to:
* build the deb packages
* install them into a fresh virtual machine
* run smoke tests on the installed ckan",dread
1257,Anti-Spam tools,ckan,,ckan-backlog,enhancement,,new,2011-08-02T11:12:45Z,2012-06-15T15:28:49Z,"We are getting more and more spam on ckan.net and we need to improve our strategy of combating it. It is bad because google ranks who we link to (which we do want for legitimate links), and our front page contains the latest package edits, so spam is immediately very visible.
Spam:
* Package creation
* Package edit
* User creation
* Group creation
Systems to consider:
* Automatic
* captcha
* bayesian scoring
* Sysadmin
* a tool to quickly analyse and remove packages, edits and users
* Helpful users
* button to click indicating spam, leading to any/all of:
* add TODO item (which emails package admin and sysadmins)
* quarantine the package/user so it doesn't show up on the front page and a warning is shown when you view it
General thoughts:
* We should learn from the wikipedia tools, as they are the experts
* This is a serious problem that is only going to get worse and is a threat to the whole site.",dread
1262,"Enforce ""create-user"" permission",ckan,,ckan-backlog,enhancement,,new,2011-08-03T12:41:36Z,2011-12-05T13:01:52Z,"This does not seem to have any implications at the moment, it should lock down registration and remove all related links. ",pudo
1286,Remove remaining formalchemy stuff,ckan,,ckan-backlog,enhancement,,new,2011-08-23T16:29:56Z,2012-07-16T11:00:20Z,"Stuff I've spotted:
* forms/*
* template/group/edit_form.html
* template/package/edit_form.html
This can go once new DGU form is in.",rgrp
1311,Modal user register and login form,ckan,,ckan-backlog,enhancement,rgrp,new,2011-09-06T08:20:27Z,2011-09-06T08:20:27Z,"Subticket of: #1294
Rather than having to visit a dedicated page it would be good if registration and login could be done from a modal form (separate or combined ...).
== Why ==
* It could be used from dataset creation page in situations where user needs to be registered / logged in to create a dataset (so we could allow someone to start creating a dataset and only get them to login at the end ...)
* It allows for quicker and easier logging in
== Implementation ==
* See Friedrich's work on the datahub",rgrp
1343,"[super] User related improvements (login, user pages etc)",ckan,,ckan-backlog,enhancement,rgrp,new,2011-09-14T16:18:18Z,2011-10-13T17:48:58Z," * Disallow account creation via openid - #1386
* Require email field - #1319
* Require email confirmation to be activated (?)
* Improvements to user page (e.g. show activity and more info about user) - #1396
* Modal user login - #1311",rgrp
1352,Use logic functions instead of as_dict when indexing entities,ckan,,ckan-backlog,enhancement,,new,2011-09-21T14:29:57Z,2012-06-15T15:28:06Z,"The current search implementation uses the output of the the as_dict method of the domain Package object to update the index
https://bitbucket.org/okfn/ckan/src/56c79e3fc44c/ckan/lib/search/index.py#cl-48
It also uses package_to_api1 in the SynchronousSearch plugin:
https://bitbucket.org/okfn/ckan/src/f9dfb0506594/ckan/lib/search/__init__.py#cl-93
This prevents extensions from being able to index custom properties (e.g. faceting by custom extras not included in the model).
The search should use the logic function to get the package properties:
{{{
get_action('package_show')(context,data_dict)
}}}
",amercader
1439,Action API discoverablility,ckan,,ckan-backlog,enhancement,,new,2011-11-01T15:39:30Z,2012-01-02T03:29:34Z,"A good service API needs to be discoverable, so you are not always having to refer to the documentation html.
Maybe /api/action should return a list of actions available? (Currently this returns a 404.)
* It would be nice to sort these into get/create/update/delete.
* #1438 Parameters for each of the actions must be discoverable too
/api/action/{action_name} should also return the help text / parameters allowable. (Currently this returns 400 error)",dread
1489,Updating example theme/extension,ckan,,ckan-backlog,enhancement,,assigned,2011-11-24T12:32:00Z,2011-12-19T10:59:44Z,"ckanext-example needs updating for CKAN 1.5:
* theme changes
* new forms
About: 'ckanext-exampletheme' was created in Spring 2011 as an example CKAN extension that showed how to customise the look & operation of CKAN. This moved to github and renamed 'ckanext-example'. ",dread
1534,Change revisions to record userid rather than username,ckan,,ckan-backlog,enhancement,,new,2011-12-07T17:26:30Z,2012-05-28T11:37:30Z,"The use of username is problematic because username's can change.
* Change all revision creation code to use user id (simplest is to change c.author field in lib/base.py (?))
* (?) Add a field ipaddr for ip address of anonymous users? (or just keep putting this in author field on Revision and then acception that those won't match when we do a look up against user table)
* Change user view page to look up against user id rather than name
* Perform migration on existing Revision objects
* Match should probably be against both openid and username when searching Revisions' author field (especially true on CKAN where some people have already changed their username from being their openid)",rgrp
1542,Buttons to purge spam datasets and groups,ckan,,ckan-backlog,enhancement,,new,2011-12-08T17:22:10Z,2012-06-15T15:26:40Z,"A sysadmin should be able to easily examine a suspect group or package, determine if it was created by a spammer (as opposed to being a legitimate object that has been graffitied by a spammer) and purge it.
The existing two-stage revision delete is currently unreliable and perhaps too laborious.
Olav and Richard have needs along this line.",dread
1584,QA report improvements - 2.5d,ckan,,ckan-backlog,enhancement,johnglover,new,2011-12-21T09:23:53Z,2012-06-06T11:26:15Z,"Super: #1594
* qa/{username}
* qa/{groupname}
* paginate QA results
* search / filter QA results
* ~~list organisation report by default, but can disable via config option~~ (done)
* UX tidy up of report pages - hide border if no sidebar, etc",johnglover
1588,QA - Give SPARQL endpoints a 4 star rating,ckan,,ckan-backlog,enhancement,johnglover,new,2011-12-21T15:13:25Z,2012-01-02T03:32:58Z,"Super: #1594
From Richard Cyganiak on the CKAN Discuss list:
Besides considering the media type of resources, it would also make sense to check for the presence of a SPARQL endpoint. SPARQL endpoints are recorded for more than 300 datasets on the Data Hub using the pseudo-type ""api/sparql"". A few more are recorded with the format ""SPARQL"". I suggest that datasets with such resources should also be considered for the fourth star.",johnglover
1589,QA - Give 5 star rating to datasets with link metadata,ckan,,ckan-backlog,enhancement,johnglover,new,2011-12-21T15:16:40Z,2012-01-02T03:31:35Z,"Super: #1594
From Richard Cyganiak on the CKAN Discuss list:
Regarding the fifth star (is the dataset linked to others?). This cannot be automatically determined just by looking at the format. It either requires inspection of the actual data, or information about links in the metadata. As you're probably aware, we've established conventions for recording information on data links in CKAN [1], as part of the work of the lodcloud group on the Data Hub. Link information is captured for hundreds of datasets. I would claim that we have the majority of four-star datasets covered there, and hence you can determine if they should get the fifth star by checking for the presence of a links:xxx field.",johnglover
1827,'Register' link should be hidden if you not allowed to register,ckan,,ckan-backlog,enhancement,,new,2012-02-22T15:35:39Z,2012-06-15T15:22:10Z,"{{{
I have just deny visitors the create-user permission:
sudo -u ckanstd paster --plugin=ckan roles deny reader create-user -c /etc/ckan/std/std.ini
sudo -u ckanstd paster --plugin=ckan roles deny anon_editor create-user -c /etc/ckan/std/std.ini
and after restarting, the register link is *not* hidden, but now when you access the register page, it shows you this message ""Unauthorized to create a user"" (when not logged in). But anyway that is an improvement.
}}}",dread
256,Package relationships - 3. Edit in WUI,ckan,,ckan-backlog,requirement,,assigned,2010-02-23T12:36:01Z,2012-06-15T15:38:34Z,"WUI:
* Editable as part of package or separately? (e.g. like authz)
* Do we normalize to only one type name of the pair?
* Do we allow create of relationship from both ends (e.g. only from dependency to dependent or either way?)
",dread
1366,Search inside extra fields,ckan,,ckan-future,defect,,assigned,2011-09-29T10:09:52Z,2012-05-28T12:05:07Z,"SOLR search doesn't support searching for part of an extra field, but it does for other fields.
i.e. title=""One Two Three"" matches q=one AND q=title:one
and geographic_coverage=""England Scotland"" matches q=England BUT NOT q=geographic_coverage:England
This problem emerged when we went to SOLR in #1275 (CKAN 1.5a). Tests were skipped.
This is could be a problem for DGU and maybe elsewhere.
",dread
989,Extending the model from plugins,ckan,,ckan-future,enhancement,kindly,new,2011-02-14T13:22:04Z,2012-06-18T15:45:11Z,"We need to support extending the model from plugins. This could involve:
* Adding a plugin hook to extend the mapper
* Adding an upgrade hook for plugin schema migrations
* Documenting how this is to be done
* Find a way to avoid conflicts ",pudo
1235,[super] Search Improvements,ckan,,ckan-future,enhancement,,new,2011-07-20T17:24:01Z,2011-07-20T17:24:01Z,"Child tickets:
* #234 UI Review - Autocomplete package names & tags in search
* #193 Searching by time-related field
* #191 Searching by modification date
* #905 Unable to search with accented characters in package names
* #906 Ability to search without accents for accented words
* #924 Search box has no search button
Broadly speaking though we need to choose PostgreSQL, Solr or something else. We don't want to invest our time maintaining two search backends with a limited abstraction layer between the two.",thejimmyg
1438,Action API - parameter discovery/checking,ckan,,ckan-future,enhancement,,new,2011-11-01T15:38:10Z,2012-05-28T11:37:30Z,"Many actions in the Action API require parameters. What params are needed should be listed and checked. Because currently, if you get them wrong you simply get a useless 500 error.
Currently they are listed in the docs, extracted from the code manually.
So you could GET /action/api/package_list to receive not only the help text, but a list of arguments.
And if you send an extra or missing argument then an intelligent error message can be returned.
= implementation =
How about some sort of decorator on the action function:
{{{
@logic_params(id, offset, limit)
def get_package_list(context, data_dict):
...
}}}
This would do the param checking, and is there a way to extract these params from the function? Or do a registration of the logic function?
I'd certainly like to keep the list of the list of params for the function with the function, for ease of reading the code.
Another good thing would be to pass in the params named as themselves, rather than having them contained in the data_dict.",dread
1818,Spatial metadata editor,ckan,,ckan-future,enhancement,amercader,new,2012-02-20T18:52:21Z,2012-05-28T11:06:35Z,"Estimate 2.5d
Right now users need to manually enter a geojson value in the 'spatial' extra field in order to define a geometry for a dataset.
We need a map widget on the edit form that allows users to draw the geometry on top of a map. This will be based on the draw functions offered by OpenLayers [1], [2].
Things to take into account:
* Integration with the form sections.
* Allow some degree of configuration (default extent, limit geometry types...)
[1] http://openlayers.org/dev/examples/draw-feature.html
[2] http://openlayers.org/dev/examples/modify-feature.html
",amercader
2331,Search should AND terms not OR terms,ckan,,ckan-sprint-2012-05-29,defect,kindly,reopened,2012-04-28T18:24:45Z,2012-12-25T22:25:44Z,"Appears current default search in CKAN ORs terms rather than ANDing them (i.e. adding more terms increasing number of items found rather than reducing it).
Not sure when this crept in or if it has been there for a long time.",rgrp
2412,More than one resource invalidatiing breaks dataset edit form,ckan,,ckan-sprint-2012-06-25,defect,zephod,assigned,2012-05-22T20:05:48Z,2012-05-28T11:07:14Z,"When attempting to add more than one resource at once, if more than one resource invalidates, this results in a js error, leaving the form in an inconsistent state.
Repro:
1. Go to /dataset/new
2. Add a new resource. Fill in one of the fields with an invalid value. eg - last_modified, or size...
3. Add another resource, doing the same thing: make one of the fields invalid.
4. Try to save the dataset.
5. The entered resource information will be lost, and a js error ""Uncaught Error: Can't add the same model to a set twice,: backbone.js:586"" will be thrown.",icmurray
2963,Timeout on tag pages with lots of datasets,ckan,,ckan-v1.8,defect,,new,2012-10-15T10:13:19Z,2012-10-15T10:13:19Z,"e.g. http://thedatahub.org/tag/lod
Tags with less datasets work fine (e.g. http://thedatahub.org/tag/railways)",amercader
2279,Write tutorial for our DataStore API / Data Explorer,ckan,,ckan-v1.8,enhancement,rgrp,new,2012-04-03T19:44:23Z,2012-05-28T11:43:46Z,"Unfortunately ES is a little bit complex / opaque to newcomers. Need to write a simple tutorial walking through this.
This is documentation / example only (no code!)",rgrp
2363,Documentation of best caching practice.,ckan,,ckan-v1.8,enhancement,toby,new,2012-05-01T16:16:57Z,2012-06-19T09:56:34Z,Need better documentation on best practices in making page loads faster for non logged in users.,kindly
2887,"""Welcome to CKAN!"" on front page is untranslatable",ckan,,ckan-v1.8.1,defect,,new,2012-08-22T09:17:59Z,2012-08-22T09:20:33Z,"ckan/templates/home/index.html contains:
Welcome to ${g.site_title}!
which means that just ""Welcome to"" ends up in the ckan.po files for
translation. This makes the phrase untranslatable in languages that have a different word ordering than English where the site title needs to be somewhere other than at the end of the sentence.",seanh
2405,Improvements to data viewer embed,ckan,,ckan-v1.9,defect,icmurray,assigned,2012-05-21T06:59:25Z,2012-06-25T14:53:01Z," * Decent powered by icon for the Embed for the DataHub? (make this text customizable and allow html ...)
* Current icon and text looks really bad
* Embed link uses uuid rather than dataset name (this goes to perma-url question ...)
* Data viewer embed url includes all the resource info (not needed -- just url and backend info ...)
* Embed extension urls do not respect original domain but instead use site_url (I'm guessing). E.g. datahub.io domain ends up with links to embed on thedatahub.org
",rgrp
2745,Password reset returns an exception if the key parameter is missing,ckan,,ckan-v1.9,defect,,new,2012-07-24T16:05:31Z,2012-07-24T16:05:31Z,"Instead of showing a notice, the password reset page throws an exception if the key parameter is missing:
{{{
Module ckan.controllers.user:329 in perform_reset
c.reset_key = request.params.get('key')
if not mailer.verify_reset_link(user_obj, c.reset_key):
h.flash_error(_('Invalid reset key. Please try again.'))
abort(403)
if not mailer.verify_reset_link(user_obj, c.reset_key):
Module ckan.lib.mailer:100 in verify_reset_link
if not user.reset_key or len(user.reset_key) < 5:
return False
return key.strip() == user.reset_key
return key.strip() == user.reset_key
AttributeError: 'NoneType' object has no attribute 'strip'
}}}
Apart from the obvious fix of checking for the 'key' parameter, it seems like is quite common to get these reset urls without the key parameter, so I suspect some email clients might strip the query params when building the links. We could avoid this problem by making the key part of the url instead of a param:
http://thedatahub.org/en/user/reset/3086e91c-fe09-4a98-92e1-19de67a9ac9d/b4c2d03fa8
instead of:
http://thedatahub.org/en/user/reset/3086e91c-fe09-4a98-92e1-19de67a9ac9d?key=b4c2d03fa8
",amercader
2430,Look into marking tickets as dependent on other tickets in trac,ckan,,ckan-v1.9,enhancement,seanh,accepted,2012-05-25T11:58:06Z,2012-07-02T13:05:46Z,,seanh
2431,Trac git integration,ckan,,ckan-v1.9,enhancement,seanh,accepted,2012-05-25T11:58:48Z,2012-07-02T13:06:02Z,,seanh
2733,Datastore logic functions,ckan,,ckan-v1.9,enhancement,johnglover,new,2012-07-23T15:54:46Z,2012-07-30T13:48:25Z,"== Where does the data go? ==
In a postgres database configured by the ckan.datastore_write_url config option which is a sqlalchemy url.
The user should have rights to create tables.
== Whats the api like? ==
We will just implement it as logic functions like the rest of CKAN and will part of core. After that we may add some nicer api functions that use these but that is a secondary concern.
== What are the initial logic functions? ==
* datastore_create
* datastore_delete
* datastore_show
== What is the JSON input format for datastore_create ==
To begin with it can have the following keys. It is fairly consistent with Max Ogdens' gut servers. Except adds resource_id.
{{{
{
resource_id: resource_id # the data is going to be stored against.
fields: a list of dictionaries of fields/columns and their extra metadata.
records: a list of dictionaries of the data eg [{""dob"": ""2005"", ""some_stuff"": ['a', b']}, ..]
}
}}}
* The first row will be used to guess types not in the fields and the guessed types will be added to the headers permanently. Consecutive rows have to conform to the field definitions.
* rows: can be empty so that you can just set the fields
* fields are optional but needed if you want to do type hinting or add extra information for certain columns or to explicitly define ordering.
eg: [{""id"": ""dob"", ""type"": ""timestamp"" }, {""id"": ""some_stuff"", ""type"": ""text""}, ...].
A header items values can not be changed after it has been defined nor can the ordering of them be changed. They can be extended though.
* Any error results in total failure!! For now pass back the actual error.
* Should be transactional
== What json does datastore_delete take? ==
{{{
{
resource_id: resource_id # the data is going to be deleted.
filters: dictionary of matching conditions to delete
e.g {'key1': 'a. 'key2': 'b'} this will be equivalent to ""delete from table where key1 = 'a' and key2 = 'b' "".
No filters (either not present or not defined) then delete the table. If we want truncate then add truncate: true to truncate the table.
}
}}}
== What json does datastore_search take? ==
{{{
{
resource_id: resource_id # the data is going to be selected.
filters : dictionary of matching conditions to select
e.g {'key1': 'a. 'key2': 'b'} this will be equivalent to ""select * from table where key1 = 'a' and key2 = 'b' ""
q: full text query
limit: limit the amount of rows to size default 100
offset: offset the amount of rows
fields: list of fields return in that order, defaults (empty or not present) to all fields in fields order.
sort: comma separated field names with ordering e.g ""fieldname1, fieldname2 desc""
}
}}}
Some free code: https://gist.github.com/3163864
== What json does datastore_search return? ==
{{{
{
fields: same type as datastore_create accepts (i.e. with metadata)
offset: The same offset that was supplied in datastore_show
limit: The original limit
filters: The filters that were applied in data_show
total: # total matching records without size or offset
records: [same as data_create] # list of matching results
}
}}}
On error will return:
{{{
{
__error__: … sql error …
}
}}}
== What types are allowed? ==
Aim to support as many postgres/postgis types that have string representations.
http://www.postgresql.org/docs/9.1/static/datatype.html
http://www.postgresql.org/docs/9.1/static/sql-createdomain.html
== IDs ==
Each row in a table will be given an _id column which has an id generated by us which you can use in queries.
== Other Features ==
Each row will store the _full_text index of all the data in the row. At some later point there will most likely be a way to index fields add constraints etc.",johnglover
2466,Fix spam handling on trac,ckan,,ckan-v1.9,task,seanh,accepted,2012-05-28T13:51:43Z,2012-07-02T13:08:59Z,,seanh
2818,Improve related item schema,ckan,,demo phase 4,defect,seanh,assigned,2012-08-09T09:22:56Z,2012-08-29T09:15:18Z,"Problem: When creating a related item (e.g. a Visualisation), if you don't put in a URL it succeeds, but on the related items and apps pages it renders it as a link to the same page.
Expected: Always require a URL and it should only submit
if one is added",danieljohnlewis
2790,logic.action.user_show is slow,ckan,,demo phase 4,enhancement,kindly,new,2012-08-01T20:21:23Z,2012-08-15T09:42:14Z,"This is a very slow call it would benefit from the sort of speed-ups that package-search received
for me locally this is taking 6 seconds for rufus using the datahub data I have. I think a lot of this is the dataset retrival/dictization
can we just grab json blobs from solr?
also is it possible to specify a sort order/paging?
I've put this as a demo-theme ticket as it is an big issue on the demo we are at 25 second page loads - which i can get down to about 8.8 secs so this is the main pain point now",toby
2357,Create build script for front-end resources,ckan,,demo phase 5,enhancement,aron.carroll,accepted,2012-05-01T15:29:41Z,2012-07-25T12:48:44Z,Should minify and concatenate JavaScript and CSS as part of #2354,aron.carroll
2641,Adapt spatial widgets to new theme,ckan,,demo phase 5,enhancement,johnmartin,assigned,2012-07-09T15:02:27Z,2012-11-11T18:34:14Z,"Dataset extent map and spatial filter need to adapted to the new theme, as they are not showing up now",amercader
1328,Unicode & paster commands,ckan,,,defect,,assigned,2011-09-12T10:25:10Z,2012-06-20T11:17:45Z,"A possible bug in CKAN when I tried deleting users using ""paster --plugin=ckan user delete"" command.
To reproduce the bug do the following:
1. Create a user with an ID (which in my case was a user's full name)
that contains non-unicode caracters like Norwegian ""æ"", ""ø"", or ""å"".
2. Make sure that you can see something like the example below:
(pyenv) rm@mycomputer:$ paster --plugin=ckan user
Users:
name=Rustæm
3. Then try deleting the user with following command:
(pyenv) rm@mycomputer:$ paster --plugin=ckan user delete ""Rustæm""
You should now get a python encoding error. I know that this is quite
rare case, but in our case it caused some trouble. Could you guys have
a look at this bug?
CKAN ver. 1.3.3.",minspamboks@…
1509,Mis-dated old revisions of datasets,ckan,,,defect,,assigned,2011-12-05T13:06:38Z,2012-06-20T11:13:34Z,"e.g. http://thedatahub.org/dataset/osm%402011-07-12T12%3A16%3A47.590358 gives:
{{{
This is the current revision of this dataset, as edited at 2011-07-12 12:16.
}}}
but it should say the date 2011-07-12 (which is the data being displayed).
The problem is looking at PackageRevision, when it might be a tag or extra.",dread
2719,Feeds controller does not catch NotAuthorized exception,ckan,,,defect,,new,2012-07-21T12:14:23Z,2012-07-21T12:14:23Z,Results in bad user experience and WebApp errors emailed out. Seen in 1.7.1,dread
2673,simplify set of options for resources,ckan,,,enhancement,,new,2012-07-14T21:15:59Z,2012-07-14T21:15:59Z,Far too many resource options. Lets restrict back to data file and API. Visualizations etc can either get linked in description or in the Related items.,rgrp
2947,Redirect to the resource page from /resource/{res-id},ckan,,,enhancement,,new,2012-10-01T13:15:25Z,2012-10-01T13:15:25Z,"Use story:
As a user of the datasore I want to be able to put the resource id without the dataset name in a url and see the resource page.
Proposed redirect:
/resource/{res-id} -> dataset/foo-bar/resource/{res-id}",dominik
3026,Support icons on nav_named_link,ckan,,,enhancement,amercader,new,2012-11-30T18:51:56Z,2012-11-30T18:51:56Z,nav_named_link won't include the nice icon even when passing the icon keyword param.,amercader
2959,Changing a Group's name through the action api disassociates it from its datasets in the index,ckan,,ckan 2.0,defect,icmurray,new,2012-10-04T15:18:55Z,2012-10-04T15:18:55Z,"Repro:
- Create a new Group, named ""test-group"".
- Add a dataset to it.
- Verify the dataset belongs to the group by visiting the Group's read-page
- Update the Group through the action api (group_update), using the uid in the ""id"" field, and a new name in the ""name"" field.
- Visit the group's read-page. The list of datasets will be empty.
This was an issue when editing a Group through the web interface, which was fixed in [1]. However it only fixes the issue in the group controller.
[1] https://github.com/okfn/ckan/commit/dbe25d8b8d7fabfc40c5d794a920b91cec349335",icmurray
1171,Citation instructions on dataset and resource view pages,ckan,,ckan 2.0,enhancement,mark.wainwright,assigned,2011-06-01T09:33:19Z,2012-09-11T10:18:25Z,"Some sort of citation helper. Something small on the dataset and resource page that would show how to cite.
wwaites: Some related thoughts on this from opb: http://homepages.inf.ed.ac.uk/opb/papers/ssdbm2006.pdf
timclicks: I'm looking at Dataverse for the first time[0]. It seems very popular in the social sciences. I noticed that there is a recommended citation for each dataset. For example, [1] is has this one: ""Targeted Input Programme (TIP) 2000-01"", http://hdl.handle.net/1902.1/SSC-MWI-TIP2000-01-M1 V1 [Version]""
== Implementation ==
Add a small box at bottom of dataset / resource page (or in sidebar on dataset page) with title ""Cite this"" with contents like:
%title. %author. Retrieved %date. %site_title.
For resource: %title = %dataset_title. %resource_name.
Could also add export to ref managers (e.g. to bibtex) but that is for later.",dread
2831,Create a limited subset of markdown that's supported,ckan,,ckan 2.0,enhancement,,new,2012-08-09T11:41:07Z,2012-08-09T11:41:07Z,"Allowing people to use the full range of markdown results in extremely messy output across the site. I'd suggest limiting support to only a subset of common use cases.
* Allow all inline elements, this allows bold, italic, code and links.
* Allow lists.
Disallow
* Horizontal Rules
* Headings
* Block quote and code (this may turn out to be useful and so could be included)
This way you get markdowns paragraph handling and a few inline styles without breaking the entire layout of the page.
Here's the full syntax if anyone is interested http://daringfireball.net/projects/markdown/syntax",aron.carroll
2951,Paster command for building css from less,ckan,,ckan 2.0,enhancement,,new,2012-10-01T19:12:20Z,2012-10-02T10:50:30Z,"With the latest template, css and js changes in 2.0, there are a number of things that need preparation prior to a production deployment. One of these is:
- the less files should be compiled to css (main.css, not just main.debug.css)
This ticket is to provide a paster command which will compile the .less into the main.css file. The idea of the paster command is that it will be run by developers, and they will check in the resulting .css files. It will also provide a convenient mechanism for production scenarios with node.js installed on the production server, as they will be able to compile the .less there as well.
## Background
The .css files that need to be served are built using `less`. The css files that are generated *are* checked-in to the repo; but they are a build artifact. So the general workflow is:
- commit changes to the less files
- build the main.css file and commit
This paster command slots into the above workflow for convenience.
## Notes
- doc/frontend-development.rst
- bin/less
to run this paster command, `Node` will be required. So that dependency should be checked.
## The paster command
This is the proposed behaviour of the paster command:
- ensure `custom.less` does not exist
- for each colour in{fuchsia,green,maroon,red}:
- generate a `custom.less` file for $colour. There's a paster command that does this already: `paster color .
- generate the `css` from the `less` files. ie - the equivelant of running `bin/less --production`.
- this will generate a `main.css` file, which should be renamed to `$color.css`.
- ensure `custom.less` does not exist
- generate the `css` from the `less` files. This will create a `main.css` with the default colour scheme.
- call the paster command that minifies css and js files. (This command does not exist yet, see #2950)",icmurray
2952,incorporate javascriopt translations into translations workflow,ckan,,ckan 2.0,enhancement,seanh,new,2012-10-01T19:15:45Z,2012-10-01T19:15:45Z,"There are now javascript translations. There's a paster command, `trans js`. This is a ticket to ensure that using `trans js` is documented in the normal ckan translation workflow (which is followed after a feature freeze, prior to release). And to see if there's any need for further incorporation into the current translation process.",icmurray
2996,Fix behaviour of View Profile button in user popover when already on user's profile,ckan,,ckan 2.0,enhancement,,new,2012-10-17T14:30:38Z,2012-10-17T14:30:38Z,"The user popovers that appear when you hover the mouse over a user in an activity stream include a View Profile button that takes you to that user's profile page. If you are already on that user's profile page then it simply reloads the same page, but it sends you to the Datasets tab if you were on another tab.
Possible solutions:
Don't show button if already on user's page?
Button just makes popover disappear, if already on user's page?
Button does reload the page, but reloads the same tab (datasets, followers, activity stream) that you were on.
Marking this low priority",seanh
1062,Data preview encoding error,ckan,,ckan-backlog,defect,johnglover,assigned,2011-03-29T10:55:43Z,2011-07-27T13:35:31Z,"The preview of ""Species Misc Turtle Download"" at http://ckan.net/package/taxonconcept results in the following error:
Unable to Preview - Had an error from dataproxy:
Data Transformation Error (Data transformation failed. Reason: 'utf8' codec can't decode byte 0x8b in position 1: unexpected code byte
",sebbacon
1288,Package edit/creation can't include 'relationships' field,ckan,,ckan-backlog,defect,,new,2011-08-24T16:34:55Z,2012-06-15T15:28:18Z,"When you create or edit a package (via the API), you aren't able to specify the relationships it has. (If you do you get 409 {{{ {""__junk"": [""The input field __junk was not expected.""]} }}})
The normal way to create relationships is via /api/rest/relationships/ and this works. But when you GET a package, the dictionary lists all relationship details. So this bug creates a problem for editing a package that has relationships - you want to GET it, make any edits and then PUT it back. The work-around is to delete the 'relationships' key from the dict before you PUT it back.
== Options ==
Ideally, CKAN would read the 'relationships' key and make the necessary changes. This is a chunk of work.
Another good option is to allow an unchanged 'relationships' value, but barf it is edited. This is also a chunk of work.
A bad option would be to just ignore the 'relationships' value, since users will get frustrated changing this value and wonder why it never saves, not understanding it is different to all the rest, without error message.
A final option is to get rid of relationships altogether.",dread
1336,License fudge,ckan,,ckan-backlog,defect,johnglover,new,2011-09-13T11:07:37Z,2011-12-06T12:04:33Z,"cset:4b59ab34137d ckan/logic/action/get.py:
{{{
- isopen = model.Package.get_license_register()[license_id].isopen()
- result_dict['isopen'] = isopen
+ try:
+ isopen = model.Package.get_license_register()[license_id].isopen()
+ result_dict['isopen'] = isopen
+ except KeyError:
+ # TODO: create a log message this error?
+ result_dict['isopen'] = False
}}}
This change hides problems with the license server and returns potentially incorrect values for openness.
This has been noted as 'temporary fix' but seems to be forgotten about, since it has been merged to default and gone into release 1.4.3.
I suggest the licenses are cached (I thought this was already the case when CKAN first requests them after start-up?). I suggest failure would return 503.",dread
2395,paster db clean/init don't work when spatial extension enabled,ckan,,ckan-backlog,defect,,new,2012-05-16T09:16:33Z,2012-06-15T14:41:53Z,"If you have a spatial enabled database then if you don't disable the spatial extension in the CKAN config temporarily then you get errors when you run paster db clean and paster db init.
Can't you just modify the clean and init functions to run without extensions enabled?
The wider problem is that extensions do their own inits every time you do load_environment, which seems crazy and inefficient to me, since this occurs every time a request comes into CKAN. But that is another problem/ticket.",dread
143,Most active users listed on homepage,ckan,,ckan-backlog,enhancement,thejimmyg,assigned,2009-10-08T13:59:33Z,2011-08-03T11:53:01Z,Display league of users' recent activity on homepage.,dread
924,Search box has no search button,ckan,,ckan-backlog,enhancement,,new,2011-01-24T11:12:13Z,2011-12-06T11:20:36Z,"The search box at the top-right of CKAN's page doesn't have a 'go' button. I feel that a larger percentage of users expect a 'go' or 'search' button on the right-hand side of the box to press to start searching. Techies tend to know the keyboard shortcut of pressing 'carriage-return' but it might be better to follow standard practise on this.
Examples with 'search' button: Internet Explorer, Firefox, Google, Amazon, trac
Examples without: ?",dread
1259,"""Add a row"" for Extras on Package form",ckan,,ckan-backlog,enhancement,johnglover,new,2011-08-02T16:31:33Z,2011-08-09T16:24:16Z,"The default package form offers 4 empty extras fields. Like the resource section, it should have an ""add more"" button to add another row. ",pudo
1314,ckanclient search - generator improvements,ckan,,ckan-backlog,enhancement,,assigned,2011-09-07T11:36:50Z,2012-06-20T11:20:33Z,"Apparently the search generator always makes two requests, even if you don't want to see the search results, which might be slow. Can this be optimised?
Maybe we should also provide a second search function that doesn't use the generator - the original simple search function (that leaves the user to deal with limit & offset).",dread
1326,Write a set of auth plugin functions to integrate with Druapl,ckan,,ckan-backlog,enhancement,,new,2011-09-12T09:51:24Z,2011-09-12T09:51:24Z,Ticket #787 described join auth between CKAN and Drupal. The authentication part is live and implemented. This ticket is a placeholder for work that will be needed in the new auth system to link authorization functions to Drupal. It is dependent on the groups refactor.,thejimmyg
1393,Don't skip search tests,ckan,,ckan-backlog,enhancement,johnglover,assigned,2011-10-13T11:30:53Z,2011-11-01T13:19:50Z,"Now we don't use postgres search, all the tests involving search now don't need to be skipped when running on sqlite. Should help coders spot earlier if these tests break. ",dread
1424,Openness notice should be clearer,ckan,,ckan-backlog,enhancement,,new,2011-10-26T16:54:49Z,2011-10-26T16:54:49Z,"ckan-discuss discussion suggests changes to the 'openness' indicator
( http://lists.okfn.org/pipermail/ckan-discuss/2011-October/001786.html )
Dataset view page:
* If there is an explicit but non-OKD compliant license, such as CC-BY-NC, then this should be stated explicitly, perhaps: “This dataset is Not Open. License: Creative Commons Attribution Noncommerical. This is not an open license as it does not meet the Open Knowledge Definition.”
* If the license is marked as “Other::License Not Specified”, then this should be stated explicitly, perhaps:
“This dataset is Not Open. It is published without an explicit license, the publisher reserves all rights to the dataset.”
* 3. If the license field was left empty by the contributor of the Data Hub record, then again this should be stated explicitly, perhaps: “This dataset is Not Open. The license of this dataset is unknown or unspecified. Start an enquiry on IsItOpenData »
* There is a bug so that non-open licenses doesn't have an openness notice.
* If downloadable resources are not available, this should not affect 'openness' - check this has been removed.",dread
2247,Resource preview glitch in some browsers,ckan,,ckan-backlog,enhancement,,new,2012-03-20T12:30:14Z,2012-03-20T12:30:14Z,"From Ira:
Preview for google spreadsheets are not displaying correctly for me in Firefox v.10.0.02, fine in Chrome.
http://i.imgur.com/KJaqz.png",zephod
2310,Refactor the search-query construction in feeds.py,ckan,,ckan-backlog,enhancement,icmurray,new,2012-04-16T16:01:31Z,2012-05-16T09:09:46Z,"The feeds controller, used to construct atom feeds, duplicates code found in the package controller's search action (in order to construct the custom feed).
Refactor this to remove duplication.",icmurray
2277,Use the new atom feeds in IATI,ckan,,ckan-backlog,refactor,icmurray,new,2012-04-02T17:10:28Z,2012-04-02T17:10:28Z,Atom feeds have been implemented in core in #1593. The IATI-specific implementation can now be removed when IATI move to CKAN >= 1.6.1,icmurray
1544,delete old git branches,ckan,,ckan-backlog,task,,new,2011-12-12T15:10:10Z,2011-12-12T15:10:10Z,"We have 150 odd branches ({{{git branch -a}}}) - most of them old - we should prune them. At very least, branches that have been merged in should be deleted. Look at old branches that haven't been merged in and wonder why.
May be of some use:
{{{
git branch --merged
git branch --no-merged
}}}",dread
763,Read-only mode - Setup,ckan,,ckan-future,enhancement,,assigned,2010-10-26T11:11:46Z,2012-05-28T11:56:44Z,"Admin configures entering read-only mode in one of two places:
* CKAN config file (e.g. ckan.ini)
* environment variable from Apache config
Once enabled, no writes can occur to the database (including user ratings and other usage stats).",dread
948,Highlight (to a sysadmin) which packages are deleted,ckan,,ckan-future,enhancement,,assigned,2011-02-02T11:32:49Z,2012-05-28T11:58:00Z,"When a customer logs in as a sysadmin then he/she see all packages, including deleted and pending ones. These are hidden to the average user, but the sysadmin has no idea of this until he clicks on the package and sees at the bottom 'state: deleted'.
It should be more obvious than that on the search view - an icon, message or crossed-out name to packages are deleted.",dread
1285,Errors cause emails,ckan,,ckan-future,enhancement,,assigned,2011-08-23T16:29:04Z,2012-05-28T11:55:51Z,"Currently a sysadmin gets an email when an exception is not caught. But there are occasions when we DO want to catch an exception so we can fail nicely for the user, but the sysadmin STILL gets an email to know to fix something.
e.g. if there is an exception when search indexes a package. You want to catch the exception and still run any other notify calls.
",dread
1581,Blog post about Google Analytics extension for CKAN,ckan,,ckan-future,enhancement,mark.wainwright@…,new,2011-12-20T17:40:00Z,2012-01-02T03:17:54Z,"The CKAN Google Analytics extension has been updated to work with the latest version of CKAN, could make for a nice blog post.
Can ping John Glover in January for any details required.
Key link is: http://thedatahub.org/analytics/dataset/top though this should probably move to be under stats (e.g. http://thedatahub.org/stats/usage)",johnglover
2301,Replace old-style string formatting with format() method (at least in strings marked for translation),ckan,,ckan-future,enhancement,seanh,new,2012-04-16T12:27:44Z,2012-06-25T14:50:12Z,"Some strings in CKAN are passed to gettext with more than one %s in them, this is no good as translators may need to change the order of substituted words.
Strings should not use the old style % substitution, they should use the new format method in Python 2.6+, e.g.:
'This {food} is {adjective}.'.format(food='spam', adjective='absolutely horrible')
http://docs.python.org/release/2.6.8/tutorial/inputoutput.html#fancier-output-formatting
We should probably only change strings that are marked for translation and that contain multiple %s, don't want to make too much work or cause too many strings to change and need to be re-translated.",seanh
2326,dataset permalinks,ckan,,ckan-future,enhancement,toby,new,2012-04-25T16:39:06Z,2012-05-28T13:46:39Z,"create permalinks
eg \dataset\~a5-DQ\nice-name
~XXXXX defines the permalink the nice-name is ignored
* packages table needs a new field for this data
* existing datasets need updating
* new datasets need the identifier creating
* routing needs updating
* needs to work for all urls like edit
Once this is implemented we can decide when we will use permalinks vs the normal urls.",toby
2348,Java client library for CKAN,ckan,,ckan-future,enhancement,,assigned,2012-05-01T13:46:20Z,2012-09-03T11:00:24Z,"Start a Java library for interacting with the CKAN Action API.
Currently requires support for Groups, Tags, Resources, and Search.
An example app would be very useful.",ross
2433,API uses name not id for some version 3 calls,ckan,,ckan-v1.8,defect,toby,new,2012-05-25T14:54:08Z,2012-06-19T09:57:00Z,see https://github.com/okfn/ckan/pull/5,toby
3002,API v1/2 'legacy' search parameters must be escaped before they are put into a Solr query string,ckan,,ckan-v1.8,defect,,new,2012-10-19T09:32:22Z,2012-10-19T09:32:22Z,"Just to track @tauberer patch on Github.
Would be nice to write a test for it. Probably going to 1.8.1",amercader
2294,Unauthorized action on Data API gets 302 rather than 401 or similar,ckan,,ckan-v1.9,defect,kindly,assigned,2012-04-14T19:35:04Z,2012-06-25T11:33:23Z,"Well known issue that 401 *in API* end up with 302 redirect to login page (which makes no sense and is very confusing for clients).
Fix this by ensuring that error messsages on API get passed through correctly.
Minor because affect is annoying but not terminal",rgrp
2203,Data Viewer support for PDF,ckan,,ckan-v1.9,enhancement,kindly,assigned,2012-03-04T11:24:53Z,2012-09-25T10:29:21Z," * Boot viewer for format/mimetype: application/pdf, application/x-pdf, application/acrobat, applications/vnd.pdf, text/pdf, text/x-pdf
* propose we use pdf.js - https://github.com/mozilla/pdf.js
* We could also try iframing for browsers with native support but this seems more complex",rgrp
2243,Fix ckanext-example,ckan,,ckan-v1.9,enhancement,seanh,reopened,2012-03-19T15:58:30Z,2012-06-25T14:49:28Z,,seanh
2298,Add sort-by controls to the search results page,ckan,,ckan-v1.9,enhancement,icmurray,new,2012-04-16T09:39:22Z,2012-06-25T14:52:27Z,"Sort-by functionality was exposed through the package controller in [1]. But no controls were added to the search-page.
* What should the sortBy controls/widget look like?
* Which fields should be exposed?
The above commit is in the release-1.6.1 branch, so this work is dependant upon release-1.6.1 from being merged into master.
[1] https://github.com/okfn/ckan/commit/8685c6000d1cb211928b4dbc63990fb72d884f8c",icmurray
2341,Fix Jenkins issue when testing branches that contain model changes,ckan,,ckan-v1.9,enhancement,seanh,accepted,2012-05-01T12:46:36Z,2012-06-25T15:51:12Z,,seanh
2342,Fix Jenkins issue when testing branches with different solr schema versions,ckan,,ckan-v1.9,enhancement,seanh,accepted,2012-05-01T12:47:25Z,2012-06-25T15:51:34Z,,seanh
2350,Hooks in package controller for validating form data,ckan,,ckan-v1.9,enhancement,icmurray,new,2012-05-01T14:16:01Z,2012-06-25T14:52:46Z,"When the validation schema was moved from the package controller into the logic layer, the schema's role was changed from that of processing a form and validating data; to just validating data. Whilst is makes sense to have a schema for validating data as it comes in and leaves the logic layer; there's no longer the hook available to PackageController subclasses to do form validation/processing.
Add a hook into _save_new() and save_edit() prior to the logic-layer call which subclasses can then override.
NB - form processing/validation *is* different to validating data. For example, many data can be inferred from a user's input; or there may be aspects of the form that need to be filled in, but do not make sense to pass as data into the logic-layer, eg. agreeing to T&Cs.
- [ ] Add hooks
- [ ] Use in ckanext-example",icmurray
2530,DataHub purge fails on some revisions,ckan,,ckan-v1.9,enhancement,kindly,new,2012-06-15T08:54:58Z,2012-07-02T22:31:20Z,"See http://datahub.io/ckan-admin/trash and try to purge revisions (*not* datasets). It will fail on some of the revisions with errors like:
Problem purging revision 391db9e8-df57-4e0e-8fe6-d4e0c2318344: (IntegrityError) update or delete on table ""revision"" violates foreign key constraint ""group_extra_revision_revision_id_fkey"" on table ""group_extra_revision"" DETAIL: Key (id)=(391db9e8-df57-4e0e-8fe6-d4e0c2318344) is still referenced from table ""group_extra_revision"". 'DELETE FROM revision WHERE revision.id = %(id)s' {'id': u'391db9e8-df57-4e0e-8fe6-d4e0c2318344'}",rgrp
2679,Change default behaviour of TemplateController.view to 404.,ckan,,ckan-v1.9,enhancement,icmurray,new,2012-07-16T10:55:33Z,2012-07-16T10:55:33Z,"The current behaviour of TemplateController.view() (which is the fallback controller should all others fail) is to attempt to render (as a genshi template) the requested file.
Although this may be a feature that some instances want. In general, it leads to:
- 500s when attempting to access a normal template (eg - http://datahub.io/importer/preview)
- A way of inadvertantly serving things you may not want to serve. (Small risk, as it needs to be renderable as a genshi template).
Solution:
- Change the controller to 404
- Ensure there's a way for existing ckan instances to override that behaviour should they need it.",icmurray
2603,Remove deprecated 'fields' parameter from resource_search,ckan,,ckan-v1.9,refactor,icmurray,new,2012-06-26T17:10:01Z,2012-06-26T17:10:01Z,"The fields parameter of resource_search was deprecated when fixing #2438. It can be removed in release 1.9, and the action tidied up as a result.",icmurray
2621,Remove the deprecated 'fields' parameter from tag_search and tag_autocomplete,ckan,,ckan-v1.9,refactor,icmurray,new,2012-06-28T16:22:49Z,2012-06-28T16:22:49Z,"This was deprecated in 1.8 as it wasn't accessible via GET requests due to being a dict. See #2439
In a future release of CKAN (probably 1.9) it can be removed.
Internal uses of it were removed in #2439, but there are tests that still use it.",icmurray
2336,Move Jenkins' install script into ckan core so it can be versioned,ckan,,ckanbuild,enhancement,seanh,accepted,2012-04-30T13:35:14Z,2012-06-25T15:53:57Z,,seanh
2446,Create demo dataset history/comparison page,ckan,,demo phase 4,enhancement,johnmartin,assigned,2012-05-28T13:12:18Z,2012-11-11T18:33:39Z,"This is a low priority for the demo site.
Discussion:
https://okfn.basecamphq.com/projects/9558659-demo-ckan-front-end/posts/62414120/comments
Implementation:
http://s031.okserver.org:2375/dataset/history/adur_district_spending",aron.carroll
2457,Create demo tags list page,ckan,,demo phase 4,enhancement,johnmartin,assigned,2012-05-28T13:28:55Z,2012-11-11T18:34:38Z,"This includes the tag page as well for now.
Discussion:
https://okfn.basecamphq.com/projects/9558659-demo-ckan-front-end/posts/62998445/comments
Implementation:
http://s031.okserver.org:2375/en/tag",aron.carroll
2461,Create demo revisions page,ckan,,demo phase 4,enhancement,toby,assigned,2012-05-28T13:34:15Z,2012-08-09T20:23:58Z,"I believe this is to be merged in with site activity.
Discussion:
https://okfn.basecamphq.com/projects/9558659-demo-ckan-front-end/posts
Implementation:
http://s031.okserver.org:2375/en/revision",aron.carroll
2698,markdown preview,ckan,,demo phase 4,enhancement,toby,assigned,2012-07-18T14:01:25Z,2012-08-09T20:14:12Z,for description / other fields with markdown support,shevski
2775,Add bin/less to paster serve command,ckan,,demo phase 4,enhancement,toby,new,2012-07-30T22:01:26Z,2012-08-09T20:26:02Z,"Ideally the ./bin/less command would be run when the server is started.
* Also it would be good to have a paster command to build the production CSS with {{{ ./bin/less --production }}
* The command could also detect missing node binaries and redirect to the documentation.",aron.carroll
2822,Resource additional info titles format/i18n,ckan,,demo phase 4,enhancement,toby,new,2012-08-09T09:30:20Z,2012-08-09T20:26:25Z,"the title for additional info should be translated
capitalised etc",toby
2834,Defer all publish calls until all modules have been initialised,ckan,,demo phase 4,enhancement,,new,2012-08-09T17:08:13Z,2012-08-13T11:18:12Z,"Currently if a module uses sandbox.publish() in its initilaize() function then any modules initialised afterwards will miss the event.
We should queue all calls to .publish() in the pubsub module in an array until all modules have loaded then iterate over and execute them.",aron.carroll
2850,Add JSON support for IE7,ckan,,demo phase 4,enhancement,,new,2012-08-14T10:38:12Z,2012-08-14T10:38:12Z,"The JavaScript just isn't going to work without it. Look into either the newer JSON3:
http://bestiejs.github.com/json3/
or the old faithful:
https://github.com/douglascrockford/JSON-js/",aron.carroll
2674,Data preview not loading on s031,ckan,,demo phase 5,defect,kindly,assigned,2012-07-16T10:38:22Z,2012-08-07T14:22:04Z,"Not loading for all resources as far as I can tell; e.g. http://s031.okserver.org:2375/dataset/afghanistan-election-data/resource/f6331f99-51f6-44d9-95b9-b20f3b74f360
Fine on demo.ckan.org",shevski
2906,Wrong flags in language dropdown,ckan,,demo phase 5,defect,,new,2012-09-05T16:05:44Z,2012-09-05T16:34:49Z,"The flags in the dropdown on details pages are not right.
You can see the error on http://s031.okserver.org:2375/dataset/malawi-aid-projects/resource/b717c20e-2006-4ad4-82d2-59b57ebc1ab0.",dominik
2416,Normalise resource/data types,ckan,,demo phase 5,enhancement,toby,accepted,2012-05-23T17:09:06Z,2012-07-18T13:23:22Z,"Currently we have far too many types that are essentially the same format. The new demo theme is using icons for common types. So we need to normalise the common formats into pretty strings. e.g. application/json, JSON, .json and json all should be output as “json”
See the following Basecamp thread for UI examples and discussion.
https://okfn.basecamphq.com/projects/9558659-demo-ckan-front-end/posts/61906351/comments#comment_179681056",aron.carroll
2451,Create demo user list page,ckan,,demo phase 5,enhancement,johnmartin,assigned,2012-05-28T13:20:13Z,2012-11-11T18:35:02Z,"Discussion:
https://okfn.basecamphq.com/projects/9558659-demo-ckan-front-end/posts/62268474/comments
Implementation:
http://s031.okserver.org:2375/user",aron.carroll
2493,Demo site 404 needs some love,ckan,,demo phase 5,enhancement,aron.carroll,accepted,2012-06-06T12:34:41Z,2012-07-24T13:16:55Z,"templates/error_document_template.html
I've converted the 404 page to the new style but we probably want to serve this as a 'full page' ie content is 100% page width not sidebar and primary content
just go to a non-existant url to see
Discusion:
https://okfn.basecamphq.com/projects/9558659-demo-ckan-front-end/posts/63374042/
Implementation:
http://s031.okserver.org:2375/404",toby
2555,Demo site needs a breadcrumb helper,ckan,,demo phase 5,enhancement,toby,new,2012-06-18T13:43:03Z,2012-07-18T13:33:04Z,Something to make building breadcrumbs a bit nicer,aron.carroll
2644,user dashboard for demo theme,ckan,,demo phase 5,enhancement,shevski,assigned,2012-07-10T09:00:21Z,2012-08-06T12:23:56Z,"we now have a user dashboard that needs theming not sure if we need sam to look at it
http://localhost:5000/user/dashboard",toby
2785,Allow resources to be re-ordered,ckan,,demo phase 5,enhancement,johnmartin,assigned,2012-08-01T10:22:03Z,2012-08-29T10:25:16Z,"Not sure where this functionality should be added, possibly in one of the sidebar widgets when editing a resource?
Ira, what are your thoughts?",aron.carroll
2823,resource additional info title order,ckan,,demo phase 5,enhancement,toby,new,2012-08-09T09:32:53Z,2012-08-09T09:32:53Z,"Order the items so that none user fields are first from ticket #2707
",toby
2833,Load module templates before calling .initialize(),ckan,,demo phase 5,enhancement,,new,2012-08-09T17:05:39Z,2012-08-09T17:05:39Z,"I think this would be a nice feature for remote loading templates if the options.template value ends in "".html"".
{{{
ckan.module('my-module', {
options: {
template: 'my-template.html'
},
initialize: function () {
this.template // This is the loaded template.
}
});
}}}",aron.carroll
2835,Client module needs a template loading method,ckan,,demo phase 5,enhancement,,new,2012-08-09T17:10:33Z,2012-08-09T17:10:33Z,"{{{
Client#getTemplate(name, params, success, error);
}}}
Where params, success and error are optional arguments. test/index.html already has an implementation called loadFixture().",aron.carroll
2901,Language Dropdown bug in footer with IE7,ckan,,demo phase 5,enhancement,,new,2012-09-04T10:31:14Z,2012-09-04T10:31:14Z,"The language dropdown in Internet Explorer 7 behaves oddly. Essentially I think the problem is with the way that the dropdown decides to go into ""drop-up mode"" (e.g there aint enough screen space below the initial state so it has to drop up).",johnmartin
2656,"Feed with few results has bad paging link, causing exception",ckan,,,defect,seanh,new,2012-07-11T10:05:12Z,2012-07-11T10:05:12Z,"This page http://thedatahub.org/feeds/custom.atom?q=wombat has 0 results and contains a link to http://thedatahub.org/feeds/custom.atom?q=wombat&page=0 which the page=0 causes this exception:
{{{
ckan.lib.search.common.SearchError'>: SOLR returned an error running query
Error: ""'start' parameter cannot be negative""
}}}",dread
1261,Investigate dots in extras search,ckan,,ckan-backlog,defect,,new,2011-08-03T10:19:28Z,2011-08-03T10:19:28Z,"It seems that searching for extras_foo:value works with solr, but extras_foo.bar:value doesn't. No theory on why. ",pudo
1317,password reset - improve user search,ckan,,ckan-backlog,defect,,assigned,2011-09-07T17:12:19Z,2012-06-20T11:20:21Z,"In password reset, it gets confused if you have two similar users. This is because with the string the user provides, it searches several fields, not just name but also fullname and email address, allowing you to search for these. But only name is unique.
Specific problem:
Ira searches for ""Irina"" then it finds both:
{{{}}}
(I think)
Maybe need to choose which field it searches?",dread
1260,Remove duplicate functions from _util.html,ckan,,ckan-backlog,enhancement,,new,2011-08-03T10:17:32Z,2011-08-15T09:44:59Z,"There seems to be both a list view for dictized and non dictized data structures for all entities in _util.html at the moment. Probably in the back of someone's mind already, but cleanup here would be nice. ",pudo
1647,add links to ckan discuss & dev to thedatahub,ckan,,ckan-backlog,enhancement,,new,2012-01-16T00:30:52Z,2012-01-16T09:49:43Z,In the footer as well as more clearly & directly on the About page,shevski
1823,Spring clean bin directory,ckan,,ckan-backlog,enhancement,,new,2012-02-20T21:28:51Z,2012-05-28T11:12:34Z,Huge number of accumulated (and likely unnecessary) scripts in /bin directory.,rgrp
2622,Login fails in Opera 12,ckan,,,defect,,new,2012-06-28T16:56:42Z,2012-06-28T16:56:42Z,"Try to login to CKAN using Opera 12, get ""Login failed. Bad username or password. (Or if using OpenID, it hasn't been associated with a user account.)""",seanh
2784,model dictize sensitive data,ckan,,,defect,icmurray,new,2012-08-01T09:51:25Z,2012-08-01T09:51:25Z,The model dictize layer doesn't consistently remove sensitive data from the dictized models. It should use the current context to decide whether to include sensitive data or not.,icmurray
3013,common-error-messages is unreadable,ckan,,,defect,dominik,new,2012-11-10T13:18:25Z,2012-11-10T13:18:25Z,"Since the update of the doc theme, the page became unreadable.
http://docs.ckan.org/en/latest/common-error-messages.html",dominik
3029,JSONP parameter scuppers Search in API,ckan,,,defect,seanh,assigned,2012-12-11T15:00:35Z,2012-12-11T16:37:04Z,"{{{http://datahub.io/api/2/search/package?jsonp=jsonpcallback&q=canada}}} returns
{{{
{""count"": 0, ""results"": []}
}}}
I believe this worked in CKAN 1.4 or 1.5, but it is broken on 1.7.1, 1.8 and whatever demo.ckan.org is running. I suspect the jsonpcallback parameter is getting sent to SOLR.
This bug prevents using javascript on another site to search CKAN (although hopefully the action API would work).",dread
285,Paginate list of packages on tag read page,ckan,,,enhancement,,assigned,2010-04-07T18:23:26Z,2012-06-25T13:45:23Z,"Is this worth doing? On hmg.ckan.net start to have a lot of packages with a given tag ...
",rgrp
301,Package discussion pages,ckan,,,enhancement,,assigned,2010-04-26T16:57:13Z,2012-06-25T13:47:35Z,"A package discussion page is like a wikipedia discussion page: an editable free text page for people to have discussion/post comments about a given package.
It provides a way for people to make suggestions about a package without needing access to main package.",rgrp
1069,Stub datasets (request for datasets),ckan,,,enhancement,tobes,assigned,2011-04-01T14:08:39Z,2012-06-25T13:50:15Z,"Idea is to have stubs for datasets that someone wants but don't yet exist (or haven't been discovered) in the way one has stub pages on a wiki.
We could do this within the existing model by a slight 'abuse' - create a dataset and mark it with a special tag e.g. todo.does-not-yet-exist or similar ...
(Just as we have datasets listed that exist but aren't available ...)
Alternative would be to have a request for datasets subsystem.
I prefer the stub dataset model because it's simpler, provides a simple workflow (as a dataset is found or comes into existence), and the package page provides a natural space in which to accumulate information about what is wanted and what exists.
== Implementation ==
* Agree a new dedicated tag. e.g. todo.does-not-exist
== Related ==
* This ticket has clear links to http://getthedata.org/",rgrp
1130,First time users,ckan,,,enhancement,,assigned,2011-05-09T10:59:21Z,2012-06-25T14:11:54Z,Send users to FAQ first time on CKAN,lucychambers
2535,SSL certificate for DataHub + https by default,ckan,,,enhancement,,assigned,2012-06-15T11:00:27Z,2012-09-03T08:48:02Z,"DataHub is increasingly used and we should ensure it uses ssl as part of general security.
See also #1446 (Need to support https login for multiple instances as part of the CKAN package install)",rgrp
2683,Add no-cache header to _tracking API call's response to make sure it doesn't get cached,ckan,,,enhancement,,new,2012-07-16T13:49:37Z,2012-07-16T13:49:37Z,,seanh
2688,Allow ordering of groups in WUI,ckan,,,enhancement,,new,2012-07-17T10:27:55Z,2012-07-17T10:27:55Z,"Currently the group_index page just shows the entire list of groups, forcing the ordering to be by name. It would be better if it could be sortable by name (or reversed) or by package_count (or reversed)",ross
2709,Atom feeds are undocumented,ckan,,,enhancement,icmurray,new,2012-07-18T15:11:50Z,2012-07-18T15:43:32Z,There doesn't seem to be any documentation yet for Atom feeds.,markw
2731,Some sites permanently 'down for maintenance',ckan,,,enhancement,,new,2012-07-23T12:06:08Z,2012-07-23T13:53:28Z,"A large number of XXX.ckan.net sites give the following message:
""This Site is Down for Maintenance
We apologize for the inconvenience.
~ The Open Knowledge Foundation sysadmins.""
The message is unhelpful and patently false - the sites do not exist. Some of them were supposed to have been redirected to a relevant group at thedatahub.org in this ticket (now closed):
http://trac.okfn.org/ticket/933
However, the redirection only seems to have worked in one case, http://si.ckan.net.
The problem still affects the following sites - the first 4 of which have supposedly been merged:
* http://lt.ckan.net
* http://hu.ckan.net
* http://be.ckan.net
* http://gr.ckan.net
* http://nz.ckan.net
* http://bg.ckan.net
* http://fi.ckan.net
* http://katalogdanych.centrumcyfrowe.pl
* http://pl.ckan.net
* http://southampton.ckan.net
* http://sl.ckan.net
Please sort this out by redirecting, removing the sites, giving a more helpful (and accurate) failure message, etc, as appropriate.",markw
2777,bug: user attributes,ckan,,,enhancement,,new,2012-07-31T09:19:23Z,2012-07-31T09:19:23Z,,icmurray
2796,Need a datahub one-pager,ckan,,,enhancement,mark.wainwright,new,2012-08-02T16:28:36Z,2012-08-16T15:04:55Z,"A one-pager explaining what the datahub is and with howto/examples for new users. This would make it much easier to explain the value in using the datahub for storing data.
",ross
2814,Demo: upload file behaves oddly,ckan,,,enhancement,shevski,assigned,2012-08-08T10:06:00Z,2012-09-03T11:06:21Z,"3. Uploading a file behaves counter-intuitively (I would suggest wrongly).
When adding a new resource by uploading a file, I select a file called
say create-group.png. I expect the following to happen:
* the pathname of that file is filled in the box;
* nothing is actually uploaded till I hit 'add' (confirming that I've got the right file etc).
Instead of this,
* the file is immediately and, seemingly, irrevocably uploaded;
* the box is filled with a mysterious URL (https://commondatastorage.googleapis.com/ckan-demo ...)
* the mysterious URL is so long I can't even see the final element, which is my file name.
",markw
2844,SQL-only (no solr) version of CKAN,ckan,,,enhancement,,new,2012-08-13T11:59:28Z,2012-08-20T09:22:07Z," * ~~Search needs to run of local DB (again)~~
* paster db clean attemps to connect to SOLR (still works as does db first but then excepts which is not nice UX)",rgrp
2851,Preview of PDF tries to connect to datastore,ckan,,,enhancement,,new,2012-08-15T12:12:46Z,2012-08-15T12:12:46Z,"e.g. http://datahub.io/dataset/ccc-gistemp/resource/80ebdbd6-d91b-4fef-9db4-d3dfbd7e868e
CKAN attempts to render the PDF as a datastore tabular date even though the mimetype of the PDF is correctly specified.",ross
2870,1.8 tag_list not defined,ckan,,,enhancement,seanh,new,2012-08-16T10:58:52Z,2012-08-16T10:58:52Z,"From:
Date: Thu, Aug 16, 2012 at 3:20 AM
Subject: WebApp Error: : ""tag_list"" not defined
To: ckan-sysadmin@okfn.org, kindly@gmail.com
URL: http://ckan.net/dataset/uk-postboxes
Module weberror.errormiddleware:162 in __call__
<< __traceback_supplement__ = Supplement, self, environ
sr_checker = ResponseStartChecker(start_response)
app_iter = self.application(environ, sr_checker)
return self.make_catching_iter(app_iter, environ, sr_checker)
except:
>> app_iter = self.application(environ, sr_checker)
Module beaker.middleware:73 in __call__
<< self.cache_manager)
environ[self.environ_key] = self.cache_manager
return self.app(environ, start_response)
>> return self.app(environ, start_response)
Module beaker.middleware:155 in __call__
<< headers.append(('Set-cookie', cookie))
return start_response(status, headers, exc_info)
return self.wrap_app(environ, session_start_response)
def _get_session(self):
>> return self.wrap_app(environ, session_start_response)
Module routes.middleware:131 in __call__
<< r'\1', oldpath)
response = self.app(environ, start_response)
# Wrapped in try as in rare cases the attribute will be gone already
>> response = self.app(environ, start_response)
Module pylons.wsgiapp:125 in __call__
<<
controller = self.resolve(environ, start_response)
response = self.dispatch(controller, environ, start_response)
if 'paste.testing_variables' in environ and hasattr(response,
>> response = self.dispatch(controller, environ, start_response)
Module pylons.wsgiapp:324 in dispatch
<< if log_debug:
log.debug(""Calling controller class with WSGI interface"")
return controller(environ, start_response)
def load_test_env(self, environ):
>> return controller(environ, start_response)
Module ckan.lib.base:239 in __call__
<< try:
res = WSGIController.__call__(self, environ, start_response)
finally:
model.Session.remove()
>> res = WSGIController.__call__(self, environ, start_response)
Module pylons.controllers.core:221 in __call__
<< return response(environ, self.start_response)
response = self._dispatch_call()
if not start_response_called:
self.start_response = start_response
>> response = self._dispatch_call()
Module pylons.controllers.core:172 in _dispatch_call
<< req.environ['pylons.action_method'] = func
response = self._inspect_call(func)
else:
if log_debug:
>> response = self._inspect_call(func)
Module pylons.controllers.core:107 in _inspect_call
<< func.__name__, args)
try:
result = self._perform_call(func, args)
except HTTPException, httpe:
if log_debug:
>> result = self._perform_call(func, args)
Module pylons.controllers.core:60 in _perform_call
<< """"""Hide the traceback for everything above this method""""""
__traceback_hide__ = 'before_and_this'
return func(**args)
def _inspect_call(self, func):
>> return func(**args)
Module ckan.controllers.package:322 in read
<< template = template[:template.index('.') + 1] + format
return render(template, loader_class=loader)
def comments(self, id):
>> return render(template, loader_class=loader)
Module ckan.lib.base:153 in render
<< try:
return cached_template(template_name, render_template,
loader_class=loader_class)
except ckan.exceptions.CkanUrlException, e:
raise
>> loader_class=loader_class)
Module pylons.templating:249 in cached_template
<< return content
else:
return render_func()
>> return render_func()
Module ckan.lib.base:102 in render_template
<< if loader_class == NewTextTemplate:
return literal(stream.render(method=""text"", encoding=None))
return literal(stream.render(method=method, encoding=None,
>> return literal(stream.render(method=""text"", encoding =None))
Module genshi.core:183 in render
<< method = self.serializer or 'xml'
generator = self.serialize(method=method, **kwargs)
return encode(generator, method=method, encoding=encoding, out=out)
def select(self, path, namespaces=None, variables=None):
>> return encode(generator, method=method, encoding=encoding, out =out)
Module genshi.output:57 in encode
<< _encode = lambda string: string
if out is None:
return _encode(''.join(list(iterator)))
for chunk in iterator:
out.write(_encode(chunk))
>> return _encode(''.join(list(iterator)))
Module genshi.output:569 in __call__
<< def __call__(self, stream):
strip_markup = self.strip_markup
for event in stream:
if event[0] is TEXT:
data = event[1]
>> for event in stream:
Module genshi.core:288 in _ensure
<< # unchanged
yield event
for event in stream:
yield event
>> for event in stream:
Module genshi.core:288 in _ensure
<< # unchanged
yield event
for event in stream:
yield event
>> for event in stream:
Module genshi.filters.transform:686 in _unmark
<< def _unmark(self, stream):
for mark, event in stream:
kind = event[0]
if not (kind is None or kind is ATTR or kind is BREAK):
>> for mark, event in stream:
Module genshi.filters.transform:1145 in __call__
<< :param stream: The marked event stream to filter
""""""
for mark, event in stream:
yield mark, event
if mark is ENTER:
>> for mark, event in stream:
Module genshi.filters.transform:714 in __call__
<< stream = iter(stream)
next = stream.next
for mark, event in stream:
if mark is None:
yield mark, event
>> for mark, event in stream:
Module genshi.filters.transform:682 in _mark
<< def _mark(self, stream):
for event in stream:
yield OUTSIDE, event
>> for event in stream:
Module genshi.core:288 in _ensure
<< # unchanged
yield event
for event in stream:
yield event
>> for event in stream:
Module genshi.filters.transform:686 in _unmark
<< def _unmark(self, stream):
for mark, event in stream:
kind = event[0]
if not (kind is None or kind is ATTR or kind is BREAK):
>> for mark, event in stream:
Module genshi.filters.transform:1145 in __call__
<< :param stream: The marked event stream to filter
""""""
for mark, event in stream:
yield mark, event
if mark is ENTER:
>> for mark, event in stream:
Module genshi.filters.transform:714 in __call__
<< stream = iter(stream)
next = stream.next
for mark, event in stream:
if mark is None:
yield mark, event
>> for mark, event in stream:
Module genshi.filters.transform:682 in _mark
<< def _mark(self, stream):
for event in stream:
yield OUTSIDE, event
>> for event in stream:
Module genshi.core:288 in _ensure
<< # unchanged
yield event
for event in stream:
yield event
>> for event in stream:
Module genshi.filters.transform:686 in _unmark
<< def _unmark(self, stream):
for mark, event in stream:
kind = event[0]
if not (kind is None or kind is ATTR or kind is BREAK):
>> for mark, event in stream:
Module genshi.filters.transform:1145 in __call__
<< :param stream: The marked event stream to filter
""""""
for mark, event in stream:
yield mark, event
if mark is ENTER:
>> for mark, event in stream:
Module genshi.filters.transform:714 in __call__
<< stream = iter(stream)
next = stream.next
for mark, event in stream:
if mark is None:
yield mark, event
>> for mark, event in stream:
Module genshi.filters.transform:682 in _mark
<< def _mark(self, stream):
for event in stream:
yield OUTSIDE, event
>> for event in stream:
Module genshi.core:288 in _ensure
<< # unchanged
yield event
for event in stream:
yield event
>> for event in stream:
Module genshi.filters.transform:686 in _unmark
<< def _unmark(self, stream):
for mark, event in stream:
kind = event[0]
if not (kind is None or kind is ATTR or kind is BREAK):
>> for mark, event in stream:
Module ckanext.googleanalytics.plugin:93 in download_adder
<< [downloaded %s times]'''
count = None
for mark, (kind, data, pos) in stream:
if mark and kind == START:
href = data[1].get('href')
>> for mark, (kind, data, pos) in stream:
Module genshi.filters.transform:714 in __call__
<< stream = iter(stream)
next = stream.next
for mark, event in stream:
if mark is None:
yield mark, event
>> for mark, event in stream:
Module genshi.filters.transform:682 in _mark
<< def _mark(self, stream):
for event in stream:
yield OUTSIDE, event
>> for event in stream:
Module genshi.core:288 in _ensure
<< # unchanged
yield event
for event in stream:
yield event
>> for event in stream:
Module genshi.filters.transform:686 in _unmark
<< def _unmark(self, stream):
for mark, event in stream:
kind = event[0]
if not (kind is None or kind is ATTR or kind is BREAK):
>> for mark, event in stream:
Module genshi.filters.transform:1175 in __call__
<< """"""
callable_value = hasattr(self.value, '__call__')
for mark, (kind, data, pos) in stream:
if mark is ENTER:
if callable_value:
>> for mark, (kind, data, pos) in stream:
Module genshi.filters.transform:714 in __call__
<< stream = iter(stream)
next = stream.next
for mark, event in stream:
if mark is None:
yield mark, event
>> for mark, event in stream:
Module genshi.filters.transform:682 in _mark
<< def _mark(self, stream):
for event in stream:
yield OUTSIDE, event
>> for event in stream:
Module genshi.core:288 in _ensure
<< # unchanged
yield event
for event in stream:
yield event
>> for event in stream:
Module genshi.filters.transform:686 in _unmark
<< def _unmark(self, stream):
for mark, event in stream:
kind = event[0]
if not (kind is None or kind is ATTR or kind is BREAK):
>> for mark, event in stream:
Module genshi.filters.transform:1145 in __call__
<< :param stream: The marked event stream to filter
""""""
for mark, event in stream:
yield mark, event
if mark is ENTER:
>> for mark, event in stream:
Module genshi.filters.transform:714 in __call__
<< stream = iter(stream)
next = stream.next
for mark, event in stream:
if mark is None:
yield mark, event
>> for mark, event in stream:
Module genshi.filters.transform:682 in _mark
<< def _mark(self, stream):
for event in stream:
yield OUTSIDE, event
>> for event in stream:
Module genshi.template.base:605 in _include
<< from genshi.template.loader import TemplateNotFound
for event in stream:
if event[0] is INCLUDE:
href, cls, fallback = event[1]
>> for event in stream:
Module genshi.template.base:565 in _flatten
<< elif kind is EXPR:
result = _eval_expr(data, ctxt, vars)
if result is not None:
# First check for a string, otherwise the iterable test
>> result = _eval_expr(data, ctxt, vars)
Module genshi.template.base:277 in _eval_expr
<< if vars:
ctxt.push(vars)
retval = expr.evaluate(ctxt)
if vars:
ctxt.pop()
>> retval = expr.evaluate(ctxt)
Module genshi.template.eval:178 in evaluate
<< __traceback_hide__ = 'before_and_this'
_globals = self._globals(data)
return eval(self.code, _globals, {'__data__': data})
>> return eval(self.code, _globals, {'__data__': data})
Module ?:51 in
<<
Tags
${tag_list(c.pkg_dict.get('tags', ''))}
>> ${tag_list(c.pkg_dict.get('tags', ''))}
Module genshi.template.eval:309 in lookup_name
<< val = BUILTINS.get(name, val)
if val is UNDEFINED:
val = cls.undefined(name)
return val
>> val = cls.undefined(name)
Module genshi.template.eval:410 in undefined
<< """"""Raise an ``UndefinedError`` immediately.""""""
__traceback_hide__ = True
raise UndefinedError(key, owner=owner)
>> raise UndefinedError(key, owner=owner)
UndefinedError: ""tag_list"" not defined
CGI Variables
CKAN_CURRENT_URL '/dataset/uk-postboxes'
CKAN_LANG 'en'
CKAN_LANG_IS_DEFAULT True
CKAN_PAGE_CACHABLE True
CONTENT_TYPE '; charset=utf-8'
DOCUMENT_ROOT '/etc/apache2/htdocs'
GATEWAY_INTERFACE 'CGI/1.1'
HTTP_ACCEPT 'text/html,text/plain,text/xml'
HTTP_ACCEPT_CHARSET 'ISO-8859-1,utf-8;q=0.7,*;q=0.7'
HTTP_ACCEPT_ENCODING 'gzip'
HTTP_ACCEPT_LANGUAGE 'vi,en-us;q=0.7,en;q=0.3'
HTTP_CONNECTION 'close'
HTTP_HOST 'ckan.net'
HTTP_USER_AGENT 'coccoc/1.0 ()'
PATH_INFO '/dataset/uk-postboxes'
PATH_TRANSLATED '/etc/ckan/datahub/apache.wsgi/dataset/uk-postboxes'
REMOTE_ADDR '127.0.0.1'
REMOTE_PORT '47065'
REQUEST_METHOD 'GET'
REQUEST_URI '/dataset/uk-postboxes'
SCRIPT_FILENAME '/etc/ckan/datahub/apache.wsgi'
SERVER_ADDR '127.0.0.1'
SERVER_ADMIN '[no address given]'
SERVER_NAME 'ckan.net'
SERVER_PORT '80'
SERVER_PROTOCOL 'HTTP/1.0'
SERVER_SIGNATURE 'Apache/2.2.22 (Ubuntu) Server at ckan.net Port 80\n'
SERVER_SOFTWARE 'Apache/2.2.22 (Ubuntu)'
WSGI Variables
application
beaker.cache
beaker.get_session >
beaker.session {'_accessed_time': 1345083636.079552, '_creation_time': 1345083636.079552}
mod_wsgi.application_group 'ckan.net|'
mod_wsgi.callable_object 'application'
mod_wsgi.handler_script ''
mod_wsgi.input_chunked '0'
mod_wsgi.listener_host ''
mod_wsgi.listener_port '8080'
mod_wsgi.process_group 'datahub'
mod_wsgi.request_handler 'wsgi-script'
mod_wsgi.script_reloading '1'
mod_wsgi.version (3, 3)
paste.cookies (, '')
paste.registry
paste.throw_errors True
pylons.action_method >
pylons.controller
pylons.environ_config {'session': 'beaker.session', 'cache': 'beaker.cache'}
pylons.pylons
pylons.routes_dict {'action': u'read', 'controller': u'package', 'id': u'uk-postboxes'}
repoze.who.logger
repoze.who.plugins {'openid': , 'friendlyform': , 'ckan.lib.authenticator:UsernamePasswordAuthenticator': , 'auth_tkt': , 'ckan.lib.authenticator:OpenIDAuthenticator': }
routes.route
routes.url
webob._parsed_query_vars (GET([]), '')
webob.adhoc_attrs {'language': 'en-us'}
wsgi process 'Multi process AND threads (?)'
wsgi.file_wrapper
wsgi.version (1, 1)
wsgiorg.routing_args (, {'action': u'read', 'controller': u'package', 'id': u'uk-postboxes'})
",ross
2874,Clean up bin directory,ckan,,,enhancement,rgrp,assigned,2012-08-17T08:01:48Z,2012-08-17T08:01:55Z,Full of obsolete material,rgrp
2877,Bugs with datastore v2,ckan,,,enhancement,kindly,assigned,2012-08-18T00:33:22Z,2012-08-30T09:53:15Z,"In progress
1. ~~[major] q does not seem to work reliably. e.g. using the setup from this gist https://gist.github.com/1930806 and doing a ?q=DE yields no results (does not work with ""q=de"" either)~~
* ~~q=second does work ...~~
1. [major] q does not work with 2 values (see below)
2. Query on search with limit 0 results in total of 0 (should either be null or correct total). Queries with other limits yield correct total AFAICT
* Also weird fact that limit is returned but as as as string - should it not be an integer
3. Types on fields: could these not be canonical and as per recline (or is it important to allow exact sql types ...)
=== Multiple query values ===
Try a query such as: ""second UK"" and you will get 500 error:
http://localhost:5000/api/3/action/datastore_search?resource_id=4f1299ab-a100-4e5f-ba81-e6d234a2f3bd&q=second%20UK
{{{
ProgrammingError: (ProgrammingError) syntax error in tsquery: ""second UK"" 'select ""_id"", ""id"", ""date"", ""x"", ""y"", ""z"", ""country"", ""title"", ""lat"", ""lon"", count(*) over() as ""_full_count""\n from ""4f1299ab-a100-4e5f-ba81-e6d234a2f3bd"" where _full_text @@ to_tsquery(%s) limit 100 offset 0' (u'second UK',)
}}}
=== Suggestions ===
Filter support: should think in more detail about this (may want to follow recline style)
Simple filters in query parameters would be nice too ...",rgrp
2888,Datapreview in Iframe,ckan,,,enhancement,,new,2012-08-23T18:11:01Z,2012-08-23T18:11:01Z,Try and put datapreview in Iframe.,kindly
2895,QA pages (e.g. broken resource links) are not paginated,ckan,,,enhancement,,new,2012-08-28T17:38:05Z,2012-08-28T17:38:05Z,And as a result timeout on e.g. the datahub ...,rgrp
2911,Internal documentation of Organization Groups,ckan,,,enhancement,,new,2012-09-06T14:23:04Z,2012-09-06T14:23:04Z,A summary/user story doc of how organizations and groups are expected to work.,kindly
2934,Webtests for CKAN,ckan,,,enhancement,,new,2012-09-18T11:10:47Z,2012-09-19T13:10:01Z,"The tests in CKAN only test single pages (functional tests) or single methods (unit tests). In order to make sure that the whole system still works as expected, we need tests that cover whole processes.
An example user story to be tested would be:
""As a user with create permissions I want to be able to log in, create a new resource, save it and then make sure that it is in the system.""
or:
""As a user I want to use the search functionality and open a resource from the search page.""
These user stories require a different testing system with interaction and processes. ",Dominik
2938,Explain bundling in doc/resources.rst,ckan,,,enhancement,Toby,new,2012-09-24T12:13:55Z,2012-09-24T12:13:55Z,"Since it makes sense to bundle resources into one js file that are commonly used together, there should be some explanations on how separate js scripts are merged into one file for production.
Explanations could include how groups are handled or different resource files.",dominik
2939,Orgs are groups,ckan,,,enhancement,toby,new,2012-09-25T09:07:14Z,2012-09-25T09:07:14Z,holder for ticket number,toby
2943,Chrome does not resize preview,ckan,,,enhancement,,new,2012-10-01T11:08:06Z,2012-10-01T11:25:59Z,Chrome does not resize iframe after a full refresh/ on first load,dominik
2944,Recline preview does not work in Opera,ckan,,,enhancement,,new,2012-10-01T11:26:42Z,2012-10-01T11:26:42Z,Opera cannot show a recline preview. I shows 0 records.,dominik
2945,Pdf preview does not load in IE,ckan,,,enhancement,,new,2012-10-01T11:27:49Z,2012-10-01T11:27:49Z,The pdf preview does not load in IE 9.,dominik
2948,Negative range breaks datastore backend,ckan,,,enhancement,,new,2012-10-01T14:30:54Z,2012-10-01T14:31:05Z,Recline allows negative ranges. The backend returns an error 500 for that which breaks the recline preview.,dominik
2992,Delete resource should send me back to edit dataset page,ckan,,,enhancement,,new,2012-10-16T17:19:16Z,2012-10-16T17:19:16Z,,johnmartin
3012,data.gov auth,ckan,,,enhancement,toby,new,2012-11-08T16:50:09Z,2012-11-08T16:50:09Z,,toby
3020,Update CKAN coding standards,ckan,,,enhancement,,new,2012-11-16T20:11:51Z,2012-11-16T20:11:51Z,,seanh
3021,Logout doesn't work without JS,ckan,,,enhancement,johnmartin,accepted,2012-11-20T11:19:10Z,2012-11-20T11:46:08Z,"Essentially, the functionality should be as follows:
- Add logout link that has `.js-hide` attached to it within the header that isn't hidden within a dropdown
See http://plus.google.com/ (when logged in) with and without JS to see an example of the actual sign-out working without JS",johnmartin
3023,New methods on IPackageController to provide access to the data_dict,ckan,,,enhancement,amercader,new,2012-11-22T17:00:57Z,2012-11-22T17:00:57Z,Extension hooking into the edit and create methods of the IPackageController interface receive the package object. This may not include all the fields that came from the form. The new extension points will pass the validated data_dict so extensions can have access to it,amercader
3025,Add requests to core requirements,ckan,,,enhancement,amercader,new,2012-11-27T21:35:24Z,2012-11-27T21:35:24Z,Because yes please,amercader
3027,solr for 2.0,ckan,,,enhancement,kindly,new,2012-12-04T02:22:09Z,2012-12-04T02:22:09Z,"change mm
support solr 3 and 4
add *_date field",kindly
3030,clean up helper functions,ckan,,,enhancement,,new,2012-12-18T12:33:58Z,2012-12-18T12:33:58Z,,toby
2957,New datastore on postgres prior to 9.0,ckan,,,task,,new,2012-10-03T19:23:34Z,2012-10-03T19:23:34Z,The ``GRANT SELECT ON ALL`` and ``ALTER DEFAULT PRIVILEGES`` are not available in Postgres prior to version 9.0. ,dominik
2913,IGroupForm has package_form() method,ckan,,ckan 2.0,defect,,new,2012-09-11T14:45:39Z,2012-10-15T12:22:59Z,Should be group_form() I think,seanh
2920,Genshi text template message extractor no longer needed?,ckan,,ckan 2.0,defect,,new,2012-09-13T09:57:29Z,2012-09-13T09:57:29Z,"In setup.py, do we still need:
('templates/**.txt', 'genshi', {
'template_class': 'genshi.template:TextTemplate'
}),
in message_extractors? Doesn't like there are any txt files in there
anymore.",seanh
2921,Add docstring to top of lib/extract.py file,ckan,,ckan 2.0,defect,,new,2012-09-13T10:00:07Z,2012-09-13T10:00:07Z,"I think it couldn't hurt for this module to have a docstring at the top
of the file explaining what the module is for. I know from setup.py that
it's there to provide the extract_ckan() string extractor function for
Babel, but I think looking at the file on its own it's not so obvious.
Also a couple of other small fixes:
jinja2_cleaner looks like a helper function only meant to be used by
extract_ckan(), might make things clearer if it was called
_jinja2_cleaner(), just so it doesn't look like a public function the
module wants to export.
jinja_extensions seems to be a module-level variable that is only used
in one function, could be moved into the function, unless you think
there might be more functions that want it in future.",seanh
2922,Better docstring for CKANInternationalizationExtension,ckan,,ckan 2.0,defect,,new,2012-09-13T10:01:47Z,2012-09-13T10:01:47Z,"I'm unsure about what's going on here. As I understand it, when we run
`python setup.py extract_messages` it's going to use the extract_ckan()
function from ckan/lib/extract.py to process the HTML files. For the
HTML files that are jinja2 templates, extract_ckan() will call
jinja2_cleaner() which will call regularise_html() on the strings. So
the strings are regularised when they are extracted from the source
files.
But then we have the parse() method of CkanInternationalizationExtension
also calling regularise_html(). I don't get what's happening here. Why
do the strings need to be regularised twice?
My guess is that CkanInternationalizationExtension is used when the
strings are extracted from the templates at runtime, and they need to be
regularised at this time in order to match them against the regularised
strings in the mo files to find the translations to output?
Maybe CkanInternationalizationExtension needs a better docstring saying
what it does?",seanh
2923,Change regularise -> regularize,ckan,,ckan 2.0,defect,,new,2012-09-13T10:03:02Z,2012-09-13T10:03:02Z,"The function is called regularise_html(), can't remember what file it's in.",seanh
2924,"Better docs for trans js command, and add to release process",ckan,,ckan 2.0,defect,,new,2012-09-13T10:04:31Z,2012-09-13T10:04:31Z,"Add a better docstring to for trans js command explaining what it does and why, and how to use it.
Also add this command to the CKAN Release Process as it's needed there",seanh
2925,Remove trans mangle paster command?,ckan,,ckan 2.0,defect,,new,2012-09-13T10:06:08Z,2012-09-13T10:06:08Z,"- Is `trans mangle` really necessary? If you upload a pot file to
Transifex, it can generate a po file for you with 100% strings
translated into a fictional pseudo language where everything is really
long strings of unicode characters. I found this worked well for
coverage testing, and also tests handling of unicode and long strings
all over the place.",seanh
2964,Last organization admin can remove herself,ckan,,ckan 2.0,defect,,new,2012-10-15T10:14:18Z,2012-10-15T10:14:18Z,"If you are the only admin of an organization you can edit the organization's members and demote yourself, then the org has no admins and no one (except sysadmins maybe) can edit it.
Last admin should not be able to remove or demote herself.
Also applies to groups.",seanh
2967,Organization members edit page reloads after demoting self,ckan,,ckan 2.0,defect,,new,2012-10-15T10:17:07Z,2012-10-15T10:17:07Z,"Edit an organizations members page and demote yourself from organization admin, after saving the members edit page reloads even though you are no longer an admin and should no longer be able to access this page.",seanh
2968,Anyone can access organization members page,ckan,,ckan 2.0,defect,,new,2012-10-15T10:19:15Z,2012-10-15T10:31:10Z,"The button will not show if you are not authorized but browse to /organization/members/foo and you can edit the members, it does stop you when you try to save your changes, but you shouldn't be able to get to the page at all",seanh
2969,Group members page 500s,ckan,,ckan 2.0,defect,,new,2012-10-15T10:20:54Z,2012-10-15T10:20:54Z,"The group members page (e.g. /group/members/roger) seems broken, IDs instead of user names are shown for the members, and clicking on a member 500s",seanh
2970,Organization and group member links use id not name,ckan,,ckan 2.0,defect,,new,2012-10-15T10:22:11Z,2012-10-15T10:22:11Z,e.g. it the 'Members' button links to /organization/members/0a44... instead of /organization/members/foobar,seanh
2993,"""logged_in"" and ""visitor"" show in user list at /users",ckan,,ckan 2.0,defect,,new,2012-10-17T09:42:02Z,2012-10-17T14:40:26Z,,seanh
3001,Multilingual plugin crashes CKAN on add dataset when some languages are default,ckan,,ckan 2.0,defect,,new,2012-10-18T16:50:48Z,2012-10-18T16:50:48Z,"Enable the multilingual plugins:
ckan.plugins = stats synchronous_search multilingual_dataset multilingual_group multilingual_tag
and set your default language to one not supported by the multilingual plugin, e.g.
ckan.locale_default = cs_CZ
now run CKAN and try to add a dataset:
File '/home/seanh/Projects/ckan171/ckan/ckanext/multilingual/plugin.py', line 141 in before_index
text_field_items['text_' + default_lang].extend(all_terms)
KeyError: 'text_cs_CZ'
It doesn't matter what language you are viewing the site in in your browser, the default language setting in the ini file determines whether it crashed or not.
A number of supported languages are defined at the top of ckanext/multilingual/plugin.py. I think if the default language is not one of these it crashes.
I think this affects all versions of CKAN since the multilingual plugin was added so at least 1.7, 1.8 and 2.0",seanh
3014,Crash when deleting a non-empty vocabulary,ckan,,ckan 2.0,defect,,new,2012-11-13T10:50:08Z,2012-11-13T10:50:08Z,"From Knud Möller:
when I try to delete a non-empty tag vocabulary via the API (through HTTP), I get an internal server error. Checking
the logs, this turns out to be a consistency error raised by sqlalchemy:
Error - : (IntegrityError) update or delete on table ""vocabulary"" violates
foreign key constraint ""tag_vocabulary_id_fkey"" on table ""tag""
DETAIL: Key (id)=(21421955-7560-467c-af30-9f790b73e6ae) is still referenced from table ""tag"".
'DELETE FROM vocabulary WHERE vocabulary.id = %(id)s' {'id': u'21421955-7560-467c-af30-9f790b73e6ae'}
URL: http://33.33.33.10:5000/api/action/vocabulary_delete
The error makes sense, but I'm wondering if it would be useful to extend the API to also allow the deletion of
non-empty vocabularies, possibly via a parameter (not sure what best practice in API design is). At the very least, it
would be cool if the error message coming back in the response had more information in it.",seanh
2329,Add back in RSS/Atom links on relevant pages,ckan,,ckan 2.0,enhancement,,assigned,2012-04-26T12:15:40Z,2012-09-03T09:24:31Z,"E.g. on dataset page, on revision page, on user page and on search results.",rgrp
2654,UI support for ordering groups on group_read page,ckan,,ckan 2.0,enhancement,,assigned,2012-07-10T18:11:31Z,2012-09-03T08:49:16Z,"The group_index page has no support in WUI for ordering the groups displayed. Should allow sorting by name
Add support for this for datahub now, and discuss for new 1.9 UI",ross
2886,Configurable related items,ckan,,ckan 2.0,enhancement,,new,2012-08-22T08:55:18Z,2012-08-22T08:55:18Z,"Related items (Apps & Ideas) have a collection of types, which are currently fixed. Some of these types are ambiguous, such as ideas in that they may not have a link - and if they do it is likely to be to a blog post - another existing type.
Whilst the URL is required, and we think this should stay required, we should also allow users to change the types found in Apps & Ideas to a shortened list that suits their requirements.",ross
2902,genshi is used in Group controller,ckan,,ckan 2.0,enhancement,,new,2012-09-04T18:10:30Z,2012-09-04T18:10:30Z,"The Group controller uses the genshi module where it may be better for it to use Markup() in the template.
See https://github.com/okfn/ckan/pull/117/files#r1524863",ross
2917,Organization admins can delete themselves,ckan,,ckan 2.0,enhancement,johnmartin,new,2012-09-12T12:10:43Z,2012-09-12T13:13:56Z,Organization administrators can delete themselves from the user management pages. We should disable this on the front-end as well as the back-end.,ross
2926,I*Form tests for per-type templates,ckan,,ckan 2.0,enhancement,,new,2012-09-13T16:01:21Z,2012-09-13T16:01:21Z,"Finish the tests for the per-package-type custom template support in IPackageForm, IGroupForm and IOrganizationForm (i.e. the new_template(), read_template() etc. methods).
The new way that template inheritance works in jinja looks like it should allow this to be tested nicely without duplicating entire templates in the example extensions.",seanh
2927,Test new package/group/organization type URLs support,ckan,,ckan 2.0,enhancement,,new,2012-09-13T16:02:33Z,2012-09-13T16:02:33Z,"IPackageForm, IGroupForm and IOrganizationForm allow you to define e.g. new package types with new top-level URLs, but the example extensions don't have tests for this yet.",seanh
2928,Run CKAN tests with example_i*form extensions enabled,ckan,,ckan 2.0,enhancement,,new,2012-09-13T16:05:34Z,2012-09-13T16:05:34Z,"Before releasing CKAN 2.0 we need to run all the CKAN tests with a modified test-core.ini with the example_idatasetform, example_igroupform and example_iorganizationform plugins enabled. If any tests fail, fix the bugs. This needs to be done for each release so add it to the release process.",seanh
2929,Remove is_fallback() from I*Form extension interfaces?,ckan,,ckan 2.0,enhancement,,new,2012-09-13T16:09:57Z,2012-09-13T16:09:57Z,"If a plugin wants to take over the default package type for example, it can return ['dataset'] from its package_types() method. I don't see how there can be a package type that is not the default 'package' and is not returned by the package_types() method of a plugin, because the URLs for such a package type would not be mapped. Am I missing something or is is_fallback() not needed?
Same for IGroupForm and IOrganizationForm",seanh
2931,Better docstring for app_globals.py,ckan,,ckan 2.0,enhancement,,new,2012-09-17T14:13:14Z,2012-09-17T14:16:18Z,"''' The application's Globals object ''' is not very informative.
",seanh
2932,Add docstring to system_info.py,ckan,,ckan 2.0,enhancement,,new,2012-09-17T14:50:29Z,2012-09-17T14:50:29Z,"What is the system_info table for? It looks like a way to override config file settings in the database, perhaps so that admins can use a web interface to change site title etc. Could do with a docstring explaining the intended purpose of the table.",seanh
2933,Update theming docs,ckan,,ckan 2.0,enhancement,,new,2012-09-17T15:21:12Z,2012-09-17T15:21:12Z,"There's quite a lot of custom stuff going on, with all the custom jinja extensions, and the use of Fanstatic plus custom fanstatic extensions. People who are new to CKAN wanting to write CKAN themes are likely to be confused. I think the whole lot could do with documentation, maybe in the Theming and Customizing chapter in the sphinx docs.
I suggest completely replacing the contents of doc/theming.rst, and putting a 'legacy theming' link at the bottom linking to a doc/legacy_theming.rst file with the old contents.",seanh
2956,Allow for resource editing in CKAN 2.0,ckan,,ckan 2.0,enhancement,shevski,assigned,2012-10-03T15:11:40Z,2012-10-04T10:27:22Z,On the edit dataset page... there needs to be a way for users to be able to see all the resources associated to the dataset and edit them individually.,johnmartin
2961,Preview plugin endpoint,ckan,,ckan 2.0,enhancement,dominik,assigned,2012-10-08T11:39:27Z,2012-10-18T16:33:10Z,"Users could write ckan extensions that offer previews for a certain datatype.
Advantages:
- We can say that you can add your own previews
- Every preview would have to define it's own dependencies
- External development (community creates new extensions?)
Questions to answer:
- Specification of the interface
- Precedence of previews for the same data types
- Plugins only define the datatype that they are responsible for or do we call a function that returns whether the extension is responsible.
As far as I can see, this should be fairly easy to implement by following these instructions: http://docs.ckan.org/en/latest/writing-extensions.html#writing-a-plugin-interface",dominik
2966,'Add' button text is wrong when editing organization members,ckan,,ckan 2.0,enhancement,,new,2012-10-15T10:15:49Z,2012-10-15T10:15:49Z,e.g. if I just changed a member's capacity I am not adding anything 'save' is better maybe,seanh
2971,"""Are ytou sure you want to delete this member?"" should say which member",ckan,,ckan 2.0,enhancement,,new,2012-10-15T10:27:20Z,2012-10-15T10:27:20Z,when deleting members from groups and orgs,seanh
2972,Remove any imports of authz.py and delete file,ckan,,ckan 2.0,enhancement,,new,2012-10-15T10:37:22Z,2012-10-15T10:37:22Z,it is no longer used,seanh
2973,Move new_authz.py into logic/auth/__init__.py,ckan,,ckan 2.0,enhancement,,new,2012-10-15T10:39:05Z,2012-10-15T10:39:05Z,"Makes sense to keep all auth stuff under logic/auth.
Also decide which functions from new_authz.pu should be marked private with _.
Also decide which functions from new_authz.py are really helpers for the auth functions in get.py, update.py and delete.py, and should maybe moved to another file, e.g. logic/auth/helpers.py",seanh
2974,General of all auth functions,ckan,,ckan 2.0,enhancement,,new,2012-10-15T10:40:12Z,2012-10-15T10:40:12Z,"From Toby:
A general cleanup of all auth functions (in logic/auth) to check their fitness, error messages, etc.",seanh
2975,Tests for auth functions and new actions,ckan,,ckan 2.0,enhancement,,new,2012-10-15T10:41:00Z,2012-10-15T10:41:00Z,"From Toby: tests around the auth functions and new actions - probably needs an improved testing mechanism and things like test data creation on via actions
",seanh
2976,Polish group and organization member pages,ckan,,ckan 2.0,enhancement,,new,2012-10-15T10:41:49Z,2012-10-15T10:41:49Z,"From Toby: A little polish to the member pages and probably a little hardening of
the controller and logic actions",seanh
2977,Fix user autocomplete on group and organization member pages,ckan,,ckan 2.0,enhancement,,new,2012-10-15T10:42:29Z,2012-10-15T10:42:29Z,"From Toby: @johnmartin the user autocomplete on
member add needs fixing it gets data but does not understand what to do
with it
",seanh
2978,Tests for permissions for organizations and groups,ckan,,ckan 2.0,enhancement,,new,2012-10-15T10:43:26Z,2012-10-15T10:43:26Z,"From Toby: checking the logic around the who can do what from the user stories -
via some tests may be a good approach
",seanh
2979,Requesting membership to groups and organizations,ckan,,ckan 2.0,enhancement,,new,2012-10-15T10:44:04Z,2012-10-15T10:44:04Z,"From Toby: The requesting membership user stories and implementation remain needed
",seanh
2988,UI functional tests for CKAN 2.0,ckan,,ckan 2.0,enhancement,,new,2012-10-15T11:02:15Z,2012-10-15T11:02:15Z,Afaik the new CKAN 2.0 frontend has no functional tests,seanh
2989,"""Add dataset to organization"" should auto-select the organization",ckan,,ckan 2.0,enhancement,,new,2012-10-15T11:04:12Z,2012-10-15T11:04:12Z,"'Add dataset to organization' button, when you get through to the third stage of the new dataset form the organization you came from is not selected.
I don't see any option to choose the group when adding or updating a dataset, but if I add a dataset via the ""Add dataset to group"" button on a group's page, then the dataset seems to get added to that group. (And I can also add/remove existing datasets by editing the group.) I wonder if organizations should work the same way, instead of having an Organization drop-down when creating or updating a dataset. The add dataset page needs to somehow indicate that you're adding a dataset to a certain group or organization though, doesn't currently.",seanh
2990,Fix descriptions of groups and organizations on /groups and /organizations pages,ckan,,ckan 2.0,enhancement,,new,2012-10-15T11:04:51Z,2012-10-15T11:04:51Z,,seanh
2991,Add blocks to header.html template,ckan,,ckan 2.0,enhancement,,new,2012-10-16T11:10:20Z,2012-10-16T11:10:20Z,"Currently if you want to customise the header.html template you have to copy the whole thing, it isn't broken up into blocks like other templates are.",seanh
2994,Add dataset and user popovers throughout the site,ckan,,ckan 2.0,enhancement,,new,2012-10-17T14:26:04Z,2012-10-17T14:26:04Z,"If you hover the mouse over a dataset or user in an activity stream, you now get a popover with some info about that dataset or user and a follow/unfollow button.
These popovers should appear wherever datasets or users are listed, throughout the site.",seanh
2995,"Popovers for resources, groups, organizations, tags...",ckan,,ckan 2.0,enhancement,,new,2012-10-17T14:27:21Z,2012-10-17T14:27:21Z,"If you hover the mouse over a dataset or user in an activity stream, you now get a popover with some info about that dataset or user and a follow/unfollow button.
It would be nice to add similar popovers for other types of object in CKAN, e.g. resources, groups, organizations, tags...",seanh
2997,Add activity streams to dataset pages,ckan,,ckan 2.0,enhancement,,new,2012-10-17T14:31:46Z,2012-10-17T14:31:46Z,"Add an activity stream tab to dataset pages, like we have on user profile pages. Dataset activity streams are already implemented in the backend.",seanh
2998,Add activity streams to group pages,ckan,,ckan 2.0,enhancement,,new,2012-10-17T14:33:14Z,2012-10-17T14:33:14Z,Before we do this we should implement smarter group activity streams (i.e. what activities should appear in a group's activity stream?) and following of groups.,seanh
2999,Add activity streams to organization pages,ckan,,ckan 2.0,enhancement,,new,2012-10-17T14:34:17Z,2012-10-17T14:34:17Z,"Before we do this we need to merge the organizations branch into master, we need to implement smarter activity streams for organizations, and we need to implement following of organizations.",seanh
3000,Add number of followers to dataset pages,ckan,,ckan 2.0,enhancement,,new,2012-10-17T14:36:00Z,2012-10-17T14:36:00Z,"User profile pages now show some interesting stats about the user: num. datasets, num. edits and num. followers. Would be nice to add some similar info to dataset pages. At least num. followers can be done (already implemented in backend).",seanh
3005,"Add following/unfollowing of groups: model, API, frontend, tests",ckan,,ckan 2.0,enhancement,seanh,new,2012-10-23T17:35:44Z,2012-10-23T17:35:44Z,,seanh
3007,Adding a dataset creates multiple activities,ckan,,ckan 2.0,enhancement,,new,2012-10-29T13:15:07Z,2012-10-29T13:23:39Z,"Adding a new dataset creates multiple activity stream activities, e.g. seanh created the dataset foo, seanh add the resource bar to the dataset foo, and seanh updated the dataset foo are all created when I add a new dataset. I wonder if these can be collapsed into a single activity.",seanh
3010,Pin images don't appear in data explorer,ckan,,ckan 2.0,enhancement,,new,2012-10-31T17:45:06Z,2012-10-31T17:45:06Z,"When minified files are in use (set debug = false in ini file) the pin images for points don't show up in the data explorer map view when viewing a resource with geolocation data.
set debug = true will fix the problem by using unminified files instead but also turns on a bunch of debug stuff you wouldn't want on a production site.
middleware.py, around line 73, is where the decision to turn minified files on or off based on the debug setting is made. This can be hacked on a production site to run with unminified files but otherwise run on production mode thereby getting around the issue with the pins. But that doesn't fix the underlying bug.",seanh
3016,CKAN 2.0 template tweaks,ckan,,ckan 2.0,enhancement,johnmartin,new,2012-11-13T13:30:17Z,2012-11-13T13:30:17Z,Just a ticket to keep track of a few suggested template changes.,johnmartin
3018,Load more in activity streams,ckan,,ckan 2.0,enhancement,johnmartin,new,2012-11-14T13:34:11Z,2012-12-10T12:02:30Z,Activity streams should be able to load more than 15 items within them. Suggest the default amount of loading is around 30 and then click to load more.,johnmartin
3028,Feature: dashboard activity stream filtering,ckan,,ckan 2.0,enhancement,seanh,new,2012-12-10T12:07:24Z,2012-12-10T12:07:24Z,https://github.com/okfn/ckanext-pdeu/issues/13,seanh
2915,Refactor form_to_db_schema_options(),ckan,,ckan 2.0,refactor,,new,2012-09-12T10:37:49Z,2012-09-12T10:59:48Z,"Having two methods form_to_db_schema(self) and form_to_db_schema_options(self, options) seems unnecessary, why not just have form_to_db_schema(self, options=None)?
Fixing this might break existing extensions although I don't think any are using form_to_db_schema_options() so it should be okay.
The same thing goes for db_to_form_schema_options().
Also why are we passing a dict 'options' that always contains the same three keys 'api', 'context' and 'type'? Why not three params api=None, contenxt=None, type=None?",seanh
2981,Remove config from jinja templates,ckan,,ckan 2.0,refactor,,new,2012-10-15T10:46:00Z,2012-10-15T10:46:00Z,"From Toby: remove the config from jinja2 templates get all such stuff via g. (before 2.0)
",seanh
2982,Move functionality from controllers into template helpers,ckan,,ckan 2.0,refactor,,new,2012-10-15T10:46:42Z,2012-10-15T10:46:42Z,"From Toby: strip more functionality from controllers and add via template helpers
eg activity streams
",seanh
2983,Refactor lib/base.py to remove circular import issues,ckan,,ckan 2.0,refactor,,new,2012-10-15T10:47:24Z,2012-10-15T10:47:24Z,"From Toby: c) refactor lib/base.py to remove the circular import issues (render
functions to lib/render.py - would fix much of that)
",seanh
2984,"Auto-populate context with user, model, session, etc.",ckan,,ckan 2.0,refactor,,new,2012-10-15T10:48:21Z,2012-10-15T10:48:21Z,"From Toby: make the context auto-populated with things like user/model/session if
not user supplied - especially for extensions (pre 2.0) maybe via a helper
or else a decorator on the action - helper seems nicer maybe done via
get_action()",seanh
2985,Make lib/helpers.py more template-specific,ckan,,ckan 2.0,refactor,,new,2012-10-15T10:49:48Z,2012-10-15T10:49:48Z,"From Toby: make lib/helpers more template specific and less generally shared with
none template uses (some functions are shared but many shouldn't be) -
again help avoid circular imports
",seanh
2986,Make lib/base.py more like it was originally intended,ckan,,ckan 2.0,refactor,,new,2012-10-15T10:50:45Z,2012-10-15T10:50:45Z,"From Toby: make lib/base.py be more like it was originally intended eg defines
stuff that is shared eg _ but maybe try to include stuff like
render/get_action if the circular import stuff can be solved - which should
be doable if hard and likely needs an extra file or two for the externals _
etc
",seanh
2987,Remove all direct calls to logic action and auth functions,ckan,,ckan 2.0,refactor,,new,2012-10-15T10:51:27Z,2012-10-15T10:51:27Z,From Toby,seanh
811,Extra field editing form layout breaks when there are long field names,ckan,,ckan-backlog,defect,,new,2010-11-17T11:53:32Z,2011-12-06T11:18:09Z,The layout of the editing section for extra fields breaks when a field name is slightly too long. Field names jump over to the right. See http://ckan.net/package/edit/dbpedia for examples.,cygri
812,Package edit form only allows three extra fields,ckan,,ckan-backlog,defect,,new,2010-11-17T11:56:50Z,2011-07-20T15:48:37Z,"= Rationale =
The package edit form is restricted to three extra fields. To enter more than three fields, one has to save the package and hit edit again (or hit preview).
= Implementation =
A mechanism similar to the one for resources (where you can add lines as you go) would solve this. So, have a button that adds more extra field rows via JS. (Extra fields don't need up/down buttons that the Resource table has)
Nice to have: a blank field is added when you tab from the last filled-in field in the table.",cygri
895,Add version number (or simular) to css/js includes query string,ckan,,ckan-backlog,defect,,new,2011-01-06T19:49:42Z,2012-06-15T15:36:33Z,"Updates to css after a new deploy don't come through without a hard refresh. Adding the version number to the include urls will solve this e.g.
mycssfile.css?v=12345678",memespring
1182,"Comments from deleted packages appear in ""Recent Comments"" feed",ckan,,ckan-backlog,defect,,new,2011-06-09T22:24:11Z,2012-06-15T15:31:59Z,"When a package has been deleted, say for spam moderation, comments still appear in the recent comments section.
This is a problem because non-admin users will be shown a warning that they're not authorised to view the package if they click on the link.
At CKAN.net currently, this affects the most recent comment.",timmcnamara
1185,Administrators can't delete packages from web UI,ckan,,ckan-backlog,defect,,new,2011-06-15T04:23:38Z,2012-06-15T15:31:29Z,"Administrators have ""View"", ""Edit"" and ""History"" tabs. However, I can't see a way to delete a package from the web UI.
Version: CKAN.net as of today",timmcnamara
1203,"Moderated edits: html code shows as ""changed"" although it is not",ckan,,ckan-backlog,defect,johnglover,new,2011-06-28T15:29:30Z,2011-08-15T09:46:19Z,"I've installed the Moderated Edits extension (ckanext-moderatededits) and am editing a package imported from IATIregistry.org, with an extra field which contains a bit of HTML.
The editor indicates the field has changed, although the content hasn't (see screenshot). All I can find so far is a minor difference: in the field content, there is a code — and in the rendered table that is an —",rolf
1355,Package extras property does not include the newly created ones,ckan,,ckan-backlog,defect,,new,2011-09-26T10:48:46Z,2012-06-15T15:27:36Z,"The extras in the package object sent to the extensions after editing (https://bitbucket.org/okfn/ckan/src/01efd5649c10/ckan/logic/action/update.py#cl-226) do not include the newly added.
",amercader
1642,Extra link generators generate garbled HTML,ckan,,ckan-backlog,defect,,new,2012-01-12T15:29:31Z,2012-06-15T15:26:07Z,"I had a package descriptions with URLs that contain ""group:foo"". This produces garbled output as the system tries to generate two sets of links: the outer link and an inner link.
Need to fix the parser.
Text:
Webdienst basierende Bereitstellung von Geobasisdaten der Freien und Hansestadt Hamburg. Folgende Geobasisdaten werden als WebMapTileService (WMT-S) für die Dauer des Wettbewerbs netzbasiert unter der Creative Commons Lizenz zur Verfügung gestellt: Digitale Orthophotos 40 cm Auflösung (Layer: apps4d_DOP40), Digitale Stadtkarte (Layer: apps4d_DISK), Digitale Regionalkarte (Layer: apps4d_DIRK), Digitale Karte 1:5000 (Layer: apps4d_DK5).
Metadateneinträge zu den Daten im PortalU:
* [apps4d_DOP40](http://www.portalu.de/trefferanzeige?docuuid=D6082285-6CAC-49C5-B7ED-B5A72BC17DEC&plugid=/kug-group:kug-iplug-udk-db_hh)
* [apps4d_DISK](http://www.portalu.de/trefferanzeige?docuuid=D2DA3359-3DC9-4CA4-AE9B-7C63D53B220F&plugid=/kug-group:kug-iplug-udk-db_hh)
* [apps4d_DIRK](http://www.portalu.de/trefferanzeige?docuuid=B7DDD599-F677-4C80-BED5-F11D82D5D1DD&plugid=/kug-group:kug-iplug-udk-db_hh)
* [apps4d_DK5](http://www.portalu.de/trefferanzeige?docuuid=2AE6D23E-48A5-4D85-BC0A-160737E0C8D2&plugid=/kug-group:kug-iplug-udk-db_hh)
One fix is quoting the URLs",pudo
1668,repoze version discrepency,ckan,,ckan-backlog,defect,,new,2012-01-17T12:02:26Z,2012-01-17T12:02:26Z,"There's a discrepency in repoze.who versions between the source and package installs:
* repoze.who - package 1.0.18 vs source 1.0.19
* repoze.who-friendlyform - package 1.0b3 vs source 1.0.8
We get a test failure [1] with the 1.0b3 version (from the ubuntu 10.04 python-repoze.who-plugins package). But we've not noticed any problems on s057 instances (br, no, ie etc) which have the package versions of repoze.who.
The reason the package install uses the earlier packaged versions rather than the ones we'd like is that repoze uses all sorts of horrendous import hacks, making it too difficult to put into our 'ckan-conflict' source package.
James suggests we 'do something horrible like dynamically patch repoze on CKAN import'.
[1] http://buildbot.okfn.org/builders/builder-ckan/builds/1371/steps/shell/logs/stdio
ERROR: ckan.tests.functional.test_user.TestUserController.test_user_create_unicode",dread
2197,Storage Metadata API: add/update not working with local file storage (Pairtree),ckan,,ckan-backlog,defect,,assigned,2012-02-28T09:29:37Z,2012-09-03T08:48:48Z,"If OFS is configured with Pairtree to use a local file storage, all POST requests to add/update metadata ( /api/storage/metadata/{label} ) will fail.
This is due to the use of [https://github.com/okfn/ofs/blob/master/ofs/remote/botostore.py BotoOFS] specific ''private'' methods in [https://github.com/okfn/ckan/blob/master/ckan/controllers/storage.py StorageAPIController.set_metadata()], eg: self.ofs.'''_require_bucket'''(bucket), self.ofs.'''_get_key'''(b, label), self.ofs.'''_update_key_metadata'''(k, metadata) ... those methods can't be found in [https://github.com/okfn/ofs/blob/master/ofs/local/pairtreestore.py POTFS] and this causes errors.
The API should use only [https://github.com/okfn/ofs/blob/master/ofs/base.py OFSInterface] methods, or should conditionally make calls based off the actual type of ''self.ofs''.
''PS: I did set ""ckan"" as ""Component"" in the ticket because storage has been integrated back into the core in CKAN 1.6''",zydio
2486,Should be able to use . in dataset names,ckan,,ckan-backlog,defect,,new,2012-06-02T16:46:23Z,2012-06-15T14:36:18Z,,seanh
2607,'Upload a file' appears on resource form when storage not enabled,ckan,,ckan-backlog,defect,,assigned,2012-06-27T13:30:08Z,2012-09-03T09:09:43Z,"if the user tries to upload a file they will get ""Failed to get credentials for storage upload. Upload cannot proceed""
Maybe add a test for it this time, this bug has appeared and reappeared before",seanh
140,News section on front page,ckan,,ckan-backlog,enhancement,,new,2009-10-07T08:02:21Z,2010-02-08T10:32:39Z,"Have a news section (suggest as a sidebar item).
News section will link to latest 3/4 blog posts on CKAN from blog.okfn.org.
Details:
* Suggest pulling via rss or similar.
* Will want to cache this ...
Cost: 4h?",rgrp
253,Package relationships,ckan,,ckan-backlog,enhancement,,assigned,2010-02-22T16:05:21Z,2012-06-15T15:38:46Z,"= Overview =
Functionality to formally associate packages. We see a need for specific parent-child, inheriting or dependency relations. Not only should this help navigation between packages in the web interface, but it also provides a mechanism to automatically pull dependencies when downloading a data package, in a similar manner as we see in software package management.
= Examples =
1. There are 27 packages in data.gov.uk to do with the Data4NR's Health Poverty Index. There is currently no common link between these, unless you search for 'HPI' (which also brings up House Price Index), or look under tag 'health' (which also has 600 other results). There should be a link on each HPI package page to navigate to the other 'sibling' HPI packages, and to a 'root' package that has info about the set. This could be partially achieved using the existing tag or group concepts, but a more explicit/official/obvious marking of their relationship could be beneficial.
2. In ckan.net is freedict, a collection of translation dictionaries. You could make each dictionary a child package and use this system. But it would probably be better to make each dictionary a different resource in the same package. (There are other ideas to denote a resource as the data making up a 'portion' of package, or a 'whole' of the package, to help people downloading datasets in the software package style.)
3. OSM has had some Naptan data imported (bus stops), with special permission - i.e. a more liberal license. It would be useful to show this link on both OSM and Naptan packages in CKAN: OSM 'derives from' Naptan with a comment about the license change. I'm not sure this is useful to an automatic download or use of these datasets, but may aid exploration on the CKAN website and understanding the provenance of the bus stop data on it.
4. IPCC collection of data linked / mirrored. Not sure if there are useful relationships here?
5. Dracos gets postbox locations from crowd sourcing and OSM. We could say Dracos 'derives from' OSM.
See more examples discussed here: http://trac.ckan.org/ticket/253
= Implementation =
This is split into four tickets:
* Model: ticket:254
* Read in WUI: ticket:255
* Edit in WUI: ticket:256
* API: ticket:257
No need for write access to be provided API for the moment.
This ticket also encompasses ticket:169 (Package derivations) and ticket:176 (Package dependencies).",dread
277,Set some config options / settings in WUI (extension),ckan,,ckan-backlog,enhancement,zephod,assigned,2010-03-22T16:21:01Z,2011-10-10T11:45:21Z,"== Use case ==
As a ckan administrator I want to easily change options about the CKAN install.
== Implementation ==
=== Settings to be in DB ===
Suggested:
{{{
## Title of site (using in several places including templates and tag
ckan.site_title = CKAN
## Logo image to use (replaces site_title string on front page if defined)
ckan.site_logo = http://assets.okfn.org/p/ckan/img/ckan_logo_box.png
## Site tagline / description (used on front page)
ckan.site_description =
## Used in creating some absolute urls (such as rss feeds, css files) and
## dump filenames
ckan.site_url =
## Favicon (default is the CKAN software favicon)
ckan.favicon = http://assets.okfn.org/p/ckan/img/ckan.ico
## An 'id' for the site (using, for example, when creating entries in a common search index)
## If not specified derived from the site_url
# ckan.site_id = ckan.net
## API url to use (e.g. in AJAX callbacks)
## Enable if the API is at a different domain
# ckan.api_url = http://www.ckan.net
## html content to be inserted just before