<?xml version="1.0"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>CKAN: Ticket Query</title>
    <link>http://localhost/query?status=!closed&amp;reporter=seanh&amp;desc=1&amp;order=summary</link>
    <description>The open source data portal software</description>
    <language>en-US</language>
    <image>
      <title>CKAN</title>
      <url>http://assets.okfn.org/p/ckan/img/ckan_logo_shortname.png</url>
      <link>http://localhost/query?status=!closed&amp;reporter=seanh&amp;desc=1&amp;order=summary</link>
    </image>
    <generator>Trac 0.12.3</generator>
    <item>
        <link>http://localhost/ticket/2762</link>
        <guid isPermaLink="false">http://localhost/ticket/2762</guid>
        <title>#2762: test_related.py crashes</title>
        <pubDate>Thu, 26 Jul 2012 11:55:53 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
/home/seanh/Projects/ckan/ckan/ckan/tests/functional/test_related.py
&lt;/p&gt;
&lt;p&gt;
&lt;a class="missing wiki"&gt;ImportError?&lt;/a&gt; (cannot import name assert_regexp_matches)
&lt;/p&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/2762#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/2900</link>
        <guid isPermaLink="false">http://localhost/ticket/2900</guid>
        <title>#2900: snippets/package_list.html template crashes on dataset that has no 'notes'</title>
        <pubDate>Thu, 30 Aug 2012 14:00:07 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
