[ckan-changes] [ckan/ckan] 839bd7: [1541] Add empty alt tag to gravatar

GitHub noreply at github.com
Wed Jul 2 19:48:01 UTC 2014


  Branch: refs/heads/1251-resource-view
  Home:   https://github.com/ckan/ckan
  Commit: 839bd7e82a54a3c0ae88af5c808de0ea2941d2ee
      https://github.com/ckan/ckan/commit/839bd7e82a54a3c0ae88af5c808de0ea2941d2ee
  Author: Ross Jones <ross at servercode.co.uk>
  Date:   2014-02-28 (Fri, 28 Feb 2014)

  Changed paths:
    M ckan/lib/helpers.py

  Log Message:
  -----------
  [1541] Add empty alt tag to gravatar


  Commit: f65718314e07918b45655f7332d9ef638a6e9262
      https://github.com/ckan/ckan/commit/f65718314e07918b45655f7332d9ef638a6e9262
  Author: nigelb <nigel.babu at okfn.org>
  Date:   2014-04-14 (Mon, 14 Apr 2014)

  Changed paths:
    M ckan/config/routing.py
    M ckan/templates/admin/base.html
    A ckan/templates/admin/trash.html

  Log Message:
  -----------
  [#1539] Create a minimal new Trash page


  Commit: 44a5537efa41c4e64ae6a821d1ecb19e2e2cebb6
      https://github.com/ckan/ckan/commit/44a5537efa41c4e64ae6a821d1ecb19e2e2cebb6
  Author: Ian Ward <ian at excess.org>
  Date:   2014-04-22 (Tue, 22 Apr 2014)

  Changed paths:
    M ckan/templates/package/new_package_form.html

  Log Message:
  -----------
  [#1659] remove new_package_form.html block overrides


  Commit: 9ea722e56d4308a7509e49e300877f343b657aeb
      https://github.com/ckan/ckan/commit/9ea722e56d4308a7509e49e300877f343b657aeb
  Author: Ian Ward <ian at excess.org>
  Date:   2014-04-23 (Wed, 23 Apr 2014)

  Changed paths:
    M ckan/logic/auth/create.py
    M ckan/logic/auth/update.py

  Log Message:
  -----------
  [#1664] package_create+update: fix config permission check

Use the same permission checks for both package_update and package_create
and check all the applicable config options: anon_create_dataset,
create_unowned_dataset and create_dataset_if_not_in_organization


  Commit: 09100bab306ee9df3ec740ac88ba18136a3476de
      https://github.com/ckan/ckan/commit/09100bab306ee9df3ec740ac88ba18136a3476de
  Author: nigelb <nigel.babu at okfn.org>
  Date:   2014-04-24 (Thu, 24 Apr 2014)

  Changed paths:
    M ckanext/datapusher/plugin.py

  Log Message:
  -----------
  Catch exception in DataPusher

Fixes #1666


  Commit: 8a5f4f3740ef15ec596328335eed053c3167cfba
      https://github.com/ckan/ckan/commit/8a5f4f3740ef15ec596328335eed053c3167cfba
  Author: nigelb <nigel.babu at okfn.org>
  Date:   2014-04-28 (Mon, 28 Apr 2014)

  Changed paths:
    M ckan/controllers/package.py

  Log Message:
  -----------
  Catch NotFound error in resources page


  Commit: cef5fdfe533b39f32e3e826c4e6b06f1bd486c23
      https://github.com/ckan/ckan/commit/cef5fdfe533b39f32e3e826c4e6b06f1bd486c23
  Author: Ian Ward <ian at excess.org>
  Date:   2014-04-30 (Wed, 30 Apr 2014)

  Changed paths:
    M ckan/public/base/less/forms.less
    M ckan/templates/package/snippets/stages.html

  Log Message:
  -----------
  [#1659] two-stage package/snippets/stages.html


  Commit: beef24f7e0956ee5a5a00db0237da37ea8a52aa4
      https://github.com/ckan/ckan/commit/beef24f7e0956ee5a5a00db0237da37ea8a52aa4
  Author: Ian Ward <ian at excess.org>
  Date:   2014-04-30 (Wed, 30 Apr 2014)

  Changed paths:
    M ckan/controllers/package.py

  Log Message:
  -----------
  [#1659] two-stage create package controller


  Commit: 91d22ffc247db27692f1c52846f6c6fea68f40ef
      https://github.com/ckan/ckan/commit/91d22ffc247db27692f1c52846f6c6fea68f40ef
  Author: Ian Ward <ian at excess.org>
  Date:   2014-05-01 (Thu, 01 May 2014)

  Changed paths:
    R ckan/templates/package/new_package_metadata.html
    R ckan/templates/package/snippets/package_metadata_form.html

  Log Message:
  -----------
  [#1659] remove package create step 3 templates


  Commit: 4a2f8dc02e7777d4c830a957e8e4e6905b6921bc
      https://github.com/ckan/ckan/commit/4a2f8dc02e7777d4c830a957e8e4e6905b6921bc
  Author: Ian Ward <ian at excess.org>
  Date:   2014-05-01 (Thu, 01 May 2014)

  Changed paths:
    M ckan/templates/package/snippets/resource_form.html

  Log Message:
  -----------
  [#1659] move Finish button to resource form


  Commit: a29feb5649391a1967dc39ad03b4d0a40ae9f94e
      https://github.com/ckan/ckan/commit/a29feb5649391a1967dc39ad03b4d0a40ae9f94e
  Author: nigelb <nigel.babu at okfn.org>
  Date:   2014-05-07 (Wed, 07 May 2014)

  Changed paths:
    M ckan/lib/cli.py

  Log Message:
  -----------
  [#1668] Show only active users on cli


  Commit: b1b33827dc6be23d635f2572c7b8fc5ea66841f1
      https://github.com/ckan/ckan/commit/b1b33827dc6be23d635f2572c7b8fc5ea66841f1
  Author: Sean Hammond <seanhammond at lavabit.com>
  Date:   2014-05-21 (Wed, 21 May 2014)

  Changed paths:
    M doc/contributing/architecture.rst

  Log Message:
  -----------
  [#1686] Document no ORM objects in templates


  Commit: 1a1400607fc871c221a29ebb19e1fa84bf08ed2d
      https://github.com/ckan/ckan/commit/1a1400607fc871c221a29ebb19e1fa84bf08ed2d
  Author: Vitor Baptista <vitor at vitorbaptista.com>
  Date:   2014-05-22 (Thu, 22 May 2014)

  Changed paths:
    M ckanext/datastore/tests/test_delete.py
    M ckanext/datastore/tests/test_search.py

  Log Message:
  -----------
  [#1725] Add tests for when searching/deleting elements passing invalid filters


  Commit: f3aa38783c6b70ff77e00737c1dd5a2aef31c628
      https://github.com/ckan/ckan/commit/f3aa38783c6b70ff77e00737c1dd5a2aef31c628
  Author: Vitor Baptista <vitor at vitorbaptista.com>
  Date:   2014-05-22 (Thu, 22 May 2014)

  Changed paths:
    M ckanext/datastore/db.py
    A ckanext/datastore/interfaces.py
    A ckanext/datastore/tests/test_interface.py

  Log Message:
  -----------
  [#1725] Adds IDataStore interface and extension point to change WHERE clauses

I prefered to extend on `where` instead of `search_data` and `delete_data`
separately to keep the extension code DRY.

The IDataStore extensions' `where` methods are called with the `filters` dict
received from the user. They must check if there's any filter they want to
process and create a `clause` list with elements as tuples following the
pattern:

    (SQL_CLAUSE, PARAM1, PARAM2, ...)

The SQL_CLAUSE can be anything valid on the WHERE clause, for example
`AVG(score) > %s AND AVG(score) < %s`. You have to substitute any user-defined
parameters for `%s`, doesn't matter what their type is (int, string, ...).
Then, for each `%s` inside SQL_CLAUSE, you need to add one PARAM. For example:

    ('AVG(score) > %s AND AVG(score) < %s', 10, 20)

This pattern is needed to be able to sanitize user input and avoid SQL
Injections.

After that, you'll need to delete every key from the `filters` dict that you've
processed. Following our example, you'll have to:

    del filters['score_between']

We need this because we validate the filters' column names against the
DataStore resource's column names. Any filter on a column that doesn't exist on
the resource is invalid and raises an error. If you didn't remove
`filters['score_between']`, you'll receive a "Field 'score_between' doesn't
exist" error.

This is done to give the user a friendlier error message, and avoid another
possible SQL Injection vector.


  Commit: 08e8ee114b724c5a87ada63e46417662ad78f77c
      https://github.com/ckan/ckan/commit/08e8ee114b724c5a87ada63e46417662ad78f77c
  Author: Vitor Baptista <vitor at vitorbaptista.com>
  Date:   2014-05-22 (Thu, 22 May 2014)

  Changed paths:
    M ckanext/datastore/db.py

  Log Message:
  -----------
  [#1725] Forgot to import ckan.plugins


  Commit: f70476cace26184b41fe5410abdd19180d04ca92
      https://github.com/ckan/ckan/commit/f70476cace26184b41fe5410abdd19180d04ca92
  Author: Vitor Baptista <vitor at vitorbaptista.com>
  Date:   2014-05-22 (Thu, 22 May 2014)

  Changed paths:
    M ckanext/datastore/db.py
    M ckanext/datastore/tests/test_interface.py

  Log Message:
  -----------
  [#1725] Custom filters should be added inside parenthesis

The extensions can get a single filter (e.g. "age_not_between") and create two
WHERE clauses (e.g. "age < %s OR age > %s"). To avoid hard-to-track bugs
related to the operator precedence in Postgres, we add every custom filter
inside parenthesis.


  Commit: fa8b0c57cf3e8ef09ed536532ccc0d6a19ffc848
      https://github.com/ckan/ckan/commit/fa8b0c57cf3e8ef09ed536532ccc0d6a19ffc848
  Author: Vitor Baptista <vitor at vitorbaptista.com>
  Date:   2014-05-23 (Fri, 23 May 2014)

  Changed paths:
    M ckanext/datastore/db.py
    M ckanext/datastore/tests/test_interface.py

  Log Message:
  -----------
  [#1725] Filters received shouldn't be modified

This means that if the user sends us:

    'filters': { 'age_between': [20, 30] }

We should return that unmodified in the query result, even though internally
that might be translated to something else or removed.


  Commit: b09085d3fe23decccd695f5f3d13ef889ad7956a
      https://github.com/ckan/ckan/commit/b09085d3fe23decccd695f5f3d13ef889ad7956a
  Author: Vitor Baptista <vitor at vitorbaptista.com>
  Date:   2014-05-23 (Fri, 23 May 2014)

  Changed paths:
    M ckanext/datastore/tests/test_delete.py
    M ckanext/datastore/tests/test_search.py

  Log Message:
  -----------
  [#1725] Guarantee that tests fail for the correct reason


  Commit: 3fed29cbaa3f4045cca899ecd006459f8dc6d295
      https://github.com/ckan/ckan/commit/3fed29cbaa3f4045cca899ecd006459f8dc6d295
  Author: Vitor Baptista <vitor at vitorbaptista.com>
  Date:   2014-05-23 (Fri, 23 May 2014)

  Changed paths:
    M ckanext/datastore/tests/test_search.py

  Log Message:
  -----------
  [#1725] Add test to guarantee that every field in datastore_search is valid


  Commit: 99cc09240ada28d4c2e73b15f2a242a40534f928
      https://github.com/ckan/ckan/commit/99cc09240ada28d4c2e73b15f2a242a40534f928
  Author: Vitor Baptista <vitor at vitorbaptista.com>
  Date:   2014-05-24 (Sat, 24 May 2014)

  Changed paths:
    M ckanext/datastore/db.py

  Log Message:
  -----------
  [#1725] Fix exception caught when there's no CKAN_CURRENT_URL

When we try to get a key from a dict and it doesn't exist, a KeyError is
raised, not a TypeError.


  Commit: f59c914cfd9b4898fa9938471c772945fcbb984f
      https://github.com/ckan/ckan/commit/f59c914cfd9b4898fa9938471c772945fcbb984f
  Author: Vitor Baptista <vitor at vitorbaptista.com>
  Date:   2014-05-27 (Tue, 27 May 2014)

  Changed paths:
    M ckanext/datastore/db.py

  Log Message:
  -----------
  [#1725] Refactor search_data()'s sort to accept an array

We'll need this to allow extensions to add new clauses to it.


  Commit: aa82afc577e90f6744eb869fb2f76fb75c4bbeeb
      https://github.com/ckan/ckan/commit/aa82afc577e90f6744eb869fb2f76fb75c4bbeeb
  Author: Vitor Baptista <vitor at vitorbaptista.com>
  Date:   2014-05-27 (Tue, 27 May 2014)

  Changed paths:
    M ckanext/datastore/db.py

  Log Message:
  -----------
  [#1725] Catch exception thrown when there's no toolkit.request

I have changed this on 3fed29c, but got the following traceback:

```
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/nose/case.py", line 197, in runTest
    self.test(*self.arg)
  File "/usr/lib/ckan/default/src/ckan/ckanext/datastore/tests/test_interface.py", line 74, in test_filters_sent_arent_modified
    filters=filters.copy())
  File "/usr/lib/ckan/default/src/ckan/ckan/new_tests/helpers.py", line 91, in call_action
    return logic.get_action(action_name)(context=context, data_dict=kwargs)
  File "/usr/lib/ckan/default/src/ckan/ckan/logic/__init__.py", line 414, in wrapped
    result = _action(context, data_dict, **kw)
  File "/usr/lib/ckan/default/src/ckan/ckan/logic/__init__.py", line 530, in wrapper
    return action(context, data_dict)
  File "/usr/lib/ckan/default/src/ckan/ckanext/datastore/logic/action.py", line 339, in datastore_search
    result = db.search(context, data_dict)
  File "/usr/lib/ckan/default/src/ckan/ckanext/datastore/db.py", line 1141, in search
    return search_data(context, data_dict)
  File "/usr/lib/ckan/default/src/ckan/ckanext/datastore/db.py", line 947, in search_data
    _insert_links(data_dict, limit, offset)
  File "/usr/lib/ckan/default/src/ckan/ckanext/datastore/db.py", line 848, in _insert_links
    urlstring = toolkit.request.environ['CKAN_CURRENT_URL']
  File "/usr/lib/ckan/default/src/ckan/ckan/lib/maintain.py", line 75, in custom__getattr__
    depricated = __old_getattr__(self, '__depricated_properties__')
  File "/usr/local/lib/python2.7/dist-packages/paste/registry.py", line 137, in __getattr__
    return getattr(self._current_obj(), attr)
  File "/usr/local/lib/python2.7/dist-packages/paste/registry.py", line 197, in _current_obj
    'thread' % self.____name__)
TypeError: No object (name: request) has been registered for this thread
```


  Commit: 8e4c5c78072b9728f7c742664f807995a0a834ab
      https://github.com/ckan/ckan/commit/8e4c5c78072b9728f7c742664f807995a0a834ab
  Author: Vitor Baptista <vitor at vitorbaptista.com>
  Date:   2014-05-27 (Tue, 27 May 2014)

  Changed paths:
    M ckanext/datastore/db.py
    M ckanext/datastore/interfaces.py
    M ckanext/datastore/plugin.py
    M ckanext/datastore/tests/test_interface.py

  Log Message:
  -----------
  [#1725] Move validations to IDataStore's validate_query() method

This commit is the first step towards moving all validations of the received
`data_dict` to a single place. This was the easiest way I could think of to
allow extensions to modify our validation rules.

Every IDataStore extension should implement a `validate_query()` method that
receives the context, the data_dict, and the list of fields the current
resource has. The data_dict is a copy, so the extension is able to mess with it
without problems.

Inside that method, the extension will check everything it understands (e.g.
filters, fields, sorts). When finding something, it should remove it from the
data_dict. In the end, return the data_dict with everything it understands
removed. This new data_dict will be passed to the next extension.

After we do this with every extension available, we expect to have a data_dict
with empty values. For example:

```
    # Before calling
    data_dict = {
  'fields': ['age', 'distance'],
  'filters': {
      'age': 25,
      'distance': 5
  }
    }

    # After calling
    data_dict = {
  'fields': [],
  'filters': {}
    }
```

In that case, the validation succeeds and we can keep going. If there's still
any element left in the data_dict, that means that no extension understands it,
and we'll throw a ValidationError.


  Commit: 6d24cca287e3f789be65b3282606f7c3d7ef8baf
      https://github.com/ckan/ckan/commit/6d24cca287e3f789be65b3282606f7c3d7ef8baf
  Author: Vitor Baptista <vitor at vitorbaptista.com>
  Date:   2014-05-27 (Tue, 27 May 2014)

  Changed paths:
    A ckanext/datastore/tests/sample_datastore_plugin.py
    M ckanext/datastore/tests/test_interface.py
    M setup.py

  Log Message:
  -----------
  [#1725] Create proper plugin for testing

Instead of loading the plugin in a hackish way, we create a proper plugin and
load it the same way any other plugins is loaded.


  Commit: 675126f9d4eef025b155f1600d6f6aa34ea25b68
      https://github.com/ckan/ckan/commit/675126f9d4eef025b155f1600d6f6aa34ea25b68
  Author: Vitor Baptista <vitor at vitorbaptista.com>
  Date:   2014-05-27 (Tue, 27 May 2014)

  Changed paths:
    M ckanext/datastore/db.py
    A ckanext/datastore/helpers.py
    M ckanext/datastore/logic/action.py
    A ckanext/datastore/tests/test_helpers.py
    M ckanext/datastore/tests/test_unit.py

  Log Message:
  -----------
  [#1725] Move db._get_list to datastore_helpers.get_list

This method was already being used by action.py, and we'll need it soon enough
in other parts of the code, so we'd better make it public.


  Commit: f84e4c7239d00f263ec1fa89a9686c186511bf2c
      https://github.com/ckan/ckan/commit/f84e4c7239d00f263ec1fa89a9686c186511bf2c
  Author: Vitor Baptista <vitor at vitorbaptista.com>
  Date:   2014-05-28 (Wed, 28 May 2014)

  Changed paths:
    M ckanext/datastore/db.py
    M ckanext/datastore/interfaces.py
    M ckanext/datastore/plugin.py
    M ckanext/datastore/tests/sample_datastore_plugin.py

  Log Message:
  -----------
  [#1725] Refactor DataStore's WHERE code to the DataStore plugin

The intent is for us to use the same extension points as third-party plugins,
so we can test that they work and that they're extensible enough.


  Commit: d2124503dfef1697965eca439decdd9902f43529
      https://github.com/ckan/ckan/commit/d2124503dfef1697965eca439decdd9902f43529
  Author: Vitor Baptista <vitor at vitorbaptista.com>
  Date:   2014-05-28 (Wed, 28 May 2014)

  Changed paths:
    M ckanext/datastore/db.py
    M ckanext/datastore/interfaces.py
    M ckanext/datastore/plugin.py

  Log Message:
  -----------
  [#1725] Adds search_data() extension point and change DataStore to use it

In a high level, extensions that implement this method are expected to add what
they want into a query_dict dictionary, defined as:

```
{
    'select': [],    # list
    'ts_query': '',  # string
    'sort': [],      # list
    'limit': 100,    # int
    'offset': 0      # int
}
```

This dictionary will be passed to each extension, and they can add or remove
attributes to it. Because of this, the order the extensions are loaded in the
.ini file matter.

At this point, the validations defined in validate_query() have already run.


  Commit: 513e94d6f3ceb49df5da8f388b2d8400e9f6b052
      https://github.com/ckan/ckan/commit/513e94d6f3ceb49df5da8f388b2d8400e9f6b052
  Author: Vitor Baptista <vitor at vitorbaptista.com>
  Date:   2014-05-28 (Wed, 28 May 2014)

  Changed paths:
    M ckanext/datastore/tests/test_helpers.py

  Log Message:
  -----------
  [#1725] Fix PEP8 errors


  Commit: 860a557a50491d51c6935ba1187394df82f2fd7e
      https://github.com/ckan/ckan/commit/860a557a50491d51c6935ba1187394df82f2fd7e
  Author: Vitor Baptista <vitor at vitorbaptista.com>
  Date:   2014-05-28 (Wed, 28 May 2014)

  Changed paths:
    M ckanext/datastore/db.py

  Log Message:
  -----------
  [#1725] Remove useless code

This was moved to the Datastore plugin, so there's no need to be here anymore.


  Commit: 256e80d6871ed6c6df04f4a0829d5f3e65d4ce37
      https://github.com/ckan/ckan/commit/256e80d6871ed6c6df04f4a0829d5f3e65d4ce37
  Author: Vitor Baptista <vitor at vitorbaptista.com>
  Date:   2014-05-28 (Wed, 28 May 2014)

  Changed paths:
    M ckanext/datastore/db.py
    M ckanext/datastore/tests/test_delete.py
    M ckanext/datastore/tests/test_search.py

  Log Message:
  -----------
  [#1725] Add test to guarantee that the filters received are in a dict


  Commit: 1e29f22af5ad1bf22bdad8b1b5209083aa1355db
      https://github.com/ckan/ckan/commit/1e29f22af5ad1bf22bdad8b1b5209083aa1355db
  Author: Vitor Baptista <vitor at vitorbaptista.com>
  Date:   2014-05-28 (Wed, 28 May 2014)

  Changed paths:
    M ckanext/datastore/tests/test_interface.py

  Log Message:
  -----------
  [#1725] Add tests asserting that the IDataStore.where() works for delete

It should be used both on datastore_create and datastore_delete.


  Commit: 059a24b97427706b505af50ee681f469a4c5fce2
      https://github.com/ckan/ckan/commit/059a24b97427706b505af50ee681f469a4c5fce2
  Author: Vitor Baptista <vitor at vitorbaptista.com>
  Date:   2014-05-28 (Wed, 28 May 2014)

  Changed paths:
    M ckanext/datastore/db.py
    M ckanext/datastore/interfaces.py
    M ckanext/datastore/plugin.py
    M ckanext/datastore/tests/sample_datastore_plugin.py
    M ckanext/datastore/tests/test_interface.py

  Log Message:
  -----------
  [#1725] Add delete_data() extension point and remove where()

@amercader and I agreed that, even though in most cases both select_data() and
delete_data() would create the WHERE clauses with the same code, it's easier to
understand the WHERE being created inside each one of those, not on a separate
where() extension point.


  Commit: d884b6d896f8076d7223414640775807e6d95eaf
      https://github.com/ckan/ckan/commit/d884b6d896f8076d7223414640775807e6d95eaf
  Author: Vitor Baptista <vitor at vitorbaptista.com>
  Date:   2014-05-28 (Wed, 28 May 2014)

  Changed paths:
    M ckanext/datastore/db.py
    M ckanext/datastore/interfaces.py
    M ckanext/datastore/plugin.py
    M ckanext/datastore/tests/sample_datastore_plugin.py

  Log Message:
  -----------
  [#1725] Rename IDataStore -> IDatastore

This makes it consistent with the plugin name (DatastorePlugin).


  Commit: 6ba586860d4a5bb86980e7e789789ed2c3dfa4f1
      https://github.com/ckan/ckan/commit/6ba586860d4a5bb86980e7e789789ed2c3dfa4f1
  Author: Vitor Baptista <vitor at vitorbaptista.com>
  Date:   2014-05-28 (Wed, 28 May 2014)

  Changed paths:
    M ckanext/datastore/db.py
    M ckanext/datastore/interfaces.py
    M ckanext/datastore/plugin.py
    M ckanext/datastore/tests/sample_datastore_plugin.py

  Log Message:
  -----------
  [#1725] Reorder arguments on search_data() and delete_data()

This keeps our current 3 extensions points, search_data(), delete_data(), and
validate_query(), with the same initial 3 arguments, in the same order. The
interface becomes a bit more consistent.


  Commit: 5854436b159adf7363b4acfead8300ae46052ea1
      https://github.com/ckan/ckan/commit/5854436b159adf7363b4acfead8300ae46052ea1
  Author: Vitor Baptista <vitor at vitorbaptista.com>
  Date:   2014-05-28 (Wed, 28 May 2014)

  Changed paths:
    M ckan/new_tests/logic/action/test_update.py
    M ckan/new_tests/logic/test_validators.py
    M ckan/templates/package/snippets/package_form.html
    M ckan/tests/functional/test_tracking.py
    M ckan/tests/test_coding_standards.py

  Log Message:
  -----------
  Merge branch 'master' into 1725-extend-datastore


  Commit: fafeef9ca07136b8231750f3defd65e890ed7a54
      https://github.com/ckan/ckan/commit/fafeef9ca07136b8231750f3defd65e890ed7a54
  Author: Vitor Baptista <vitor at vitorbaptista.com>
  Date:   2014-05-28 (Wed, 28 May 2014)

  Changed paths:
    M ckan/tests/test_coding_standards.py

  Log Message:
  -----------
  Merge branch 'master' into 1725-extend-datastore


  Commit: 4ce97241a0a1d1bf79fae63bd304bfd19efa7b35
      https://github.com/ckan/ckan/commit/4ce97241a0a1d1bf79fae63bd304bfd19efa7b35
  Author: nigelb <nigel.babu at okfn.org>
  Date:   2014-05-29 (Thu, 29 May 2014)

  Changed paths:
    M doc/contributing/frontend/index.rst
    M doc/maintaining/installing/install-from-source.rst

  Log Message:
  -----------
  [#1734] Documentation for installing npm


  Commit: cdac1e8d412ad4df9ffba56fc20de5c4efee4aeb
      https://github.com/ckan/ckan/commit/cdac1e8d412ad4df9ffba56fc20de5c4efee4aeb
  Author: nigelb <nigel.babu at okfn.org>
  Date:   2014-05-29 (Thu, 29 May 2014)

  Changed paths:
    M doc/maintaining/installing/install-from-source.rst

  Log Message:
  -----------
  [#1734] Fix the linking


  Commit: cfa4e6f9361e5276031bebe486a578e35dcbd947
      https://github.com/ckan/ckan/commit/cfa4e6f9361e5276031bebe486a578e35dcbd947
  Author: Vitor Baptista <vitor at vitorbaptista.com>
  Date:   2014-05-29 (Thu, 29 May 2014)

  Changed paths:
    M ckanext/datastore/db.py
    M ckanext/datastore/interfaces.py
    M ckanext/datastore/plugin.py
    M ckanext/datastore/tests/sample_datastore_plugin.py
    M ckanext/datastore/tests/test_interface.py

  Log Message:
  -----------
  [#1725] Rename IDatastore's methods to datastore_*

This makes it less likely for some other interface to use the same method
names, and makes it clearer IMO what these methods are about.


  Commit: da0d62ca078172fced95a5fdfe40f997e419cc3b
      https://github.com/ckan/ckan/commit/da0d62ca078172fced95a5fdfe40f997e419cc3b
  Author: Ian Ward <ian at excess.org>
  Date:   2014-06-04 (Wed, 04 Jun 2014)

  Changed paths:
    M doc/contributing/python.rst

  Log Message:
  -----------
  [#1745] remove lie about python 3 string formatting


  Commit: 6b7601491049bfaa3c4b6aab842f520c27f1a2b7
      https://github.com/ckan/ckan/commit/6b7601491049bfaa3c4b6aab842f520c27f1a2b7
  Author: Ian Ward <ian at excess.org>
  Date:   2014-06-04 (Wed, 04 Jun 2014)

  Changed paths:
    M doc/contributing/python.rst

  Log Message:
  -----------
  [#1745] nothing wrong with from module import name


  Commit: 773d198102d70f7a0367bf4bb40931aaeac19069
      https://github.com/ckan/ckan/commit/773d198102d70f7a0367bf4bb40931aaeac19069
  Author: Ian Ward <ian at excess.org>
  Date:   2014-06-05 (Thu, 05 Jun 2014)

  Changed paths:
    M ckan/new_tests/controllers/__init__.py
    M ckan/new_tests/controllers/test_util.py

  Log Message:
  -----------
  [#1659] move WsgiAppCase to new_tests/controllers/__init__.py


  Commit: 22e24767fcca240b36e1f366772e3af4ab9bd7cd
      https://github.com/ckan/ckan/commit/22e24767fcca240b36e1f366772e3af4ab9bd7cd
  Author: Ian Ward <ian at excess.org>
  Date:   2014-06-05 (Thu, 05 Jun 2014)

  Changed paths:
    M ckan/new_tests/factories.py

  Log Message:
  -----------
  [#1659] test factory: create sysadmins with different names


  Commit: 6bbc9a8a8e3acad70df00a5e9489dc041ff29f85
      https://github.com/ckan/ckan/commit/6bbc9a8a8e3acad70df00a5e9489dc041ff29f85
  Author: Ian Ward <ian at excess.org>
  Date:   2014-06-05 (Thu, 05 Jun 2014)

  Changed paths:
    A ckan/new_tests/controllers/test_package.py

  Log Message:
  -----------
  [#1659] start of new package controller tests


  Commit: 529e2d98610520bf2f67bc177d6001e84e1baca8
      https://github.com/ckan/ckan/commit/529e2d98610520bf2f67bc177d6001e84e1baca8
  Author: Ian Ward <ian at excess.org>
  Date:   2014-06-05 (Thu, 05 Jun 2014)

  Changed paths:
    M ckan/new_tests/controllers/__init__.py
    M ckan/new_tests/controllers/test_package.py

  Log Message:
  -----------
  [#1659] pep8


  Commit: 4565b258f0c6d3312462b83c54dda6739ea4c61b
      https://github.com/ckan/ckan/commit/4565b258f0c6d3312462b83c54dda6739ea4c61b
  Author: Ian Ward <ian at excess.org>
  Date:   2014-06-05 (Thu, 05 Jun 2014)

  Changed paths:
    M ckan/new_tests/controllers/test_package.py
    M ckan/new_tests/controllers/test_util.py

  Log Message:
  -----------
  [#1659] import coding standards


  Commit: 050c4fac4f8c3c23d32cd4cd676b13c8cca3ebd3
      https://github.com/ckan/ckan/commit/050c4fac4f8c3c23d32cd4cd676b13c8cca3ebd3
  Author: Ian Ward <ian at excess.org>
  Date:   2014-06-05 (Thu, 05 Jun 2014)

  Changed paths:
    M ckan/tests/test_coding_standards.py
    M doc/contributing/python.rst

  Log Message:
  -----------
  [#1745] recommend from module import name


  Commit: d5f3f714ff9747a2856dfd5e7992723d1b757304
      https://github.com/ckan/ckan/commit/d5f3f714ff9747a2856dfd5e7992723d1b757304
  Author: Ian Ward <ian at excess.org>
  Date:   2014-06-05 (Thu, 05 Jun 2014)

  Changed paths:
    M ckan/new_tests/controllers/__init__.py
    M ckan/new_tests/controllers/test_package.py
    M ckan/new_tests/controllers/test_util.py
    M ckan/new_tests/helpers.py
    M ckan/templates/package/snippets/package_form.html

  Log Message:
  -----------
  [#1659] FunctionalTestBaseClass from datapackager, use new templates


  Commit: d563a35648d03d1a2e4a660affb4a84e751072be
      https://github.com/ckan/ckan/commit/d563a35648d03d1a2e4a660affb4a84e751072be
  Author: Ian Ward <ian at excess.org>
  Date:   2014-06-05 (Thu, 05 Jun 2014)

  Changed paths:
    M ckan/new_tests/controllers/test_package.py
    M ckan/templates/package/snippets/resource_form.html

  Log Message:
  -----------
  [#1659] test that we can get to the resource page


  Commit: 126a85cbfc3d76fe1ee4f118cb6aba93afd7cc74
      https://github.com/ckan/ckan/commit/126a85cbfc3d76fe1ee4f118cb6aba93afd7cc74
  Author: Ian Ward <ian at excess.org>
  Date:   2014-06-05 (Thu, 05 Jun 2014)

  Changed paths:
    M ckan/new_tests/controllers/test_util.py

  Log Message:
  -----------
  [#1659] fix test_util.py


  Commit: ebe7f38c2e845eb10466691e977a1332dd7b22bf
      https://github.com/ckan/ckan/commit/ebe7f38c2e845eb10466691e977a1332dd7b22bf
  Author: Vitor Baptista <vitor at vitorbaptista.com>
  Date:   2014-06-09 (Mon, 09 Jun 2014)

  Changed paths:
    M ckanext/datastore/db.py
    M ckanext/datastore/logic/action.py
    M ckanext/datastore/tests/test_search.py
    M ckanext/datastore/tests/test_unit.py
    M requirements.in
    M requirements.txt

  Log Message:
  -----------
  [#1725] datastore_search_sql validates being called with single statement

We're using sqlparse to actually parse the SQL string and make sure it's a
single statement. That means we can be more sure that the user is providing us
with a single statement, and we support SQL statements with semicolons, like
'SELECT * FROM "foo;bar"'.

This is a first step towards avoiding multiple statements even on
datastore_search and datastore_delete, to make our code a bit safer against SQL
Injection vectors.


  Commit: 1b0b4054816286143af27381dd3996e167544484
      https://github.com/ckan/ckan/commit/1b0b4054816286143af27381dd3996e167544484
  Author: Vitor Baptista <vitor at vitorbaptista.com>
  Date:   2014-06-09 (Mon, 09 Jun 2014)

  Changed paths:
    M ckanext/datastore/db.py
    M ckanext/datastore/helpers.py
    M ckanext/datastore/logic/action.py
    M ckanext/datastore/tests/test_helpers.py
    M ckanext/datastore/tests/test_unit.py

  Log Message:
  -----------
  [#1725] Move is_single_statement() to datastore_helpers

It was already being used by datastore_search_sql, so it isn't private. That
being the case, we'd better make it look like it's not private.


  Commit: b4befddbf423b6bd6e4b2b02919e78da6421ce0a
      https://github.com/ckan/ckan/commit/b4befddbf423b6bd6e4b2b02919e78da6421ce0a
  Author: Vitor Baptista <vitor at vitorbaptista.com>
  Date:   2014-06-09 (Mon, 09 Jun 2014)

  Changed paths:
    M ckanext/datastore/db.py
    M ckanext/datastore/tests/sample_datastore_plugin.py
    M ckanext/datastore/tests/test_interface.py

  Log Message:
  -----------
  [#1725] datastore_search and _delete don't work with multiple statements

What we're trying to avoid is for an insecure extension to allow a malicious
user to create queries like:

```
SELECT * FROM "foo" WHERE (1=1); DELETE FROM "foo"; -- AND "bar"='5');
```

This doesn't avoid all possible SQL injection vectors, but it's one less issue
to worry about.


  Commit: 1fe73385d4cf819a7566be4671641ac7ffb56061
      https://github.com/ckan/ckan/commit/1fe73385d4cf819a7566be4671641ac7ffb56061
  Author: Ian Ward <ian at excess.org>
  Date:   2014-06-09 (Mon, 09 Jun 2014)

  Changed paths:
    M ckan/new_tests/helpers.py

  Log Message:
  -----------
  [#1659] backport version of webtest.Form.submit that works


  Commit: 96e600e89e7a2e1ea7f43aa2fa7fd052d679f714
      https://github.com/ckan/ckan/commit/96e600e89e7a2e1ea7f43aa2fa7fd052d679f714
  Author: Ian Ward <ian at excess.org>
  Date:   2014-06-09 (Mon, 09 Jun 2014)

  Changed paths:
    M ckan/new_tests/controllers/test_package.py

  Log Message:
  -----------
  [#1659] test package previous button


  Commit: 63a8492f57025f6c6d64e000fd4a6a26a56a3aa8
      https://github.com/ckan/ckan/commit/63a8492f57025f6c6d64e000fd4a6a26a56a3aa8
  Author: Nick Stenning <nick at whiteink.com>
  Date:   2014-06-10 (Tue, 10 Jun 2014)

  Changed paths:
    A Dockerfile
    A contrib/docker/nginx.conf
    A contrib/docker/svc/ckan/run
    A contrib/docker/svc/nginx/run

  Log Message:
  -----------
  Add Dockerfile for building a CKAN 2.2 image

This commit adds a Dockerfile and support files (including nginx and
runit configuration) for a binary CKAN 2.2 docker image.

Specifically, this allows you to build a docker image including CKAN
2.2, running behind nginx and gunicorn, by running

    docker build .

For example, to build an image called ckan/ckan tagged at version 2.2,
you might run

    docker build -t ckan/ckan:2.2 .

The resulting image contains only CKAN, with a nearly vanilla
configuration. In order to use it, you must do one of two things. You
can either use the vanilla configuration as-is, and this requires that
you specify the location of a Postgres database and a Solr core on
startup:

    docker run -i -t -p 80:80 \
      -e DATABASE_URL=postgres://user:pass@hostname/db \
      -e SOLR_URL=http://hostname:8983/solr/ckan_default \
      ckan/ckan:2.2

This will run CKAN, connect to the database, and initialise it if need
be. Configuring Solr will have to be done separately.

Alternatively, you can use this image as a base for extension. If a
configuration file is injected to /etc/ckan/default.ini, the image will
use that and ignore the DATABASE_URL and SOLR_URL environment variables.

Lastly, by default the CKAN file store is at /var/lib/ckan, and you may
well wish to mount this data volume outside the running container:

    docker run ... -v /mnt/storage:/var/lib/ckan ...


  Commit: 51ffc2e75ee42bab676509d0bc462f6adb0dc509
      https://github.com/ckan/ckan/commit/51ffc2e75ee42bab676509d0bc462f6adb0dc509
  Author: Nick Stenning <nick at whiteink.com>
  Date:   2014-06-10 (Tue, 10 Jun 2014)

  Changed paths:
    M Dockerfile
    A contrib/docker/main.cf
    M contrib/docker/svc/ckan/run
    A contrib/docker/svc/postfix/run

  Log Message:
  -----------
  Add postfix to docker image and allow configuration

This ensures that we can configure error emails from the CKAN instance
inside the container.

An optional environment variable, ERROR_EMAIL, can be set for the
container. If set, it will configure CKAN to send error emails to
$ERROR_EMAIL. If unset, no emails will be sent.


  Commit: df8c1af5fbdc436ed63c76a6f3470c8eae1c2b37
      https://github.com/ckan/ckan/commit/df8c1af5fbdc436ed63c76a6f3470c8eae1c2b37
  Author: Vitor Baptista <vitor at vitorbaptista.com>
  Date:   2014-06-10 (Tue, 10 Jun 2014)

  Changed paths:
    M ckanext/datastore/plugin.py
    A ckanext/datastore/tests/test_plugin.py

  Log Message:
  -----------
  [#1725] Datastore must be the first IDatastore plugin loaded

This allows extensions to rely on it running before them.


  Commit: 00943d1477bfa453deee89f9eeb9caa518bdd4d8
      https://github.com/ckan/ckan/commit/00943d1477bfa453deee89f9eeb9caa518bdd4d8
  Author: Vitor Baptista <vitor at vitorbaptista.com>
  Date:   2014-06-10 (Tue, 10 Jun 2014)

  Changed paths:
    M ckanext/datastore/interfaces.py

  Log Message:
  -----------
  [#1725] Add docstrings to the IDatastore methods


  Commit: 3c38dce0702c64f27eb3997339a082d02616f7b4
      https://github.com/ckan/ckan/commit/3c38dce0702c64f27eb3997339a082d02616f7b4
  Author: Vitor Baptista <vitor at vitorbaptista.com>
  Date:   2014-06-10 (Tue, 10 Jun 2014)

  Changed paths:
    M ckanext/datastore/db.py
    M ckanext/datastore/interfaces.py
    M ckanext/datastore/plugin.py
    M ckanext/datastore/tests/sample_datastore_plugin.py

  Log Message:
  -----------
  [#1725] Rename datastore_validate_query() to datastore_validate()

The previous name sounded like we were validating the `query_dict`, but we're
actually validating the `data_dict`. I felt `datastore_validate_data_dict()`
would be too big, so `datastore_validate()` seems better.


  Commit: 13b4d3636c7f13bc0936dc6bc1d2a69515f7d4d6
      https://github.com/ckan/ckan/commit/13b4d3636c7f13bc0936dc6bc1d2a69515f7d4d6
  Author: Nick Stenning <nick at whiteink.com>
  Date:   2014-06-10 (Tue, 10 Jun 2014)

  Changed paths:
    M Dockerfile
    A contrib/docker/apache.conf
    A contrib/docker/apache.wsgi
    M contrib/docker/nginx.conf
    M contrib/docker/svc/ckan/run

  Log Message:
  -----------
  Switch to mod_wsgi in preference to gunicorn

As discussed previously, we're going to change one thing at a time so
this sticks to the default installation instructions and uses mod_wsgi
to run CKAN rather than gunicorn.

Also revert paths to the defaults (/etc/ckan/default,
/usr/lib/ckan/default, etc.)


  Commit: 9a7502449e40bc540960990e718adf80f9a9d78b
      https://github.com/ckan/ckan/commit/9a7502449e40bc540960990e718adf80f9a9d78b
  Author: Nick Stenning <nick at whiteink.com>
  Date:   2014-06-11 (Wed, 11 Jun 2014)

  Changed paths:
    A ckan/config/solr/Dockerfile

  Log Message:
  -----------
  Add a Dockerfile for a simple CKAN Solr container

This adds a Dockerfile which can build a simple container running Solr
4.8.1 with a "ckan" core which uses the schema from the ckan/config/solr
directory.


  Commit: 89bd566e5303f94b9df23b570436f143d0206dec
      https://github.com/ckan/ckan/commit/89bd566e5303f94b9df23b570436f143d0206dec
  Author: Vitor Baptista <vitor at vitorbaptista.com>
  Date:   2014-06-11 (Wed, 11 Jun 2014)

  Changed paths:
    M ckanext/datastore/tests/test_plugin.py

  Log Message:
  -----------
  [#1725] Make sure plugins are unloaded after running test_plugin


  Commit: 38aae975d87620eea8a71019813ebc2e7c9fb99b
      https://github.com/ckan/ckan/commit/38aae975d87620eea8a71019813ebc2e7c9fb99b
  Author: Vitor Baptista <vitor at vitorbaptista.com>
  Date:   2014-06-11 (Wed, 11 Jun 2014)

  Changed paths:
    M ckanext/datastore/plugin.py

  Log Message:
  -----------
  [#1725] Fix bug where we're trying to close using a null connection

The problem is that the code was:

```python
try:
    connection = self.read_engine.connect()
    # ...
finally:
    connection.close()
```

But if `self.read_engine.connect()` raised an exception, `connection` would
never be defined, but we would still try to call `connection.close()`, which
would in turn raise:

```
UnboundLocalError: local variable 'connection' referenced before assignment
```

This would also hide the exception raised when calling `.connect()`, so we
wouldn't know what was the original problem.

This commit fixes it by making sure the `connection` variable exists.


  Commit: 179cbac23ba4450938ca5fd930cc4c1ff34c542c
      https://github.com/ckan/ckan/commit/179cbac23ba4450938ca5fd930cc4c1ff34c542c
  Author: Vitor Baptista <vitor at vitorbaptista.com>
  Date:   2014-06-11 (Wed, 11 Jun 2014)

  Changed paths:
    M ckanext/datastore/db.py
    M ckanext/datastore/helpers.py
    M ckanext/datastore/logic/action.py
    M ckanext/datastore/plugin.py
    M ckanext/datastore/tests/test_search.py

  Log Message:
  -----------
  [#1725] Move sort validation to datastore_validate()


  Commit: 595d0583d82fdc1022a730132d62a978906e90d3
      https://github.com/ckan/ckan/commit/595d0583d82fdc1022a730132d62a978906e90d3
  Author: David Read <david.read at hackneyworkshop.com>
  Date:   2014-06-11 (Wed, 11 Jun 2014)

  Changed paths:
    M ckan/lib/search/index.py

  Log Message:
  -----------
  [#1764] Reorder the creation of the SOLR cache of the validated package_dict so that it does not include the unvalidated package_dict.


  Commit: ac4b34a607eaeccaeb1916d22bc2af0f57ac2147
      https://github.com/ckan/ckan/commit/ac4b34a607eaeccaeb1916d22bc2af0f57ac2147
  Author: Ian Ward <ian at excess.org>
  Date:   2014-06-11 (Wed, 11 Jun 2014)

  Changed paths:
    M .coveragerc
    M CHANGELOG.rst
    M README.rst
    M bin/travis-run-tests
    M ckan/config/deployment.ini_tmpl
    M ckan/config/middleware.py
    M ckan/controllers/related.py
    M ckan/controllers/user.py
    M ckan/lib/cli.py
    M ckan/lib/dictization/model_save.py
    M ckan/lib/helpers.py
    M ckan/logic/__init__.py
    M ckan/logic/action/create.py
    M ckan/logic/action/get.py
    M ckan/logic/action/update.py
    M ckan/logic/auth/create.py
    M ckan/logic/auth/get.py
    M ckan/logic/converters.py
    M ckan/logic/schema.py
    M ckan/logic/validators.py
    M ckan/new_authz.py
    M ckan/new_tests/factories.py
    M ckan/new_tests/helpers.py
    A ckan/new_tests/lib/test_helpers.py
    A ckan/new_tests/logic/action/test_create.py
    M ckan/new_tests/logic/action/test_update.py
    A ckan/new_tests/logic/auth/test_create.py
    M ckan/new_tests/logic/auth/test_update.py
    A ckan/new_tests/logic/test_converters.py
    M ckan/new_tests/logic/test_validators.py
    A ckan/new_tests/test_factories.py
    M ckan/plugins/interfaces.py
    M ckan/public/base/javascript/modules/custom-fields.js
    M ckan/public/base/javascript/modules/image-upload.js
    M ckan/public/base/less/forms.less
    M ckan/public/base/less/layout.less
    M ckan/public/base/less/media.less
    M ckan/public/base/less/mixins.less
    M ckan/public/base/vendor/jquery.min.js
    A ckan/public/base/vendor/select2/.gitignore
    A ckan/public/base/vendor/select2/LICENSE
    M ckan/public/base/vendor/select2/README.md
    A ckan/public/base/vendor/select2/bower.json
    A ckan/public/base/vendor/select2/component.json
    A ckan/public/base/vendor/select2/composer.json
    A ckan/public/base/vendor/select2/package.json
    A ckan/public/base/vendor/select2/release.sh
    A ckan/public/base/vendor/select2/select2-bootstrap.css
    M ckan/public/base/vendor/select2/select2.css
    A ckan/public/base/vendor/select2/select2.jquery.json
    M ckan/public/base/vendor/select2/select2.js
    M ckan/public/base/vendor/select2/select2.min.js
    A ckan/public/base/vendor/select2/select2_locale_ar.js
    A ckan/public/base/vendor/select2/select2_locale_bg.js
    A ckan/public/base/vendor/select2/select2_locale_ca.js
    A ckan/public/base/vendor/select2/select2_locale_cs.js
    A ckan/public/base/vendor/select2/select2_locale_da.js
    A ckan/public/base/vendor/select2/select2_locale_de.js
    A ckan/public/base/vendor/select2/select2_locale_el.js
    A ckan/public/base/vendor/select2/select2_locale_en.js.template
    A ckan/public/base/vendor/select2/select2_locale_es.js
    A ckan/public/base/vendor/select2/select2_locale_et.js
    A ckan/public/base/vendor/select2/select2_locale_eu.js
    A ckan/public/base/vendor/select2/select2_locale_fa.js
    A ckan/public/base/vendor/select2/select2_locale_fi.js
    A ckan/public/base/vendor/select2/select2_locale_fr.js
    A ckan/public/base/vendor/select2/select2_locale_gl.js
    A ckan/public/base/vendor/select2/select2_locale_he.js
    A ckan/public/base/vendor/select2/select2_locale_hr.js
    A ckan/public/base/vendor/select2/select2_locale_hu.js
    A ckan/public/base/vendor/select2/select2_locale_id.js
    A ckan/public/base/vendor/select2/select2_locale_is.js
    A ckan/public/base/vendor/select2/select2_locale_it.js
    A ckan/public/base/vendor/select2/select2_locale_ja.js
    A ckan/public/base/vendor/select2/select2_locale_ka.js
    A ckan/public/base/vendor/select2/select2_locale_ko.js
    A ckan/public/base/vendor/select2/select2_locale_lt.js
    A ckan/public/base/vendor/select2/select2_locale_lv.js
    A ckan/public/base/vendor/select2/select2_locale_mk.js
    A ckan/public/base/vendor/select2/select2_locale_ms.js
    A ckan/public/base/vendor/select2/select2_locale_nl.js
    A ckan/public/base/vendor/select2/select2_locale_no.js
    A ckan/public/base/vendor/select2/select2_locale_pl.js
    A ckan/public/base/vendor/select2/select2_locale_pt-BR.js
    A ckan/public/base/vendor/select2/select2_locale_pt-PT.js
    A ckan/public/base/vendor/select2/select2_locale_ro.js
    A ckan/public/base/vendor/select2/select2_locale_rs.js
    A ckan/public/base/vendor/select2/select2_locale_ru.js
    A ckan/public/base/vendor/select2/select2_locale_sk.js
    A ckan/public/base/vendor/select2/select2_locale_sv.js
    A ckan/public/base/vendor/select2/select2_locale_th.js
    A ckan/public/base/vendor/select2/select2_locale_tr.js
    A ckan/public/base/vendor/select2/select2_locale_uk.js
    A ckan/public/base/vendor/select2/select2_locale_vi.js
    A ckan/public/base/vendor/select2/select2_locale_zh-CN.js
    A ckan/public/base/vendor/select2/select2_locale_zh-TW.js
    M ckan/templates/footer.html
    M ckan/templates/group/snippets/group_item.html
    M ckan/templates/header.html
    M ckan/templates/home/snippets/search.html
    M ckan/templates/macros/form.html
    M ckan/templates/package/read_base.html
    M ckan/templates/package/related_list.html
    M ckan/templates/package/resource_read.html
    M ckan/templates/package/snippets/package_form.html
    M ckan/templates/page.html
    M ckan/templates/snippets/facet_list.html
    M ckan/templates/snippets/license.html
    M ckan/templates/user/snippets/followee_dropdown.html
    M ckan/templates/user/snippets/recaptcha.html
    M ckan/templates_legacy/layout_base.html
    M ckan/templates_legacy/snippets/data-viewer-embed-branded-link.html
    M ckan/tests/functional/test_tracking.py
    M ckan/tests/logic/test_action.py
    M ckan/tests/logic/test_auth.py
    M ckan/tests/test_coding_standards.py
    M ckanext/datapusher/plugin.py
    M ckanext/datastore/bin/datastore_setup.py
    M ckanext/datastore/commands.py
    M ckanext/example_idatasetform/plugin.py
    A ckanext/example_idatasetform/plugin_v1.py
    A ckanext/example_idatasetform/plugin_v2.py
    A ckanext/example_idatasetform/plugin_v3.py
    A ckanext/example_idatasetform/plugin_v4.py
    A ckanext/example_idatasetform/templates/package/search.html
    A ckanext/example_idatasetform/templates/package/snippets/additional_info.html
    A ckanext/example_idatasetform/templates/package/snippets/resource_form.html
    A ckanext/example_idatasetform/tests/__init__.py
    A ckanext/example_idatasetform/tests/test_example_idatasetform.py
    M ckanext/resourceproxy/controller.py
    M ckanext/resourceproxy/tests/test_proxy.py
    M ckanext/stats/__init__.py
    M dev-requirements.txt
    A doc/_themes/sphinx-theme-okfn
    A doc/api.rst
    M doc/contributing/architecture.rst
    M doc/contributing/documentation.rst
    M doc/contributing/frontend/index.rst
    M doc/contributing/html.rst
    M doc/contributing/i18n.rst
    M doc/contributing/index.rst
    M doc/contributing/javascript.rst
    M doc/contributing/pull-requests.rst
    M doc/contributing/python.rst
    M doc/contributing/release-process.rst
    A doc/contributing/simple-code-contributions.rst
    A doc/contributing/string-i18n.rst
    M doc/contributing/test.rst
    M doc/contributing/testing.rst
    A doc/extensions/adding-custom-fields.rst
    M doc/extensions/best-practices.rst
    M doc/extensions/index.rst
    M doc/images/add_dataset_3.jpg
    M doc/maintaining/configuration.rst
    M doc/maintaining/datastore.rst
    M doc/maintaining/installing/deployment.rst
    M doc/theming/best-practices.rst
    M doc/theming/javascript.rst
    M doc/theming/static-files.rst
    M doc/theming/templates.rst
    M doc/user-guide.rst
    M setup.py
    M test-core.ini

  Log Message:
  -----------
  Merge remote-tracking branch 'origin/master' into two-stage-dataset-create

Conflicts:
	ckan/new_tests/factories.py
	ckan/new_tests/helpers.py


  Commit: f9be9d27f5e2ab49fe99d98e3a1ea613cf91154e
      https://github.com/ckan/ckan/commit/f9be9d27f5e2ab49fe99d98e3a1ea613cf91154e
  Author: Ian Ward <ian at excess.org>
  Date:   2014-06-11 (Wed, 11 Jun 2014)

  Changed paths:
    M ckan/new_tests/controllers/test_package.py
    M ckan/new_tests/helpers.py

  Log Message:
  -----------
  [#1659] pep8


  Commit: d11b09ab6d8d2d39677e4745b632dedb78706ade
      https://github.com/ckan/ckan/commit/d11b09ab6d8d2d39677e4745b632dedb78706ade
  Author: Ian Ward <ian at excess.org>
  Date:   2014-06-11 (Wed, 11 Jun 2014)

  Changed paths:
    M ckan/new_tests/factories.py

  Log Message:
  -----------
  [#1659] merge fix


  Commit: bc15f14ca4137c72ec34c7d84472078c19ce278d
      https://github.com/ckan/ckan/commit/bc15f14ca4137c72ec34c7d84472078c19ce278d
  Author: Vitor Baptista <vitor at vitorbaptista.com>
  Date:   2014-06-11 (Wed, 11 Jun 2014)

  Changed paths:
    M ckanext/datastore/plugin.py
    R ckanext/datastore/tests/test_plugin.py

  Log Message:
  -----------
  Revert "[#1725] Datastore must be the first IDatastore plugin loaded"

This reverts commit df8c1af5fbdc436ed63c76a6f3470c8eae1c2b37.

Trying to figure out why the tests are failing.

Conflicts:
	ckanext/datastore/tests/test_plugin.py


  Commit: 88f0cf9c4347ec6062e6a0cc6f137fc5f3888fbd
      https://github.com/ckan/ckan/commit/88f0cf9c4347ec6062e6a0cc6f137fc5f3888fbd
  Author: Ian Ward <ian at excess.org>
  Date:   2014-06-11 (Wed, 11 Jun 2014)

  Changed paths:
    M doc/contributing/python.rst
    A doc/images/ckan_importing_diagram.graphml
    A doc/images/ckan_importing_diagram.png

  Log Message:
  -----------
  [#1745] add importing diagram to imports section of coding guidelines


  Commit: d1284453a82f924828e468b4e28600d7e049881a
      https://github.com/ckan/ckan/commit/d1284453a82f924828e468b4e28600d7e049881a
  Author: Vitor Baptista <vitor at vitorbaptista.com>
  Date:   2014-06-11 (Wed, 11 Jun 2014)

  Changed paths:
    M ckanext/datastore/tests/test_search.py

  Log Message:
  -----------
  [#1725] assert_in is unavailable on Python 2.6


  Commit: 94f2f7608b83fcf47ddfde9dbed68d258322156b
      https://github.com/ckan/ckan/commit/94f2f7608b83fcf47ddfde9dbed68d258322156b
  Author: Ian Ward <ian at excess.org>
  Date:   2014-06-11 (Wed, 11 Jun 2014)

  Changed paths:
    M ckan/new_tests/helpers.py

  Log Message:
  -----------
  [#1659] FunctionalTestBaseClass._original_config instead of .original_config


  Commit: f597c8f2f2d4bf46b69a1e61d40b2375d8ad5e89
      https://github.com/ckan/ckan/commit/f597c8f2f2d4bf46b69a1e61d40b2375d8ad5e89
  Author: Ian Ward <ian at excess.org>
  Date:   2014-06-11 (Wed, 11 Jun 2014)

  Changed paths:
    M ckan/new_tests/helpers.py

  Log Message:
  -----------
  [#1659] dict() > .copy()


  Commit: ec91d18aa479cd64057082ddf59acaf8b6164da0
      https://github.com/ckan/ckan/commit/ec91d18aa479cd64057082ddf59acaf8b6164da0
  Author: Ian Ward <ian at excess.org>
  Date:   2014-06-11 (Wed, 11 Jun 2014)

  Changed paths:
    M ckan/new_tests/controllers/test_package.py
    M ckan/new_tests/controllers/test_util.py
    M ckan/new_tests/helpers.py

  Log Message:
  -----------
  [#1659] rename FunctionalTestBaseClass to FunctionalTestBase


  Commit: 44c9a506baaff982a2423c8acc36fc8ef74dae16
      https://github.com/ckan/ckan/commit/44c9a506baaff982a2423c8acc36fc8ef74dae16
  Author: Ian Ward <ian at excess.org>
  Date:   2014-06-11 (Wed, 11 Jun 2014)

  Changed paths:
    M ckan/new_tests/controllers/test_package.py

  Log Message:
  -----------
  [#1659] TestPackageControllerNew and remove create_form from method names


  Commit: e07500a8512d890a3dbfe59049c9c30422581ddf
      https://github.com/ckan/ckan/commit/e07500a8512d890a3dbfe59049c9c30422581ddf
  Author: Ian Ward <ian at excess.org>
  Date:   2014-06-11 (Wed, 11 Jun 2014)

  Changed paths:
    M ckan/new_tests/controllers/test_package.py
    M ckan/new_tests/helpers.py

  Log Message:
  -----------
  [#1659] FunctionalTestBase._submit_and_follow


  Commit: c9fa32f8586c90296270374cee9e877882d0e85d
      https://github.com/ckan/ckan/commit/c9fa32f8586c90296270374cee9e877882d0e85d
  Author: Ian Ward <ian at excess.org>
  Date:   2014-06-13 (Fri, 13 Jun 2014)

  Changed paths:
    M ckan/new_tests/helpers.py

  Log Message:
  -----------
  [#1659] fix FunctionalTestBase._submit_and_follow


  Commit: 642837604d0e9607b6ccea97b2f6bee513bb776a
      https://github.com/ckan/ckan/commit/642837604d0e9607b6ccea97b2f6bee513bb776a
  Author: Vitor Baptista <vitor at vitorbaptista.com>
  Date:   2014-06-13 (Fri, 13 Jun 2014)

  Changed paths:
    M ckanext/datastore/plugin.py
    A ckanext/datastore/tests/test_plugin.py

  Log Message:
  -----------
  [#1725] datastore should be the first IDatastore plugin loaded


  Commit: f80c6ee09d8d8de657a1fa32fd1afe2ebced9e78
      https://github.com/ckan/ckan/commit/f80c6ee09d8d8de657a1fa32fd1afe2ebced9e78
  Author: Ian Ward <ian at excess.org>
  Date:   2014-06-13 (Fri, 13 Jun 2014)

  Changed paths:
    M ckan/new_tests/controllers/test_package.py
    M ckan/new_tests/helpers.py

  Log Message:
  -----------
  [#1659] title is not required (copied from name)


  Commit: 03f66507972e7b9e1b2719ec01e13f8c6666150a
      https://github.com/ckan/ckan/commit/03f66507972e7b9e1b2719ec01e13f8c6666150a
  Author: Ian Ward <ian at excess.org>
  Date:   2014-06-13 (Fri, 13 Jun 2014)

  Changed paths:
    M ckan/new_tests/controllers/test_package.py

  Log Message:
  -----------
  [#1659] test_first_page_creates_draft_package


  Commit: 224b9fb0450dc71f659fd459ed4ca0dd386eead6
      https://github.com/ckan/ckan/commit/224b9fb0450dc71f659fd459ed4ca0dd386eead6
  Author: Ian Ward <ian at excess.org>
  Date:   2014-06-13 (Fri, 13 Jun 2014)

  Changed paths:
    M ckan/new_tests/controllers/test_package.py

  Log Message:
  -----------
  [#1659] test_previous_next_maintains_draft_state known issue #1598


  Commit: d8db8a4d171c9fc2627352b44b36abcee8323e25
      https://github.com/ckan/ckan/commit/d8db8a4d171c9fc2627352b44b36abcee8323e25
  Author: Ian Ward <ian at excess.org>
  Date:   2014-06-13 (Fri, 13 Jun 2014)

  Changed paths:
    M ckan/controllers/package.py

  Log Message:
  -----------
  [#1598] don't change dataset state when returning to creation step 1


  Commit: fde7096b219891792851faa6a922eee5e30713e8
      https://github.com/ckan/ckan/commit/fde7096b219891792851faa6a922eee5e30713e8
  Author: Ian Ward <ian at excess.org>
  Date:   2014-06-13 (Fri, 13 Jun 2014)

  Changed paths:
    M CHANGELOG.rst
    M README.rst
    M ckan/config/middleware.py
    M ckan/controllers/related.py
    M ckan/lib/cli.py
    M ckan/lib/dictization/model_save.py
    M ckan/lib/helpers.py
    M ckan/logic/action/create.py
    M ckan/logic/action/get.py
    M ckan/logic/action/update.py
    M ckan/logic/schema.py
    M ckan/logic/validators.py
    M ckan/new_tests/helpers.py
    M ckan/new_tests/logic/action/test_create.py
    M ckan/new_tests/logic/action/test_update.py
    M ckan/new_tests/logic/test_validators.py
    M ckan/plugins/interfaces.py
    M ckan/public/base/javascript/modules/custom-fields.js
    M ckan/public/base/javascript/modules/image-upload.js
    M ckan/public/base/less/forms.less
    M ckan/public/base/less/layout.less
    M ckan/public/base/less/media.less
    M ckan/public/base/less/mixins.less
    M ckan/public/base/vendor/jquery.min.js
    A ckan/public/base/vendor/select2/.gitignore
    A ckan/public/base/vendor/select2/LICENSE
    M ckan/public/base/vendor/select2/README.md
    A ckan/public/base/vendor/select2/bower.json
    A ckan/public/base/vendor/select2/component.json
    A ckan/public/base/vendor/select2/composer.json
    A ckan/public/base/vendor/select2/package.json
    A ckan/public/base/vendor/select2/release.sh
    A ckan/public/base/vendor/select2/select2-bootstrap.css
    M ckan/public/base/vendor/select2/select2.css
    A ckan/public/base/vendor/select2/select2.jquery.json
    M ckan/public/base/vendor/select2/select2.js
    M ckan/public/base/vendor/select2/select2.min.js
    A ckan/public/base/vendor/select2/select2_locale_ar.js
    A ckan/public/base/vendor/select2/select2_locale_bg.js
    A ckan/public/base/vendor/select2/select2_locale_ca.js
    A ckan/public/base/vendor/select2/select2_locale_cs.js
    A ckan/public/base/vendor/select2/select2_locale_da.js
    A ckan/public/base/vendor/select2/select2_locale_de.js
    A ckan/public/base/vendor/select2/select2_locale_el.js
    A ckan/public/base/vendor/select2/select2_locale_en.js.template
    A ckan/public/base/vendor/select2/select2_locale_es.js
    A ckan/public/base/vendor/select2/select2_locale_et.js
    A ckan/public/base/vendor/select2/select2_locale_eu.js
    A ckan/public/base/vendor/select2/select2_locale_fa.js
    A ckan/public/base/vendor/select2/select2_locale_fi.js
    A ckan/public/base/vendor/select2/select2_locale_fr.js
    A ckan/public/base/vendor/select2/select2_locale_gl.js
    A ckan/public/base/vendor/select2/select2_locale_he.js
    A ckan/public/base/vendor/select2/select2_locale_hr.js
    A ckan/public/base/vendor/select2/select2_locale_hu.js
    A ckan/public/base/vendor/select2/select2_locale_id.js
    A ckan/public/base/vendor/select2/select2_locale_is.js
    A ckan/public/base/vendor/select2/select2_locale_it.js
    A ckan/public/base/vendor/select2/select2_locale_ja.js
    A ckan/public/base/vendor/select2/select2_locale_ka.js
    A ckan/public/base/vendor/select2/select2_locale_ko.js
    A ckan/public/base/vendor/select2/select2_locale_lt.js
    A ckan/public/base/vendor/select2/select2_locale_lv.js
    A ckan/public/base/vendor/select2/select2_locale_mk.js
    A ckan/public/base/vendor/select2/select2_locale_ms.js
    A ckan/public/base/vendor/select2/select2_locale_nl.js
    A ckan/public/base/vendor/select2/select2_locale_no.js
    A ckan/public/base/vendor/select2/select2_locale_pl.js
    A ckan/public/base/vendor/select2/select2_locale_pt-BR.js
    A ckan/public/base/vendor/select2/select2_locale_pt-PT.js
    A ckan/public/base/vendor/select2/select2_locale_ro.js
    A ckan/public/base/vendor/select2/select2_locale_rs.js
    A ckan/public/base/vendor/select2/select2_locale_ru.js
    A ckan/public/base/vendor/select2/select2_locale_sk.js
    A ckan/public/base/vendor/select2/select2_locale_sv.js
    A ckan/public/base/vendor/select2/select2_locale_th.js
    A ckan/public/base/vendor/select2/select2_locale_tr.js
    A ckan/public/base/vendor/select2/select2_locale_uk.js
    A ckan/public/base/vendor/select2/select2_locale_vi.js
    A ckan/public/base/vendor/select2/select2_locale_zh-CN.js
    A ckan/public/base/vendor/select2/select2_locale_zh-TW.js
    M ckan/templates/footer.html
    M ckan/templates/macros/form.html
    M ckan/templates/package/read_base.html
    M ckan/templates/package/related_list.html
    M ckan/templates/package/snippets/package_form.html
    M ckan/templates/page.html
    M ckan/templates/snippets/license.html
    M ckan/templates/user/snippets/recaptcha.html
    M ckan/tests/functional/test_tracking.py
    M ckan/tests/test_coding_standards.py
    M ckanext/datastore/bin/datastore_setup.py
    M ckanext/datastore/commands.py
    M ckanext/datastore/logic/auth.py
    M ckanext/datastore/tests/test_create.py
    M ckanext/example_idatasetform/plugin.py
    A ckanext/example_idatasetform/plugin_v1.py
    A ckanext/example_idatasetform/plugin_v2.py
    A ckanext/example_idatasetform/plugin_v3.py
    A ckanext/example_idatasetform/plugin_v4.py
    A ckanext/example_idatasetform/templates/package/search.html
    A ckanext/example_idatasetform/templates/package/snippets/additional_info.html
    A ckanext/example_idatasetform/templates/package/snippets/resource_form.html
    A ckanext/example_idatasetform/tests/__init__.py
    A ckanext/example_idatasetform/tests/test_example_idatasetform.py
    M ckanext/resourceproxy/controller.py
    M ckanext/resourceproxy/tests/test_proxy.py
    M ckanext/stats/__init__.py
    M doc/contributing/architecture.rst
    M doc/contributing/pull-requests.rst
    M doc/contributing/test.rst
    M doc/contributing/testing.rst
    A doc/extensions/adding-custom-fields.rst
    M doc/extensions/index.rst
    M doc/images/add_dataset_3.jpg
    M doc/maintaining/installing/deployment.rst
    M doc/theming/best-practices.rst
    M doc/theming/static-files.rst
    M doc/user-guide.rst
    M setup.py

  Log Message:
  -----------
  Merge remote-tracking branch 'origin/master' into fix-package-permissions


  Commit: 746cfc56eb1881a0d0b53191fd44405272f1fa04
      https://github.com/ckan/ckan/commit/746cfc56eb1881a0d0b53191fd44405272f1fa04
  Author: Vitor Baptista <vitor at vitorbaptista.com>
  Date:   2014-06-13 (Fri, 13 Jun 2014)

  Changed paths:
    M ckan/new_tests/helpers.py

  Log Message:
  -----------
  [#1665] Add new_tests.helpers.change_config() decorator

This allows you to temporarily change a CKAN's config value during a test.
It'll restore the values to what they were before, after you test is ran.

Conflicts:
	ckan/new_tests/helpers.py


  Commit: 318891ef87fb95f91210ed6d8885af4529d1f232
      https://github.com/ckan/ckan/commit/318891ef87fb95f91210ed6d8885af4529d1f232
  Author: Ian Ward <ian at excess.org>
  Date:   2014-06-13 (Fri, 13 Jun 2014)

  Changed paths:
    M ckan/new_tests/helpers.py

  Log Message:
  -----------
  [#1664] clear auth functions cache when changing config


  Commit: 66fec03d6acf38f97d192dec55e834f8be518835
      https://github.com/ckan/ckan/commit/66fec03d6acf38f97d192dec55e834f8be518835
  Author: Ian Ward <ian at excess.org>
  Date:   2014-06-13 (Fri, 13 Jun 2014)

  Changed paths:
    M ckan/new_tests/logic/auth/test_create.py

  Log Message:
  -----------
  [#1664] tests for anon users


  Commit: 8fb491e5eac07af0cd0fb1cff82a4f8d67b62c42
      https://github.com/ckan/ckan/commit/8fb491e5eac07af0cd0fb1cff82a4f8d67b62c42
  Author: tobes <toby.junk at gmail.com>
  Date:   2014-06-16 (Mon, 16 Jun 2014)

  Changed paths:
    M ckan/lib/helpers.py

  Log Message:
  -----------
  [#1747] Allow html in markdown


  Commit: ddd5a4440be4f25ddee5d3e4ad50bb0003f33739
      https://github.com/ckan/ckan/commit/ddd5a4440be4f25ddee5d3e4ad50bb0003f33739
  Author: tobes <toby.junk at gmail.com>
  Date:   2014-06-16 (Mon, 16 Jun 2014)

  Changed paths:
    M ckan/lib/helpers.py

  Log Message:
  -----------
  [#1747] Swap logic to remove not and aid readability


  Commit: af86176bb5c54859cbd72db36897c592346a9940
      https://github.com/ckan/ckan/commit/af86176bb5c54859cbd72db36897c592346a9940
  Author: tobes <toby.junk at gmail.com>
  Date:   2014-06-16 (Mon, 16 Jun 2014)

  Changed paths:
    M ckan/lib/helpers.py

  Log Message:
  -----------
  [#1747] Fix the docstring


  Commit: e445fec81234520af43906b7fd24e836d7266f4e
      https://github.com/ckan/ckan/commit/e445fec81234520af43906b7fd24e836d7266f4e
  Author: tobes <toby.junk at gmail.com>
  Date:   2014-06-16 (Mon, 16 Jun 2014)

  Changed paths:
    M ckan/new_tests/lib/test_helpers.py

  Log Message:
  -----------
  [#1747] Added a pretty pointless test


  Commit: b4785c5ea0e838675b989acd8b4379710d8bf228
      https://github.com/ckan/ckan/commit/b4785c5ea0e838675b989acd8b4379710d8bf228
  Author: tobes <toby.junk at gmail.com>
  Date:   2014-06-16 (Mon, 16 Jun 2014)

  Changed paths:
    M ckan/lib/helpers.py

  Log Message:
  -----------
  [#1747] Strip the markdown for htl allowed case


  Commit: 5a29a0486d46fad06041be32e6ad1f53018c5f6e
      https://github.com/ckan/ckan/commit/5a29a0486d46fad06041be32e6ad1f53018c5f6e
  Author: tobes <toby.junk at gmail.com>
  Date:   2014-06-16 (Mon, 16 Jun 2014)

  Changed paths:
    M ckan/new_tests/lib/test_helpers.py

  Log Message:
  -----------
  [#1747] Fix the tests to use correct function


  Commit: 314edaf7c5f2e0caa2ecb999af8918f2ce47ec52
      https://github.com/ckan/ckan/commit/314edaf7c5f2e0caa2ecb999af8918f2ce47ec52
  Author: tobes <toby.junk at gmail.com>
  Date:   2014-06-16 (Mon, 16 Jun 2014)

  Changed paths:
    M ckan/new_tests/lib/test_helpers.py

  Log Message:
  -----------
  [#1747] I hate tests ;p


  Commit: f6f18b1c531735706b262c3688aa6c18129ae09e
      https://github.com/ckan/ckan/commit/f6f18b1c531735706b262c3688aa6c18129ae09e
  Author: tobes <toby.junk at gmail.com>
  Date:   2014-06-16 (Mon, 16 Jun 2014)

  Changed paths:
    M ckan/new_tests/lib/test_helpers.py

  Log Message:
  -----------
  [#1747] Make allow html test consistent with not allow test


  Commit: fc03233a9ded6ebae61a4fd03b92d945d52c9e48
      https://github.com/ckan/ckan/commit/fc03233a9ded6ebae61a4fd03b92d945d52c9e48
  Author: Ian Ward <ian at excess.org>
  Date:   2014-06-16 (Mon, 16 Jun 2014)

  Changed paths:
    M ckan/new_tests/controllers/test_package.py

  Log Message:
  -----------
  [#1659] factor out common startup code


  Commit: a49f485c3bc3adb39324c8e215b043440c3ea8c1
      https://github.com/ckan/ckan/commit/a49f485c3bc3adb39324c8e215b043440c3ea8c1
  Author: Ian Ward <ian at excess.org>
  Date:   2014-06-16 (Mon, 16 Jun 2014)

  Changed paths:
    M ckan/new_tests/controllers/test_package.py

  Log Message:
  -----------
  [#1659] three more package new form tests


  Commit: 527e14fce9f009dfd38f147201b4d32c7ea0f7c5
      https://github.com/ckan/ckan/commit/527e14fce9f009dfd38f147201b4d32c7ea0f7c5
  Author: Ian Ward <ian at excess.org>
  Date:   2014-06-16 (Mon, 16 Jun 2014)

  Changed paths:
    M ckan/new_tests/controllers/test_package.py

  Log Message:
  -----------
  [#1659] TestPackageControllerNew: use reset_db


  Commit: 64fd260e20508d25eb4fb3e67db7f2627784daf1
      https://github.com/ckan/ckan/commit/64fd260e20508d25eb4fb3e67db7f2627784daf1
  Author: Ian Ward <ian at excess.org>
  Date:   2014-06-16 (Mon, 16 Jun 2014)

  Changed paths:
    M ckan/new_tests/logic/auth/test_create.py

  Log Message:
  -----------
  [#1664] tests for logged in users


  Commit: 70c63ab2fde30ea545a34ca29bf88590db0ead3f
      https://github.com/ckan/ckan/commit/70c63ab2fde30ea545a34ca29bf88590db0ead3f
  Author: Ian Ward <ian at excess.org>
  Date:   2014-06-16 (Mon, 16 Jun 2014)

  Changed paths:
    M ckan/new_tests/logic/auth/test_create.py

  Log Message:
  -----------
  [#1664] fix tests


  Commit: 4eddabbe518d67120b2c095e04db62328488bb85
      https://github.com/ckan/ckan/commit/4eddabbe518d67120b2c095e04db62328488bb85
  Author: Saul Shanabrook <s.shanabrook at gmail.com>
  Date:   2014-06-17 (Tue, 17 Jun 2014)

  Changed paths:
    M doc/api/index.rst

  Log Message:
  -----------
  Add example of updating a resource from the command line


  Commit: 7546504195498439c723517f6f7b3d5aef7341ed
      https://github.com/ckan/ckan/commit/7546504195498439c723517f6f7b3d5aef7341ed
  Author: Nick Stenning <nick at whiteink.com>
  Date:   2014-06-18 (Wed, 18 Jun 2014)

  Changed paths:
    M doc/maintaining/installing/index.rst
    A doc/maintaining/installing/install-using-docker.rst

  Log Message:
  -----------
  Add documentation on installing with Docker

Adds a page to the installation documentation explaining how to use and
customise the Docker image. Note that not all of the commands listed
here will work until we merge the Dockerfile and configure the building
of the image on the Docker Hub.


  Commit: 748c1fb6dda03300a61188165527f4e6ca31460f
      https://github.com/ckan/ckan/commit/748c1fb6dda03300a61188165527f4e6ca31460f
  Author: Nick Stenning <nick at whiteink.com>
  Date:   2014-06-20 (Fri, 20 Jun 2014)

  Changed paths:
    R ckanext/datastore/bin/__init__.py
    R ckanext/datastore/bin/datastore_setup.py
    R ckanext/datastore/bin/set_permissions.sql
    M ckanext/datastore/commands.py
    A ckanext/datastore/set_permissions.sql
    M doc/maintaining/datastore.rst

  Log Message:
  -----------
  datastore: Rationalise set-permissions command

This commit reduces the number of distinct ways of setting db
permissions from three to two (and both use the same paster command),
while simultaneously making it possible to set permissions on remote
database servers without having to manually edit SQL.

The three mechanisms of doing this before were:

1) Run a paster command "set-permissions", which shelled out to
2) A script in `ckanext/datastore/bin`, which shelled out to
   "sudo -u postgres psql ..." and piped in a prefilled version of
3) An SQL template script

The options available for passing through to `psql` did not extend to
setting remote host names, which meant that the only option for
configuring permissions on remote database servers was:

- copy the SQL template script to the remote server
- manually fill in the template parameters (despite the fact they're
  already in the config file)
- execute the SQL

This commit replaces these with two basic ways of setting permissions,
both of which use the "set-permissions" paster command. The script in
`ckanext/datastore/bin` has gone.

You can now either run simply:

    paster datastore set-permissions

Which will emit the correct SQL to STDOUT, allowing you to either pipe
it to a local `psql`:

    paster datastore set-permissions | sudo -u postgres psql

Or pipe it to a remote `psql`

    paster datastore set-permissions | ssh postgres at dbserver psql

Or, finally, you can ask the paste script to connect directly to the
database to run the SQL. This isn't ideal, as it implies you have
network access to a superuser account on the database, but it will make
life easier in development:

    paster datastore set-permissions -- -x

The unfortunate extra "--" is due to the fact that ckan.lib.cli is
insane. It's not possible to provide --options to subcommands without
it, as paster rather wants them all for itself, and will complain if it
sees options it doesn't recognise. By terminating the options list with
"--", paster treats these as extra args, and we can use them in the
subcommand.


  Commit: 71b367f4aad5ac06b021ff4c757cf99ac202c313
      https://github.com/ckan/ckan/commit/71b367f4aad5ac06b021ff4c757cf99ac202c313
  Author: Nick Stenning <nick at whiteink.com>
  Date:   2014-06-20 (Fri, 20 Jun 2014)

  Changed paths:
    M bin/travis-install-dependencies

  Log Message:
  -----------
  travis-install-dependencies: use new set-permissions


  Commit: c0925818ec7c099925fa1af41e8427072132242d
      https://github.com/ckan/ckan/commit/c0925818ec7c099925fa1af41e8427072132242d
  Author: Nick Stenning <nick at whiteink.com>
  Date:   2014-06-23 (Mon, 23 Jun 2014)

  Changed paths:
    R ckan/config/solr/Dockerfile
    A contrib/docker/postgresql/Dockerfile
    A contrib/docker/solr/Dockerfile
    A contrib/docker/solr/schema.xml
    M contrib/docker/svc/ckan/run
    M doc/maintaining/installing/install-using-docker.rst

  Log Message:
  -----------
  Update instructions to use containerised Solr/Pg by default

Getting CKAN to talk to Postgres and Solr on the Docker host is
perfectly possible, but explaining how to set up appropriate routes in
iptables is outside the scope of the CKAN installation docs.

This commit updates the CKAN run script to support connection to Pg and
Solr through Docker links, and updates the documentation accordingly.


  Commit: 6a05b2111186db8b16c0beecbb977623ff82de17
      https://github.com/ckan/ckan/commit/6a05b2111186db8b16c0beecbb977623ff82de17
  Author: Ian Ward <ian at excess.org>
  Date:   2014-06-23 (Mon, 23 Jun 2014)

  Changed paths:
    M ckan/new_tests/controllers/test_package.py
    M ckan/new_tests/helpers.py

  Log Message:
  -----------
  [#1659] FunctionalTestBase: use reset_db


  Commit: d5c50d080cab20bafd9d95e6afae389253053cde
      https://github.com/ckan/ckan/commit/d5c50d080cab20bafd9d95e6afae389253053cde
  Author: Ian Ward <ian at excess.org>
  Date:   2014-06-23 (Mon, 23 Jun 2014)

  Changed paths:
    M ckan/new_tests/controllers/test_package.py
    M ckan/new_tests/helpers.py

  Log Message:
  -----------
  [#1659] make submit_and_follow a simple function


  Commit: 90d2d519cdfa85fe645d23952cd9e0b1a47498d0
      https://github.com/ckan/ckan/commit/90d2d519cdfa85fe645d23952cd9e0b1a47498d0
  Author: Ian Ward <ian at excess.org>
  Date:   2014-06-23 (Mon, 23 Jun 2014)

  Changed paths:
    M ckan/new_tests/controllers/test_package.py

  Log Message:
  -----------
  [#1659] make _get_package_new_page_as_sysadmin a simple function


  Commit: 4c5423337ce437221b3f28e088a1b8700780dea4
      https://github.com/ckan/ckan/commit/4c5423337ce437221b3f28e088a1b8700780dea4
  Author: Ian Ward <ian at excess.org>
  Date:   2014-06-23 (Mon, 23 Jun 2014)

  Changed paths:
    M ckan/new_tests/controllers/test_package.py
    M ckan/new_tests/controllers/test_util.py
    M ckan/new_tests/helpers.py

  Log Message:
  -----------
  [#1659] call get_test_app in each test


  Commit: 65fcef540a6bc0ee993cfbe4b830c9b1e76f88eb
      https://github.com/ckan/ckan/commit/65fcef540a6bc0ee993cfbe4b830c9b1e76f88eb
  Author: Ian Ward <ian at excess.org>
  Date:   2014-06-23 (Mon, 23 Jun 2014)

  Changed paths:
    M ckan/new_tests/controllers/test_package.py

  Log Message:
  -----------
  [#1659] pep8


  Commit: 05f2af5dde9d2b2c9867db943860827b8fa12343
      https://github.com/ckan/ckan/commit/05f2af5dde9d2b2c9867db943860827b8fa12343
  Author: David Read <david.read at hackneyworkshop.com>
  Date:   2014-06-24 (Tue, 24 Jun 2014)

  Changed paths:
    A ckan/new_tests/lib/search/__init__.py
    A ckan/new_tests/lib/search/test_index.py

  Log Message:
  -----------
  [#1764] Add tests.


  Commit: e3ae168293f3660509aa90f2e68b43af455529c8
      https://github.com/ckan/ckan/commit/e3ae168293f3660509aa90f2e68b43af455529c8
  Author: Nick Stenning <nick at whiteink.com>
  Date:   2014-06-24 (Tue, 24 Jun 2014)

  Changed paths:
    M ckanext/datastore/commands.py
    M ckanext/datastore/set_permissions.sql
    M doc/maintaining/datastore.rst

  Log Message:
  -----------
  datastore: Simplify set-permissions even further

This commit removes the ability for CKAN to execute the permissions
script for you. Why?

1. It's unnecessary. You can almost always pipe the script into a psql
   shell, regardless of the location of your database server. If you
   can't, then the only way that CKAN is going to be able to help is by
   connecting over the network. See point 2.
2. It encourages a setup in which you can connect to your database as a
   superuser over the network. This is a Bad Idea.
3. It adds substantial complication to the set-permissions command.


  Commit: 16418ecd9fb5ecd341209f49a2783895a8cce199
      https://github.com/ckan/ckan/commit/16418ecd9fb5ecd341209f49a2783895a8cce199
  Author: Nick Stenning <nick at whiteink.com>
  Date:   2014-06-24 (Tue, 24 Jun 2014)

  Changed paths:
    M ckanext/datastore/set_permissions.sql

  Log Message:
  -----------
  datastore: Explicitly connect to datastore DB in set-permissions

See comment in set_permissions.sql


  Commit: fd7d0896a229629a3768ba84a19f51c7aae33c10
      https://github.com/ckan/ckan/commit/fd7d0896a229629a3768ba84a19f51c7aae33c10
  Author: David Read <david.read at hackneyworkshop.com>
  Date:   2014-06-24 (Tue, 24 Jun 2014)

  Changed paths:
    M ckan/new_tests/lib/search/test_index.py

  Log Message:
  -----------
  [#1764] Change nose imports to stupid long-hand, as per the coding guidelines.


  Commit: 06dcb7aa0759ec541395e76f27acd03c0cae6f21
      https://github.com/ckan/ckan/commit/06dcb7aa0759ec541395e76f27acd03c0cae6f21
  Author: Vitor Baptista <vitor at vitorbaptista.com>
  Date:   2014-06-24 (Tue, 24 Jun 2014)

  Changed paths:
    M ckanext/datastore/db.py
    M ckanext/datastore/interfaces.py
    M ckanext/datastore/plugin.py
    M ckanext/datastore/tests/sample_datastore_plugin.py

  Log Message:
  -----------
  [#1725] Rename all_field_ids -> column_names

In my opinion, it's a better name.


  Commit: a35ae703ddb79077d08cf0d24ccf2c38b5282a85
      https://github.com/ckan/ckan/commit/a35ae703ddb79077d08cf0d24ccf2c38b5282a85
  Author: David Read <david.read at hackneyworkshop.com>
  Date:   2014-06-24 (Tue, 24 Jun 2014)

  Changed paths:
    M ckan/new_tests/helpers.py
    M ckan/new_tests/lib/search/test_index.py

  Log Message:
  -----------
  [#1764] Compatibility with python 2.6.


  Commit: 74a33767f33da960465981fb40b04d752ad75d3b
      https://github.com/ckan/ckan/commit/74a33767f33da960465981fb40b04d752ad75d3b
  Author: Nick Stenning <nick at whiteink.com>
  Date:   2014-06-24 (Tue, 24 Jun 2014)

  Changed paths:
    M contrib/docker/svc/postfix/run

  Log Message:
  -----------
  docker: Initialise postfix correctly

Postfix initialisation is a bit more complicated than the service file assumed
and doesn't actually work due to pieces missing from the chroot. Delegate to
the sysv init script and tail the log to keep the process running.

This is potentially a problem if postfix crashes and doesn't come back, but I
reckon finding a crashing bug in postfix is a few orders of magnitude less
likely than finding a similar bug in CKAN.


  Commit: fbfdbcccda4106471c2c19597b3c9c0431f738ae
      https://github.com/ckan/ckan/commit/fbfdbcccda4106471c2c19597b3c9c0431f738ae
  Author: David Read <david.read at hackneyworkshop.com>
  Date:   2014-06-24 (Tue, 24 Jun 2014)

  Changed paths:
    M ckan/new_tests/helpers.py

  Log Message:
  -----------
  [#1764] PEP8 fix.


  Commit: a6fbeb8bbc244ce69a34174a3c79d4aa4083cf05
      https://github.com/ckan/ckan/commit/a6fbeb8bbc244ce69a34174a3c79d4aa4083cf05
  Author: amercader <amercadero at gmail.com>
  Date:   2014-06-25 (Wed, 25 Jun 2014)

  Changed paths:
    M ckan/templates/admin/trash.html

  Log Message:
  -----------
  [#1539] Fix typo


  Commit: c41f0cf23c88f25461a51175c9201ef95a379ccd
      https://github.com/ckan/ckan/commit/c41f0cf23c88f25461a51175c9201ef95a379ccd
  Author: amercader <amercadero at gmail.com>
  Date:   2014-06-25 (Wed, 25 Jun 2014)

  Changed paths:
    M ckan/config/routing.py
    M ckan/templates/admin/base.html
    A ckan/templates/admin/trash.html

  Log Message:
  -----------
  Merge branch '1539-clean-trash'


  Commit: 0e7696c6b31d1113b49227dd506727d6732cc175
      https://github.com/ckan/ckan/commit/0e7696c6b31d1113b49227dd506727d6732cc175
  Author: amercader <amercadero at gmail.com>
  Date:   2014-06-25 (Wed, 25 Jun 2014)

  Changed paths:
    M ckan/lib/helpers.py

  Log Message:
  -----------
  Merge branch '1541-gravatar-alt-tag'


  Commit: e5d6898a98bc401fd886a8eb3c52910f53c5c1e7
      https://github.com/ckan/ckan/commit/e5d6898a98bc401fd886a8eb3c52910f53c5c1e7
  Author: amercader <amercadero at gmail.com>
  Date:   2014-06-25 (Wed, 25 Jun 2014)

  Changed paths:
    M ckan/tests/test_coding_standards.py
    M doc/contributing/python.rst
    A doc/images/ckan_importing_diagram.graphml
    A doc/images/ckan_importing_diagram.png

  Log Message:
  -----------
  Merge branch '1745-python-coding-standards' of https://github.com/wardi/ckan into wardi-1745-python-coding-standards


  Commit: b1e5a2777b6fb93132d78b23763e071e0a166276
      https://github.com/ckan/ckan/commit/b1e5a2777b6fb93132d78b23763e071e0a166276
  Author: amercader <amercadero at gmail.com>
  Date:   2014-06-25 (Wed, 25 Jun 2014)

  Changed paths:
    M ckan/tests/test_coding_standards.py
    M doc/contributing/python.rst
    A doc/images/ckan_importing_diagram.graphml
    A doc/images/ckan_importing_diagram.png

  Log Message:
  -----------
  Merge branch 'wardi-1745-python-coding-standards'


  Commit: 24b147ff355a469ba3fd8bd74f273b332365f018
      https://github.com/ckan/ckan/commit/24b147ff355a469ba3fd8bd74f273b332365f018
  Author: Sean Hammond <git at seanh.cc>
  Date:   2014-06-25 (Wed, 25 Jun 2014)

  Changed paths:
    M ckan/lib/base.py

  Log Message:
  -----------
  [#1793] Don't delete all cookies whose names start with "ckan"

Apparently in 2012 it was necessary (possibly only on demo.ckan.org) to
delete all cookies whose names start with "ckan".

I don't think CKAN sets any cookies today, except for the session
cookie, so this seems unnecessary now.

Deleting all cookies whose names start with "ckan" is likely to delete
cookies created by extensions that are called something like "ckanext-foo",
which is very confusing, especially because the header that deletes the
cookies comes in the /en request not in the first request for the page.

Since I don't know the specific names of the cookies this code was
intended to delete, I'm just removing the code and guessing it's no
longer needed.


  Commit: 5b594ca3761fe7fa451f14cdeb25c1fb453ce18b
      https://github.com/ckan/ckan/commit/5b594ca3761fe7fa451f14cdeb25c1fb453ce18b
  Author: amercader <amercadero at gmail.com>
  Date:   2014-06-25 (Wed, 25 Jun 2014)

  Changed paths:
    M ckan/lib/cli.py

  Log Message:
  -----------
  Merge branch '1668-deleted-users'


  Commit: 4170b89898decae5be2e3bb7855d7b47569c967c
      https://github.com/ckan/ckan/commit/4170b89898decae5be2e3bb7855d7b47569c967c
  Author: amercader <amercadero at gmail.com>
  Date:   2014-06-25 (Wed, 25 Jun 2014)

  Changed paths:
    M ckan/logic/auth/create.py
    M ckan/logic/auth/update.py
    M ckan/new_tests/helpers.py
    M ckan/new_tests/logic/auth/test_create.py

  Log Message:
  -----------
  Merge branch 'fix-package-permissions' of https://github.com/wardi/ckan into wardi-fix-package-permissions


  Commit: ffdd089c03dfff0295ce58723cd15cbcf5a31fc1
      https://github.com/ckan/ckan/commit/ffdd089c03dfff0295ce58723cd15cbcf5a31fc1
  Author: amercader <amercadero at gmail.com>
  Date:   2014-06-25 (Wed, 25 Jun 2014)

  Changed paths:
    M ckan/logic/auth/create.py
    M ckan/logic/auth/update.py
    M ckan/new_tests/helpers.py
    M ckan/new_tests/logic/auth/test_create.py

  Log Message:
  -----------
  Merge branch 'wardi-fix-package-permissions'


  Commit: bfc2b27d87104b828e0aa016a8237315d91b6c26
      https://github.com/ckan/ckan/commit/bfc2b27d87104b828e0aa016a8237315d91b6c26
  Author: Tom Mortimer-Jones <tom at morty.co.uk>
  Date:   2014-06-26 (Thu, 26 Jun 2014)

  Changed paths:
    M doc/contributing/documentation.rst

  Log Message:
  -----------
  Update documentation.rst

Typo


  Commit: 6b40b6db1463e2291a9798a2754312af5a9edeb8
      https://github.com/ckan/ckan/commit/6b40b6db1463e2291a9798a2754312af5a9edeb8
  Author: Joe Tsoi <joetsoi at users.noreply.github.com>
  Date:   2014-06-26 (Thu, 26 Jun 2014)

  Changed paths:
    M bin/travis-install-dependencies
    R ckanext/datastore/bin/__init__.py
    R ckanext/datastore/bin/datastore_setup.py
    R ckanext/datastore/bin/set_permissions.sql
    M ckanext/datastore/commands.py
    A ckanext/datastore/set_permissions.sql
    M doc/maintaining/datastore.rst

  Log Message:
  -----------
  Merge pull request #1786 from nickstenning/saner-set-permissions

datastore: Rationalise set-permissions command


  Commit: 00413b105ac3ca57c1078420243a4cf993e99165
      https://github.com/ckan/ckan/commit/00413b105ac3ca57c1078420243a4cf993e99165
  Author: Joe Tsoi <joetsoi at users.noreply.github.com>
  Date:   2014-06-26 (Thu, 26 Jun 2014)

  Changed paths:
    M ckanext/datapusher/plugin.py

  Log Message:
  -----------
  Merge pull request #1666 from ckan/1666-datastore-perms-check

Datapusher extension throws an authorization error which it should have caught


  Commit: 947737b7355c7c5b232ce2c608a174565d314830
      https://github.com/ckan/ckan/commit/947737b7355c7c5b232ce2c608a174565d314830
  Author: Joe Tsoi <joetsoi at users.noreply.github.com>
  Date:   2014-06-26 (Thu, 26 Jun 2014)

  Changed paths:
    M ckan/controllers/package.py

  Log Message:
  -----------
  Merge pull request #1685 from ckan/dataset-resources-notfound

Catch NotFound error in resources page


  Commit: 53cbf07ed17937e02596d537db1320ece75c6b56
      https://github.com/ckan/ckan/commit/53cbf07ed17937e02596d537db1320ece75c6b56
  Author: Tom Mortimer-Jones <tom at morty.co.uk>
  Date:   2014-06-26 (Thu, 26 Jun 2014)

  Changed paths:
    M doc/contributing/documentation.rst

  Log Message:
  -----------
  Update documentation for contributing documentation


  Commit: a25f6f50a703449e3c880b556d105f2be8c0f7b4
      https://github.com/ckan/ckan/commit/a25f6f50a703449e3c880b556d105f2be8c0f7b4
  Author: Ian Ward <ian at excess.org>
  Date:   2014-06-26 (Thu, 26 Jun 2014)

  Changed paths:
    M bin/travis-install-dependencies
    M ckan/config/routing.py
    M ckan/controllers/package.py
    M ckan/controllers/user.py
    M ckan/lib/cli.py
    M ckan/lib/helpers.py
    M ckan/logic/auth/create.py
    M ckan/logic/auth/update.py
    M ckan/new_tests/helpers.py
    M ckan/new_tests/logic/auth/test_create.py
    M ckan/templates/admin/base.html
    A ckan/templates/admin/trash.html
    M ckan/templates/footer.html
    M ckan/templates/package/snippets/resources_list.html
    M ckan/templates_legacy/layout_base.html
    M ckan/templates_legacy/package/search.html
    M ckan/tests/test_coding_standards.py
    M ckanext/datapusher/plugin.py
    R ckanext/datastore/bin/__init__.py
    R ckanext/datastore/bin/datastore_setup.py
    R ckanext/datastore/bin/set_permissions.sql
    M ckanext/datastore/commands.py
    M ckanext/datastore/logic/auth.py
    A ckanext/datastore/set_permissions.sql
    M ckanext/datastore/tests/test_create.py
    M ckanext/example_theme/v16_initialize_a_javascript_module/templates/snippets/package_item.html
    M ckanext/example_theme/v17_popover/templates/snippets/package_item.html
    M ckanext/example_theme/v18_snippet_api/templates/snippets/package_item.html
    M ckanext/example_theme/v21_custom_jquery_plugin/templates/snippets/package_item.html
    M doc/contributing/python.rst
    A doc/images/ckan_importing_diagram.graphml
    A doc/images/ckan_importing_diagram.png
    M doc/maintaining/datastore.rst
    M doc/theming/best-practices.rst
    M doc/theming/css.rst
    M doc/theming/fanstatic.rst
    M doc/theming/javascript.rst
    M doc/theming/static-files.rst

  Log Message:
  -----------
  Merge remote-tracking branch 'origin/master' into two-stage-dataset-create

Conflicts:
	ckan/new_tests/helpers.py


  Commit: ee82e01b22963c97401c2deec92179d26bcc9b1f
      https://github.com/ckan/ckan/commit/ee82e01b22963c97401c2deec92179d26bcc9b1f
  Author: Nick Stenning <nick at whiteink.com>
  Date:   2014-06-27 (Fri, 27 Jun 2014)

  Changed paths:
    M contrib/docker/nginx.conf

  Log Message:
  -----------
  docker: Explicitly set nginx types_hash_bucket_size

As discovered by the inimitable bug-hunter @nigelbabu, on the version of
Nginx in the image, the value of types_hash_bucket_size is set at
runtime to the processor cache line size.

This means that on hardware with small cache lines (16 bytes) the image
can fail to start with:

    nginx: [emerg] could not build the types_hash, you should increase
    either types_hash_max_size: 1024 or types_hash_bucket_size: 32

This commit sets types_hash_bucket_size and types_hash_max_size to the
values used by latest Nginx (1.7.2 at the time of writing).


  Commit: b8943a21c5c055fb6631abe690108fa64b8029d5
      https://github.com/ckan/ckan/commit/b8943a21c5c055fb6631abe690108fa64b8029d5
  Author: David Read <david.read at hackneyworkshop.com>
  Date:   2014-06-27 (Fri, 27 Jun 2014)

  Changed paths:
    M ckan/lib/base.py

  Log Message:
  -----------
  Merge pull request #1793 from ckan/1793-dont-delete-cookies

Don't delete all cookies whose names start with "ckan"


  Commit: 11dd3b236c12a7ca0de9f4b1ff783ddff67305fc
      https://github.com/ckan/ckan/commit/11dd3b236c12a7ca0de9f4b1ff783ddff67305fc
  Author: Nick Stenning <nick at whiteink.com>
  Date:   2014-06-30 (Mon, 30 Jun 2014)

  Changed paths:
    M doc/maintaining/installing/install-using-docker.rst

  Log Message:
  -----------
  docs: Add note about requirement of Docker>=1.0

The built images don't appear to work with Docker<0.10.0, in particular
not with the version of Docker that currently ships as "docker.io" in
the Ubuntu 14.04 repositories.

The install instructions do link directly to the official install docs
for Docker, which don't recommend the distro packages, but we make this
explicit now in a callout at the top of the page.


  Commit: c7f8526060164f8c5d6a613d35bde719be79ed58
      https://github.com/ckan/ckan/commit/c7f8526060164f8c5d6a613d35bde719be79ed58
  Author: Nick Stenning <nick at whiteink.com>
  Date:   2014-06-30 (Mon, 30 Jun 2014)

  Changed paths:
    M doc/maintaining/installing/install-using-docker.rst

  Log Message:
  -----------
  docs: Explicitly note omission of DataStore/DataPusher

Support for these parts of CKAN will come in a future PR.


  Commit: de550a7222b27fa61835526245ef34f21abe8541
      https://github.com/ckan/ckan/commit/de550a7222b27fa61835526245ef34f21abe8541
  Author: Nigel Babu <nigelbabu at gmail.com>
  Date:   2014-06-30 (Mon, 30 Jun 2014)

  Changed paths:
    A Dockerfile
    A contrib/docker/apache.conf
    A contrib/docker/apache.wsgi
    A contrib/docker/main.cf
    A contrib/docker/nginx.conf
    A contrib/docker/postgresql/Dockerfile
    A contrib/docker/solr/Dockerfile
    A contrib/docker/solr/schema.xml
    A contrib/docker/svc/ckan/run
    A contrib/docker/svc/nginx/run
    A contrib/docker/svc/postfix/run
    M doc/maintaining/installing/index.rst
    A doc/maintaining/installing/install-using-docker.rst

  Log Message:
  -----------
  Merge pull request #1755 from nickstenning/docker

[#1766] Dockerfile for CKAN


  Commit: 852d3752352fefbeb369ea17ec496b8de5d40c6e
      https://github.com/ckan/ckan/commit/852d3752352fefbeb369ea17ec496b8de5d40c6e
  Author: David Read <david.read at hackneyworkshop.com>
  Date:   2014-06-30 (Mon, 30 Jun 2014)

  Changed paths:
    A Dockerfile
    M bin/travis-install-dependencies
    M ckan/config/routing.py
    M ckan/controllers/package.py
    M ckan/controllers/user.py
    M ckan/lib/base.py
    M ckan/lib/cli.py
    M ckan/lib/helpers.py
    M ckan/logic/auth/create.py
    M ckan/logic/auth/update.py
    M ckan/new_tests/helpers.py
    M ckan/new_tests/logic/auth/test_create.py
    M ckan/templates/admin/base.html
    A ckan/templates/admin/trash.html
    M ckan/templates/footer.html
    M ckan/templates/package/snippets/resources_list.html
    M ckan/templates_legacy/layout_base.html
    M ckan/templates_legacy/package/search.html
    M ckan/tests/test_coding_standards.py
    M ckanext/datapusher/plugin.py
    R ckanext/datastore/bin/__init__.py
    R ckanext/datastore/bin/datastore_setup.py
    R ckanext/datastore/bin/set_permissions.sql
    M ckanext/datastore/commands.py
    M ckanext/datastore/logic/auth.py
    A ckanext/datastore/set_permissions.sql
    M ckanext/datastore/tests/test_create.py
    M ckanext/example_theme/v16_initialize_a_javascript_module/templates/snippets/package_item.html
    M ckanext/example_theme/v17_popover/templates/snippets/package_item.html
    M ckanext/example_theme/v18_snippet_api/templates/snippets/package_item.html
    M ckanext/example_theme/v21_custom_jquery_plugin/templates/snippets/package_item.html
    A contrib/docker/apache.conf
    A contrib/docker/apache.wsgi
    A contrib/docker/main.cf
    A contrib/docker/nginx.conf
    A contrib/docker/postgresql/Dockerfile
    A contrib/docker/solr/Dockerfile
    A contrib/docker/solr/schema.xml
    A contrib/docker/svc/ckan/run
    A contrib/docker/svc/nginx/run
    A contrib/docker/svc/postfix/run
    M doc/contributing/python.rst
    A doc/images/ckan_importing_diagram.graphml
    A doc/images/ckan_importing_diagram.png
    M doc/maintaining/datastore.rst
    M doc/maintaining/installing/index.rst
    A doc/maintaining/installing/install-using-docker.rst
    M doc/theming/best-practices.rst
    M doc/theming/css.rst
    M doc/theming/fanstatic.rst
    M doc/theming/javascript.rst
    M doc/theming/static-files.rst

  Log Message:
  -----------
  Merge branch 'master' of github.com:ckan/ckan into 1764-solr-rubbish

Conflicts:
	ckan/new_tests/helpers.py


  Commit: e43db8bd9897f2986694379ca08cf468cc7f3772
      https://github.com/ckan/ckan/commit/e43db8bd9897f2986694379ca08cf468cc7f3772
  Author: Vitor Baptista <vitor at vitorbaptista.com>
  Date:   2014-06-30 (Mon, 30 Jun 2014)

  Changed paths:
    M ckan/controllers/package.py
    A ckan/new_tests/controllers/test_package.py
    M ckan/new_tests/controllers/test_util.py
    M ckan/new_tests/factories.py
    M ckan/new_tests/helpers.py
    M ckan/public/base/less/forms.less
    M ckan/templates/package/new_package_form.html
    R ckan/templates/package/new_package_metadata.html
    M ckan/templates/package/snippets/package_form.html
    R ckan/templates/package/snippets/package_metadata_form.html
    M ckan/templates/package/snippets/resource_form.html
    M ckan/templates/package/snippets/stages.html

  Log Message:
  -----------
  Merge pull request #1659 from wardi/two-stage-dataset-create

Two-stage dataset create + introduce some functional tests for new_tests


  Commit: cdf8dfd9e7b26f5b6c17b3c9086d92f0d2f608bc
      https://github.com/ckan/ckan/commit/cdf8dfd9e7b26f5b6c17b3c9086d92f0d2f608bc
  Author: Ian Ward <ian at excess.org>
  Date:   2014-06-30 (Mon, 30 Jun 2014)

  Changed paths:
    M ckan/controllers/package.py
    A ckan/new_tests/controllers/test_package.py
    M ckan/new_tests/controllers/test_util.py
    M ckan/new_tests/factories.py
    M ckan/new_tests/helpers.py
    M ckan/public/base/less/forms.less
    M ckan/templates/package/new_package_form.html
    R ckan/templates/package/new_package_metadata.html
    M ckan/templates/package/snippets/package_form.html
    R ckan/templates/package/snippets/package_metadata_form.html
    M ckan/templates/package/snippets/resource_form.html
    M ckan/templates/package/snippets/stages.html

  Log Message:
  -----------
  Merge branch 'master' into 1764-solr-rubbish

Conflicts:
	ckan/new_tests/helpers.py


  Commit: 56688ee04e336be00448a5fdbdd2925878b26a4b
      https://github.com/ckan/ckan/commit/56688ee04e336be00448a5fdbdd2925878b26a4b
  Author: Nigel Babu <nigelbabu at gmail.com>
  Date:   2014-07-01 (Tue, 01 Jul 2014)

  Changed paths:
    M ckan/lib/helpers.py
    M ckan/new_tests/lib/test_helpers.py

  Log Message:
  -----------
  Merge pull request #1774 from tobes/master

[#1747] Allow html in markdown


  Commit: 8bef6aea28837e24f009df8e363e4f7c059fb901
      https://github.com/ckan/ckan/commit/8bef6aea28837e24f009df8e363e4f7c059fb901
  Author: nigelb <nigel.babu at okfn.org>
  Date:   2014-07-01 (Tue, 01 Jul 2014)

  Changed paths:
    M doc/contributing/frontend/index.rst
    M doc/maintaining/installing/install-from-source.rst

  Log Message:
  -----------
  [#1734] Add clarification about node versions

* Add clarification about node verions and Ubuntu versions.
* Also mention copying main.css to main.debug.css.


  Commit: db774633a726209884475fa9d4a2cada9eafc44d
      https://github.com/ckan/ckan/commit/db774633a726209884475fa9d4a2cada9eafc44d
  Author: Nigel Babu <nigelbabu at gmail.com>
  Date:   2014-07-01 (Tue, 01 Jul 2014)

  Changed paths:
    M doc/contributing/architecture.rst

  Log Message:
  -----------
  Merge pull request #1686 from ckan/1686-document-no-orm-objects-in-templates

Removing objects from the template context


  Commit: bf07d13c78ce35510e8838dde232464f319b20ca
      https://github.com/ckan/ckan/commit/bf07d13c78ce35510e8838dde232464f319b20ca
  Author: joetsoi <joe.yeung.tsoi at gmail.com>
  Date:   2014-07-01 (Tue, 01 Jul 2014)

  Changed paths:
    M ckanext/datastore/db.py
    A ckanext/datastore/helpers.py
    A ckanext/datastore/interfaces.py
    M ckanext/datastore/logic/action.py
    M ckanext/datastore/plugin.py
    A ckanext/datastore/tests/sample_datastore_plugin.py
    M ckanext/datastore/tests/test_delete.py
    A ckanext/datastore/tests/test_helpers.py
    A ckanext/datastore/tests/test_interface.py
    A ckanext/datastore/tests/test_plugin.py
    M ckanext/datastore/tests/test_search.py
    M ckanext/datastore/tests/test_unit.py
    M requirements.in
    M requirements.txt
    M setup.py

  Log Message:
  -----------
  Merge branch '1725-extend-datastore'


  Commit: e6314bc52f3f95de638e8d579f96d4a3d855eb35
      https://github.com/ckan/ckan/commit/e6314bc52f3f95de638e8d579f96d4a3d855eb35
  Author: Sean Hammond <seanh at users.noreply.github.com>
  Date:   2014-07-01 (Tue, 01 Jul 2014)

  Changed paths:
    M doc/contributing/documentation.rst

  Log Message:
  -----------
  Merge pull request #1797 from morty/patch-1

Update documentation.rst


  Commit: 8b73e64fae105b0e063eec8d75a5e1c58b3430db
      https://github.com/ckan/ckan/commit/8b73e64fae105b0e063eec8d75a5e1c58b3430db
  Author: Sean Hammond <seanh at users.noreply.github.com>
  Date:   2014-07-01 (Tue, 01 Jul 2014)

  Changed paths:
    M doc/contributing/documentation.rst

  Log Message:
  -----------
  Merge pull request #1798 from morty/contributing-documentation-update

Update documentation for contributing documentation


  Commit: b11bbab320b0d3492839af125601bfa8e05d121e
      https://github.com/ckan/ckan/commit/b11bbab320b0d3492839af125601bfa8e05d121e
  Author: Sean Hammond <git at seanh.cc>
  Date:   2014-07-01 (Tue, 01 Jul 2014)

  Changed paths:
    M doc/api/index.rst

  Log Message:
  -----------
  Add examples section to API docs


  Commit: cecc821524d3760263af8f93cfdd42313e8c1093
      https://github.com/ckan/ckan/commit/cecc821524d3760263af8f93cfdd42313e8c1093
  Author: Sean Hammond <seanh at users.noreply.github.com>
  Date:   2014-07-01 (Tue, 01 Jul 2014)

  Changed paths:
    M doc/api/index.rst

  Log Message:
  -----------
  Merge pull request #1823 from ckan/patch-1

Add examples section to API docs


  Commit: ac5743663dcd6d0c0c13884612377cfea11fb32b
      https://github.com/ckan/ckan/commit/ac5743663dcd6d0c0c13884612377cfea11fb32b
  Author: Sean Hammond <seanh at users.noreply.github.com>
  Date:   2014-07-01 (Tue, 01 Jul 2014)

  Changed paths:
    M doc/contributing/frontend/index.rst
    M doc/maintaining/installing/install-from-source.rst

  Log Message:
  -----------
  Merge pull request #1734 from ckan/1734-frontend-npm-docs

Can't find main.debug.css error


  Commit: bfa0a5ab49d59aeebf00bb655a96ee18319d88bf
      https://github.com/ckan/ckan/commit/bfa0a5ab49d59aeebf00bb655a96ee18319d88bf
  Author: Joe Tsoi <joetsoi at users.noreply.github.com>
  Date:   2014-07-02 (Wed, 02 Jul 2014)

  Changed paths:
    M ckanext/datastore/db.py
    M ckanext/datastore/interfaces.py
    M ckanext/datastore/plugin.py
    M ckanext/datastore/tests/sample_datastore_plugin.py

  Log Message:
  -----------
  Merge pull request #1725 from ckan/1725-extend-datastore

Allow the DataStore to be extended


  Commit: 8ad52f315dc0b6e43d1d5ca20aa6ffe227e5d4b8
      https://github.com/ckan/ckan/commit/8ad52f315dc0b6e43d1d5ca20aa6ffe227e5d4b8
  Author: Aitor Magán <amagan at conwet.com>
  Date:   2014-07-02 (Wed, 02 Jul 2014)

  Changed paths:
    M ckan/logic/auth/get.py

  Log Message:
  -----------
  Fix #1818


  Commit: b7b592ed28218231a1f179787856d38fb1fdcee0
      https://github.com/ckan/ckan/commit/b7b592ed28218231a1f179787856d38fb1fdcee0
  Author: Sean Hammond <seanh at users.noreply.github.com>
  Date:   2014-07-02 (Wed, 02 Jul 2014)

  Changed paths:
    M ckan/logic/auth/get.py

  Log Message:
  -----------
  Merge pull request #1825 from aitormagan/1818-resource_show_delegation

Fix #1818


  Commit: 5b30e194b51b674d40c333a02c5b31fd66a1c452
      https://github.com/ckan/ckan/commit/5b30e194b51b674d40c333a02c5b31fd66a1c452
  Author: Vitor Baptista <vitor at vitorbaptista.com>
  Date:   2014-07-02 (Wed, 02 Jul 2014)

  Changed paths:
    A Dockerfile
    M bin/travis-install-dependencies
    M ckan/config/routing.py
    M ckan/controllers/package.py
    M ckan/lib/base.py
    M ckan/lib/cli.py
    M ckan/lib/helpers.py
    M ckan/lib/search/index.py
    M ckan/logic/auth/create.py
    M ckan/logic/auth/get.py
    M ckan/logic/auth/update.py
    A ckan/new_tests/controllers/test_package.py
    M ckan/new_tests/controllers/test_util.py
    M ckan/new_tests/factories.py
    M ckan/new_tests/helpers.py
    A ckan/new_tests/lib/search/__init__.py
    A ckan/new_tests/lib/search/test_index.py
    M ckan/new_tests/lib/test_helpers.py
    M ckan/new_tests/logic/auth/test_create.py
    M ckan/public/base/less/forms.less
    M ckan/templates/admin/base.html
    A ckan/templates/admin/trash.html
    M ckan/templates/package/new_package_form.html
    R ckan/templates/package/new_package_metadata.html
    M ckan/templates/package/snippets/package_form.html
    R ckan/templates/package/snippets/package_metadata_form.html
    M ckan/templates/package/snippets/resource_form.html
    M ckan/templates/package/snippets/stages.html
    M ckan/tests/test_coding_standards.py
    M ckanext/datapusher/plugin.py
    R ckanext/datastore/bin/__init__.py
    R ckanext/datastore/bin/datastore_setup.py
    R ckanext/datastore/bin/set_permissions.sql
    M ckanext/datastore/commands.py
    M ckanext/datastore/db.py
    A ckanext/datastore/helpers.py
    A ckanext/datastore/interfaces.py
    M ckanext/datastore/logic/action.py
    M ckanext/datastore/plugin.py
    A ckanext/datastore/set_permissions.sql
    A ckanext/datastore/tests/sample_datastore_plugin.py
    M ckanext/datastore/tests/test_delete.py
    A ckanext/datastore/tests/test_helpers.py
    A ckanext/datastore/tests/test_interface.py
    A ckanext/datastore/tests/test_plugin.py
    M ckanext/datastore/tests/test_search.py
    M ckanext/datastore/tests/test_unit.py
    A contrib/docker/apache.conf
    A contrib/docker/apache.wsgi
    A contrib/docker/main.cf
    A contrib/docker/nginx.conf
    A contrib/docker/postgresql/Dockerfile
    A contrib/docker/solr/Dockerfile
    A contrib/docker/solr/schema.xml
    A contrib/docker/svc/ckan/run
    A contrib/docker/svc/nginx/run
    A contrib/docker/svc/postfix/run
    M doc/api/index.rst
    M doc/contributing/architecture.rst
    M doc/contributing/documentation.rst
    M doc/contributing/frontend/index.rst
    M doc/contributing/python.rst
    A doc/images/ckan_importing_diagram.graphml
    A doc/images/ckan_importing_diagram.png
    M doc/maintaining/datastore.rst
    M doc/maintaining/installing/index.rst
    M doc/maintaining/installing/install-from-source.rst
    A doc/maintaining/installing/install-using-docker.rst
    M requirements.in
    M requirements.txt
    M setup.py

  Log Message:
  -----------
  Merge branch 'master' into 1251-resource-view

Conflicts:
	ckanext/datastore/db.py


  Commit: fc29b6eb18959523001c1ee2d7dfacd0ef2be46d
      https://github.com/ckan/ckan/commit/fc29b6eb18959523001c1ee2d7dfacd0ef2be46d
  Author: Vitor Baptista <vitor at vitorbaptista.com>
  Date:   2014-07-02 (Wed, 02 Jul 2014)

  Changed paths:
    M ckanext/datastore/tests/test_search.py

  Log Message:
  -----------
  [#1251] Test that the DataStore supports filtering by multiple values

It doesn't currently, that's why I created issue #1830.


Compare: https://github.com/ckan/ckan/compare/57cfac2a78d4...fc29b6eb1895


More information about the ckan-changes mailing list