{22} Trac tickets (2647 matches)
Results (2201 - 2300 of 2647)
Id | Type | Owner | Reporter | Milestone | Status | Resolution | Summary | Description | Posixtime | Modifiedtime | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
#1067 | enhancement | dread | dread | ckan-v1.4-sprint-5 | closed | fixed | CLI for loading/dumping complete databases |
Use 'db dump' and 'db load' for 'pg_dump' and 'psql -f' of a database. Use pylons config to find out database options. |
1301645463000000 | 1302186503000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1068 | defect | dread | dread | ckan-v1.4-sprint-5 | closed | fixed | metadata_modified problem |
This test has been failing since the clocks changed: ====================================================================== FAIL: ckan.tests.models.test_package.TestPackageRevisions.test_02_metadata_created_and_modified ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/dread/hgroot/pyenv-ckan2/lib/python2.6/site-packages/nose-0.11.3-py2.6.egg/nose/case.py", line 186, in runTest self.test(*self.arg) File "/home/dread/hgroot/ckan2/ckan/tests/models/test_package.py", line 283, in test_02_metadata_created_and_modified assert out == exp, (out, exp) AssertionError: (datetime.datetime(2011, 4, 1, 10, 45, 50, 875509), datetime.datetime(2011, 4, 1, 9, 45, 50, 875509)) ---------------------------------------------------------------------- |
1301652085000000 | 1302109505000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1071 | defect | dread | dread | ckan-v1.4-sprint-5 | closed | fixed | Package history API moved to /api/rest/package/revisions |
api/rest/package_history is not RESTful or follow API naming conventions. Therefore move it to /api/rest/package/revisions Also, API docs incomplete. |
1301937882000000 | 1301943180000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1072 | enhancement | dread | dread | ckan-v1.4-sprint-5 | closed | fixed | Add filters to authztool |
It takes several minutes to print the 'rights' on DGU, which is annoying when you only want to grep for a few lines. Much quicker than grepping is to filter in the query. |
1302106311000000 | 1302106474000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1073 | enhancement | dread | dread | ckan-v1.4-sprint-5 | closed | fixed | Search index checker |
Tool that checks which packages have not been indexed. Required for DGU: https://trac.dataco.coi.gov.uk/projects/datagov/ticket/940 |
1302185444000000 | 1302185825000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1089 | enhancement | dread | dread | ckan-v1.4-sprint-6 | closed | fixed | Check for "--ckan" when running nosetests |
(because if you forget, you get difficult to understand errors, and more than one person has tripped up on this) |
1302631189000000 | 1302631733000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1090 | defect | dread | dread | ckan-v1.4-sprint-6 | closed | fixed | Visitor can't create packages on new CKAN install |
Default visitor roles in default config is reader, not anon_editor. Problem caused by changes in #1066 (released in 1.3.3) New installs will be affected, although simple to just increase permissions when the installer realises a visitor can't create packages. The solution to the config getting out of sync with the code like this is to not have the default_roles in the config - refer to the code in the configuration instructions. |
1302635219000000 | 1302635699000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1093 | defect | dread | dread | ckan-v1.4-sprint-6 | closed | fixed | 500 errors on GET to api/rest/licenses |
CKAN gets its license list from a license service, which can be a local file, but is often the http://licenses.opendefinition.org/2.0/ckan_original server. This server is currently flakey, but I think we only request the list on start up. The problem is we query it much more often than required. It is queried for every request to api/rest/licenses, and we are returning lots of 500 errors when the license server is timing out. |
1302862261000000 | 1302865470000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1097 | enhancement | dread | dread | ckan-v1.4-sprint-6 | closed | fixed | Sidebar hideable |
The web interface has a sidebar (#primary) which should be hidden in some pages. This is for QA extension and useful for package new and edit pages. Must be compatible with DGU theme. |
1303293416000000 | 1303293476000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1098 | task | dread | dread | ckan-v1.4-sprint-6 | closed | fixed | --ckan-migration tests not initialised correctly |
Only tests with failing --ckan-migration fail, due to authz not being initialised. |
1303377336000000 | 1303406017000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1100 | defect | dread | ckan-v1.4-sprint-6 | closed | fixed | Get buildbot running on ckan branches |
Need some changes to pip-requirements files in release branches. |
1303385267000000 | 1303406103000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1112 | enhancement | dread | dread | ckan-v1.4-sprint-7 | closed | fixed | Allow searching for all packages |
GET api/search/package?q= returns all packages. This is so you can filter them e.g. by openness, which is not currently possible. |
1304007852000000 | 1304358643000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1114 | enhancement | dread | dread | ckan-v1.4-sprint-7 | closed | fixed | CLI for viewing search index of a package |
To see what lexemes are generated for debug purposes. |
1304078353000000 | 1304085484000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1116 | defect | dread | dread | ckan-v1.4-sprint-7 | closed | fixed | api search loses boolean q options |
filter_by_openness and filter_by_downloadable options don't work when specified as URI parameters. (They do work in qjson parameters) |
1304086823000000 | 1304358664000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1121 | enhancement | dread | closed | wontfix | JSON extras appear in package edit form mangled |
It is possible to use the CKAN API to insert JSON format data into package extra values, but this data is displayed in the package edit form. Example: Package http://ckan.net/package/hbz_unioncatalog in the API the extra value as a list: "extras": {"publishingInstitution": ["http://lobid.org/organisation/DE-605", "http://lobid.org/organisation/DE-290"... yet when you edit the package it loses all the quotes and brackets: http://ckan.net/package/edit/hbz_unioncatalog {{{http://lobid.org/organisation/DE-605http://lobid.org/organisation/DE-290... }}} so when you save the package, the list is mangled into a bad string. |
1304367504000000 | 1307358426000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1122 | enhancement | pudo | dread | closed | wontfix | JSON Extra data not searchable |
It is possible to use the CKAN API to insert JSON format data into package extra values, but this data is not found on searching. Full text from Pascal: we encountered a Problem concerning accessing Arrays/Lists. curl -XGET 'http://ckan.net/api/rest/package/hbz_unioncatalog' will get you amongst others: "extras": {"publishingInstitution": "[u'http://lobid.org/organisation/DE-605', u'http://lobid.org/organisation/DE-290', u'http://lobid.org/organisation/DE-38M', u'http://lobid.org/organisation/DE-98', u'http://lobid.org/organisation/DE-38', u'http://lobid.org/organisation/DE-Kn41', u'http://lobid.org/organisation/DE-82', u'http://lobid.org/organisation/DE-107', u'http://lobid.org/organisation/DE-929', u'http://lobid.org/organisation/DE-Zw1', u'http://lobid.org/organisation/DE-832']"} but if I try to query this: wget 'http://ckan.net/api/search/package?q=lobid&publishingInstitution="http://lobid.org/organisation/DE-605"' I get only two packages, among the package "hbz_unioncatalog" is missing. (These two packages have only one value for "publishingInstitution"). The "extra/publishingInstitution"-Array was uploaded through a "curl -XPUT ... "extras": { "publishingInstitution":[ "http://lobid.org/organisation/DE-605", "http://lobid.org/organisation/DE-290", "http://lobid.org/organisation/DE-38M", "http://lobid.org/organisation/DE-98", "http://lobid.org/organisation/DE-38", "http://lobid.org/organisation/DE-Kn41", "http://lobid.org/organisation/DE-82", "http://lobid.org/organisation/DE-107", "http://lobid.org/organisation/DE-929", "http://lobid.org/organisation/DE-Zw1", "http://lobid.org/organisation/DE-832" ] }, ... |
1304367510000000 | 1306747714000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1126 | enhancement | dread | dread | ckan-v1.4-sprint-7 | closed | fixed | Exceptions arising from error page |
I'm not completely clear what the use case is for loading the error page in this way, but somehow original_request is None and that creates an unnecessary exception with the logic refactor. http://ckan.net/error/document?__cache=39020485 ... Module ckan.controllers.error:29 in document << original_response = request.environ.get('pylons.original_response') # Bypass error template for API operations. if original_request.path.startswith('/api'): return original_response.body # Otherwise, decorate original response with error template. >> if original_request.path.startswith('/api'): AttributeError: 'NoneType' object has no attribute 'path' |
1304586683000000 | 1304587078000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1128 | task | dread | dread | ckan-sprint-2011-10-28 | closed | fixed | Upload Scotland gov data |
Upload to ckan.net: https://sites.google.com/site/scotlandsdata/ |
1304712293000000 | 1310568028000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1131 | defect | dread | dread | ckan-v1.4-sprint-7 | closed | fixed | Search param validation exception not caught |
Example request: http://nl.ckan.net/api/2/search/package?q=delft&order_by=&offset=&limit=&tags= Gives 500 error: <type 'exceptions.ValueError'>: invalid literal for int() with base 10: '' |
1304942023000000 | 1305537897000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1140 | defect | dread | ckan-v1.5 | closed | fixed | Adding the package to the group is not search indexed |
To reproduce:
|
1305718290000000 | 1312537257000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1143 | enhancement | dread | dread | ckan-v1.5-sprint-2 | closed | fixed | Improve stats page |
|
1305734836000000 | 1307024681000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1168 | enhancement | thejimmyg | dread | ckan-backlog | assigned | Test system for deb packaging |
Get buildbot to:
|
1306441994000000 | 1330990423000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1169 | enhancement | dread | dread | ckan-v1.5-sprint-2 | closed | fixed | Link to csv/json dumps on ckan.net | 1306749768000000 | 1306754833000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1170 | defect | dread | dread | ckan-v1.5-sprint-2 | closed | fixed | Production deployment docs out of date |
Need to cover pip-requirements.txt on different branches in the doc/deployment.rst. Also could do with tidying up upgrade.txt into this document too. |
1306864171000000 | 1306864422000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1171 | enhancement | mark.wainwright | dread | ckan 2.0 | assigned | Citation instructions on dataset and resource view pages |
Some sort of citation helper. Something small on the dataset and resource page that would show how to cite. wwaites: Some related thoughts on this from opb: http://homepages.inf.ed.ac.uk/opb/papers/ssdbm2006.pdf timclicks: I'm looking at Dataverse for the first time[0]. It seems very popular in the social sciences. I noticed that there is a recommended citation for each dataset. For example, [1] is has this one: "Targeted Input Programme (TIP) 2000-01", http://hdl.handle.net/1902.1/SSC-MWI-TIP2000-01-M1 V1 [Version]" ImplementationAdd a small box at bottom of dataset / resource page (or in sidebar on dataset page) with title "Cite this" with contents like: %title. %author. Retrieved %date. %site_title. For resource: %title = %dataset_title. %resource_name. Could also add export to ref managers (e.g. to bibtex) but that is for later. |
1306920799000000 | 1347358705000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1176 | defect | thejimmyg | dread | ckan-sprint-2011-10-28 | closed | fixed | unicode_body exception |
We seem to occasionally get this exception on ckan.net. User agents causing this include:
Module ckan.controllers.error:32 in document << return original_response.body # Otherwise, decorate original response with error template. c.content = literal(original_response.unicode_body) or cgi.escape(request.GET.get('message', '')) c.prefix=request.environ.get('SCRIPT_NAME', ''), c.code=cgi.escape(request.GET.get('code', str(original_response.status_int))), >> c.content = literal(original_response.unicode_body) or cgi.escape(request.GET.get('message', '')) AttributeError: 'NoneType' object has no attribute 'unicode_body' |
1307351562000000 | 1314273012000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1180 | defect | dread | dread | ckan-v1.5-sprint-3 | closed | fixed | Links in markdown can be badly formed |
User can insert bad anchor tags into the User-About and Package-Notes fields and when you view them (web interface) it causes a 500 error. Need to improve filtering for anchors in markdown. <a href="http://xxxsex.com>nasty/website Also check this related exception: Module ckan.controllers.user:59 in read << c.is_myself = user.name == c.user c.api_key = user.apikey c.about_formatted = self._format_about(user.about) revisions_q = model.Session.query(model.Revision ).filter_by(author=user.name) >> c.about_formatted = self._format_about(user.about) Module ckan.controllers.user:167 in _format_about << def _format_about(self, about): about_formatted = ckan.misc.MarkdownFormat().to_html(about) return genshi.HTML(about_formatted) def _get_form_password(self): >> return genshi.HTML(about_formatted) WebApp Error: <class 'genshi.input.ParseError'>: junk characters in start tag: u'\u201dhttp://www.settingu': line 1, column 3 |
1307469037000000 | 1307544223000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1181 | defect | dread | dread | closed | fixed | Link spam vulnerability in Notes and User-About fields |
When viewing a user and a package, the about/notes fields contain Markdown, which may have links. These should have rel="nofollow" to discourage link spam. |
1307523160000000 | 1307532816000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1186 | enhancement | dread | closed | fixed | Password reset facility |
You can register a user with password and (optional) email address. But if you forget the password you can't then log in again. We need a password reset facility that sends and email with a new password. |
1308142766000000 | 1310556519000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1187 | enhancement | dread | dread | ckan-v1.5-sprint-3 | closed | fixed | Stop spam users with links in the 'about' field |
When you edit a user, you should be stopped from putting links in the 'about' field, because this is a common tactic by spammers. |
1308142999000000 | 1308143605000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1191 | defect | dread | dread | ckan-v1.5-sprint-3 | closed | fixed | Unicode in user password gives 500 error on user registration |
Create/register a user with a unicode character in the password. It creates the user, but the redirect to the user page doesn't work and results in 500 error. |
1308312895000000 | 1308650930000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1194 | defect | dread | closed | fixed | "Welcome back" message for newly registered user |
|
1308563392000000 | 1317053688000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1195 | defect | rgrp | dread | ckan-sprint-2011-10-28 | closed | fixed | Storage extension to handle incorrect routes better |
We've seen exceptions caused by people getting the file storage link wrong, adding a slash to the end. e.g. http://ckan.net/storage/f/file/e696d857-e997-41c8-be08-408697168ca8/ We should aim to handle all requests better than causing exception. 404 (or even 302 in this case) is better than 500. |
1308576769000000 | 1311964374000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1196 | defect | dread | dread | ckan-v1.5-sprint-3 | closed | fixed | Markdown logging ignores config settings |
Markdown produces Debug logging, even when the pylons logging config is set to level of Info or Warning. This clogs up the logfile. |
1308743476000000 | 1308743857000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1198 | enhancement | dread | ckan-backlog | new | Publisher hierarchy |
'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:
(This feature deprecates authorization groups) |
1308820592000000 | 1339774200000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1205 | defect | kindly | dread | closed | fixed | db upgrade problem on cz.ckan.net |
When upgrading database for cz.ckan.net (psql.okfn.org/cz.okfn.org) an error occurred (see below). cz.ckan.net has been running on eu3 and this updrade was part of moving it to eu19, with a more recent version of ckan. In the meantime I've reverted the db to the old version (pre-upgrade). cz.ckan.net is not working properly until this is fixed. okfn@eu19:~$ paster --plugin ckan db upgrade --config=/etc/ckan/cz/cz.ini /usr/lib/pymodules/python2.6/ckan_deps/sqlalchemy/engine/url.py:105: SADeprecationWarning: The SQLAlchemy PostgreSQL dialect has been renamed from 'postgres' to 'postgresql'. The new URL format is postgresql[+driver]://<user>:<pass>@<host>/<dbname> module = __import__('sqlalchemy.dialects.%s' % (dialect, )).dialects 2011-06-29 09:07:41,294 INFO [migrate.versioning.api] 28 -> 29... /usr/lib/pymodules/python2.6/ckan_deps/sqlalchemy/engine/reflection.py:46: SAWarning: Skipped unsupported reflection of expression-based index idx_pkg_lname ret = fn(self, con, *args, **kw) /usr/lib/pymodules/python2.6/ckan_deps/sqlalchemy/engine/reflection.py:46: SAWarning: Skipped unsupported reflection of expression-based index idx_pkg_slname ret = fn(self, con, *args, **kw) /usr/lib/pymodules/python2.6/ckan_deps/sqlalchemy/engine/reflection.py:46: SAWarning: Skipped unsupported reflection of expression-based index idx_pkg_suname ret = fn(self, con, *args, **kw) /usr/lib/pymodules/python2.6/ckan_deps/sqlalchemy/engine/reflection.py:46: SAWarning: Skipped unsupported reflection of expression-based index idx_pkg_uname ret = fn(self, con, *args, **kw) Traceback (most recent call last): File "/usr/bin/paster", line 18, in <module> command.run() File "/usr/lib/pymodules/python2.6/paste/script/command.py", line 84, in run invoke(command, command_name, options, args[1:]) File "/usr/lib/pymodules/python2.6/paste/script/command.py", line 123, in invoke exit_code = runner.run(args) File "/usr/lib/pymodules/python2.6/paste/script/command.py", line 218, in run result = self.command() File "/usr/lib/pymodules/python2.6/ckan/lib/cli.py", line 84, in command model.repo.upgrade_db() File "/usr/lib/pymodules/python2.6/ckan/model/__init__.py", line 163, in upgrade_db mig.upgrade(self.metadata.bind, self.migrate_repository, version=version) File "/usr/lib/pymodules/python2.6/ckan_deps/migrate/versioning/api.py", line 185, in upgrade return _migrate(url, repository, version, upgrade=True, err=err, **opts) File "<string>", line 2, in _migrate File "/usr/lib/pymodules/python2.6/ckan_deps/migrate/versioning/util/__init__.py", line 160, in with_engine return f(*a, **kw) File "/usr/lib/pymodules/python2.6/ckan_deps/migrate/versioning/api.py", line 364, in _migrate schema.runchange(ver, change, changeset.step) File "/usr/lib/pymodules/python2.6/ckan_deps/migrate/versioning/schema.py", line 83, in runchange change.run(self.engine, step) File "/usr/lib/pymodules/python2.6/ckan_deps/migrate/versioning/script/py.py", line 140, in run script_func(engine) File "/usr/lib/pymodules/python2.6/ckan/migration/versions/029_version_groups.py", line 152, in upgrade migrate_engine.execute(q) File "/usr/lib/pymodules/python2.6/ckan_deps/sqlalchemy/engine/base.py", line 1788, in execute return connection.execute(statement, *multiparams, **params) File "/usr/lib/pymodules/python2.6/ckan_deps/sqlalchemy/engine/base.py", line 1191, in execute params) File "/usr/lib/pymodules/python2.6/ckan_deps/sqlalchemy/engine/base.py", line 1271, in _execute_clauseelement return self.__execute_context(context) File "/usr/lib/pymodules/python2.6/ckan_deps/sqlalchemy/engine/base.py", line 1302, in __execute_context context.parameters[0], context=context) File "/usr/lib/pymodules/python2.6/ckan_deps/sqlalchemy/engine/base.py", line 1401, in _cursor_execute context) File "/usr/lib/pymodules/python2.6/ckan_deps/sqlalchemy/engine/base.py", line 1394, in _cursor_execute context) File "/usr/lib/pymodules/python2.6/ckan_deps/sqlalchemy/engine/default.py", line 299, in do_execute cursor.execute(statement, parameters) sqlalchemy.exc.IntegrityError: (IntegrityError) insert or update on table "package_group_revision" violates foreign key constraint "package_group_revision_continuity_id_fkey" DETAIL: Key (continuity_id)=(7f373978-40a0-4848-bdc9-018ad213aa0b) is not present in table "package_group". 'INSERT INTO package_group_revision (id, package_id, group_id, state, revision_id, continuity_id) VALUES (%(id)s, %(package_id)s, %(group_id)s, %(state)s, %(revision_id)s, %(continuity_id)s)' {'state': u'active', 'package_id': u'14d76e9e-028c-49c1-955b-ef30d4abb970', 'continuity_id': u'7f373978-40a0-4848-bdc9-018ad213aa0b', 'revision_id': u'24a11f58-2ff9-46f3-b113-0bf7f0baf254', 'group_id': u'4b832199-b8e3-4989-9b5d-de8dd6322612', 'id': u'7a3863bd-3054-40c8-bb3d-68b73096c108'} |
1309339700000000 | 1310568631000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1206 | defect | wwaites | dread | closed | fixed | "Content-Type json" header scuppers package POST |
Compare these two requests to create a package: curl http://test.ckan.net/api/rest/package -d '{name:"test"}' -H 'Content-Type: application/json' -H 'X-CKAN-API-KEY: tester' curl http://test.ckan.net/api/rest/package -d '{name:"test"}' -H 'X-CKAN-API-KEY: tester' The second one gets the payload through (ckan log): Retrieving request params: UnicodeMultiDict([('{name:"test"}', u'')]) But the first one causes a ServerError? because the payload (name:"test") doesn't make it to request.POST or request.params: Retrieving request params: UnicodeMultiDict([]) The only difference is the "ContentType?: application/json" header, which seems a reasonable thing to include. Javascript lib backbone.js (for example) inserts this automatically. So why does this header cause the payload to not get through to the request object? |
1309344348000000 | 1309450216000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1207 | enhancement | dread | dread | closed | fixed | ckanclient.package_entity_get should raise more specific exception |
When package does not exist in ckan catalogue, ckanclient.package_entity_get should raise more specific exception, such as CkanNotFoundError? instead of generic CkanApiError?. |
1309515582000000 | 1311325343000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1210 | defect | dread | dread | ckan-v1.5-sprint-4 | closed | fixed | POST application/json error handling with newer WebOb |
WebOb? from v1.0.7 has some interesting new behaviour with reading request data for different Content-Types:
Example: Module ckan.controllers.api:206 in create << log.debug('create: %s' % (context)) try: request_data = self._get_request_data() except ValueError, inst: response.status_int = 400 >> request_data = self._get_request_data() Module ckan.lib.base:149 in _get_request_data << cls.log.debug('Retrieving request params: %r' % request.params) cls.log.debug('Retrieving request POST: %r' % request.POST) cls.log.debug('Retrieving request POST body: %r' % request.body) if request.POST: try: >> cls.log.debug('Retrieving request POST body: %r' % request.body) Module paste.registry:137 in __getattr__ << def __getattr__(self, attr): return getattr(self._current_obj(), attr) def __setattr__(self, attr, value): >> return getattr(self._current_obj(), attr) Module webob.request:470 in _body__get << Return the content of the request body. """ self.make_body_seekable() # we need this to have content_length r = self.body_file.read(self.content_length) self.body_file.seek(0) >> self.make_body_seekable() # we need this to have content_length Module webob.request:697 in make_body_seekable << self.body_file_raw.seek(0) else: self.copy_body() >> self.copy_body() Module webob.request:714 in copy_body << self.body = self.body_file_raw.read(length) elif self.is_body_readable: self.body = self.body_file_raw.read() self._copy_body_tempfile() else: >> self.body = self.body_file_raw.read() Module webob.request:1190 in read << def read(self, size=-1): body = self._get_body() if size < 0: v = body[self.position:] >> body = self._get_body() Module webob.request:1207 in _get_body << self._body = _encode_multipart(self.vars, self.content_type) else: assert 0, ('Bad content type: %r' % self.content_type) return self._body >> assert 0, ('Bad content type: %r' % self.content_type) AssertionError: Bad content type: '; charset=utf-8' |
1309949451000000 | 1309974781000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1214 | defect | dread | dread | closed | worksforme | API improvements (following javascript use) |
Notes on the CKAN API from Aron:
|
1309975222000000 | 1314029628000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1215 | defect | dread | closed | fixed | Edit Resources table - removing all rows prevents adding them again |
I'm not sure if this was reported earlier, but I have found a minor bug in the "Add new package" form. As far as I can see this bug exists in v1.3.2 and also in v1.4.1a (that runs on ckan.net). This is a problem with adding new resources in "Resources" section. To reproduce the bug do the following:
The simplest solution to this bug will be to hide the "Remove this row" link if there is only one row. |
1310133224000000 | 1310385485000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1217 | defect | dread | dread | ckan-sprint-2011-11-07 | closed | invalid | Diff exception |
Exception raised doing this particular diff. ... Module ckan.controllers.revision:142 in diff << if c.diff_entity == 'package': c.pkg = model.Package.by_name(id) diff = c.pkg.diff(c.revision_to, c.revision_from) elif c.diff_entity == 'group': c.group = model.Group.by_name(id) >> diff = c.pkg.diff(c.revision_to, c.revision_from) Module ckan.model.package:449 in diff << display_id = to_obj_rev.tag.name elif obj_class.__name__ == 'PackageExtra': display_id = to_obj_rev.key else: display_id = related_obj_id[:4] >> display_id = to_obj_rev.key AttributeError: 'NoneType' object has no attribute 'key' Seems to be to do with this particular extra key: [<PackageExtraRevision id=ba1f3b3e-f61f-4924-bae0-ec3dd2163ae4 package_id=febe4da9-5874-4411-a7da-b497fdebf739 key=namespace value=http://www.sudoc.fr/ state=active revision_id=5ec8e730-c73d-4f1c-989b-2e015eb3d315 continuity_id=ba1f3b3e-f61f-4924-bae0-ec3dd2163ae4 expired_id=None revision_timestamp=2011-07-08 13:48:11.027260 expired_timestamp=9999-12-31 00:00:00 current=True>] Is it because it was created between the from_revision and to_revision? |
1310375498000000 | 1320663277000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1221 | defect | dread | dread | ckan-sprint-2011-10-28 | closed | fixed | Password reset tidy up |
|
1310475661000000 | 1310556607000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1222 | defect | dread | dread | ckan-sprint-2011-10-28 | closed | fixed | Mailer has no tests | 1310479136000000 | 1310556618000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1225 | enhancement | dread | dread | ckan-sprint-2011-10-28 | closed | fixed | Tool for mass tag changes |
Using ckanapi |
1310642161000000 | 1310642407000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1226 | defect | dread | closed | worksforme | Genshi stream exception |
IndexError? exception in genshi.filters.i18n keeps popping up daily. e.g. ... Module ckan.controllers.authorization_group:28 in index << items_per_page=20 ) return render('authorization_group/index.html') def read(self, id): >> return render('authorization_group/index.html') Module ckan.lib.base:74 in render << return cached_template(template_name, render_template, cache_key=cache_key, cache_type=cache_type, cache_expire=cache_expire) #, ns_options=('method'), method=method) >> cache_type=cache_type, cache_expire=cache_expire) Module pylons.templating:249 in cached_template << return content else: return render_func() >> return render_func() Module ckan.lib.base:63 in render_template << stream = item.filter(stream) return literal(stream.render(method=method, encoding=None)) if 'Pragma' in response.headers: >> return literal(stream.render(method=method, 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:339 in __call__ << for filter_ in self.filters: stream = filter_(stream) for kind, data, pos in stream: cached = cache_get((kind, data)) if cached is not None: >> for kind, data, pos in stream: Module genshi.output:670 in __call__ << _gen_prefix = _gen_prefix().next for kind, data, pos in stream: output = cache_get((kind, data)) if output is not None: >> for kind, data, pos in stream: Module genshi.output:771 in __call__ << push_text = textbuf.append pop_text = textbuf.pop for kind, data, pos in chain(stream, [(None, None, None)]): if kind is TEXT: >> for kind, data, pos in chain(stream, [(None, None, None)]): Module genshi.output:586 in __call__ << def __call__(self, stream): prev = (None, None, None) for ev in stream: if prev[0] is START: if ev[0] is END: >> for ev 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 ckanext.googleanalytics.plugin:62 in download_adder << (downloaded %s times)</span>''' count = None for mark, (kind, data, pos) in stream: if mark and kind == START: href = data[1].get('href') >> for mark, (kind, data, pos) in stream: Module genshi.filters.transform:714 in __call__ << stream = iter(stream) next = stream.next for mark, event in stream: if mark is None: yield mark, event >> for mark, event in stream: Module genshi.filters.transform:682 in _mark << def _mark(self, stream): for event in stream: yield OUTSIDE, event >> for event in stream: Module genshi.core:288 in _ensure << # unchanged yield event for event in stream: yield event >> for event in stream: Module genshi.filters.transform:686 in _unmark << def _unmark(self, stream): for mark, event in stream: kind = event[0] if not (kind is None or kind is ATTR or kind is BREAK): >> for mark, event in stream: Module genshi.filters.transform:1175 in __call__ << """ callable_value = hasattr(self.value, '__call__') for mark, (kind, data, pos) in stream: if mark is ENTER: if callable_value: >> for mark, (kind, data, pos) in stream: Module genshi.filters.transform:714 in __call__ << stream = iter(stream) next = stream.next for mark, event in stream: if mark is None: yield mark, event >> for mark, event in stream: Module genshi.filters.transform:682 in _mark << def _mark(self, stream): for event in stream: yield OUTSIDE, event >> for event in stream: Module genshi.core:288 in _ensure << # unchanged yield event for event in stream: yield event >> for event in stream: Module genshi.filters.transform:686 in _unmark << def _unmark(self, stream): for mark, event in stream: kind = event[0] if not (kind is None or kind is ATTR or kind is BREAK): >> for mark, event in stream: Module genshi.filters.transform:1145 in __call__ << :param stream: The marked event stream to filter """ for mark, event in stream: yield mark, event if mark is ENTER: >> for mark, event in stream: Module genshi.filters.transform:714 in __call__ << stream = iter(stream) next = stream.next for mark, event in stream: if mark is None: yield mark, event >> for mark, event in stream: Module genshi.filters.transform:682 in _mark << def _mark(self, stream): for event in stream: yield OUTSIDE, event >> for event in stream: Module genshi.template.base:618 in _include << tmpl = self.loader.load(href, relative_to=event[2][0], cls=cls or self.__class__) for event in tmpl.generate(ctxt, **vars): yield event except TemplateNotFound: >> for event in tmpl.generate(ctxt, **vars): Module genshi.template.base:618 in _include << tmpl = self.loader.load(href, relative_to=event[2][0], cls=cls or self.__class__) for event in tmpl.generate(ctxt, **vars): yield event except TemplateNotFound: >> for event in tmpl.generate(ctxt, **vars): Module genshi.template.base:618 in _include << tmpl = self.loader.load(href, relative_to=event[2][0], cls=cls or self.__class__) for event in tmpl.generate(ctxt, **vars): yield event except TemplateNotFound: >> for event in tmpl.generate(ctxt, **vars): 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.markup:378 in _match << for event in self._match(self._flatten(template, ctxt, **vars), ctxt, start=idx + 1, **vars): yield event >> ctxt, start=idx + 1, **vars): Module genshi.template.markup:327 in _match << break for event in stream: # We (currently) only care about start and end events for matching >> for event in stream: Module genshi.template.base:545 in _flatten << while 1: for kind, data, pos in stream: if kind is START and data[1]: >> for kind, data, pos in stream: Module genshi.filters.i18n:177 in _generate << msgbuf.append(*previous) previous = None for event in msgbuf.translate(gettext(msgbuf.format())): yield event if previous: >> for event in msgbuf.translate(gettext(msgbuf.format())): Module genshi.filters.i18n:1029 in translate << ) parts = parse_msg(string) parts_counter = {} for order, string in parts: >> parts = parse_msg(string) Module genshi.filters.i18n:1143 in parse_msg << if string: parts.append((stack[-1], string)) return parts >> parts.append((stack[-1], string)) IndexError: list index out of range |
1311008861000000 | 1314029434000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1228 | enhancement | dread | dread | ckan-sprint-2011-10-28 | closed | fixed | Display OpenID login errors |
When there are errors when logging into OpenID, these don't get displayed. You just get the login screen again. |
1311086562000000 | 1311325161000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1234 | enhancement | dread | dread | ckan-sprint-2011-10-28 | closed | fixed | Setting locale error conditions handled badly |
Needs tests for error conditions for bad locale and redirect parameters. |
1311179871000000 | 1311183328000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1236 | enhancement | dread | dread | ckan-sprint-2011-11-07 | closed | fixed | View a package at a given revision |
As a user I want to view a package at a given revision:
|
1311269333000000 | 1330019788000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1238 | defect | kindly | dread | ckan-sprint-2011-10-28 | closed | invalid | Viewing a package @date misses non-PackageRevisions |
There's a problem with getting old versions of packages using @date. The query looks for the PackageRevision? related to the date, but ignores TagRevisions? etc. So for example if you compare this table: http://ckan.net/package/history/osm with this view: http://ckan.net/package/osm%402010-11-30%2000%3A21%3A49.627830 you actually see the 2010-01-13 11:13 revision - the wrong revision. |
1311351303000000 | 1311759784000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1244 | enhancement | dread | assigned | Notes field carriage-returns converted to CRLF |
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? AnalysisDisplaying the package: the Markdown processor respects both EOLs when displaying the field, putting each line in a <p> tag. Creating the package edit form: placed into <textfield>. Browser displaying package edit form: <textfield> 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. |
1311689456000000 | 1340191253000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1247 | task | rgrp | dread | ckan-sprint-2011-10-28 | closed | fixed | Put docs on ReadTheDocs |
Put docs on ReadTheDocs? instead of eu13. |
1311941948000000 | 1311955185000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1248 | defect | dread | dread | ckan-sprint-2011-11-07 | closed | fixed | License exception |
Exception received on test.ckan.net at 10.12 on 29/7/11 http://test.ckan.net/package?__cache=2759373&page=4 Module pylons.controllers.core:60 in _perform_call << """Hide the traceback for everything above this method""" __traceback_hide__ = 'before_and_this' return func(**args) def _inspect_call(self, func): >> return func(**args) Module ckan.controllers.package:153 in search << } query = get.package_search(context,data_dict) c.page = h.Page( >> query = get.package_search(context,data_dict) Module ckan.logic.action.get:514 in package_search << for package in query.results: result_dict = table_dictize(package, context) result_dict = _extend_package_dict(result_dict,context) results.append(result_dict) >> result_dict = _extend_package_dict(result_dict,context) Module ckan.logic.action.get:537 in _extend_package_dict << license_id = package_dict['license_id'] if license_id: isopen = model.Package.get_license_register()[license_id].isopen() package_dict['isopen'] = isopen else: >> isopen = model.Package.get_license_register()[license_id].isopen() Module ckan.model.license:59 in __getitem__ << return default else: raise KeyError, "License not found: %s" % key def get(self, key, default=None): >> raise KeyError, "License not found: %s" % key KeyError: u'License not found: None' and a similar one: http://test.ckan.net/tag/barbecue Module pylons.wsgiapp:324 in dispatch << if log_debug: log.debug("Calling controller class with WSGI interface") return controller(environ, start_response) def load_test_env(self, environ): >> return controller(environ, start_response) Module ckan.lib.base:118 in __call__ << # available in environ['pylons.routes_dict'] try: return WSGIController.__call__(self, environ, start_response) finally: model.Session.remove() >> return WSGIController.__call__(self, environ, start_response) Module pylons.controllers.core:221 in __call__ << return response(environ, self.start_response) response = self._dispatch_call() if not start_response_called: self.start_response = start_response >> response = self._dispatch_call() Module pylons.controllers.core:172 in _dispatch_call << req.environ['pylons.action_method'] = func response = self._inspect_call(func) else: if log_debug: >> response = self._inspect_call(func) Module pylons.controllers.core:107 in _inspect_call << func.__name__, args) try: result = self._perform_call(func, args) except HTTPException, httpe: if log_debug: >> result = self._perform_call(func, args) Module pylons.controllers.core:60 in _perform_call << """Hide the traceback for everything above this method""" __traceback_hide__ = 'before_and_this' return func(**args) def _inspect_call(self, func): >> return func(**args) Module ckan.controllers.tag:2 in read Module ckan.lib.cache:167 in wrapper << log = __import__("logging").getLogger("proxy_cache") def wrapper(func, *args, **kwargs): result = func(*args, **kwargs) pylons = get_pylons(args) >> result = func(*args, **kwargs) Module ckan.controllers.tag:64 in read << data_dict = {'id':id} try: c.tag = get.tag_show(context,data_dict) except NotFound: abort(404, _('Tag not found')) >> c.tag = get.tag_show(context,data_dict) Module ckan.logic.action.get:341 in tag_show << extended_packages = [] for package in tag_dict['packages']: extended_packages.append(_extend_package_dict(package,context)) tag_dict['packages'] = extended_packages >> extended_packages.append(_extend_package_dict(package,context)) Module ckan.logic.action.get:537 in _extend_package_dict << license_id = package_dict['license_id'] if license_id: isopen = model.Package.get_license_register()[license_id].isopen() package_dict['isopen'] = isopen else: >> isopen = model.Package.get_license_register()[license_id].isopen() Module ckan.model.license:59 in __getitem__ << return default else: raise KeyError, "License not found: %s" % key def get(self, key, default=None): >> raise KeyError, "License not found: %s" % key KeyError: u'License not found: CreativeCommonsAttributionCCBY25' |
1311954136000000 | 1319797763000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1254 | task | dread | dread | ckan-sprint-2011-10-28 | closed | fixed | Feature sheet |
Compose a feature list for CKAN. Use the existing Feature Matrix. Basic explanation of terms. For use by customers. |
1312211925000000 | 1313401629000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1257 | enhancement | dread | ckan-backlog | new | Anti-Spam tools |
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:
Systems to consider:
General thoughts:
|
1312283565000000 | 1339774129000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1263 | enhancement | dread | dread | closed | fixed | Bad name for logic action in API causes Exception |
A bad action name: e.g. curl http://test.ckan.net/api/action/user_showaa -d '{}' causes 500 response. Occurs only on 1.4.3 beta. |
1312479020000000 | 1314029279000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1265 | defect | dread | dread | ckan-sprint-2011-10-28 | closed | fixed | user/edit error conditions cause exceptions |
We get exceptions on these occasions:
These are a problem only on 1.4.3b. Introduced in #1229 - merge of branch feature-1229-db-out-of-controllers |
1312565788000000 | 1312566052000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1266 | defect | dread | dread | ckan-sprint-2011-10-28 | closed | fixed | Timestamps without microseconds causing exception |
I'm not sure why some timestamps are missing microseconds in the ckan.net data, but plenty seem to. This causes this exception when viewing the package rss feed: URL: http://ckan.net/package/history/sfk_publishing?format=atom&days=7 In Module ckan.lib.helpers:227 in date_str_to_datetime WebApp Error: <type 'exceptions.ValueError'>: time data '2008-04-13T20:40:20' does not match format '%Y-%m-%dT%H:%M:%S.%f' Only seen with ckan 1.4.3b |
1312794831000000 | 1312797477000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1267 | defect | dread | dread | closed | fixed | Random exception: cannot set the body to a unicode value |
Occasionally see this problem when producing an error page. Here's an example WebApp Error: <type 'exceptions.TypeError'>: You cannot set the body to a unicode value without a charset URL: http://at.ckan.net/authorizationgroup/new Module weberror.errormiddleware:162 in __call__ << __traceback_supplement__ = Supplement, self, environ sr_checker = ResponseStartChecker(start_response) app_iter = self.application(environ, sr_checker) return self.make_catching_iter(app_iter, environ, sr_checker) except: >> app_iter = self.application(environ, sr_checker) Module beaker.middleware:73 in __call__ << self.cache_manager) environ[self.environ_key] = self.cache_manager return self.app(environ, start_response) >> return self.app(environ, start_response) Module beaker.middleware:152 in __call__ << headers.append(('Set-cookie', cookie)) return start_response(status, headers, exc_info) return self.wrap_app(environ, session_start_response) def _get_session(self): >> return self.wrap_app(environ, session_start_response) Module routes.middleware:130 in __call__ << environ['SCRIPT_NAME'] = environ['SCRIPT_NAME'][:-1] response = self.app(environ, start_response) # Wrapped in try as in rare cases the attribute will be gone already >> response = self.app(environ, start_response) Module pylons.wsgiapp:125 in __call__ << controller = self.resolve(environ, start_response) response = self.dispatch(controller, environ, start_response) if 'paste.testing_variables' in environ and hasattr(response, >> response = self.dispatch(controller, environ, start_response) Module pylons.wsgiapp:324 in dispatch << if log_debug: log.debug("Calling controller class with WSGI interface") return controller(environ, start_response) def load_test_env(self, environ): >> return controller(environ, start_response) Module ckan.lib.base:117 in __call__ << # available in environ['pylons.routes_dict'] try: return WSGIController.__call__(self, environ, start_response) finally: model.Session.remove() >> return WSGIController.__call__(self, environ, start_response) Module pylons.controllers.core:284 in __call__ << if log_debug: log.debug("Calling Response object to return WSGI data") return response(environ, self.start_response) if log_debug: >> return response(environ, self.start_response) Module webob.exc:248 in __call__ << return [] if not self.body and not self.empty_body: return self.generate_response(environ, start_response) return Response.__call__(self, environ, start_response) >> return self.generate_response(environ, start_response) Module webob.exc:239 in generate_response << status=self.status, headerlist=headerlist, content_type=content_type ) return resp(environ, start_response) >> content_type=content_type Module webob.response:94 in __init__ << if charset is None: raise TypeError( "You cannot set the body to a unicode value without a charset") body = body.encode(charset) self._body = body >> "You cannot set the body to a unicode value without a charset") TypeError: You cannot set the body to a unicode value without a charset |
1312889084000000 | 1312897724000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1270 | defect | dread | dread | ckan-sprint-2011-10-28 | closed | fixed | Default site www.ckan.net is a redirect and loses POSTs |
The default site was www.ckan.net, which had an Apache 301 redirect to ckan.net, but the problem was urllib was not rePOSTing stuff. This affected search parameters: In [1]: import ckanclient In [2]: c = ckanclient.CkanClient() In [3]: c2 = ckanclient.CkanClient('http://ckan.net/api') In [4]: c.package_search('', search_options={'groups':'openspending'}) Out[4]: {u'count': 2102, u'results': <generator object _result_generator at 0x10168b1e0>} In [5]: c2.package_search('', search_options={'groups':'openspending'}) Out[5]: {u'count': 29, u'results': <generator object _result_generator at 0x10168b410>} Thanks to borior for finding this and raising it. |
1312911847000000 | 1312912188000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1283 | enhancement | dread | dread | ckan-backlog | closed | fixed | Deleted packages shouldn't be searchable or browsable |
A package in deleted state doesn't show to general users, but admins DO see them. The idea is that they can resurrect them if they want. But now we have the trash can that lists deleted packages. So we don't want admins to see the deleted packages anywhere else. (But an admin should still be able to READ and EDIT a deleted package, so if he clicks on it in the trash list he can see it to decide whether to resurrect and actually be able to change its state.) Same in the Web interface and API. This ticket ties in with #948 highlighting a package being deleted (when viewing or editing) and follows on from the introduction of the trash can #1076. |
1314112481000000 | 1330083933000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1285 | enhancement | dread | ckan-future | assigned | Errors cause emails |
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. |
1314116944000000 | 1338206151000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1287 | enhancement | thejimmyg | dread | ckan-backlog | assigned | NAVL validation errors - Junk fields should be listed explicitly |
When you create a package, but specify a key that is not allowed (e.g. 'relationships') then you get error message: {"__junk": ["The input field __junk was not expected."]} It should mention the actual key which is not expected. e.g. {"relationships": ["The input field 'relationships' was not expected."]} Kindly said that James' version of NAVL was better in this respect, so this might be best solved by moving to that. |
1314203102000000 | 1330990459000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1288 | defect | dread | ckan-backlog | new | Package edit/creation can't include 'relationships' field |
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. OptionsIdeally, 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. |
1314203695000000 | 1339774098000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1289 | CREP | dread | ckan-backlog | closed | wontfix | Remove 'relationships' |
AbstractPackage Relationships have not taken off in the 18 months we've had them in the API. There are some issues with them and we need to spend more time improving them or consider getting rid of them. The ProblemOriginal use cases are expressed here: #253 Here are comments about how we could handle these specific examples better:
3&5. derived resource - better to have some sort of resource relationship perhaps?
Outstanding issues needing serious effort to fix:
SpecificationRemove relationships from model, API, tests, Web UI. Data migration to remove from db. Why do it this wayGetting frustrated having problems with the code, when it's not used much. Often asked about what it's for, but rarely used. Seems an overly complicated design. Backwards Compatibilityn/a Implementation planDeliverablesSee Specification Risks and mitigationsRisk: a customer suddenly wants this, and the new ways to relate resources are not in place yet. Mitigation: discuss this decision thoroughly to make sure we are confident the use cases are not important. Discuss with team, ckan-discuss and specifically the LOD people who have some related packages on thedatahub.org. ParticipantsDavid Read ProgressNot yet. |
1314206502000000 | 1317315211000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1290 | enhancement | dread | dread | ckan-backlog | closed | fixed | Better error when blank database |
When installing CKAN, when doing "paster serve development.ini", lots of users encounter the error for every request: ProgrammingError: (ProgrammingError) relation "user" does not exist This is because the database tables have not been created - they have forgotten or missed the "paster db init" step. Can we provide a better error to say that the database is not initialised yet? Implementation options
|
1314264255000000 | 1314270894000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1292 | enhancement | dread | dread | ckan-sprint-2011-11-07 | closed | fixed | Internationalization improvements |
|
1314303314000000 | 1320145732000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1308 | defect | shevski | dread | closed | fixed | 'create package' user case failure |
On the CKAN home page there is no suggestion that you can add or register a dataset. The 'Register a dataset' option has been removed at some point! (only visible to users that have registered - why would they do that when the benefits aren't described?) |
1315219500000000 | 1323174312000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1310 | defect | dread | dread | ckan-sprint-2011-09-12 | closed | fixed | API GET of a revision that has been approved causes exception |
e.g. this particular revision on ckan.net: http://ckan.net/api/rest/revision/9601fbcb-03a7-4ebc-981d-5aa16df4852c (most others have not been approved) Causes 500 error. |
1315234899000000 | 1315820419000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1313 | enhancement | zephod | dread | closed | duplicate | Tweaks to captcha configuration |
Awesome to have the captcha implementation and running on thedatahub.org! Here are some further suggestions concerning the config options, before this goes into a release:
I'm not sure why - might be something to do with the maintenance on the server, but worth double checking, since we don't want exceptions, say if one or other config variable is not defined. |
1315395185000000 | 1317076432000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1314 | enhancement | dread | ckan-backlog | assigned | ckanclient search - generator improvements |
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). |
1315395410000000 | 1340191233000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1315 | enhancement | dread | dread | ckan-sprint-2011-11-07 | closed | fixed | Document /api/action |
We need some documentation for the /api/action. Even though it's beta and subject to change it would be good to have a guide. |
1315396722000000 | 1320173768000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1316 | defect | kindly | dread | closed | fixed | /api/action uncaught exception if missing necessary parameter |
curl http://ckan.net/api/action/package_show -d '{"name": "uk-quango-data"}' This gives 500 error due to KeyError? (it looked for the 'id' param), rather than 400. |
1315397224000000 | 1338193724000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1317 | defect | dread | ckan-backlog | assigned | password reset - improve user search |
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: <User name=irina fullname=Irina [email protected] ] and <User name=shevski fullname=Ira email=> (I think) Maybe need to choose which field it searches? |
1315415539000000 | 1340191221000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1318 | defect | dread | dread | ckan-sprint-2011-10-28 | closed | fixed | 'Register user' doesn't log you in |
When you register a user, it doesn't seem to be logged in properly straight away. Top-right it invites you to "log in" and "register". Also the "create package" menu option doesn't appear. Going to /user/me sends you to login page. If you then login, then all these things are corrected. |
1315415783000000 | 1315569362000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1319 | enhancement | rgrp | dread | ckan-sprint-2011-10-24 | closed | fixed | Require an email address on User registration |
Superticket: #1343 This avoids difficulties when they forget their password.
|
1315415932000000 | 1324036947000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1321 | defect | dread | dread | ckan-sprint-2011-10-24 | closed | fixed | Flash message deferred |
When you reset a password, the flash message saying "check your email" sometimes doesn't display on the next page. You then click on the link in your email and it displays on that page (i.e. too late). Seen this on thedatahub.org. To do with the proxy caching? |
1315474657000000 | 1319814460000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1322 | enhancement | dread | assigned | Action API improvements |
Focusing on improving Action API as the v3 API:
Next steps:
|
1315474749000000 | 1340191088000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1323 | enhancement | dread | dread | ckan-sprint-2011-10-28 | closed | fixed | GET /authorizationgroup causes Exception when logged in |
on thedatahub.org |
1315475685000000 | 1315594333000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1325 | defect | dread | dread | ckan-sprint-2011-09-12 | closed | fixed | python 2.5 incompatibilities |
We claim to support Python 2.5 (useful for Lenny), yet a few problems have crept in:
|
1315580452000000 | 1315587113000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1331 | defect | dread | dread | closed | worksforme | Setting a tag twice causes exception |
To reproduce:
|
1315905959000000 | 1325355631000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1332 | defect | dread | closed | fixed | i18n IndexError exceptions |
We get this i18n error for the URL http://no.ckan.net/authorizationgroup (which runs 1.4.2 with Norwegian translation). I'm not sure why it occurs. Fixing it is low importance though, because this site doesn't use Authorization Group feature Usually caused by bots. The user does not appear to be logged in. WebApp Error: <type 'exceptions.IndexError'>: list index out of range ... Module genshi.filters.i18n:177 in _generate << msgbuf.append(*previous) previous = None for event in msgbuf.translate(gettext(msgbuf.format())): yield event if previous: >> for event in msgbuf.translate(gettext(msgbuf.format())): Module genshi.filters.i18n:1029 in translate << ) parts = parse_msg(string) parts_counter = {} for order, string in parts: >> parts = parse_msg(string) Module genshi.filters.i18n:1143 in parse_msg << if string: parts.append((stack[-1], string)) return parts >> parts.append((stack[-1], string)) IndexError: list index out of range |
1315906429000000 | 1315999104000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1335 | enhancement | kindly | dread | closed | fixed | Action API - basic |
Provide an API to the logic layer at /api/action. |
1315910021000000 | 1315910117000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1336 | defect | johnglover | dread | ckan-backlog | new | License fudge |
cset:4b59ab34137d ckan/logic/action/get.py: - isopen = model.Package.get_license_register()[license_id].isopen() - result_dict['isopen'] = isopen + try: + isopen = model.Package.get_license_register()[license_id].isopen() + result_dict['isopen'] = isopen + except KeyError: + # TODO: create a log message this error? + result_dict['isopen'] = False This change hides problems with the license server and returns potentially incorrect values for openness. This has been noted as 'temporary fix' but seems to be forgotten about, since it has been merged to default and gone into release 1.4.3. I suggest the licenses are cached (I thought this was already the case when CKAN first requests them after start-up?). I suggest failure would return 503. |
1315912057000000 | 1323173073000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1340 | defect | dread | dread | ckan-sprint-2011-10-28 | closed | fixed | Editing non-existent group causes Exception |
e.g. http://ckan.net/group/edit/history Module ckan.controllers.group:135 in edit << try: old_data = get_action('group_show')(context, data_dict) c.grouptitle = old_data.get('title') c.groupname = old_data.get('name') >> old_data = get_action('group_show')(context, data_dict) Module ckan.logic.action.get:347 in group_show << if group is None: raise NotFound check_access('group_show',context, data_dict) >> raise NotFound |
1315991374000000 | 1315991534000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1346 | defect | dread | dread | ckan-sprint-2011-10-28 | closed | fixed | 'get_authorization_group_dict not found' exception |
This stems from a feature to allow you to prefill fields in the authorizationgroup creation form. e.g. http://ckan.net/authorizationgroup/new?name=science It's not tested, not supported in the new logic layer and therefore broken. I don't think anyone uses it - can remove it. |
1316081974000000 | 1316094632000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1347 | defect | dread | dread | ckan-sprint-2011-10-28 | closed | fixed | Exception caused by New Group form POST with bad formed parameter |
Exception caused by bots POSTing 'new group' form, but with bad (old-style) parameters. <type 'exceptions.ValueError'>: invalid literal for int() with base 10: 'cache' ... Module ckan.controllers.group:102 in new << if context['save'] and not data: return self._save_new(context) data = data or {} >> return self._save_new(context) Module ckan.controllers.group:152 in _save_new << try: data_dict = clean_dict(unflatten( tuplize_dict(parse_params(request.params)))) context['message'] = data_dict.get('log_message', '') group = create.group_create(data_dict, context) >> tuplize_dict(parse_params(request.params)))) Module ckan.logic:57 in tuplize_dict << for num, key in enumerate(key_list): if num % 2 == 1: key_list[num] = int(key) tuplized_dict[tuple(key_list)] = value return tuplized_dict >> key_list[num] = int(key) ValueError: invalid literal for int() with base 10: 'cache' |
1316094466000000 | 1316094608000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1365 | defect | dread | dread | ckan-sprint-2011-11-07 | closed | fixed | Support old search formats |
Lots of things rely on the old (i.e. pre-SOLR) search param formats, including ckanclient / DGU. Need a translation layer to convert these params (in api v1&2) to SOLR syntax. This functionality was broken by the changes in #1277 which went into 1.5a |
1317233338000000 | 1319815052000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1366 | defect | dread | ckan-future | assigned | Search inside extra fields |
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. |
1317290992000000 | 1338206707000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1367 | defect | dread | dread | closed | fixed | PyPI ckan broken |
manifest.cfg was not included in the pypi package, causing InvalidRepositoryError? when you do 'paster db init'. Appears to affect most CKAN PyPI releases up to and including 1.4.3. |
1317379931000000 | 1317394273000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1374 | defect | dread | dread | ckan-sprint-2011-10-24 | closed | fixed | Can't switch to English if default is non-English |
e.g. cz.ckan.net defaults to Czech (config option lang=cs_CZ) but it fails when you try to switch to English. |
1317893975000000 | 1319648746000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1385 | enhancement | dread | dread | closed | fixed | Resolve postgres permissions issues |
Currently there is a problem because the docs guide us to set the sqlalchemy url to use 'localhost' i.e. loopback, whereas paster commands don't specify '-h localhost' so use unix sockets (you need to do 'sudo -u postgres'). These should be the same. Also do we need to tell people to add a line to their postgres authentication config /etc/postgresql/8.4/main/pg_hba.conf to help things? Florian suggests: local std std md5 /etc/postgresql/8.4/main/pg_hba.conf |
1318418537000000 | 1326218703000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1388 | defect | dread | ckan-backlog | closed | fixed | etags caching on home page |
Needs to update on:
AND
BUT not latest revisions (which is what it was) Or get rid of etag caching on this page and others? |
1318429443000000 | 1320174229000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1393 | enhancement | johnglover | dread | ckan-backlog | assigned | Don't skip search tests |
Now we don't use postgres search, all the tests involving search now don't need to be skipped when running on sqlite. Should help coders spot earlier if these tests break. |
1318505453000000 | 1320153590000000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1394 | defect | dread | dread | ckan-sprint-2012-01-09 | closed | fixed | Resource validation error messages misleading |
(Editing a dataset) If the second resource contains any validation error then it says "Resources: Package resource(s) incomplete" and "Resource 1:". |
1318515262000000 | 1325604784000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1407 | defect | rgrp | dread | ckan-sprint-2011-12-19 | closed | fixed | Stats extension not working |
Graphs don't show any more at http://thedatahub.org/stats |
1319014605000000 | 1323764239000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1416 | defect | dread | dread | ckan-sprint-2011-11-07 | closed | fixed | Registering with blank email can cause exception |
This might well be a bot, but not POSTing the email field should not cause an exception - it should be 400 and then the sysadmin doesn't get these nags. http://www.publicdata.eu/user/register ... Module ckan.controllers.user:79 in register << c.login = request.params.getone('login') c.fullname = request.params.getone('fullname') c.email = request.params.getone('email') if not model.User.check_name_available(c.login): h.flash_error(_("That username is not available.")) >> c.email = request.params.getone('email') Module webob.multidict:335 in getone << values were found. """ return self._decode_value(self.multi.getone(self._encode_key(key))) def mixed(self): >> return self._decode_value(self.multi.getone(self._encode_key(key))) Module webob.multidict:99 in getone << v = self.getall(key) if not v: raise KeyError('Key not found: %r' % key) if len(v) > 1: raise KeyError('Multiple values match %r: %r' % (key, v)) >> raise KeyError('Key not found: %r' % key) KeyError: "Key not found: 'email'" HTTP_USER_AGENT 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; MRA 4.3 (build 01218); .NET CLR 1.1.4322)' webob._parsed_post_vars (MultiDict([('login', 'ahusernames9'), ('fullname', 'ahusernames9'), ('password1', '******'), ('password2', '******'), ('s', 'Sign up')]), <FakeCGIBody at 0xb9d7c5ec viewing MultiDict([('lo...p')])>) |
1319533989000000 | 1320153507000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1417 | defect | dread | dread | ckan-sprint-2011-10-24 | closed | fixed | Browser language detection doesn't work |
In Firefox:
|
1319539010000000 | 1319651617000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1418 | defect | dread | dread | ckan-sprint-2011-10-28 | closed | duplicate | If default language is not 'en' then you can't switch language to 'en' |
e.g. cz.ckan.net has lang=cz but when you click on Home page link "English" it flashes message "Language has been set to: English" but the rest of the page is still Czech. |
1319539146000000 | 1319539691000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#1419 | enhancement | dread | ckan-sprint-2011-11-07 | closed | invalid | Can't log in via OpenID |
I couldn't log into theDataHub with OpenID today. I tried both Google ID and MyOpenID. Both times the login on the remote auth server went fine, but when it returns you to theDataHub you get error "Login failed. Bad username or password." |
1319543013000000 | 1319796164000000 |