Sometimes a dataset dict comes through package_show() with 'notes': None and then the 'notes' key gets stripped from the dict when validation happens (validation only happens if there's an IDatasetForm plugin with a db_to_form_schema() method) and then package_list.html template crashes, e.g. on user profile pages.
&lt;/p&gt;
&lt;p&gt;
Fix in the template? Or in the schema?
&lt;/p&gt;
&lt;p&gt;
The template also crashes on packages with no tags (empty list gets stripped from dict) and probably other empty fields as well
&lt;/p&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/2900#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/2896</link>
        <guid isPermaLink="false">http://localhost/ticket/2896</guid>
        <title>#2896: resource_create crashes on ValidationErrors with KeyError: 'resources'</title>
        <pubDate>Wed, 29 Aug 2012 16:29:14 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
ckan/logic/action/create.py:resource_create():
&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;
try:
&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;
pkg_dict = _get_action('package_update')(context, pkg_dict)
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
except &lt;a class="missing wiki"&gt;ValidationError?&lt;/a&gt;, e:
&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;
errors = e.error_dict&lt;a class="missing wiki"&gt;resources?&lt;/a&gt;[-1]
raise &lt;a class="missing wiki"&gt;ValidationError?&lt;/a&gt;(errors)
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;p&gt;
This assumes that package_update always returns an error dict with 'resources' in it. This assumption doesn't hold.
&lt;/p&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/2896#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/2815</link>
        <guid isPermaLink="false">http://localhost/ticket/2815</guid>
        <title>#2815: db_to_form_package_schema() strips tracking summary, isopen</title>
        <pubDate>Wed, 08 Aug 2012 16:47:07 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
If an IDatasetForm plugin with a db_to_form_schema() based on db_to_form_package_schema() (which is in turn based on default_package_schema()) is in use then the 'tracking_summary' dict and the 'isopen' bool get stripped from package dicts during validation, e.g. during package_show(), and these values are then not available to templates.
&lt;/p&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/2815#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/2897</link>
        <guid isPermaLink="false">http://localhost/ticket/2897</guid>
        <title>#2897: db_to_form_package_schema() crashes historical dataset page</title>
        <pubDate>Thu, 30 Aug 2012 12:41:35 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
If there's an IDatasetForm plugin active with a db_to_form_schema() method based on db_to_form_package_schema(), then viewing historical versions of datasets (e.g. &lt;a class="ext-link" href="http://127.0.0.1:5000/dataset/dasd%402012-08-30T12%3A26%3A18.524191"&gt;&lt;span class="icon"&gt;​&lt;/span&gt;http://127.0.0.1:5000/dataset/dasd%402012-08-30T12%3A26%3A18.524191&lt;/a&gt;) crashes.
&lt;/p&gt;
&lt;p&gt;
Reason is that revison_id and revision_timestamp need to be added to db_to_form_package_schema(), something like:
&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;
schema.update({'revision_id': [validators.ignore_missing, unicode]})
schema.update({'revision_timestamp':
&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;
[validators.ignore_missing, unicode]})
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/2897#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/2912</link>
        <guid isPermaLink="false">http://localhost/ticket/2912</guid>
        <title>#2912: ckanext/organizations: Neither public or private initially selected when adding dataset</title>
        <pubDate>Mon, 10 Sep 2012 09:57:56 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
When adding a dataset with the organizations extension on, neither the Public or the Private radio button is initially selected. Public should be selected.
&lt;/p&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/2912#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/2234</link>
        <guid isPermaLink="false">http://localhost/ticket/2234</guid>
        <title>#2234: Write a CKAN extension for pulling items from RSS/Atom feeds into CKAN templates</title>
        <pubDate>Fri, 16 Mar 2012 12:59:15 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
You configure the extension with some RSS and/or Atom feeds, it automatically reads items from these feeds and makes them available in the template context, you write a custom template to e.g. display 'news' items from a Wordpress blog on your front page.
&lt;/p&gt;
&lt;p&gt;
This extension might be simpler and less fragile than ckanext-wordpresser, and also more generally useful.
&lt;/p&gt;
&lt;p&gt;
Details
&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Mark Pilgrim's Universal Feed Parser might be useful for reading the feeds
&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Feed items should probably be cached somewhere
&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;
Suggested
&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;The news item 'widget' should be wrapped in a known class so that it can be styled easily regardless of the format of any HTML entry.
&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;For non-HTML formatted items (Atom should tell you the content type of the entry) maybe we should have a template for rendering each item along with any enclosures that it might reference
&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Caching is pretty crucial and should probably obey the ttl of the feed.
&lt;/li&gt;&lt;/ul&gt;</description>
        <category>Results</category>
        <comments>http://localhost/ticket/2234#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/2958</link>
        <guid isPermaLink="false">http://localhost/ticket/2958</guid>
        <title>#2958: Uploading files with unicode characters in filename fails in CKAN 1.7 and 1.8</title>
        <pubDate>Thu, 04 Oct 2012 09:29:36 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
e.g. 2012_08(주요국가).xls
&lt;/p&gt;
&lt;p&gt;
I tested in CKAN 2.0 and it seemed to work fine there.
&lt;/p&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/2958#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/2475</link>
        <guid isPermaLink="false">http://localhost/ticket/2475</guid>
        <title>#2475: Upgrade trac.ckan.org to trac 0.12.3</title>
        <pubDate>Tue, 29 May 2012 18:46:16 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
This is not trivial, requires a database upgrade. But 0.12.3 has some nice new features (multiple vcs repository support, ticket comment editing and nicer preview) and the latest spam filter plugin requires 0.12.
&lt;/p&gt;
&lt;p&gt;
&lt;a class="ext-link" href="http://trac.edgewall.org/wiki/ChangeLog"&gt;&lt;span class="icon"&gt;​&lt;/span&gt;http://trac.edgewall.org/wiki/ChangeLog&lt;/a&gt;
&lt;/p&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/2475#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/2936</link>
        <guid isPermaLink="false">http://localhost/ticket/2936</guid>
        <title>#2936: Updating a group via the API clears its packages</title>
        <pubDate>Wed, 19 Sep 2012 09:47:46 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
If the group dict that you post to the API does not have any 'packages' key then all the group's packages get removed. I think it would be better if you could just update e.g. the group's description without having to also post the list of packages, and apparently this is how other update API actions work.
&lt;/p&gt;
&lt;p&gt;
Might be worth checking all the update API actions for this behaviour, and making sure they're all consistent
&lt;/p&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/2936#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/3006</link>
        <guid isPermaLink="false">http://localhost/ticket/3006</guid>
        <title>#3006: Update translations from Transifex</title>
        <pubDate>Mon, 29 Oct 2012 10:22:24 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
There are some new translations already on the CKAN 1.8 resource on Transifex already (e.g. 100% Norwegian translation I think). We should at least pull these from Transifex for 1.8.1, and may as well do a call for translations too.
&lt;/p&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/3006#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/2933</link>
        <guid isPermaLink="false">http://localhost/ticket/2933</guid>
        <title>#2933: Update theming docs</title>
        <pubDate>Mon, 17 Sep 2012 15:21:12 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
There's quite a lot of custom stuff going on, with all the custom jinja extensions, and the use of Fanstatic plus custom fanstatic extensions. People who are new to CKAN wanting to write CKAN themes are likely to be confused. I think the whole lot could do with documentation, maybe in the Theming and Customizing chapter in the sphinx docs.
&lt;/p&gt;
&lt;p&gt;
I suggest completely replacing the contents of doc/theming.rst, and putting a 'legacy theming' link at the bottom linking to a doc/legacy_theming.rst file with the old contents.
&lt;/p&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/2933#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/2891</link>
        <guid isPermaLink="false">http://localhost/ticket/2891</guid>
        <title>#2891: Update or remove DataStore google presentation</title>
        <pubDate>Tue, 28 Aug 2012 10:23:43 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
Currently this page:
&lt;/p&gt;
&lt;p&gt;
&lt;a class="ext-link" href="http://docs.ckan.org/en/ckan-1.8/datastore.html"&gt;&lt;span class="icon"&gt;​&lt;/span&gt;http://docs.ckan.org/en/ckan-1.8/datastore.html&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
has an embedded Google docs presentation about data store which contains some outdated information, e.g. links to datastoreclient which was merged into ckanclient.
&lt;/p&gt;
&lt;p&gt;
Suggest moving the google presentation into the documentation proper, so it works with grep etc.
&lt;/p&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/2891#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/3020</link>
        <guid isPermaLink="false">http://localhost/ticket/3020</guid>
        <title>#3020: Update CKAN coding standards</title>
        <pubDate>Fri, 16 Nov 2012 20:11:51 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description></description>
        <category>Results</category>
        <comments>http://localhost/ticket/3020#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/2335</link>
        <guid isPermaLink="false">http://localhost/ticket/2335</guid>
        <title>#2335: Unicode characters don't work in CKAN ini files</title>
        <pubDate>Mon, 30 Apr 2012 12:42:06 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
You get a &lt;a class="missing wiki"&gt;UnicodeDecodeError?&lt;/a&gt;, looks like it tries to decode the ini file as ascii. This is a problem because someone might try to set their site description to something with an umlaut in it, for example.
&lt;/p&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/2335#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/2988</link>
        <guid isPermaLink="false">http://localhost/ticket/2988</guid>
        <title>#2988: UI functional tests for CKAN 2.0</title>
        <pubDate>Mon, 15 Oct 2012 11:02:15 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
Afaik the new CKAN 2.0 frontend has no functional tests
&lt;/p&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/2988#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/2431</link>
        <guid isPermaLink="false">http://localhost/ticket/2431</guid>
        <title>#2431: Trac git integration</title>
        <pubDate>Fri, 25 May 2012 11:58:48 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description></description>
        <category>Results</category>
        <comments>http://localhost/ticket/2431#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/1800</link>
        <guid isPermaLink="false">http://localhost/ticket/1800</guid>
        <title>#1800: Tidy up *_list() and *_search() functions in ckan/logic/action/get.py</title>
        <pubDate>Thu, 16 Feb 2012 15:12:09 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
For consistency all the *_list() functions should list objects only and not accept an optional search query. There should be *_search() functions whenever search is needed.
&lt;/p&gt;
&lt;p&gt;
Currently it is inconsistent, e.g. package_list() and resource_list() do not accept a search query option and there are package_search() and resource_search(), but user_list() does accept a query and there is no user_search(). tag_list() also accepts a query, and there is also a tag_search() that apparently duplicates the search functionality.
&lt;/p&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/1800#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/2978</link>
        <guid isPermaLink="false">http://localhost/ticket/2978</guid>
        <title>#2978: Tests for permissions for organizations and groups</title>
        <pubDate>Mon, 15 Oct 2012 10:43:26 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
From Toby: checking the logic around the who can do what from the user stories -
via some tests may be a good approach
&lt;/p&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/2978#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/2975</link>
        <guid isPermaLink="false">http://localhost/ticket/2975</guid>
        <title>#2975: Tests for auth functions and new actions</title>
        <pubDate>Mon, 15 Oct 2012 10:41:00 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
From Toby: tests around the auth functions and new actions - probably needs an improved testing mechanism and things like test data creation on via actions
&lt;/p&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/2975#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/2927</link>
        <guid isPermaLink="false">http://localhost/ticket/2927</guid>
        <title>#2927: Test new package/group/organization type URLs support</title>
        <pubDate>Thu, 13 Sep 2012 16:02:33 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
IPackageForm, IGroupForm and IOrganizationForm allow you to define e.g. new package types with new top-level URLs, but the example extensions don't have tests for this yet.
&lt;/p&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/2927#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/2537</link>
        <guid isPermaLink="false">http://localhost/ticket/2537</guid>
        <title>#2537: Test and document ckanbuild</title>
        <pubDate>Fri, 15 Jun 2012 15:48:48 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
&lt;a class="ext-link" href="https://github.com/okfn/ckanbuild"&gt;&lt;span class="icon"&gt;​&lt;/span&gt;https://github.com/okfn/ckanbuild&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Verify that what's there so far still works, write a README explaining how it works
&lt;/p&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/2537#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/2893</link>
        <guid isPermaLink="false">http://localhost/ticket/2893</guid>
        <title>#2893: Tags missing from form_to_db_package_schema()</title>
        <pubDate>Tue, 28 Aug 2012 12:11:04 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
With an IDatasetForm plugin active with a form_to_db_package_schema() method that returns a schema based on ckan/logic/schema.py:form_to_db_package_schema() I'm getting validation errors like this:
&lt;/p&gt;
&lt;p&gt;
[ckan.controllers.api] Validation error: "{'&lt;span class="underline"&gt;type': 'Validation Error', '&lt;/span&gt;junk': [u'The input field &lt;span class="underline"&gt;junk was not expected.']}"
&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;
They seem to be caused when a data dict with key 'tags' is passed to e.g. the package_update API, for example in ckan/tests/functional/api/model/test_vocabulary.py there are various tests that get this error when they call package_update (if you run the tests with a suitable IDatasetForm plugin active).
&lt;/p&gt;
&lt;p&gt;
In ckan/logic/schema.py:form_to_db_package_schema() 'tags' is for some reason deliberately removed from the schema.
&lt;/p&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/2893#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/2889</link>
        <guid isPermaLink="false">http://localhost/ticket/2889</guid>
        <title>#2889: Support JSON values in extras, when returning JSON from API</title>
        <pubDate>Fri, 24 Aug 2012 12:35:37 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
For example, edit the warandpeace dataset and add an extra with key "comments" and value "[{u'date': u'Tue Aug 21 13:01:48 GMT 2012', u'comment': u'testing ckan', u'userId': u'11702'}, {u'date': u'Wed Aug 22 13:01:48 GMT 2012', u'comment': u'testing ckan again', u'userId': u'11702'}]", now visit API URLs such as:
&lt;/p&gt;
&lt;p&gt;
/api/search/dataset?sort=metadata_modified+desc&amp;amp;all_fields=1&amp;amp;limit=10
&lt;/p&gt;
&lt;p&gt;
/api/rest/dataset/warandpeace
&lt;/p&gt;
&lt;p&gt;
/api/action/package_show?id=warandpeace
&lt;/p&gt;
&lt;p&gt;
The value of the extra comes out as a string in the dataset JSON, rather than having its contents unpacked into a list of JSON objects.
&lt;/p&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/2889#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/2337</link>
        <guid isPermaLink="false">http://localhost/ticket/2337</guid>
        <title>#2337: Sort out ini file confusion in docs</title>
        <pubDate>Mon, 30 Apr 2012 14:57:56 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
For example if you follow the source install instructions then you have development.ini, then when you go onto Post-Installation Setup it talks about std.ini. People don't realise that these files are the same.
&lt;/p&gt;
&lt;p&gt;
Either fix the docs or fix CKAN to use same ini file names in package and source installs/
&lt;/p&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/2337#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/2486</link>
        <guid isPermaLink="false">http://localhost/ticket/2486</guid>
        <title>#2486: Should be able to use . in dataset names</title>
        <pubDate>Sat, 02 Jun 2012 16:46:23 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description></description>
        <category>Results</category>
        <comments>http://localhost/ticket/2486#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/2928</link>
        <guid isPermaLink="false">http://localhost/ticket/2928</guid>
        <title>#2928: Run CKAN tests with example_i*form extensions enabled</title>
        <pubDate>Thu, 13 Sep 2012 16:05:34 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
Before releasing CKAN 2.0 we need to run all the CKAN tests with a modified test-core.ini with the example_idatasetform, example_igroupform and example_iorganizationform plugins enabled. If any tests fail, fix the bugs. This needs to be done for each release so add it to the release process.
&lt;/p&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/2928#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/2979</link>
        <guid isPermaLink="false">http://localhost/ticket/2979</guid>
        <title>#2979: Requesting membership to groups and organizations</title>
        <pubDate>Mon, 15 Oct 2012 10:44:04 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
From Toby: The requesting membership user stories and implementation remain needed
&lt;/p&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/2979#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/2301</link>
        <guid isPermaLink="false">http://localhost/ticket/2301</guid>
        <title>#2301: Replace old-style string formatting with format() method (at least in strings marked for translation)</title>
        <pubDate>Mon, 16 Apr 2012 12:27:44 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
Some strings in CKAN are passed to gettext with more than one %s in them, this is no good as translators may need to change the order of substituted words.
&lt;/p&gt;
&lt;p&gt;
Strings should not use the old style % substitution, they should use the new format method in Python 2.6+, e.g.:
&lt;/p&gt;
&lt;p&gt;
'This {food} is {adjective}.'.format(food='spam', adjective='absolutely horrible')
&lt;/p&gt;
&lt;p&gt;
&lt;a class="ext-link" href="http://docs.python.org/release/2.6.8/tutorial/inputoutput.html#fancier-output-formatting"&gt;&lt;span class="icon"&gt;​&lt;/span&gt;http://docs.python.org/release/2.6.8/tutorial/inputoutput.html#fancier-output-formatting&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
We should probably only change strings that are marked for translation and that contain multiple %s, don't want to make too much work or cause too many strings to change and need to be re-translated.
&lt;/p&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/2301#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/1778</link>
        <guid isPermaLink="false">http://localhost/ticket/1778</guid>
        <title>#1778: Replace classmethod's with module-level functions</title>
        <pubDate>Mon, 06 Feb 2012 15:53:34 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
In many places we have @classmethods where simple module-level functions would do (and would be more idiomatic in Python), e.g. the &lt;tt&gt;get()&lt;/tt&gt; classmethods in the model/ classes.
&lt;/p&gt;
&lt;p&gt;
Doing it with module functions lets us type module.function() instead of module.Class.method().
&lt;/p&gt;
&lt;p&gt;
In many cases we're importing classes directly with &lt;tt&gt;from module import Class&lt;/tt&gt; and then doing &lt;tt&gt;Class.method()&lt;/tt&gt;, but &lt;tt&gt;from module import foo&lt;/tt&gt; is bad style: &lt;a class="ext-link" href="http://docs.python.org/dev/howto/doanddont.html"&gt;&lt;span class="icon"&gt;​&lt;/span&gt;http://docs.python.org/dev/howto/doanddont.html&lt;/a&gt;
&lt;/p&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/1778#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/1785</link>
        <guid isPermaLink="false">http://localhost/ticket/1785</guid>
        <title>#1785: Replace 'Revisions' page with site-wide activity stream</title>
        <pubDate>Tue, 07 Feb 2012 16:34:18 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
Replace the /revision page with a /activity page showing a site-wide activity stream of all activities in the site. Or perhaps the site-wide activity stream can go somewhere on the front page of the site instead?
&lt;/p&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/1785#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/2925</link>
        <guid isPermaLink="false">http://localhost/ticket/2925</guid>
        <title>#2925: Remove trans mangle paster command?</title>
        <pubDate>Thu, 13 Sep 2012 10:06:08 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;ul&gt;&lt;li&gt;Is &lt;tt&gt;trans mangle&lt;/tt&gt; really necessary? If you upload a pot file to
Transifex, it can generate a po file for you with 100% strings
translated into a fictional pseudo language where everything is really
long strings of unicode characters. I found this worked well for
coverage testing, and also tests handling of unicode and long strings
all over the place.
&lt;/li&gt;&lt;/ul&gt;</description>
        <category>Results</category>
        <comments>http://localhost/ticket/2925#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/2881</link>
        <guid isPermaLink="false">http://localhost/ticket/2881</guid>
        <title>#2881: Remove or improve 'Domain Model' docs page</title>
        <pubDate>Tue, 21 Aug 2012 09:05:17 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
&lt;a class="ext-link" href="http://docs.ckan.org/en/ckan-1.8/domain-model.html"&gt;&lt;span class="icon"&gt;​&lt;/span&gt;http://docs.ckan.org/en/ckan-1.8/domain-model.html&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Currently not very useful. Also these pages:
&lt;/p&gt;
&lt;p&gt;
&lt;a class="ext-link" href="http://docs.ckan.org/en/latest/domain-model-dataset.html"&gt;&lt;span class="icon"&gt;​&lt;/span&gt;http://docs.ckan.org/en/latest/domain-model-dataset.html&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a class="ext-link" href="http://docs.ckan.org/en/latest/domain-model-resource.html"&gt;&lt;span class="icon"&gt;​&lt;/span&gt;http://docs.ckan.org/en/latest/domain-model-resource.html&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a class="ext-link" href="http://docs.ckan.org/en/latest/domain-model-task-status.html"&gt;&lt;span class="icon"&gt;​&lt;/span&gt;http://docs.ckan.org/en/latest/domain-model-task-status.html&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
This just seems very incomplete to me (surely there is more to the domain model the dataset, resource and task status?) and very likely to not get updated as changes are mode to the code. Would anyone seriously refer to this rather than just looking at the source code?
&lt;/p&gt;
&lt;p&gt;
If we want to have something along these lines in the docs, I suggest adding docstrings to packages, modules, classes and methods and then using autodoc to pull them into sphinx.
&lt;/p&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/2881#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/2929</link>
        <guid isPermaLink="false">http://localhost/ticket/2929</guid>
        <title>#2929: Remove is_fallback() from I*Form extension interfaces?</title>
        <pubDate>Thu, 13 Sep 2012 16:09:57 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
If a plugin wants to take over the default package type for example, it can return &lt;a class="missing wiki"&gt;dataset?&lt;/a&gt; from its package_types() method. I don't see how there can be a package type that is not the default 'package' and is not returned by the package_types() method of a plugin, because the URLs for such a package type would not be mapped. Am I missing something or is is_fallback() not needed?
&lt;/p&gt;
&lt;p&gt;
Same for IGroupForm and IOrganizationForm
&lt;/p&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/2929#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/2981</link>
        <guid isPermaLink="false">http://localhost/ticket/2981</guid>
        <title>#2981: Remove config from jinja templates</title>
        <pubDate>Mon, 15 Oct 2012 10:46:00 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
From Toby: remove the config from jinja2 templates get all such stuff via g. (before 2.0)
&lt;/p&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/2981#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/2972</link>
        <guid isPermaLink="false">http://localhost/ticket/2972</guid>
        <title>#2972: Remove any imports of authz.py and delete file</title>
        <pubDate>Mon, 15 Oct 2012 10:37:22 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
it is no longer used
&lt;/p&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/2972#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/2987</link>
        <guid isPermaLink="false">http://localhost/ticket/2987</guid>
        <title>#2987: Remove all direct calls to logic action and auth functions</title>
        <pubDate>Mon, 15 Oct 2012 10:51:27 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
From Toby
&lt;/p&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/2987#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/2882</link>
        <guid isPermaLink="false">http://localhost/ticket/2882</guid>
        <title>#2882: Remove User Stories Overview from docs?</title>
        <pubDate>Tue, 21 Aug 2012 09:18:43 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
Why is this here? Is it up to date? Is anyone keeping it up to date? Does this belong in some sort of CKAN planning or roadmap document rather than in the documentation?
&lt;/p&gt;
&lt;p&gt;
&lt;a class="ext-link" href="http://docs.ckan.org/en/latest/user-stories.html"&gt;&lt;span class="icon"&gt;​&lt;/span&gt;http://docs.ckan.org/en/latest/user-stories.html&lt;/a&gt;
&lt;/p&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/2882#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/2919</link>
        <guid isPermaLink="false">http://localhost/ticket/2919</guid>
        <title>#2919: Remove IController from docs</title>
        <pubDate>Wed, 12 Sep 2012 14:47:33 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
Still in docs but seems gone from code
&lt;/p&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/2919#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/2983</link>
        <guid isPermaLink="false">http://localhost/ticket/2983</guid>
        <title>#2983: Refactor lib/base.py to remove circular import issues</title>
        <pubDate>Mon, 15 Oct 2012 10:47:24 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
From Toby: c) refactor lib/base.py to remove the circular import issues (render
functions to lib/render.py - would fix much of that)
&lt;/p&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/2983#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/2915</link>
        <guid isPermaLink="false">http://localhost/ticket/2915</guid>
        <title>#2915: Refactor form_to_db_schema_options()</title>
        <pubDate>Wed, 12 Sep 2012 10:37:49 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
