Fix some PEP8 issues
Tidy a couple of docstrings
Delete a commented-out set_trace()
Refactor dashboard activity stream tests

- Move tests for contents of dashboard activity stream out of test_activity.py,
this test module was way too long and confusing, leave it for testing the
public activity streams only. Add a docstring to the module saying so.

- Add a docstring to test_follow.py explaining that it tests the follower
functions only (follow, unfollow, etc.) and not the contents of the dashboard
activity stream that is generated from what you're folllowing.

- Add new tests for the contents of the dashboard activity stream in
test_dashboard.py along with other dashboard tests.

Currently some of these tests are failing because activities from followed
groups are not appearing in the dashboard.
Add activities from followed groups to dashboard activity stream

Add activities from groups that a user is following (e.g. when someone
updates a group) to the user's dashboard activity stream.

There are still some test_dashboard.py tests failing because activities
from datasets belonging to followed groups dob't appear in the dashboard
yet.
Move group_package_show SQLAlchemy into model

Move the SQLAlchemy query that the group_package_show() action function
uses into the model. I need this for architectural reasons for upcoming
commits, and we're supposed to encapsulate SQLAlchemy in the model
anyway.

I made the new model function support the 'return_query' option but note
that there are no tests covering this, all the tests pass even without
this option.
Remove group.members_of_type()

Remove group.members_of_type() and related code. It isn't used anywhere
except in the old publisher and organizations extensions which are to be
replaced by a new organizations implementation in CKAN core. Also it
duplicates functionality provided by group.active_packages().
Remove duplicate methods to get a group's packages

Refactor active_packages() and get_package_revisions(), both of which
return a group's packages (but in slightly different ways), replace with
just one method packages().

We now have just one way to get a group's packages, the packages()
method of the group model. The group_package_show() action function
calls it.
Fix following of groups

Add activities from the datasets of followed groups into the user's
dashboard activity stream. All the test_dashboard.py tests now pass.

Move SQLAlchemy from group_activity_list() into model, alongside the SQLAlchemy
queries for the other types of activity stream.

Change the SQLAlchemy in activities_from_groups_followed_by_user() to be the
union of group_activity_list() for each of the followed groups.

Update some tests.
Add docstring to group_activity_list()
Add some docstrings to model/activity.py
Fix dashboard activity stream from followed groups

It was returning all activities from the entire site, fix to return
activities from followed groups only.

The tests didn't catch this error because they didn't test doing random
activities that should _not_ appear in the user's dashboard and
asserting that they don't.

Add a quick test that catches this.

This is probably a problem for the other activity streams tests in
test_activity.py as well.
Merge branch 'master' of github.com:okfn/ckan
Add requests to core requirements
Fix an activity streams crash

It seems that _group_activity_query() can sometimes be called for a
group that doesn't exist (though I'm not sure exactly how this happens).
A test was failing. Not sure how this crept into master.  Fix it to
handle this case.
Merge branch 'master' of github.com:okfn/ckan
Fix a crash in mock_publisher_auth

mock_publisher_auth uses `log` but doesn't initialise it. Import logging
and initialise log.
Delete an unused import
PEP8 fixes
Add test helper function for posting to CKAN API

Add ckan.tests.post(), a helper function for posting to CKAN's action API and
getting the result, that handles forming the correct action API URL, converting
the apikey to a string and putting it in a headers dict like TestApp expects,
collecting params into a dict and dumping them to a JSON string, and checking
the 'success' field of the response.

This can save a lot of lines of code and make tests more readable. I've
converted test_follow.py as an example of how much can be saved.

Similar savings could be made in many other test modules:

ckan/tests/functional/api/model/test_vocabulary.py,
ckan/tests/functional/api/model/test_group.py,
ckan/tests/functional/api/test_dashboard.py,
ckan/tests/functional/api/test_activity.py,
ckan/tests/functional/test_follow.py,
ckan/tests/functional/test_tag_vocab.py,
ckan/tests/functional/test_related.py,
ckan/tests/logic/test_action.py
ckan/tests/logic/test_tag.py.

ckan/tests/functional/api/model/test_package.py could also be changed to use
this function. It currently uses a similar function defined in
ckan.tests.functional.api.base:ApiTestCase.