{22} Trac tickets (2647 matches)
Results (2501 - 2600 of 2647)
Id | Type | Owner | Reporter | Milestone | Status | Resolution | Summary | Description | Posixtime | Modifiedtime | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
#2557 | enhancement | aron.carroll | aron.carroll | demo phase 1 | closed | fixed | Demo issues on the search dataset page |
|
1340035222000000 | 1340185609000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#2558 | enhancement | aron.carroll | aron.carroll | demo phase 1 | closed | fixed | Demo site add dataset has missing functionality |
|
1340035280000000 | 1340615257000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#2559 | enhancement | toby | aron.carroll | demo phase 2 | closed | fixed | Demo theme add resource has missing functionality |
|
1340035336000000 | 1342084940000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#2560 | enhancement | toby | aron.carroll | demo phase 2 | closed | fixed | Demo theme add metadata is missing functionality |
|
1340035384000000 | 1342084988000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#2561 | enhancement | aron.carroll | aron.carroll | demo phase 1 | closed | fixed | Demo theme edit dataset is missing functionality |
|
1340035457000000 | 1341497328000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#2562 | enhancement | johnmartin | aron.carroll | demo phase 5 | closed | invalid | Demo theme tag improvements |
Tags should be implemented in two sections.
|
1340035714000000 | 1352206599000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#2563 | enhancement | aron.carroll | aron.carroll | demo phase 1 | closed | fixed | Add font based icons to the demo theme |
Allowing them to be displayed in many sizes, colours and resolutions. |
1340035831000000 | 1341501320000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#2595 | enhancement | toby | aron.carroll | demo phase 2 | closed | fixed | Demo add dataset needs to remember which stages have been visited |
For example.
Expect Stage 1 to be "active", stage two to be "complete"
Expect Stage 2 to be "active", stage one and three to be "complete"
Expect Stage 1 to be "active", stage two and three to be "complete" |
1340642246000000 | 1342086346000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#2596 | enhancement | toby | aron.carroll | opendatasuite 1 | closed | fixed | Create demo extension |
Should have all supported extensions enabled, those that don't work should be disabled and ticketed. Also needs a customised homepage. |
1340642315000000 | 1345209485000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#2597 | enhancement | toby | aron.carroll | demo phase 1 | closed | fixed | Demo add dataset throws error if tags are empty |
Get error. URL: http://localhost:5000/dataset/new File '/Users/Aron/.virtualenvs/ckan/lib/python2.7/site-packages/weberror/evalexception.py', line 431 in respond app_iter = self.application(environ, detect_start_response) File '/Users/Aron/.virtualenvs/ckan/lib/python2.7/site-packages/webob/dec.py', line 147 in __call__ resp = self.call_func(req, *args, **self.kwargs) File '/Users/Aron/.virtualenvs/ckan/lib/python2.7/site-packages/webob/dec.py', line 208 in call_func return self.func(req, *args, **kwargs) File '/Users/Aron/.virtualenvs/ckan/lib/python2.7/site-packages/fanstatic/publisher.py', line 234 in __call__ return request.get_response(self.app) File '/Users/Aron/.virtualenvs/ckan/lib/python2.7/site-packages/webob/request.py', line 1053 in get_response application, catch_exc_info=False) File '/Users/Aron/.virtualenvs/ckan/lib/python2.7/site-packages/webob/request.py', line 1022 in call_application app_iter = application(self.environ, start_response) File '/Users/Aron/.virtualenvs/ckan/lib/python2.7/site-packages/webob/dec.py', line 147 in __call__ resp = self.call_func(req, *args, **self.kwargs) File '/Users/Aron/.virtualenvs/ckan/lib/python2.7/site-packages/webob/dec.py', line 208 in call_func return self.func(req, *args, **kwargs) File '/Users/Aron/.virtualenvs/ckan/lib/python2.7/site-packages/fanstatic/injector.py', line 52 in __call__ response = request.get_response(self.app) File '/Users/Aron/.virtualenvs/ckan/lib/python2.7/site-packages/webob/request.py', line 1053 in get_response application, catch_exc_info=False) File '/Users/Aron/.virtualenvs/ckan/lib/python2.7/site-packages/webob/request.py', line 1022 in call_application app_iter = application(self.environ, start_response) File '/Users/Aron/.virtualenvs/ckan/lib/python2.7/site-packages/beaker/middleware.py', line 73 in __call__ return self.app(environ, start_response) File '/Users/Aron/.virtualenvs/ckan/lib/python2.7/site-packages/beaker/middleware.py', line 152 in __call__ return self.wrap_app(environ, session_start_response) File '/Users/Aron/.virtualenvs/ckan/lib/python2.7/site-packages/routes/middleware.py', line 130 in __call__ response = self.app(environ, start_response) File '/Users/Aron/.virtualenvs/ckan/lib/python2.7/site-packages/pylons/wsgiapp.py', line 125 in __call__ response = self.dispatch(controller, environ, start_response) File '/Users/Aron/.virtualenvs/ckan/lib/python2.7/site-packages/pylons/wsgiapp.py', line 324 in dispatch return controller(environ, start_response) File '/Users/Aron/.virtualenvs/ckan/src/ckan/ckan/lib/base.py', line 258 in __call__ res = WSGIController.__call__(self, environ, start_response) File '/Users/Aron/.virtualenvs/ckan/lib/python2.7/site-packages/pylons/controllers/core.py', line 221 in __call__ response = self._dispatch_call() File '/Users/Aron/.virtualenvs/ckan/lib/python2.7/site-packages/pylons/controllers/core.py', line 172 in _dispatch_call response = self._inspect_call(func) File '/Users/Aron/.virtualenvs/ckan/lib/python2.7/site-packages/pylons/controllers/core.py', line 107 in _inspect_call result = self._perform_call(func, args) File '/Users/Aron/.virtualenvs/ckan/lib/python2.7/site-packages/pylons/controllers/core.py', line 60 in _perform_call return func(**args) File '/Users/Aron/.virtualenvs/ckan/src/ckan/ckan/controllers/package.py', line 422 in new return self._save_new(context) File '/Users/Aron/.virtualenvs/ckan/src/ckan/ckan/controllers/package.py', line 703 in _save_new return self.new(data_dict, errors, error_summary) File '/Users/Aron/.virtualenvs/ckan/src/ckan/ckan/controllers/package.py', line 430 in new data['tag_string'] = ', '.join(h.dict_list_reduce(c.pkg_dict['tags'], 'name')) TypeError: string indices must be integers, not str |
1340642399000000 | 1340644591000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#2599 | enhancement | johnmartin | aron.carroll | demo phase 4 | closed | fixed | Test in IE |
can we promote this to phase 3? |
1340717662000000 | 1346756230000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#2609 | enhancement | toby | aron.carroll | opendatasuite 1 | closed | fixed | Demo theme errors when creating a dataset without a resource |
Page errors. URL: http://localhost:5000/dataset/new_resource/asdasd File '/Users/Aron/.virtualenvs/ckan/lib/python2.7/site-packages/weberror/evalexception.py', line 431 in respond app_iter = self.application(environ, detect_start_response) File '/Users/Aron/.virtualenvs/ckan/lib/python2.7/site-packages/webob/dec.py', line 147 in __call__ resp = self.call_func(req, *args, **self.kwargs) File '/Users/Aron/.virtualenvs/ckan/lib/python2.7/site-packages/webob/dec.py', line 208 in call_func return self.func(req, *args, **kwargs) File '/Users/Aron/.virtualenvs/ckan/lib/python2.7/site-packages/fanstatic/publisher.py', line 234 in __call__ return request.get_response(self.app) File '/Users/Aron/.virtualenvs/ckan/lib/python2.7/site-packages/webob/request.py', line 1053 in get_response application, catch_exc_info=False) File '/Users/Aron/.virtualenvs/ckan/lib/python2.7/site-packages/webob/request.py', line 1022 in call_application app_iter = application(self.environ, start_response) File '/Users/Aron/.virtualenvs/ckan/lib/python2.7/site-packages/webob/dec.py', line 147 in __call__ resp = self.call_func(req, *args, **self.kwargs) File '/Users/Aron/.virtualenvs/ckan/lib/python2.7/site-packages/webob/dec.py', line 208 in call_func return self.func(req, *args, **kwargs) File '/Users/Aron/.virtualenvs/ckan/lib/python2.7/site-packages/fanstatic/injector.py', line 52 in __call__ response = request.get_response(self.app) File '/Users/Aron/.virtualenvs/ckan/lib/python2.7/site-packages/webob/request.py', line 1053 in get_response application, catch_exc_info=False) File '/Users/Aron/.virtualenvs/ckan/lib/python2.7/site-packages/webob/request.py', line 1022 in call_application app_iter = application(self.environ, start_response) File '/Users/Aron/.virtualenvs/ckan/lib/python2.7/site-packages/beaker/middleware.py', line 73 in __call__ return self.app(environ, start_response) File '/Users/Aron/.virtualenvs/ckan/lib/python2.7/site-packages/beaker/middleware.py', line 152 in __call__ return self.wrap_app(environ, session_start_response) File '/Users/Aron/.virtualenvs/ckan/lib/python2.7/site-packages/routes/middleware.py', line 130 in __call__ response = self.app(environ, start_response) File '/Users/Aron/.virtualenvs/ckan/lib/python2.7/site-packages/pylons/wsgiapp.py', line 125 in __call__ response = self.dispatch(controller, environ, start_response) File '/Users/Aron/.virtualenvs/ckan/lib/python2.7/site-packages/pylons/wsgiapp.py', line 324 in dispatch return controller(environ, start_response) File '/Users/Aron/.virtualenvs/ckan/src/ckan/ckan/lib/base.py', line 258 in __call__ res = WSGIController.__call__(self, environ, start_response) File '/Users/Aron/.virtualenvs/ckan/lib/python2.7/site-packages/pylons/controllers/core.py', line 221 in __call__ response = self._dispatch_call() File '/Users/Aron/.virtualenvs/ckan/lib/python2.7/site-packages/pylons/controllers/core.py', line 172 in _dispatch_call response = self._inspect_call(func) File '/Users/Aron/.virtualenvs/ckan/lib/python2.7/site-packages/pylons/controllers/core.py', line 107 in _inspect_call result = self._perform_call(func, args) File '/Users/Aron/.virtualenvs/ckan/lib/python2.7/site-packages/pylons/controllers/core.py', line 60 in _perform_call return func(**args) File '/Users/Aron/.virtualenvs/ckan/src/ckan/ckan/controllers/package.py', line 495 in new_resource get_action('resource_create')(context, data) File '/Users/Aron/.virtualenvs/ckan/src/ckan/ckan/logic/action/create.py', line 240 in resource_create raise ValidationError(errors, _error_summary(errors)) ValidationError: {u'URL': u'Missing value'} |
1340810211000000 | 1340900271000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#2616 | enhancement | johnmartin | aron.carroll | demo phase 5 | closed | invalid | Improve display of split stages in demo |
Currently stages of the same colour blur together, these could do with a nice divider. |
1340875108000000 | 1352206282000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#2617 | enhancement | aron.carroll | aron.carroll | demo phase 2 | closed | fixed | Move data preview into demo | 1340875192000000 | 1342088744000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#2620 | enhancement | toby | aron.carroll | demo phase 2 | closed | fixed | Pass a related item into the dataset tempate |
See the related sidebar box http://s031.okserver.org:2375/dataset/adur_district_spending If a package has related items the first (or a random) related item should be passed into the snippet. |
1340897809000000 | 1342074737000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#2631 | enhancement | johnmartin | aron.carroll | demo phase 5 | closed | fixed | Style activity stream in user profile | 1341826342000000 | 1352205778000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#2636 | enhancement | aron.carroll | aron.carroll | demo phase 2 | closed | duplicate | Style activity stream in user profile | 1341835166000000 | 1342090614000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#2637 | enhancement | aron.carroll | aron.carroll | demo phase 2 | closed | fixed | Submit search form when user changes sort order | 1341835218000000 | 1342617226000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#2643 | enhancement | aron.carroll | aron.carroll | demo phase 2 | closed | fixed | Demo homepage redesign |
Discussion: https://okfn.basecamphq.com/projects/9558659-demo-ckan-front-end/posts/61696765/comments |
1341848685000000 | 1342617247000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#2648 | enhancement | shevski | aron.carroll | demo phase 2 | closed | fixed | Add file upload to the demo site | 1341921081000000 | 1342714659000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#2653 | enhancement | toby | aron.carroll | demo phase 2 | closed | fixed | Requesting file upload authentication fails on demo |
Try: http://localhost:5000/api/storage/auth/form/photo-of-a-duck Gets: File '<string>', line 2 in auth_form File '/Users/Aron/.virtualenvs/ckan/src/ckan/ckan/lib/jsonp.py', line 26 in jsonpify data = func(*args, **kwargs) File '/Users/Aron/.virtualenvs/ckan/src/ckan/ckan/controllers/storage.py', line 407 in auth_form authorize(method, bucket, label, c.userobj, self.ofs) File '/Users/Aron/.virtualenvs/ckan/src/ckan/ckan/controllers/storage.py', line 200 in ofs StorageAPIController._ofs_impl = get_ofs() File '/Users/Aron/.virtualenvs/ckan/src/ckan/ckan/controllers/storage.py', line 71 in get_ofs storage_backend = config['ofs.impl'] File '/Users/Aron/.virtualenvs/ckan/lib/python2.7/site-packages/paste/registry.py', line 146 in __getitem__ return self._current_obj()[key] KeyError: 'ofs.impl' |
1341938467000000 | 1342005167000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#2658 | enhancement | johnmartin | aron.carroll | demo phase 5 | closed | invalid | On Demo change 'Groups' to 'Publishers' everywhere |
Can we do this as a localisation? |
1342008495000000 | 1352205894000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#2765 | enhancement | aron.carroll | aron.carroll | demo phase 3 | closed | fixed | Demo login error messages |
I'd suggest we add a generic "failed to login, invalid fields" in the error_summary block. Then more specific "this field is required" when a required field is left empty. So in general, provide an error dict |
1343317842000000 | 1343817858000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#2767 | enhancement | aron.carroll | aron.carroll | demo phase 3 | closed | fixed | Upgrade macro form.select to use tuples instead of dicts |
This keeps the intended order. |
1343319298000000 | 1343645517000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#2774 | enhancement | toby | aron.carroll | demo phase 3 | closed | fixed | Provide a method of passing localised strings into the JavaScript |
We need to be able to do the following:
The JavaScript? can then read this file on page load. |
1343661072000000 | 1344351626000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#2775 | enhancement | toby | aron.carroll | demo phase 4 | new | Add bin/less to paster serve command |
Ideally the ./bin/less command would be run when the server is started.
|
1343685686000000 | 1344543962000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#2785 | enhancement | johnmartin | aron.carroll | demo phase 5 | assigned | Allow resources to be re-ordered |
Not sure where this functionality should be added, possibly in one of the sidebar widgets when editing a resource? Ira, what are your thoughts? |
1343816523000000 | 1346235916000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#2787 | enhancement | toby | aron.carroll | demo phase 5 | closed | fixed | Ensure templates_legacy directory is loaded for extensions |
Currently the stats plugin has a template and templates_legacy directory. We need to ensure that the templates in templates_legacy are loaded. |
1343827782000000 | 1344543473000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#2799 | enhancement | toby | aron.carroll | demo phase 3 | closed | fixed | Translations for demo not picking up {% trans %} blocks |
Also they seem to be missing the odd _() block. Such in the new package form. |
1344243005000000 | 1344249253000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#2802 | enhancement | aron.carroll | aron.carroll | demo phase 3 | closed | fixed | Need to tweak the JSON formatting of the localisations |
This is what we need the JSON to look like. Taken from the Jed documentation (http://slexaxton.github.com/Jed/). { // The empty string key is used as the configuration // block for each domain "" : { // Domain name "domain" : "the_domain", // Language code "lang" : "en", // Plural form function for language "plural_forms" : "nplurals=2; plural=(n != 1);" }, // Other keys in a domain contain arrays as values // that map to the translations for that key. // Gettext suggests that you use english as your keys // in case the key isn't found, and it can just pass // the value directly through. // Note: by convention, the 0-index location of the translations // is never accessed. It's just a thing, I guess. "a key" : [ null, "the translation", "the plural translations", ... ], // The plural form string is converted into a function // and the value that's passed into the gettext call // is passed into the plural form function. It's result // (plus 1) is the index that the translation comes from. // We're using sprintf interpolation on our keys so we can // then sub in the _actual_ values into the result. "%d key" : [ null, "%d key", "%d keys" ], // Contexts are keys that are just prefixed with a context string // with a unicode \u0004 as the delimiter. // You can use it for anything. Usually it's just for being content aware // in some way (e.g. male vs. female, product vs. category) "context\u0004%d key": [ null, "context %d key", "context %d keys" ] } This looks like an appropriate python library to do the formatting. http://pypi.python.org/pypi/pojson/ but I'll leave to your discretion. Finally an API endpoint that returns the appropriate request would save us making requests to the i18n directory. /api/i18n/{locale} For example if the current url is http://localhost:5000/pl/dataset then the client would request: http://localhost:5000/api/i18n/pl This should return the Content-Type: application/json and a 200 with an appropriate JSON body (this can be the language requested or an appropriate fallback). I think that if the fallback is the default language (in most cases English) then we just return a 204 No Content to save data. |
1344248847000000 | 1344269446000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#2803 | enhancement | aron.carroll | aron.carroll | demo phase 3 | closed | fixed | Convert all JS translations to use keywords | 1344251817000000 | 1344256274000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#2831 | enhancement | aron.carroll | ckan 2.0 | new | Create a limited subset of markdown that's supported |
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.
Disallow
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 |
1344512467000000 | 1344512467000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#2833 | enhancement | aron.carroll | demo phase 5 | new | Load module templates before calling .initialize() |
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. } }); |
1344531939000000 | 1344531939000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#2834 | enhancement | aron.carroll | demo phase 4 | new | Defer all publish calls until all modules have been initialised |
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. |
1344532093000000 | 1344856692000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#2835 | enhancement | aron.carroll | demo phase 5 | new | Client module needs a template loading method |
Client#getTemplate(name, params, success, error); Where params, success and error are optional arguments. test/index.html already has an implementation called loadFixture(). |
1344532233000000 | 1344532233000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#2850 | enhancement | aron.carroll | demo phase 4 | new | Add JSON support for IE7 |
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: |
1344940692000000 | 1344940692000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#368 | defect | anonymous | closed | wontfix | 500 Server error when creating package |
I've just started writing the importer from cap.open.org.nz and was running an initial import of just the package name and titles. The packages were created however I received a 500 error in response: "publish: New Zealand Coastline (new-zealand-coastline)" opening connection to nz.ckan.net... opened <- "POST /api/rest/package HTTP/1.1\r\nContent-Type: application/x-www-form-urlencoded\r\nConnection: close\r\nAuthorization: 81179ade-fa4a-4632-9b89-3d0c98bfc8b8\r\nContent-Length: 64\r\nHost: nz.ckan.net\r\n\r\n" <- "{\"name\":\"new-zealand-coastline\",\"title\":\"New Zealand Coastline\"}" -> "HTTP/1.1 500 Internal Server Error\r\n" -> "Date: Tue, 20 Jul 2010 10:20:35 GMT\r\n" -> "Server: Apache/2.2.9 (Debian) mod_wsgi/2.5 Python/2.5.2\r\n" -> "Vary: Accept-Encoding\r\n" -> "Content-Type: text/html; charset=iso-8859-1\r\n" -> "Cache-Control: proxy-revalidate\r\n" -> "Content-Length: 640\r\n" -> "Connection: close\r\n" -> "\r\n" reading 640 bytes... -> "<!DOCTYPE HTML PUBLIC \"-IETFDTD HTML 2.0EN\">\n<html><head>\n<title>500 Internal Server Error</title>\n</head><body>\n<h1>Internal Server Error</h1>\n<p>The server encountered an internal error or\nmisconfiguration and was unable to complete\nyour request.</p>\n<p>Please contact the server administrator,\n [no address given] and inform them of the time the error occurred,\nand anything you might have done that may have\ncaused the error.</p>\n<p>More information about this error may be available\nin the server error log.</p>\n<hr>\n<address>Apache/2.2.9 (Debian) mod_wsgi/2.5 Python/2.5.2 Server at nz.ckan.net Port 80</address>\n</body></html>\n" read 640 bytes Conn close The server should not respond with a 500 error if the package was created. |
1279622462000000 | 1291831811000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#839 | enhancement | memespring | anonymous | ckan-v1.3-sprint-1 | closed | fixed | Package page redesign | 1291299579000000 | 1292239918000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1192 | task | annapowellsmith | annapowellsmith | ckan-sprint-2011-10-28 | closed | fixed | Convert CKAN Sphinx docs into admin/reference manual |
As part of the general documentation overhaul (ticket:1142) we (APS and RGRP) want to convert the current Sphinx docs into:
The current chapters of the Sphinx docs should be moved as follows:
|
1308324593000000 | 1312191462000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1064 | defect | amercader | closed | duplicate | Remove Workers from ckanext-queue |
The current implementation of Workers in ckanext-queue is broken. Basically the various consume / callback functions expect three arguments (routing_key, operation, payload) when they are in fact receiving only two of them (message_data, message). This is fairly easy to fix, but the question is if Workers add an extra complexity to use the messaging library directly. |
1301417891000000 | 1323169787000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1134 | CREP | amercader | ckan-backlog | new | CREP0003: Description and Configuration of Harvesters |
Proposer: Adrià Mercader AbstractThe 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:
The ProblemHarvester descriptionThe 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 configurationIn 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). SpecificationHarvester descriptionHarvesters will need to provide the following information so the UI form can be built:
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 configurationAs 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 wayHarvester descriptionThe 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 configurationThere 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 planDeliverablesRisks and mitigationsThe 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. ParticipantsAdrià Mercader to do it. ProgressNone yet. |
1305108868000000 | 1339774554000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1152 | enhancement | amercader | amercader | ckan-backlog | new | True support for generic CSW servers |
The CSW harvesters implemented at the moment were developed with the DGU project in mind, and they assume all remote CSW servers to implement the Gemini 2 specification. Gemini 2 is the profile defined in the UK for INSPIRE complying metadata, so obviously catalogs from other countries or non-INSPIRE complying ones won't be able to be harvested. The changes needed to support generic CSW servers (i.e. those implementing the ISO 19139 profile) are:
code). This probably involves issues discussed in the CREP 3 (ticket #1134)
List of CSW servers tested: |
1306141334000000 | 1313411822000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1160 | enhancement | amercader | amercader | pdeu-1 | closed | wontfix | Havest CSW servers on PDEU |
It could be interesting for the publicdata.eu project to add some CSW datasources. Thanks to the INSPIRE directive, there are quite a few national catalogs of geodata that could be worth harvesting. Work on this should include:
First point is being performed in this GDoc: https://spreadsheets.google.com/spreadsheet/ccc?key=0Atp3cZFjuIOAdDBVQWRINnlfN1d0b2lleHVEdjBSb2c&authkey=CNu4hsEB&hl=en_US#gid=0 |
1306407271000000 | 1309804038000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1161 | requirement | pudo | amercader | pdeu-1 | closed | duplicate | Build a simplified theme for PDEU |
We need to offer a strongly simplified version, read-only of CKAN under publicdata.eu, with a focus on its role as search engine instead of a data catalogue. This ticket relates to work on the PDEU theme only! |
1306407835000000 | 1306408026000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1162 | enhancement | amercader | amercader | pdeu-1 | closed | fixed | Define a common extra for storing the geographic extent |
We need a common extra across the different harvested sources that defines the extent of the data. We will have mainly national level catalogues, but also at a lower level (region, city). Relevant discussion: http://lists.okfn.org/pipermail/ckan-discuss/2011-May/001245.html |
1306408704000000 | 1308647187000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1164 | enhancement | amercader | amercader | pdeu-1 | closed | fixed | Cloropleth Map of European Data Availability for PDEU |
A nice map in the homepage showing the availability of data across Europe |
1306408824000000 | 1308647224000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1166 | enhancement | amercader | amercader | ckan-sprint-2011-10-10 | closed | fixed | Less stringent filters for displaying the WMS preview |
Right now, for the "View available WMS layers" link to be displayed, the package needs to have an "INSPIRE=True" extra, a "resource-type=service" extra and a resource of type "WMS". This is due to DGU (the project this was developed for) related reasons, but for a generic support, the resource type should probably be enough. (The repository for this is ckanext-spatial, but it's not on the list) |
1306422646000000 | 1317381932000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1173 | enhancement | amercader | amercader | pdeu-1 | closed | fixed | Offer a DCat representation for packages in the API |
/api/rest/package/foo.rdf should return a DCat representation of the package. To create it, we will use the functions in ckanext-rdf. |
1306939639000000 | 1307615271000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1253 | enhancement | amercader | amercader | ckan-sprint-2011-10-28 | closed | fixed | Authz refactor |
We agreed on a system that allows overriding the authz checks at a logic function level (e.g. package_create, user_show) and supports the old (current) authz system. |
1312199491000000 | 1313401367000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1272 | enhancement | amercader | ckan-sprint-2011-10-10 | closed | fixed | Store spatial extents provided in the package form |
Consolidate the extra spatial as the field for providing information about the geographic extent of the package. This will integrate automatically with the spatial search and give developers a single point to develop geospatial features. |
1313411787000000 | 1317381996000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1273 | requirement | amercader | ckan-backlog | new | Create docs for API v3 | 1313412083000000 | 1313412083000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1278 | enhancement | amercader | ckan-backlog | new | Refactor authorized_query calls |
There are some functions that still use the Auhtorizer().authorized_query method: ./ckan/controllers/authorization_group.py:24: query = ckan.authz.Authorizer().authorized_query(c.user, model.AuthorizationGroup) ./ckan/lib/base.py:237: groups = ckan.authz.Authorizer.authorized_query(c.user, model.Group, ./ckan/lib/search/sql.py:55: q = authz.Authorizer().authorized_query(username, model.Group) ./ckan/lib/search/sql.py:118: q = authz.Authorizer().authorized_query(self.options.get('username'), model.Package) ./ckan/logic/action/get.py:154: query = Authorizer().authorized_query(user, model.Group, model.Action.EDIT) ./ckan/tests/test_authz.py:158: q = self.authorizer.authorized_query(self.notadmin.name, model.Package) ./ckan/tests/test_authz.py:353: q = self.authorizer.authorized_query(self.notmember.name, model.Package) ./ckan/tests/test_authz.py:357: q = self.authorizer.authorized_query(self.member.name, model.Package) ./ckan/tests/functional/test_authorization_group.py:44: group_count = Authorizer.authorized_query(u'russianfan', model.AuthorizationGroup).count() |
1313415177000000 | 1313415177000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1279 | enhancement | ross | amercader | ckan-v1.8 | closed | duplicate | Refactor or deprecate Authorization Groups |
Authorization Groups are going to be deprecated in 1.8 It is still unclear how Authorization Groups fit in the new authz model, so they have been left out of the logic and auth refactoring (Tickets #1229 and #1253) |
1313415367000000 | 1338212028000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1301 | defect | amercader | amercader | ckan-sprint-2011-09-12 | closed | fixed | Give access to extensions from the old formalchemy controllers |
This was removed during the auth refactoring, but it's needed in the old controllers |
1314882888000000 | 1314893744000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1303 | defect | amercader | amercader | ckan-sprint-2011-09-12 | closed | fixed | User can not login again if he has edited his profile |
Only happens if the user does not update the password. Most probably introduced during #1229. |
1314889472000000 | 1314978842000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1304 | enhancement | amercader | amercader | ckan-sprint-2011-09-12 | closed | fixed | Show more descriptive error messages when sending emails |
Sending emails is failing in some cases, and the error message just says 'Could not send reset link'. |
1314893206000000 | 1314893749000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1305 | defect | nils.toedtmann | amercader | ckan-backlog | closed | fixed | SMTP config for thedatahub.org and IATI |
The email sending functionality (e.g for password reset) does not work on thedatahub.org and IATI (and probably some other instances) when using an address which is not a okfn.org one. Could not send reset link: SMTPRecipientsRefused({u'amercadero@…': (550, 'relay not permitted')},) As I said, adria.mercader@… works fine. The SMTP server used mail.okfn.org |
1314956657000000 | 1315317033000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1329 | defect | dread | amercader | ckan-sprint-2011-10-28 | closed | fixed | i18n poor in some templates - missing i18n tags |
Just a tip for developers regarding translations:
i18:msg attribute, otherwise the messages don't get extracted properly. Good: https://bitbucket.org/okfn/ckan/src/1996b0439e81/ckan/templates/home/about.html#cl-40 <p i18n:msg="">More about CKAN, and the background to its creation can be found in <a href="http://m.okfn.org/files/talks/opentech_20080705/">these slides</a>.</p> gives this: https://bitbucket.org/okfn/ckan/src/1996b0439e81/ckan/i18n/ca/LC_MESSAGES/ckan.po#cl-1238 <p class="hints"> <strong>Important:</strong> By submitting content, you agree to release your contributions under the <a href="http://opendatacommons.org/licenses/odbl/1.0/">Open Database License</a>. Please <strong>refrain</strong> from editing this page if you are <strong>not</strong> happy to do this. </p> gives this: https://bitbucket.org/okfn/ckan/src/1996b0439e81/ckan/i18n/ca/LC_MESSAGES/ckan.po#cl-1384 The message is split in different parts that not necessarily match the grammar or syntax of the translated language. |
1315824288000000 | 1317404566000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1333 | enhancement | amercader | amercader | ckan-sprint-2011-10-28 | closed | fixed | Move form converters to ckan core |
Functions like convert_to_extras and convert_from_extras will be widely used from extensions and should be on ckan core. |
1315909268000000 | 1316951285000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1334 | defect | amercader | amercader | ckan-sprint-2011-10-28 | closed | fixed | "AttributeError: 'NoneType' object has no attribute 'name'" exception when logging in |
On same cases this exception is thrown when logging in: File '/home/adria/dev/envs/iati/src/ckan/ckan/controllers/user.py', line 252 in logged_in user_dict = get_action('user_show')(context,data_dict) File '/home/adria/dev/envs/iati/src/ckan/ckan/logic/action/get.py', line 414 in user_show revision_dict = revision_show(context,{'id':revision.id}) File '/home/adria/dev/envs/iati/src/ckan/ckan/logic/action/get.py', line 332 in revision_show ref_package_by=ref_package_by) File '/home/adria/dev/envs/iati/src/ckan/ckan/model/__init__.py', line 317 in revision_as_dict for pkg in revision.packages] AttributeError: 'NoneType' object has no attribute 'name' |
1315909508000000 | 1319798961000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1337 | defect | amercader | amercader | ckan-sprint-2011-10-28 | closed | fixed | Group extras are JSON endoded in the REST API responses |
Instead of this: extras: { type: ""Primary source"" license_id: ""localauth-withrights"" publisher_frequency: ""2Pre\u00f1o \u20ac $ \u00e0dri\u00e0"" } we should return this: extras: { type: "Primary source", license_id: "localauth-withrights", publisher_frequency: "2Preño € $ àdrià", } |
1315924727000000 | 1316951259000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1338 | defect | amercader | amercader | ckan-sprint-2011-10-28 | closed | fixed | Exception when trying to use a custom form schema from an extension |
Both with the package and group controllers, when overriding the default _db_to_form_schema method (which does nothing) from an extension, you get an exception because the context is not passed to the validators. File '/home/adria/dev/envs/iati/src/ckan/ckan/controllers/group.py', line 140 in edit old_data, errors = validate(old_data, schema) File '/home/adria/dev/envs/iati/src/ckan/ckan/lib/navl/dictization_functions.py', line 215 in validate converted_data, errors = _validate(flattened, schema, context) File '/home/adria/dev/envs/iati/src/ckan/ckan/lib/navl/dictization_functions.py', line 270 in _validate convert(converter, key, converted_data, errors, context) File '/home/adria/dev/envs/iati/src/ckan/ckan/lib/navl/dictization_functions.py', line 178 in convert converter(key, converted_data, errors, context) File '/home/adria/dev/envs/iati/src/ckan/ckan/logic/validators.py', line 108 in group_name_validator model = context['model'] KeyError: 'model' |
1315925217000000 | 1317117738000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1342 | defect | johnglover | amercader | ckan-sprint-2011-10-10 | closed | fixed | Home controller does not capture SearchError exceptions |
If there is a problem with the SOLR connection,the home page just shows a 500 Server error, instead of a notice (the package controller shows a notice when visiting http://localhost:5000/dataset). Steps to reproduce:
|
1316001227000000 | 1318256532000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1352 | enhancement | amercader | ckan-backlog | new | Use logic functions instead of as_dict when indexing entities |
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) |
1316615397000000 | 1339774086000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1354 | enhancement | amercader | amercader | ckan-v1.5 | closed | wontfix | Pass the context object to plugins implementing the IPackageController and IGroupController |
Plugins implementing some IPackageController or IGroupController operations (i.e. read, create, edit, delete) may need the context used in the logic action. For instance, to access the Session that created a package to perform additional queries from the extension (In that case the main logic action will still perform the final commit). |
1316955680000000 | 1316970374000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1355 | defect | amercader | ckan-backlog | new | Package extras property does not include the newly created ones |
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. |
1317034126000000 | 1339774056000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1356 | enhancement | kindly | amercader | ckan-sprint-2011-10-10 | closed | fixed | Can not recreate a deleted extra |
If you delete an extra and later on change your mind, you can not recreate it with the same value (Different value works fine). |
1317034180000000 | 1318279617000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1375 | enhancement | amercader | amercader | ckan-sprint-2011-10-10 | closed | fixed | Define new package id before sending it to the IPackageController plugins |
When creating a package, the package_create logic function sends the newly created package object to all plugins implementing the IPackageController interface https://bitbucket.org/okfn/ckan/src/93194933ea75/ckan/logic/action/create.py#cl-64 At this point, the changes have not yet been commited and the id of the package is not set (It has a default value of make_uuid, which is set when commited). For this reason, plugins have no way of knowing the package id. E.g. the spatial query plugin needs to know this id to link the package extent to the actual package. One possible solution would be to set the package id in the data dict received by package_create (if it's not defined): from ckan.model.types import make_uuid if not 'id' in data or not data['id']: data['id'] = make_uuid() |
1317910441000000 | 1318260008000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1430 | defect | amercader | ckan-sprint-2011-11-07 | closed | fixed | Documents get mixed between SOLR cores |
On some occasions (apparently random), the documents indexed in a specific SOLR core get mixed with different site_ids. E.g: We look for all documents in the testing.iatiregistry.org core, faceted by site_id. We would expect all documents to have site_id = iati_testing, but some of them have site_id = iatiregistry.org <lst name="facet_fields"> <lst name="site_id"> <int name="iati_testing">265</int> <int name="iatiregistry.org">255</int> </lst> </lst> If we compare one of the records which disappeared from the "iati_testing" site_id in both the production and testing SOLR cores of the server, the records are exactly the same, including the indexed_ts property: Note that the response from the URLs shown may vary, as the testing site could have been reindexed. |
1320068076000000 | 1324033923000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1456 | enhancement | amercader | amercader | ckan-sprint-2011-11-21 | closed | fixed | Use resource description instead of name if both are present |
If a resource has both description and name the name is used. Descriptions are generally more, well, descriptive, so let's use those. |
1320862619000000 | 1324472178000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1470 | defect | dread | amercader | ckan-sprint-2011-11-21 | closed | fixed | Check user name in the profile form | 1321446143000000 | 1324473955000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1490 | enhancement | amercader | amercader | ckan-sprint-2011-12-05 | closed | fixed | Standardize output from package listings coming from the logic layer |
Right now, the two logic functions that return a list of packages (package_search [1] and group_packages_list [2])use custom functions to generate the output dict. That's suboptimal because:
In general only the functions present in lib/dictization/model_dictize.py should be used to build the output of a logic function, in that case package_dictize. If necessary, they can be modified to include missing properties, like on this particular case the "isopen" property, needed by the template renderer. [1] https://github.com/okfn/ckan/blob/master/ckan/logic/action/get.py#L685 [2] https://github.com/okfn/ckan/blob/master/ckan/logic/action/get.py#L442 |
1322225239000000 | 1324033557000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1498 | enhancement | amercader | amercader | ckan-sprint-2011-12-05 | closed | fixed | Support multiple SOLR schema versions |
At some point the SOLR schema used by CKAN will need to be changed and the changes won't be always backward compatible, so we need a mechanism to support instances that use older versions of the schema. This process will involve:
|
1322585264000000 | 1323165876000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1501 | defect | johnglover | amercader | ckan-sprint-2011-12-05 | closed | fixed | Pagination links broken |
Most of the different pagination links are broken and point to wrong locations. e.g:
http://test.ckan.net/group/bibliographic
http://test.ckan.net/revision This is most probably related with: |
1322646397000000 | 1322684411000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1516 | task | amercader | amercader | ckan-sprint-2011-12-19 | closed | fixed | Update SOLR schema after 1.5.1 release and set up multicore SOLR instances if needed |
CKAN 1.5.1 will introduce changes in the SOLR schema and functions to support multiple schema versions. Unfortunately the changes in the schema will be backwards incompatible so either both CKAN and SOLR are upgraded, or SOLR is configured as multicore, with one core for each schema. The solr cores would look like: http://<solr-server>/solr/schema-<version> Different scenarios:
These are the SOLR and CKAN instances that need to be updated (Please add any missing ones):
TODO: which SOLR server are using these instances?
|
1323108431000000 | 1323362689000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1533 | defect | rgrp | amercader | ckan-backlog | closed | wontfix | Make sure ckanext-wordpresser works on CKAN 1.5.1 |
Superceded by #2234 Super ticket: #1508 Etherpad: http://ckan.okfnpad.org/wordpresser The wordpresser extension does not work with ckan 1.5.1. The wordpress page is not loaded. Looks like this changeset may be involved https://github.com/okfn/ckanext-wordpresser/commit/0efa0649896a7339865f178a302be639ddc561e1 I think that even before that changeset, the page was shown without any margins. In any case, the extension seems to be too sensible to changes in the ckan layout so perhaps it should take into account the CKAN version and have a fixed set of xpaths and templates that work for each version |
1323277660000000 | 1338202676000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1540 | defect | amercader | amercader | ckan-sprint-2012-01-09 | closed | fixed | Search API returns an error if empty parameters are provided |
Both in 1.5.1b: http://thedatahub.org/api/search/dataset?groups=lodcloud&title= and 1.5.2a (current master): http://test.ckan.net/api/search/dataset?groups=lodcloud&title= Although the error message in 1.5.2a is more verbose: "Bad request - Bad search option: HTTP code=400, reason=org.apache.lucene.queryParser.ParseException?: Cannot parse 'groups:lodcloud title:': Encountered \"<EOF>\" at line 1, column 22. Was expecting one of: \"(\" ... \"*\" ... <QUOTED> ... <TERM> ... <PREFIXTERM> ... <WILDTERM> ... \"[\" ... \"{\" ... <NUMBER> ..." Some parameter validation before sending it to Solr should do the trick |
1323359388000000 | 1326060385000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1543 | defect | johnglover | amercader | ckan-sprint-2012-01-09 | closed | fixed | Pagination links in the dataset listings don't keep the current filters |
E.g. Pagination links on this page don't include groups=lodcloud http://thedatahub.org/dataset?groups=lodcloud Not sure if related to #1501 (probably not) |
1323442623000000 | 1324483367000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1545 | enhancement | amercader | ckan-sprint-2012-01-09 | closed | wontfix | Remove external asset dependencies |
CKAN is pulling a number of resources from external locations. This causes problems when connectivity is limited and you have to work locally. Maybe some of them cold be moved to CKAN source to avoid external requests. Quick search: ./ckan/templates/layout_base.html: <img src="http://assets.okfn.org/images/logo/okf_logo_white_and_green_tiny.png" id="footer-okf-logo" /> ./ckan/templates/layout_base.html: <a href="http://opendefinition.org/"><img alt="This Content and Data is Open" src="http://assets.okfn.org/images/ok_buttons/od_80x15_blue.png" style="border: none ; margin-bottom: -4px;"/></a> ./ckan/templates/package/resource_read.html: <img src="http://assets.okfn.org/images/ok_buttons/od_80x15_blue.png" alt="[Open Data]" /> ./ckan/templates/package/read.html: <img src="http://assets.okfn.org/images/ok_buttons/od_80x15_blue.png" alt="[Open Data]" /></a> ./ckan/templates/_util.html: <img src="http://assets.okfn.org/images/ok_buttons/od_80x15_blue.png" alt="[Open Data]" /> ./ckan/templates/_util.html: <img src="http://assets.okfn.org/images/ok_buttons/od_80x15_blue.png" alt="[Open Data]" /> ./ckan/public/scripts/vendor/ckanjs/1.0.0/ckanjs.js: this.$dialog.html('<h2>Loading results...</h2><img src="http://assets.okfn.org/images/icons/ajaxload-circle.gif" />'); ./ckan/public/scripts/vendor/ckanjs/1.0.0/ckanjs.js: self.setMessage('Uploading file ... <img src="http://assets.okfn.org/images/icons/ajaxload-circle.gif" class="spinner" />'); ./ckan/public/scripts/vendor/ckanjs/1.0.0/ckanjs.js: self.setMessage('Checking upload permissions ... <img src="http://assets.okfn.org/images/icons/ajaxload-circle.gif" class="spinner" />'); Binary file ./ckan/lib/app_globals.pyc matches ./ckan/lib/app_globals.py: 'http://assets.okfn.org/p/ckan/img/ckan.ico') ./ckan/config/deployment.ini_tmpl:ckan.favicon = http://assets.okfn.org/p/ckan/img/ckan.ico |
1323702635000000 | 1325260051000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1547 | enhancement | amercader | amercader | ckan-sprint-2012-01-23 | closed | fixed | Add search methods (before and after) to the IPackageController interface |
Time estimate: 1d Add a two search method to the IPackageController interface so extensions can:
def before_search(search_params): return search_params
def after_search(search_results, search_params): return search_results Please see this pad for implementation details: |
1323778996000000 | 1330084379000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1590 | enhancement | amercader | amercader | closed | fixed | Create customized feeds for the IATI Registry |
We need a way to track changes on the registry (datasets edited or updated), globally and on a per country/publisher/etc. basis. RSS and Atom feeds are really popular, and after closing #191 and #1498 crating them from the search results should be fairly easy. The following URLs are pretty self-explanatory: http://localhost:5000/feed/registry.rss http://localhost:5000/feed/country/AF.rss http://localhost:5000/feed/publisher/worldbank.rss http://localhost:5000/feed/organisation_type/10.rss As we need to implement custom wrappers for countries, publishers, etc, we might as well offer a fully customizable feed, e.g.: http://localhost:5000/feed/custom.rss?q=activity_count:[* TO 100] http://localhost:5000/feed/custom.rss?publishertype=primary_source Apart from the actual feeds, there will be a small amount of work at the template level to add the links to the suitable pages (and maybe a generic page showing all available feeds) |
1324486965000000 | 1326711608000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1592 | enhancement | amercader | amercader | ckan-sprint-2012-01-09 | closed | fixed | Add metadata_modified and metadata_created to package_dictize output |
The dict returned by package_dictize does not include metadata_modified and metadata_created. These are really useful properties, so it's worth having them on the standard package dict representation, which is used in several places, like at the template level. |
1324488909000000 | 1326304321000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1593 | enhancement | icmurray | amercader | ckan-sprint-2012-04-16 | closed | fixed | [super] Create feeds from search results |
Recent changes (see #191 and #1498) have made really easy to get search results ordered chronologically, and creating RSS or Atom feeds from them is relatively easy. Feeds are extremely popular and there are several tools for consuming them, so it would be a great way to allow users to follow datasets related with their topics of interest. Apart from the general feed with changes on the whole instance, other different "pre-set" feed endpoints could be implemented. The most obvious choices for custom feeds could be groups and tags: http://<ckan_server>/feed/group/{id}.{format:rss|atom} http://<ckan_server>/feed/tag/{id}.{format:rss|atom} These could be shown on the group/tag page, both on the <head> section, so browsers can autodiscover them, and on the UI, with a message like "Subscribe to this group/tag". Another powerful option is to have a custom feed builder that accepts the same parameters as the search page, so users can subscribe to whatever query they are interested on http://<ckan_server>/feed/custom.{format:rss|atom}?res_format=api%2Fsparql http://<ckan_server>/feed/custom.{format:rss|atom}?q=tags:animal* On this case a message "Subscribe to these search results" would appear. Note that a lot of work on this front needs to be done for the IATI registry project (see #1590) Other tickets related:
|
1324489115000000 | 1334566668000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1616 | defect | amercader | amercader | ckan-sprint-2012-04-02 | closed | fixed | Catch exceptions when rebuilding the search index |
Right now if an exception is found while reindexing, the whole process stops and the remaining datasets are left out of the index. The process should continue after logging the exception. If more than a certain number of exceptions occur in a row, the process should stop. |
1325844669000000 | 1332327635000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1641 | enhancement | amercader | amercader | ckan-sprint-2012-01-23 | closed | fixed | ckanext-archiver: Content-length header not reliable to check if resource has been modified |
The download task in ckanext-archiver performs a HEAD request on the resource URL and checks if the "Content-Type" and "Content-Length" headers differ from the values stored to see if the resource needs to be updated [1]. The "Content-Length" header, although widely used, is not mandatory and some servers don't provide it, e.g.: $ curl -I http://portfolio.theglobalfund.org/en/IATI/Activities?countryCode=AFG HTTP/1.1 200 OK Cache-Control: private Transfer-Encoding: chunked Content-Type: text/xml Vary: Accept-Encoding Server: Microsoft-IIS/7.5 Set-Cookie: ASP.NET_SessionId=3qhqekddgmre0kmk5cynq0sy; path=/; HttpOnly X-AspNetMvc-Version: 3.0 content-disposition: attachment; filename=AFG_IATI_12012012.xml X-AspNet-Version: 4.0.30319 X-Powered-By: ASP.NET Date: Thu, 12 Jan 2012 12:36:43 GMT Also worth noting that requests, the python library that uses ckanext-archiver, sets an "Accept-Encoding: gzip" header by default, which depending on the configuration of the remote web server, may prevent the "Content-Length" server from being sent, e.g.: $ curl -H "Accept-Encoding: gzip" -I http://iatistandard.org/published-temp/adb-activities.xml HTTP/1.1 200 OK Date: Thu, 12 Jan 2012 12:12:46 GMT Server: Apache Last-Modified: Mon, 28 Nov 2011 15:55:35 GMT Accept-Ranges: bytes Vary: Accept-Encoding Content-Encoding: gzip Content-Type: application/xml curl -I http://iatistandard.org/published-temp/adb-activities.xml HTTP/1.1 200 OK Date: Thu, 12 Jan 2012 11:56:23 GMT Server: Apache Last-Modified: Mon, 28 Nov 2011 15:55:35 GMT Accept-Ranges: bytes Content-Length: 2686720 Vary: Accept-Encoding Content-Type: application/xml All this can lead to some resources never getting updated, and of course the size property of the resource not being set. As we need to download the resource anyway, it would be better to check if the real length of the data has been modified (and store it). [1] https://github.com/okfn/ckanext-archiver/blob/0a189262dca4ab5b286fb6a02b4ab8a201f639f3/ckanext/archiver/tasks.py#L72 |
1326376420000000 | 1326376777000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1654 | task | amercader | amercader | ckan-v1.7 | closed | fixed | [super] Update Publicdata.eu to the latest CKAN stable version |
Tasks include: |
1326710647000000 | 1338203166000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1655 | task | amercader | amercader | ckan-sprint-2012-01-23 | closed | fixed | Setup issues on s025 (Publicdata.eu) |
Time estimate: 2d
Also it may be worth setting up a test instance ( on s023 ?) |
1326710844000000 | 1327312857000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1677 | enhancement | amercader | ckan-v1.6 | closed | duplicate | Make synchronous search the default behaviour |
Right now you need to explicitly load the synchronous_search plugin in your ini file, when this is probably the behaviour that all users expect by default. We could keep a config flag to deactivate it, but synchronous search should be the default behaviour. |
1326807604000000 | 1326807655000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1678 | enhancement | amercader | amercader | ckan-v1.8 | closed | fixed | Make synchronous search the default behaviour |
Right now you need to explicitly load the synchronous_search plugin in your ini file, when this is probably the behaviour that all users expect by default. We could keep a config flag to deactivate it, but synchronous search should be the default behaviour. |
1326807604000000 | 1341405749000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1726 | enhancement | amercader | amercader | ckan-sprint-2012-02-06 | closed | fixed | Update harvesting model |
We need:
The extension should check on startup if the db needs updating and run the necessary scripts. |
1328007127000000 | 1328523253000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1727 | enhancement | amercader | amercader | ckan-sprint-2012-02-06 | closed | fixed | Add "current" property to harvest objects |
Right now is quite difficult to get the most current version of a package via the harvest objects, and the queries involved are prone to errors. A new "current" field will be added which will identify unequivocally the most recent harvested object. Unfortunately this will involve some major changes:
|
1328007254000000 | 1328523641000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1728 | enhancement | amercader | amercader | ckan-sprint-2012-02-20 | closed | fixed | Update UKLP harvesters |
Three small changes:
These two changes will require manual update of the database.
if last_harvested_object.metadata_modified_date is None \ or last_harvested_object.metadata_modified_date < self.obj.metadata_modified_date \ or self.force_import \ or last_harvested_object.metadata_modified_date == self.obj.metadata_modified_date and last_harvested_object.source.active is False: |
1328007610000000 | 1329498181000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1731 | enhancement | amercader | amercader | ckan-sprint-2012-03-19 | closed | fixed | Publisher support for harvesting |
Estimate: 4-5d Only sysadmins can manage harvest sources right now, we need to allow publishers to handle their own sources. We need to decide if there will be two different profiles on ckanext-harvest, the current one with only sysadmins allowed to manage the harvesting and a new one supporting publishers (ckan core can be configured to not use the publisher model) Tasks include:
(Talk with Ross about the specific functions to use)
|
1328007919000000 | 1332152540000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1733 | enhancement | amercader | amercader | ckan-sprint-2012-02-20 | closed | fixed | Delete (inactivate) harvest sources |
Right now harvest sources can be inactivated (only via the cli), but we need to make sure:
Also for deleted packages:
Done in #1425. Not sure if the button is only shown to sysadmins.
|
1328008287000000 | 1329754689000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1734 | enhancement | amercader | amercader | ckan-v1.7 | closed | fixed | [super] Updates on harvesting for UKLP |
Some changes are needed in ckanext-harvest to support the new piece of work in the UKLP harvesters, mainly related to the deletion of existing sources.
At some point we also want to support a publisher model for the harvesting:
|
1328008474000000 | 1332167315000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1813 | task | amercader | amercader | ckan-sprint-2012-03-05 | closed | fixed | Upadate ckanext-pdeu to work with CKAN 1.6 |
Tasks include: Estimate 4d
|
1329757128000000 | 1330102557000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1814 | enhancement | amercader | amercader | ckan-sprint-2012-03-19 | closed | fixed | Check publicadata.eu harvesters |
Estimate 2d Once ckanext-pdeu is running on CKAN 1.6, upgrade ckanext-harvest to be able to update the CKAN harvesters (default tags and extras). Also check non-CKAN harvesters (specially scrappers) to see if they are still working. Make a list of current harvesters with status and potential ones. |
1329757408000000 | 1332152596000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1815 | task | amercader | amercader | ckan-future | new | Reenable Sparql endpoint on publicdata.eu |
Estimate: ? The 4store Sparql endpoint has been down for a long time. It needs to be reenabled and we need to check that the necessary informtion is pushed when creating /editing a dataset. |
1329757723000000 | 1338204641000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1816 | enhancement | amercader | amercader | ckan-sprint-2012-03-19 | closed | fixed | Update ckanext-apps to work with CKAN 1.5.1 - 1.6 |
Estimate [2-3d] If possible, it should work with both 1.5.1 and 1.6. Needed for PDEU, also at some point for IATI |
1329757864000000 | 1331302835000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1818 | enhancement | amercader | amercader | ckan-future | new | Spatial metadata editor |
Estimate 2.5d Right now users need to manually enter a geojson value in the 'spatial' extra field in order to define a geometry for a dataset. We need a map widget on the edit form that allows users to draw the geometry on top of a map. This will be based on the draw functions offered by OpenLayers? [1], [2]. Things to take into account:
[1] http://openlayers.org/dev/examples/draw-feature.html [2] http://openlayers.org/dev/examples/modify-feature.html |
1329763941000000 | 1338203195000000 |