Having two methods form_to_db_schema(self) and form_to_db_schema_options(self, options) seems unnecessary, why not just have form_to_db_schema(self, options=None)?
&lt;/p&gt;
&lt;p&gt;
Fixing this might break existing extensions although I don't think any are using form_to_db_schema_options() so it should be okay.
&lt;/p&gt;
&lt;p&gt;
The same thing goes for db_to_form_schema_options().
&lt;/p&gt;
&lt;p&gt;
Also why are we passing a dict 'options' that always contains the same three keys 'api', 'context' and 'type'? Why not three params api=None, contenxt=None, type=None?
&lt;/p&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/2915#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/2427</link>
        <guid isPermaLink="false">http://localhost/ticket/2427</guid>
        <title>#2427: Reduce cruft installed into CKAN's virtualenv due to Pylons</title>
        <pubDate>Fri, 25 May 2012 11:48:27 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description></description>
        <category>Results</category>
        <comments>http://localhost/ticket/2427#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/2995</link>
        <guid isPermaLink="false">http://localhost/ticket/2995</guid>
        <title>#2995: Popovers for resources, groups, organizations, tags...</title>
        <pubDate>Wed, 17 Oct 2012 14:27:21 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
If you hover the mouse over a dataset or user in an activity stream, you now get a popover with some info about that dataset or user and a follow/unfollow button.
&lt;/p&gt;
&lt;p&gt;
It would be nice to add similar popovers for other types of object in CKAN, e.g. resources, groups, organizations, tags...
&lt;/p&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/2995#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/2976</link>
        <guid isPermaLink="false">http://localhost/ticket/2976</guid>
        <title>#2976: Polish group and organization member pages</title>
        <pubDate>Mon, 15 Oct 2012 10:41:49 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
From Toby: A little polish to the member pages and probably a little hardening of
the controller and logic actions
&lt;/p&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/2976#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/3010</link>
        <guid isPermaLink="false">http://localhost/ticket/3010</guid>
        <title>#3010: Pin images don't appear in data explorer</title>
        <pubDate>Wed, 31 Oct 2012 17:45:06 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
When minified files are in use (set debug = false in ini file) the pin images for points don't show up in the data explorer map view when viewing a resource with geolocation data.
&lt;/p&gt;
&lt;p&gt;
set debug = true will fix the problem by using unminified files instead but also turns on a bunch of debug stuff you wouldn't want on a production site.
&lt;/p&gt;
&lt;p&gt;
middleware.py, around line 73, is where the decision to turn minified files on or off based on the debug setting is made. This can be hacked on a production site to run with unminified files but otherwise run on production mode thereby getting around the issue with the pins. But that doesn't fix the underlying bug.
&lt;/p&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/3010#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/2846</link>
        <guid isPermaLink="false">http://localhost/ticket/2846</guid>
        <title>#2846: Organizations allows you to set an organization as the parent organization of itself</title>
        <pubDate>Mon, 13 Aug 2012 12:22:16 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
that doesn't make any sense
&lt;/p&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/2846#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/2967</link>
        <guid isPermaLink="false">http://localhost/ticket/2967</guid>
        <title>#2967: Organization members edit page reloads after demoting self</title>
        <pubDate>Mon, 15 Oct 2012 10:17:07 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
Edit an organizations members page and demote yourself from organization admin, after saving the members edit page reloads even though you are no longer an admin and should no longer be able to access this page.
&lt;/p&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/2967#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/2970</link>
        <guid isPermaLink="false">http://localhost/ticket/2970</guid>
        <title>#2970: Organization and group member links use id not name</title>
        <pubDate>Mon, 15 Oct 2012 10:22:11 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
e.g. it the 'Members' button links to /organization/members/0a44... instead of /organization/members/foobar
&lt;/p&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/2970#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/2619</link>
        <guid isPermaLink="false">http://localhost/ticket/2619</guid>
        <title>#2619: Omit private datasets from public activity streams</title>
        <pubDate>Thu, 28 Jun 2012 11:49:00 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
Activities about private datasets should not appear in public activity streams.
&lt;/p&gt;
&lt;p&gt;
I don't think you want to actually purge the activities from the db, because you might still want them to appear in private activity streams.
&lt;/p&gt;
&lt;p&gt;
I do think that when a dataset goes private all its past activity should go private, because I imagine that users are going to want to hide everything about the dataset and not have any past activities 'leaking out'
&lt;/p&gt;
&lt;p&gt;
I don't think you want to consider whether the dataset was private when the activity happened, rather if a dataset is private now then all its past activities are private (and the simplest thing would be to say that if a dataset is public now then all its past activities become public as well, but is that a privacy concern?)
&lt;/p&gt;
&lt;p&gt;
The easiest way to implement this is going to be by modifying the *_activity_list() action functions in get.py, after they pull their activity lists out of the db they should pass them through a function that filters out stuff about private datasets.
&lt;/p&gt;
&lt;p&gt;
An activity about a private dataset is one whose object_type is 'dataset' and whose object_id matches the id of a private dataset. You should also check the object_type and object_id of all of the activity object's activity detail objects, if any of those match a private dataset then mark the whole activity as private.
&lt;/p&gt;
&lt;p&gt;
Currently all activity streams are public so should have all private datasets filtered out from them, except for the dashboard activity stream which is private to the individual user. In this case private datasets that the user has permission to see should not be filtered.
&lt;/p&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/2619#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/2763</link>
        <guid isPermaLink="false">http://localhost/ticket/2763</guid>
        <title>#2763: Multilingual tests failing</title>
        <pubDate>Thu, 26 Jul 2012 11:56:59 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
test_multilingual_plugin.&lt;a class="missing wiki"&gt;TestDatasetTermTranslation?&lt;/a&gt;.test_dataset_index_translation, test_multilingual_plugin.&lt;a class="missing wiki"&gt;TestDatasetTermTranslation?&lt;/a&gt;.test_group_read_translation both failing for me on master
&lt;/p&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/2763#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/3001</link>
        <guid isPermaLink="false">http://localhost/ticket/3001</guid>
        <title>#3001: Multilingual plugin crashes CKAN on add dataset when some languages are default</title>
        <pubDate>Thu, 18 Oct 2012 16:50:48 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
Enable the multilingual plugins:
&lt;/p&gt;
&lt;p&gt;
ckan.plugins = stats synchronous_search multilingual_dataset multilingual_group multilingual_tag
&lt;/p&gt;
&lt;p&gt;
and set your default language to one not supported by the multilingual plugin, e.g.
&lt;/p&gt;
&lt;p&gt;
ckan.locale_default = cs_CZ
&lt;/p&gt;
&lt;p&gt;
now run CKAN and try to add a dataset:
&lt;/p&gt;
&lt;p&gt;
File '/home/seanh/Projects/ckan171/ckan/ckanext/multilingual/plugin.py', line 141 in before_index
&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;
text_field_items&lt;a class="missing wiki"&gt;+ default_lang?&lt;/a&gt;.extend(all_terms)
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
&lt;a class="missing wiki"&gt;KeyError?&lt;/a&gt;: 'text_cs_CZ'
&lt;/p&gt;
&lt;p&gt;
It doesn't matter what language you are viewing the site in in your browser, the default language setting in the ini file determines whether it crashed or not.
&lt;/p&gt;
&lt;p&gt;
A number of supported languages are defined at the top of ckanext/multilingual/plugin.py. I think if the default language is not one of these it crashes.
&lt;/p&gt;
&lt;p&gt;
I think this affects all versions of CKAN since the multilingual plugin was added so at least 1.7, 1.8 and 2.0
&lt;/p&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/3001#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/2973</link>
        <guid isPermaLink="false">http://localhost/ticket/2973</guid>
        <title>#2973: Move new_authz.py into logic/auth/__init__.py</title>
        <pubDate>Mon, 15 Oct 2012 10:39:05 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
Makes sense to keep all auth stuff under logic/auth.
&lt;/p&gt;
&lt;p&gt;
Also decide which functions from new_authz.pu should be marked private with _.
&lt;/p&gt;
&lt;p&gt;
Also decide which functions from new_authz.py are really helpers for the auth functions in get.py, update.py and delete.py, and should maybe moved to another file, e.g. logic/auth/helpers.py
&lt;/p&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/2973#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/2982</link>
        <guid isPermaLink="false">http://localhost/ticket/2982</guid>
        <title>#2982: Move functionality from controllers into template helpers</title>
        <pubDate>Mon, 15 Oct 2012 10:46:42 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
From Toby: strip more functionality from controllers and add via template helpers
eg activity streams
&lt;/p&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/2982#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/1750</link>
        <guid isPermaLink="false">http://localhost/ticket/1750</guid>
        <title>#1750: Move ckan/lib/activity.py into the model</title>
        <pubDate>Sun, 05 Feb 2012 18:18:08 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
Move ckan/lib/activity.py moved to into the model - say ckan/model/activity_extension.py, because it's so tightly knit with the model code, whereas most of the lib code is used in the controllers.
&lt;/p&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/1750#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/2336</link>
        <guid isPermaLink="false">http://localhost/ticket/2336</guid>
        <title>#2336: Move Jenkins' install script into ckan core so it can be versioned</title>
        <pubDate>Mon, 30 Apr 2012 13:35:14 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description></description>
        <category>Results</category>
        <comments>http://localhost/ticket/2336#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/2985</link>
        <guid isPermaLink="false">http://localhost/ticket/2985</guid>
        <title>#2985: Make lib/helpers.py more template-specific</title>
        <pubDate>Mon, 15 Oct 2012 10:49:48 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
From Toby: make lib/helpers more template specific and less generally shared with
none template uses (some functions are shared but many shouldn't be) -
again help avoid circular imports
&lt;/p&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/2985#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/2986</link>
        <guid isPermaLink="false">http://localhost/ticket/2986</guid>
        <title>#2986: Make lib/base.py more like it was originally intended</title>
        <pubDate>Mon, 15 Oct 2012 10:50:45 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
From Toby: make lib/base.py be more like it was originally intended eg defines
stuff that is shared eg _ but maybe try to include stuff like
render/get_action if the circular import stuff can be solved - which should
be doable if hard and likely needs an extra file or two for the externals _
etc
&lt;/p&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/2986#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/2508</link>
        <guid isPermaLink="false">http://localhost/ticket/2508</guid>
        <title>#2508: Make it possible to run CKAN tests for each language</title>
        <pubDate>Mon, 11 Jun 2012 10:42:15 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
Mistakes in translated strings can cause CKAN to crash or otherwise not work, but it's not practical to manually test every page and function of CKAN in every language that we have new translations for before a CKAN release. It'd be great if the tests could automatically be run for each language.
&lt;/p&gt;
&lt;p&gt;
This is probably a big job, we would have to get the tests to respect a language setting in the ini file, check for any individual test cases that specify the language (e.g. in the URL), and also fix test cases that look for specific English words in HTML output, etc.
&lt;/p&gt;
&lt;p&gt;
In the meantime, a good stop-gap solution might be a script that tests for common mistakes in the po files.
&lt;/p&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/2508#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/1748</link>
        <guid isPermaLink="false">http://localhost/ticket/1748</guid>
        <title>#1748: Make activity streams conform to http://activitystrea.ms/ standard</title>
        <pubDate>Sun, 05 Feb 2012 14:06:24 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
At the very least we should make our JSON output conform to their spec:
&lt;/p&gt;
&lt;p&gt;
&lt;a class="ext-link" href="http://activitystrea.ms/"&gt;&lt;span class="icon"&gt;​&lt;/span&gt;http://activitystrea.ms/&lt;/a&gt;
&lt;/p&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/1748#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/2516</link>
        <guid isPermaLink="false">http://localhost/ticket/2516</guid>
        <title>#2516: Make 'Assign to:' field on trac.ckan.org into a dropdown list</title>
        <pubDate>Wed, 13 Jun 2012 09:07:22 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
there's a setting for this
&lt;/p&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/2516#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/2430</link>
        <guid isPermaLink="false">http://localhost/ticket/2430</guid>
        <title>#2430: Look into marking tickets as dependent on other tickets in trac</title>
        <pubDate>Fri, 25 May 2012 11:58:06 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description></description>
        <category>Results</category>
        <comments>http://localhost/ticket/2430#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/2622</link>
        <guid isPermaLink="false">http://localhost/ticket/2622</guid>
        <title>#2622: Login fails in Opera 12</title>
        <pubDate>Thu, 28 Jun 2012 16:56:42 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
Try to login to CKAN using Opera 12, get "Login failed. Bad username or password. (Or if using OpenID, it hasn't been associated with a user account.)"
&lt;/p&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/2622#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/2884</link>
        <guid isPermaLink="false">http://localhost/ticket/2884</guid>
        <title>#2884: Lock icon shown next to unknown licenses</title>
        <pubDate>Tue, 21 Aug 2012 16:01:13 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
Set the license of a dataset to blank (the first option) or to 'License Not Specified' or 'Other (Non-Commercial)' and a lock icon appears next to the license on the dataset read page. Shouldn't this be a question mark or something?
&lt;/p&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/2884#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/2964</link>
        <guid isPermaLink="false">http://localhost/ticket/2964</guid>
        <title>#2964: Last organization admin can remove herself</title>
        <pubDate>Mon, 15 Oct 2012 10:14:18 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
If you are the only admin of an organization you can edit the organization's members and demote yourself, then the org has no admins and no one (except sysadmins maybe) can edit it.
&lt;/p&gt;
&lt;p&gt;
Last admin should not be able to remove or demote herself.
&lt;/p&gt;
&lt;p&gt;
Also applies to groups.
&lt;/p&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/2964#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/2885</link>
        <guid isPermaLink="false">http://localhost/ticket/2885</guid>
        <title>#2885: Labels (editor, admin) not translated in authorization pages for datasets or groups</title>
        <pubDate>Wed, 22 Aug 2012 08:49:11 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description></description>
        <category>Results</category>
        <comments>http://localhost/ticket/2885#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/2539</link>
        <guid isPermaLink="false">http://localhost/ticket/2539</guid>
        <title>#2539: Investigate the existing ckan debian package for ckanbuild</title>
        <pubDate>Fri, 15 Jun 2012 15:54:21 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
Do we want to build on top of the existing debian packaging code? Or throw it away and start fresh?
&lt;/p&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/2539#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/2540</link>
        <guid isPermaLink="false">http://localhost/ticket/2540</guid>
        <title>#2540: Implement a way of upgrading ckan sites using ckanbuild</title>
        <pubDate>Fri, 15 Jun 2012 15:55:40 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
When there are multiple ckan sites installed on a single server via ckanbuild, there needs to be some way of upgrading them all to a new ckan version at once.
&lt;/p&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/2540#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/1789</link>
        <guid isPermaLink="false">http://localhost/ticket/1789</guid>
        <title>#1789: Implement a tag_update() logic action function</title>
        <pubDate>Thu, 09 Feb 2012 16:36:53 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
So users can rename a tag and/or move it between vocabularies using the API.
&lt;/p&gt;
&lt;p&gt;
Currently we have create_tag() and delete_tag(), but if you were to 'update' a tag by deleting it and then recreating it all the datasets that had that tag will have lost it and you'll have to re-add it to them all.
&lt;/p&gt;
&lt;p&gt;
What should happen to datasets that have the tag, if the tag gets moved between vocabularies? All the datasets just keep the tag with the new vocabulary? This will become a problem if/when we support 'radio button'-style vocabularies (where each dataset can only have one tag from the vocabulary).
&lt;/p&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/1789#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/2913</link>
        <guid isPermaLink="false">http://localhost/ticket/2913</guid>
        <title>#2913: IGroupForm has package_form() method</title>
        <pubDate>Tue, 11 Sep 2012 14:45:39 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
Should be group_form() I think
&lt;/p&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/2913#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/2892</link>
        <guid isPermaLink="false">http://localhost/ticket/2892</guid>
        <title>#2892: IDatasetForm's form_to_db_schema() breaks API?</title>
        <pubDate>Tue, 28 Aug 2012 11:42:05 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
It looks like when an IDatasetForm plugin with a form_to_db_schema() method is active, then the posted data dict is validated against the schema even if the user is posting to an API endpoint like /api/action/package_update etc. This breaks the API, for example 'name' and 'title' are optional keys for package_update (you can supply only the 'id'), but the schema validation will fail if either are not present in the posted dict.
&lt;/p&gt;
&lt;p&gt;
It may be we need different schema for package create and package update, currently IDatasetForm has just the one form_to_db_schema() method.
&lt;/p&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/2892#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/2926</link>
        <guid isPermaLink="false">http://localhost/ticket/2926</guid>
        <title>#2926: I*Form tests for per-type templates</title>
        <pubDate>Thu, 13 Sep 2012 16:01:21 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
Finish the tests for the per-package-type custom template support in IPackageForm, IGroupForm and IOrganizationForm (i.e. the new_template(), read_template() etc. methods).
&lt;/p&gt;
&lt;p&gt;
The new way that template inheritance works in jinja looks like it should allow this to be tested nicely without duplicating entire templates in the example extensions.
&lt;/p&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/2926#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/2969</link>
        <guid isPermaLink="false">http://localhost/ticket/2969</guid>
        <title>#2969: Group members page 500s</title>
        <pubDate>Mon, 15 Oct 2012 10:20:54 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
The group members page (e.g. /group/members/roger) seems broken, IDs instead of user names are shown for the members, and clicking on a member 500s
&lt;/p&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/2969#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/1740</link>
        <guid isPermaLink="false">http://localhost/ticket/1740</guid>
        <title>#1740: Get rid of `from module import ...`</title>
        <pubDate>Wed, 01 Feb 2012 11:06:09 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
It's really bad to do &lt;tt&gt;from module import *&lt;/tt&gt; and CKAN has a lot of them. I suggest a three-pronged approach:
&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;Don't add any more of them.
&lt;/li&gt;&lt;/ol&gt;&lt;ol start="2"&gt;&lt;li&gt;When you're programming if you see an easy opportunity to remove one then do so.
&lt;/li&gt;&lt;/ol&gt;&lt;ol start="3"&gt;&lt;li&gt;At some point we should task someone to go through the code and remove them all (which is what this ticket is for), but this will be a big job and may break things.
&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;
We should also get rid of most or all of the &lt;tt&gt;from module import foo&lt;/tt&gt; and &lt;tt&gt;from module import foo, bar&lt;/tt&gt; statements.
&lt;/p&gt;
&lt;p&gt;
I think the right thing to do is just &lt;tt&gt;import module&lt;/tt&gt; and then use &lt;tt&gt;module.foo&lt;/tt&gt; in your code. But if you find yourself doing &lt;tt&gt;module.foo.bar&lt;/tt&gt; then you may have a code smell.
&lt;/p&gt;
&lt;p&gt;
See: &lt;a class="ext-link" href="http://docs.python.org/dev/howto/doanddont.html"&gt;&lt;span class="icon"&gt;​&lt;/span&gt;http://docs.python.org/dev/howto/doanddont.html&lt;/a&gt;
&lt;/p&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/1740#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/2426</link>
        <guid isPermaLink="false">http://localhost/ticket/2426</guid>
        <title>#2426: Get rid of CKAN's formalchemy dependency</title>
        <pubDate>Fri, 25 May 2012 11:47:42 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description></description>
        <category>Results</category>
        <comments>http://localhost/ticket/2426#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/2478</link>
        <guid isPermaLink="false">http://localhost/ticket/2478</guid>
        <title>#2478: Get NeverNotifyUpdaterPlugin installed on trac.ckan.org</title>
        <pubDate>Wed, 30 May 2012 16:52:14 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description></description>
        <category>Results</category>
        <comments>http://localhost/ticket/2478#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/2920</link>
        <guid isPermaLink="false">http://localhost/ticket/2920</guid>
        <title>#2920: Genshi text template message extractor no longer needed?</title>
        <pubDate>Thu, 13 Sep 2012 09:57:29 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
In setup.py, do we still need:
&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;
('templates/&lt;strong&gt;.txt', 'genshi', {
&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;
'template_class': 'genshi.template:TextTemplate'
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
}),
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
in message_extractors? Doesn't like there are any txt files in there
anymore.
&lt;/p&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/2920#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/2974</link>
        <guid isPermaLink="false">http://localhost/ticket/2974</guid>
        <title>#2974: General of all auth functions</title>
        <pubDate>Mon, 15 Oct 2012 10:40:12 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
From Toby:
&lt;/p&gt;
&lt;p&gt;
A general cleanup of all auth functions (in logic/auth) to check their fitness, error messages, etc.
&lt;/p&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/2974#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/2977</link>
        <guid isPermaLink="false">http://localhost/ticket/2977</guid>
        <title>#2977: Fix user autocomplete on group and organization member pages</title>
        <pubDate>Mon, 15 Oct 2012 10:42:29 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
From Toby: @johnmartin the user autocomplete on
member add needs fixing it gets data but does not understand what to do
with it
&lt;/p&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/2977#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/2466</link>
        <guid isPermaLink="false">http://localhost/ticket/2466</guid>
        <title>#2466: Fix spam handling on trac</title>
        <pubDate>Mon, 28 May 2012 13:51:43 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description></description>
        <category>Results</category>
        <comments>http://localhost/ticket/2466#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/2990</link>
        <guid isPermaLink="false">http://localhost/ticket/2990</guid>
        <title>#2990: Fix descriptions of groups and organizations on /groups and /organizations pages</title>
        <pubDate>Mon, 15 Oct 2012 11:04:51 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description></description>
        <category>Results</category>
        <comments>http://localhost/ticket/2990#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/2243</link>
        <guid isPermaLink="false">http://localhost/ticket/2243</guid>
        <title>#2243: Fix ckanext-example</title>
        <pubDate>Mon, 19 Mar 2012 15:58:30 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description></description>
        <category>Results</category>
        <comments>http://localhost/ticket/2243#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/2996</link>
        <guid isPermaLink="false">http://localhost/ticket/2996</guid>
        <title>#2996: Fix behaviour of View Profile button in user popover when already on user's profile</title>
        <pubDate>Wed, 17 Oct 2012 14:30:38 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
The user popovers that appear when you hover the mouse over a user in an activity stream include a View Profile button that takes you to that user's profile page. If you are already on that user's profile page then it simply reloads the same page, but it sends you to the Datasets tab if you were on another tab.
&lt;/p&gt;
&lt;p&gt;
Possible solutions:
&lt;/p&gt;
&lt;p&gt;
Don't show button if already on user's page?
&lt;/p&gt;
&lt;p&gt;
Button just makes popover disappear, if already on user's page?
&lt;/p&gt;
&lt;p&gt;
Button does reload the page, but reloads the same tab (datasets, followers, activity stream) that you were on.
&lt;/p&gt;
&lt;p&gt;
Marking this low priority
&lt;/p&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/2996#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/2342</link>
        <guid isPermaLink="false">http://localhost/ticket/2342</guid>
        <title>#2342: Fix Jenkins issue when testing branches with different solr schema versions</title>
        <pubDate>Tue, 01 May 2012 12:47:25 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description></description>
        <category>Results</category>
        <comments>http://localhost/ticket/2342#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/2341</link>
        <guid isPermaLink="false">http://localhost/ticket/2341</guid>
        <title>#2341: Fix Jenkins issue when testing branches that contain model changes</title>
        <pubDate>Tue, 01 May 2012 12:46:36 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description></description>
        <category>Results</category>
        <comments>http://localhost/ticket/2341#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/3028</link>
        <guid isPermaLink="false">http://localhost/ticket/3028</guid>
        <title>#3028: Feature: dashboard activity stream filtering</title>
        <pubDate>Mon, 10 Dec 2012 12:07:24 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
&lt;a class="ext-link" href="https://github.com/okfn/ckanext-pdeu/issues/13"&gt;&lt;span class="icon"&gt;​&lt;/span&gt;https://github.com/okfn/ckanext-pdeu/issues/13&lt;/a&gt;
&lt;/p&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/3028#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/1747</link>
        <guid isPermaLink="false">http://localhost/ticket/1747</guid>
        <title>#1747: Expire old activities</title>
        <pubDate>Sun, 05 Feb 2012 12:56:29 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
Currently the activity streams database tables just get longer and longer over time. Do we want to eventually delete the oldest activities, to keep the length of the table within limits?
&lt;/p&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/1747#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/2585</link>
        <guid isPermaLink="false">http://localhost/ticket/2585</guid>
        <title>#2585: Escape solr control characters in search queries, add advanced search screen</title>
        <pubDate>Fri, 22 Jun 2012 10:26:13 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
Suggestion from David Read:
&lt;/p&gt;
&lt;p&gt;
We noticed that some search queries produce unexpected search results in CKAN, due to them containing special characters. For example if you were to search for "Spend over £25,000 - NHS Leeds" then it would not come up with the dataset with that exact name. It was excluding datasets with the word "NHS" due to the dash/minus sign. It works fine if you escape the minus sign: "Spend over £25,000 \- NHS Leeds".
&lt;/p&gt;
&lt;p&gt;
So in data.gov.uk I've added escaping of such control characters in
our plugin and this useful routine:
&lt;/p&gt;
&lt;p&gt;
&lt;a class="ext-link" href="http://fragmentsofcode.wordpress.com/2010/03/10/escape-special-characters-for-solrlucene-query/"&gt;&lt;span class="icon"&gt;​&lt;/span&gt;http://fragmentsofcode.wordpress.com/2010/03/10/escape-special-characters-for-solrlucene-query/&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Perhaps you would consider providing this in CKAN core in future?
&lt;/p&gt;
&lt;p&gt;
I think there is an occasional case when power users would want to use the special characters - brackets, +, -, boolean operators etc. but maybe these could be reserved for an 'advanced search' screen?
&lt;/p&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/2585#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/2894</link>
        <guid isPermaLink="false">http://localhost/ticket/2894</guid>
        <title>#2894: Empty lists get stripped from package dicst in package_show()</title>
        <pubDate>Tue, 28 Aug 2012 12:40:34 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
If there's an IDatasetForm plugin active with a form_to_db_schema(), then packages with e.g. no extras get the 'extras' key entirely stripped by the validation in package_show, which causes some tests to crash, e.g. in ckan/tests/functional/api/test_activity.py (if the tests are run with a suitable IDatasetForm plugin active).
&lt;/p&gt;
&lt;p&gt;
If a package has no extras the dict returned by package_show should still have an 'extras' key with an empty list as the value.
&lt;/p&gt;
&lt;p&gt;
Suspect this also effects packages with no tags, no groups, etc.
&lt;/p&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/2894#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/1635</link>
        <guid isPermaLink="false">http://localhost/ticket/1635</guid>
        <title>#1635: Email notifications (e.g. for activity streams)</title>
        <pubDate>Wed, 11 Jan 2012 17:56:27 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
CKAN should be able to send email notifications to users.
&lt;/p&gt;
&lt;p&gt;
Maybe have a notifications table in the db, and a server-side job that runs periodically and consumes rows from this table, mailing them to the users.
&lt;/p&gt;
&lt;p&gt;
One thing that we may want to send users notifications of is activity stream events. So the activity streams code would have to add rows to the notifications table for the mailer job to consume. But remember that email notifications feature is separate from activity streams - we may want to send notifications of other things as well.
&lt;/p&gt;
&lt;p&gt;
Need to implement (at least some of) &lt;a class="closed ticket" href="http://localhost/ticket/1634" title="enhancement: Allow users to follow/unfollow activity streams of other users, datasets ... (closed: duplicate)"&gt;#1634&lt;/a&gt; before this can be implemented, in order to have something to send notifications about.
&lt;/p&gt;
&lt;p&gt;
Analysis here: &lt;a class="ext-link" href="http://ckan.okfnpad.org/27"&gt;&lt;span class="icon"&gt;​&lt;/span&gt;http://ckan.okfnpad.org/27&lt;/a&gt;
&lt;/p&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/1635#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/2771</link>
        <guid isPermaLink="false">http://localhost/ticket/2771</guid>
        <title>#2771: Documentation and examples for IDatasetForm and IGroupForm</title>
        <pubDate>Fri, 27 Jul 2012 12:30:38 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
Add minimal, working IDatasetForm and IGroupForm example extensions to core, with tests.
&lt;/p&gt;
&lt;p&gt;
The IDatasetForm example should use tag vocabularies (two birds with one stone)
&lt;/p&gt;
&lt;p&gt;
The IDatasetForm and IGroupForm docs are not very good (and are somewhat spread around different doc chapters), fix them up, and reference the new working examples.
&lt;/p&gt;
&lt;p&gt;
Tab Vocabularies docs should reference IDatasetForm example.
&lt;/p&gt;
&lt;p&gt;
When using convert_to/from_extras() you have to remove any free extras from the form or it won't work, this needs to be documented (in the docstring maybe)
&lt;/p&gt;
&lt;p&gt;
There have been recent changes to the schemas that IDatasetForm and IGroupForm use, make sure the docs are up to date.
&lt;/p&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/2771#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/2520</link>
        <guid isPermaLink="false">http://localhost/ticket/2520</guid>
        <title>#2520: Document undocumented config options</title>
        <pubDate>Wed, 13 Jun 2012 11:52:48 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
There are 21 undocumented config options in CKAN, some of which are not mentioned in the config file template either:
&lt;/p&gt;
&lt;p&gt;
ckan.admin.name
ckan.admin.email
ckan.default.group_type
ckan.page_cache_enabled
ckan.cache_enabled
ckan.cache_expires
ckan.extra_resource_fields
ckan.extra_resource_group_fields
ckan.storage.key_prefix
ckan.storage.max_content_length
ckan.feeds.authority_name *
ckan.feeds.date *
ckan.feeds.author_name *
ckan.feeds.author_link *
ckan.mail_from
ckan.gravatar_default *
ckan.plugins
ckan.api_url
ckan.auth.profile
ckan.datastore.enabled
ckan.tracking_enabled
&lt;/p&gt;
&lt;p&gt;
There are also some options that are in the default deployment.ini even though they're deprecated:
&lt;/p&gt;
&lt;p&gt;
ckan.async_notifier
carrot_messaging_library
ckan.build_search_index_synchronously
&lt;/p&gt;
&lt;p&gt;
See email to ckan-dev from David Read: &lt;a class="ext-link" href="http://lists.okfn.org/pipermail/ckan-dev/2012-June/002447.html"&gt;&lt;span class="icon"&gt;​&lt;/span&gt;http://lists.okfn.org/pipermail/ckan-dev/2012-June/002447.html&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
It'd be best if the docs could be automatically pulled from the source into sphinx using autodoc, see &lt;a class="assigned ticket" href="http://localhost/ticket/1358" title="enhancement: Generate configuration documentation automatically from the ... (assigned)"&gt;#1358&lt;/a&gt;
&lt;/p&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/2520#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/2761</link>
        <guid isPermaLink="false">http://localhost/ticket/2761</guid>
        <title>#2761: Document all the errors you can get when setting up filestore, and how to fix them</title>
        <pubDate>Thu, 26 Jul 2012 11:36:06 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
Add it to a 'Troubleshooting' section on the filestore page: &lt;a class="ext-link" href="http://docs.ckan.org/en/ckan-1.7.1/filestore.html"&gt;&lt;span class="icon"&gt;​&lt;/span&gt;http://docs.ckan.org/en/ckan-1.7.1/filestore.html&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
For the error messages and their solutions, see various threads on ckan-dev
&lt;/p&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/2761#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/2542</link>
        <guid isPermaLink="false">http://localhost/ticket/2542</guid>
        <title>#2542: Create jenkins job to run ckanbuild, and run tests</title>
        <pubDate>Fri, 15 Jun 2012 15:58:08 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
It should run the script to create the debian package, boot a VM, install the debian package on the VM, boot a CKAN instance, then run the tests.
&lt;/p&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/2542#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/3014</link>
        <guid isPermaLink="false">http://localhost/ticket/3014</guid>
        <title>#3014: Crash when deleting a non-empty vocabulary</title>
        <pubDate>Tue, 13 Nov 2012 10:50:08 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
From Knud Möller:
&lt;/p&gt;
&lt;p&gt;
when I try to delete a non-empty tag vocabulary via the API (through HTTP), I get an internal server error. Checking
the logs, this turns out to be a consistency error raised by  sqlalchemy:
&lt;/p&gt;
&lt;p&gt;
Error - &amp;lt;class 'sqlalchemy.exc.&lt;a class="missing wiki"&gt;IntegrityError?&lt;/a&gt;'&amp;gt;: (&lt;a class="missing wiki"&gt;IntegrityError?&lt;/a&gt;) update or delete on table "vocabulary" violates
foreign key constraint "tag_vocabulary_id_fkey" on table "tag"
DETAIL:  Key (id)=(21421955-7560-467c-af30-9f790b73e6ae) is still referenced from table "tag".
&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;
'DELETE FROM vocabulary WHERE vocabulary.id = %(id)s' {'id': u'21421955-7560-467c-af30-9f790b73e6ae'}
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
URL: &lt;a class="ext-link" href="http://33.33.33.10:5000/api/action/vocabulary_delete"&gt;&lt;span class="icon"&gt;​&lt;/span&gt;http://33.33.33.10:5000/api/action/vocabulary_delete&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
The error makes sense, but I'm wondering if it would be useful to extend the API to also allow the deletion of
non-empty vocabularies, possibly via a parameter (not sure what best practice in API design is). At the very least, it
would be cool if the error message coming back in the response had more information in it.
&lt;/p&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/3014#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/2838</link>
        <guid isPermaLink="false">http://localhost/ticket/2838</guid>
        <title>#2838: Context variables accepted by action functions need to be documented</title>
        <pubDate>Fri, 10 Aug 2012 20:35:11 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
I was doing this:
&lt;/p&gt;
&lt;pre class="wiki"&gt;context = {'model': base.model, 'session': base.model.Session,
                    'user': toolkit.c.user or toolkit.c.author,
                    'extras_as_string': True}
group_dict = logic.get_action('group_show')(context,
                    {'id': group_id})
&lt;/pre&gt;&lt;p&gt;
in an extension and one of the group_dicts fields, one that uses convert_to/from_extras, was coming out with the wrong value. It took me ages to realise that I had to pass &lt;tt&gt;'extras_as_string': True&lt;/tt&gt; in the context. I don't think this or other context variables are documented anywhere.
&lt;/p&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/2838#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/2287</link>
        <guid isPermaLink="false">http://localhost/ticket/2287</guid>
        <title>#2287: Consistent datetime and time period strings localization</title>
        <pubDate>Thu, 12 Apr 2012 18:08:43 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
Find all places where date, times and time periods are rendered as strings in CKAN. Make them all go through the same code path (e.g. the helper function in helpers.py) with localization support.
&lt;/p&gt;
&lt;p&gt;
For example, on the user index page right now there are time period strings like "less than 1 month" that currently do not get translated (and the way they're implemented doesn't look i18n-friendly).
&lt;/p&gt;
&lt;p&gt;
ISO date format everywhere might be a good idea.
&lt;/p&gt;
&lt;p&gt;
Need to consider local timezone issues.
&lt;/p&gt;
&lt;p&gt;
Python standard library and Babel may have useful helpers for this.
&lt;/p&gt;
&lt;p&gt;
Should the local timezone displayed be a global setting per CKAN instance? Or should it change depending on the location of the user who is viewing the page?
&lt;/p&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/2287#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/2890</link>
        <guid isPermaLink="false">http://localhost/ticket/2890</guid>
        <title>#2890: Collect data previews and data store docs in one chapter</title>
        <pubDate>Tue, 28 Aug 2012 10:20:36 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
Currently there is this page:
&lt;/p&gt;
&lt;p&gt;
&lt;a class="ext-link" href="http://docs.ckan.org/en/latest/data-viewer.html"&gt;&lt;span class="icon"&gt;​&lt;/span&gt;http://docs.ckan.org/en/latest/data-viewer.html&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
which covers Recline Data Explorer and other kinds of data preview in CKAN. It is under the Publishing Datasets section in the documentation. I had to to a search for 'recline' to find it.
&lt;/p&gt;
&lt;p&gt;
Separately there is this page: &lt;a class="ext-link" href="http://docs.ckan.org/en/ckan-1.7.1/datastore.html"&gt;&lt;span class="icon"&gt;​&lt;/span&gt;http://docs.ckan.org/en/ckan-1.7.1/datastore.html&lt;/a&gt; which covers datastore, datastorer, and the data api.
&lt;/p&gt;
&lt;p&gt;
I suggest collecting this together in one chapter called 'Data Previews'. If I understand it right the general gist would be:
&lt;/p&gt;
&lt;p&gt;
CKAN has builtin previews of data resources on resource pages, enabled by default.
&lt;/p&gt;
&lt;p&gt;
Images, Google Documents, and web page resources will be loaded into embedded iframes for preview.
&lt;/p&gt;
&lt;p&gt;
Text-like files will be displayed raw.
&lt;/p&gt;
&lt;p&gt;
CSV or Excel files uploaded to CKAN will be previewed using Recline Data Explorer.
&lt;/p&gt;
&lt;p&gt;
Additionally, you can enable CKAN's &lt;a class="missing wiki"&gt;DataStore?&lt;/a&gt;, requires you to install &lt;a class="missing wiki"&gt;ElasticSearch?&lt;/a&gt; and nginx and put datastore.enabled=1 in your ini file. Lets you use the Data API to query data.
&lt;/p&gt;
&lt;p&gt;
Does having &lt;a class="missing wiki"&gt;DataStore?&lt;/a&gt; enabled mean you get preview of more types of resources? Any resource that's available via the Data API will be previewed using Recline,
&lt;/p&gt;
&lt;p&gt;
You can install ckanext-datastorer, and then CSV and Excel files _linked to_ as CKAN resources will be previewed using Recline also. Requires celeryd.
&lt;/p&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/2890#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/2923</link>
        <guid isPermaLink="false">http://localhost/ticket/2923</guid>
        <title>#2923: Change regularise -&gt; regularize</title>
        <pubDate>Thu, 13 Sep 2012 10:03:02 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
The function is called regularise_html(), can't remember what file it's in.
&lt;/p&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/2923#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/3019</link>
        <guid isPermaLink="false">http://localhost/ticket/3019</guid>
        <title>#3019: Cannot delete dataset extras</title>
        <pubDate>Wed, 14 Nov 2012 18:44:38 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
Deleting extras in the web interface is broken
&lt;/p&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/3019#changelog</comments>
    </item><item>
        <link>http://localhost/ticket/2931</link>
        <guid isPermaLink="false">http://localhost/ticket/2931</guid>
        <title>#2931: Better docstring for app_globals.py</title>
        <pubDate>Mon, 17 Sep 2012 14:13:14 GMT</pubDate>
        
        <dc:creator>seanh</dc:creator>

        <description>&lt;p&gt;
&lt;strong&gt; The application's Globals object &lt;/strong&gt; is not very informative.
&lt;/p&gt;
</description>
        <category>Results</category>
        <comments>http://localhost/ticket/2931#changelog</comments>
    </item>
 </channel>
</rss>