[ckan-changes] [okfn/ckan] a3d31e: [#1635] user_dictize() don't crash if no context['...

GitHub noreply at github.com
Thu Dec 20 12:04:58 UTC 2012


  Branch: refs/heads/master
  Home:   https://github.com/okfn/ckan
  Commit: a3d31e5eadc2b0a4eed282a2a733c5756ae64214
      https://github.com/okfn/ckan/commit/a3d31e5eadc2b0a4eed282a2a733c5756ae64214
  Author: Sean Hammond <seanhammond at lavabit.com>
  Date:   2012-11-16 (Fri, 16 Nov 2012)

  Changed paths:
    M ckan/lib/dictization/model_dictize.py

  Log Message:
  -----------
  [#1635] user_dictize() don't crash if no context['user']

Normally 'user' would always be in context (and would be None if no user
was logged in) but if user_dictize() was called via an internal function
calling a logic action function via get_action(), and that internal
function neglected to put 'user': None in context, then user_dictize()
would raise KeyError. (An example of this is the
get_and_send_notifications_for_all_users() that I'm about to commit
after this.)

May as well just behave as if 'user': None was in context instead.


  Commit: 373432f4001273f171d04d4ea48b240c67d64ae7
      https://github.com/okfn/ckan/commit/373432f4001273f171d04d4ea48b240c67d64ae7
  Author: Sean Hammond <seanhammond at lavabit.com>
  Date:   2012-11-16 (Fri, 16 Nov 2012)

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

  Log Message:
  -----------
  [#1635] Remove an unused variable


  Commit: a678e0e27efb1aaea8fd11bc10f0cb5db709e3d7
      https://github.com/okfn/ckan/commit/a678e0e27efb1aaea8fd11bc10f0cb5db709e3d7
  Author: Sean Hammond <seanhammond at lavabit.com>
  Date:   2012-11-16 (Fri, 16 Nov 2012)

  Changed paths:
    A ckan/lib/email_notifications.py
    M ckan/logic/action/get.py
    M ckan/model/dashboard.py
    M ckan/model/user.py
    A ckan/tests/lib/test_email_notifications.py

  Log Message:
  -----------
  [#1635] Initial implementation of email notifications for activity streams

ckan/model/user.py
  Added @classmethod all()

ckan/model/dashboard.py
  Added last_activity_stream_email_notification and @classmethods
  get_last_activity_stream_email_notification,
  update_last_activity_stream_email_notification

logic/action/get.py:
 Added dashboard_email_notification_last_sent and get_email_notifications
 actions. These may not really need to be action functions as they may only be
 needed internally.

ckan/lib/email_notifications.py
  This is the email notifier job meant to be run by paster (but there's no
  paster command for it yet)

ckan/tests/lib/test_email_notifications.py
  The beginning of some tests


  Commit: 20e70832b52b088d1f8b4ecad782a641a98797b4
      https://github.com/okfn/ckan/commit/20e70832b52b088d1f8b4ecad782a641a98797b4
  Author: Sean Hammond <seanhammond at lavabit.com>
  Date:   2012-11-16 (Fri, 16 Nov 2012)

  Changed paths:
    M ckan/config/routing.py
    M ckan/controllers/group.py
    M ckan/lib/activity_streams.py
    M ckan/lib/dictization/model_dictize.py
    M ckan/lib/dictization/model_save.py
    M ckan/lib/helpers.py
    M ckan/logic/action/create.py
    M ckan/logic/action/delete.py
    M ckan/logic/action/get.py
    M ckan/logic/converters.py
    M ckan/logic/schema.py
    M ckan/logic/validators.py
    A ckan/migration/versions/061_add_follower__group_table.py
    M ckan/model/__init__.py
    M ckan/model/follower.py
    M ckan/public/base/javascript/modules/popover-context.js
    M ckan/public/base/less/activity.less
    M ckan/public/base/less/iehacks.less
    A ckan/templates/ajax_snippets/popover-context-group.html
    A ckan/templates/group/about.html
    M ckan/templates/group/activity_stream.html
    A ckan/templates/group/admins.html
    A ckan/templates/group/followers.html
    M ckan/templates/group/read.html
    M ckan/templates/user/dashboard.html
    M ckan/templates/user/read.html
    M ckan/tests/functional/api/test_follow.py
    M ckan/tests/functional/test_activity.py
    M doc/common-error-messages.rst

  Log Message:
  -----------
  Merge branch 'master' of github.com:okfn/ckan into 1635-feature-email-notifications-for-activity-streams

Conflicts:
	ckan/public/base/less/iehacks.less


  Commit: a0d1062f8dc10b32f0cb3491d255e23711553878
      https://github.com/okfn/ckan/commit/a0d1062f8dc10b32f0cb3491d255e23711553878
  Author: Sean Hammond <seanhammond at lavabit.com>
  Date:   2012-11-19 (Mon, 19 Nov 2012)

  Changed paths:
    M ckan/tests/lib/test_email_notifications.py

  Log Message:
  -----------
  [#1635] Fix up the first couple of tests, add in plan for some more


  Commit: 7a5df8e780b3abfb484f6101a84ac1dc5f85f187
      https://github.com/okfn/ckan/commit/7a5df8e780b3abfb484f6101a84ac1dc5f85f187
  Author: Sean Hammond <seanhammond at lavabit.com>
  Date:   2012-11-19 (Mon, 19 Nov 2012)

  Changed paths:
    M ckan/lib/email_notifications.py
    M ckan/logic/action/get.py
    M ckan/logic/action/update.py
    M ckan/tests/lib/test_email_notifications.py

  Log Message:
  -----------
  [#1635] Implement a couple more tests


  Commit: 6388d8d0f9cf2c7c4e7ce50a3564de3379bca45e
      https://github.com/okfn/ckan/commit/6388d8d0f9cf2c7c4e7ce50a3564de3379bca45e
  Author: Sean Hammond <seanhammond at lavabit.com>
  Date:   2012-11-19 (Mon, 19 Nov 2012)

  Changed paths:
    M ckan/controllers/user.py
    M ckan/lib/activity_streams.py
    M ckan/logic/action/get.py
    M ckan/logic/auth/get.py
    M ckan/logic/auth/publisher/get.py
    R ckan/migration/versions/061_add_dashboard_table.py
    A ckan/migration/versions/062_add_dashboard_table.py
    M ckan/model/activity.py
    M ckan/public/base/less/iehacks.less
    M ckan/tests/functional/api/test_activity.py
    M ckan/tests/functional/api/test_dashboard.py

  Log Message:
  -----------
  Merge branch 'master' of github.com:okfn/ckan into 1635-feature-email-notifications-for-activity-streams


  Commit: 5b1ba5186906308176245817b2290e6f03e9c039
      https://github.com/okfn/ckan/commit/5b1ba5186906308176245817b2290e6f03e9c039
  Author: Sean Hammond <seanhammond at lavabit.com>
  Date:   2012-11-19 (Mon, 19 Nov 2012)

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

  Log Message:
  -----------
  [#1635] Delete unused action function


  Commit: edc833e2b49ccde474272f0676e61ec28d931561
      https://github.com/okfn/ckan/commit/edc833e2b49ccde474272f0676e61ec28d931561
  Author: Sean Hammond <seanhammond at lavabit.com>
  Date:   2012-11-22 (Thu, 22 Nov 2012)

  Changed paths:
    M README.rst
    M ckan/config/deployment.ini_tmpl
    M ckan/lib/app_globals.py
    M ckan/lib/cli.py
    M ckan/logic/action/get.py
    M ckan/logic/auth/get.py
    M ckan/public/base/css/main.css
    M ckan/public/base/less/masthead.less
    M ckan/templates/header.html
    M ckan/tests/functional/api/test_dashboard.py
    M ckan_deb/usr/lib/ckan/common.sh
    A doc/architecture.rst
    R doc/buildbot.rst
    R doc/coding-standards.rst
    A doc/contributing-docs.rst
    A doc/contributing.rst
    A doc/css-coding-standards.rst
    M doc/datastore-setup.rst
    R doc/domain-model-dataset.rst
    R doc/domain-model-resource.rst
    R doc/domain-model-task-status.rst
    R doc/domain-model.rst
    A doc/html-coding-standards.rst
    M doc/index.rst
    M doc/install-from-source.rst
    A doc/javascript-coding-standards.rst
    A doc/migration.rst
    A doc/python-coding-standards.rst

  Log Message:
  -----------
  Merge branch 'master' of github.com:okfn/ckan into 1635-feature-email-notifications-for-activity-streams


  Commit: 097cb915fc73a937b7f0fe809755a16983b736ba
      https://github.com/okfn/ckan/commit/097cb915fc73a937b7f0fe809755a16983b736ba
  Author: Sean Hammond <seanhammond at lavabit.com>
  Date:   2012-11-25 (Sun, 25 Nov 2012)

  Changed paths:
    M ckan/controllers/user.py
    M ckan/logic/action/get.py
    M ckan/logic/action/update.py
    M ckan/logic/auth/get.py
    M ckan/logic/auth/publisher/get.py
    M ckan/logic/auth/update.py
    M ckan/tests/functional/api/test_dashboard.py

  Log Message:
  -----------
  [#1635] Rename dashboard_mark_activities_old

Change long name dashboard_mark_all_new_activities_as_old ->
dashboard_mark_activities_old, also move it from get.py to update.py where it
belongs.


  Commit: d03f0a4c0853155a020c70dcf57398ce843171a2
      https://github.com/okfn/ckan/commit/d03f0a4c0853155a020c70dcf57398ce843171a2
  Author: Sean Hammond <seanhammond at lavabit.com>
  Date:   2012-11-27 (Tue, 27 Nov 2012)

  Changed paths:
    M ckan/lib/email_notifications.py
    M ckan/logic/action/get.py
    M ckan/logic/action/update.py

  Log Message:
  -----------
  [#1635] Remove two unwanted action functions

Remove dashboard_email_notification_last_sent and
dashboard_update_email_notification_last_sent logic functions, instead access
the model functions  directly from the lib.

We're not supposed to access the model from the lib, but I don't want to expose
these function as action functions either because they're only needed by this
one lib, I don't want to expose them in the API.


  Commit: 2ea41a7725810d76313f46db1d027939d5b36c7c
      https://github.com/okfn/ckan/commit/2ea41a7725810d76313f46db1d027939d5b36c7c
  Author: Sean Hammond <seanhammond at lavabit.com>
  Date:   2012-11-27 (Tue, 27 Nov 2012)

  Changed paths:
    M ckan/lib/email_notifications.py
    M ckan/model/dashboard.py

  Log Message:
  -----------
  [#1635] Shorten a couple of really long names


  Commit: 12cea9b6f625ac0134ecee4e06532afaab360283
      https://github.com/okfn/ckan/commit/12cea9b6f625ac0134ecee4e06532afaab360283
  Author: Sean Hammond <seanhammond at lavabit.com>
  Date:   2012-11-27 (Tue, 27 Nov 2012)

  Changed paths:
    M ckan/lib/email_notifications.py
    M ckan/logic/action/get.py
    M ckan/logic/action/update.py
    M ckan/model/dashboard.py

  Log Message:
  -----------
  [#1635] Remove unnecessary @classmethods from dashboard model

This moves some logic out of the dashboard model and into the lib, which is
probably where it belongs as that's where the rest of the relevant logic is,
and overall this makes the code shorter as well.


  Commit: f63a00c13d4296d315044a04c15065192ac9c26c
      https://github.com/okfn/ckan/commit/f63a00c13d4296d315044a04c15065192ac9c26c
  Author: Sean Hammond <seanhammond at lavabit.com>
  Date:   2012-11-28 (Wed, 28 Nov 2012)

  Changed paths:
    M ckan/tests/lib/test_email_notifications.py

  Log Message:
  -----------
  [#1635] Small email notifications tests refactoring

Save some lines


  Commit: 9bc3875d7f77ab5a982f0919d7e538141d168147
      https://github.com/okfn/ckan/commit/9bc3875d7f77ab5a982f0919d7e538141d168147
  Author: Sean Hammond <seanhammond at lavabit.com>
  Date:   2012-11-28 (Wed, 28 Nov 2012)

  Changed paths:
    M ckan/lib/email_notifications.py
    M ckan/tests/lib/test_email_notifications.py

  Log Message:
  -----------
  [#1635] Don't send emails for activities already seen on dashboard


  Commit: 197fdf413d707ca3fedbebb105552a15a3d6c193
      https://github.com/okfn/ckan/commit/197fdf413d707ca3fedbebb105552a15a3d6c193
  Author: Sean Hammond <seanhammond at lavabit.com>
  Date:   2012-11-28 (Wed, 28 Nov 2012)

  Changed paths:
    M ckan/config/routing.py
    M ckan/controllers/group.py
    M ckan/controllers/package.py
    M ckan/lib/dictization/model_dictize.py
    M ckan/logic/action/get.py
    M ckan/model/activity.py
    M ckan/model/group.py
    A ckan/templates/package/activity.html
    M ckan/templates/package/read.html
    M ckan/templates/user/dashboard.html
    M ckan/tests/functional/api/__init__.py
    M ckan/tests/functional/api/test_activity.py
    M ckan/tests/functional/api/test_dashboard.py
    M ckan/tests/functional/api/test_follow.py
    M ckan/tests/functional/test_group.py
    M ckan/tests/functional/test_user.py
    M ckan/tests/lib/test_dictization_schema.py
    M ckan/tests/models/test_group.py
    M doc/contributing.rst
    A doc/frontend-testing.rst
    M doc/python-coding-standards.rst

  Log Message:
  -----------
  Merge branch 'master' of github.com:okfn/ckan into 1635-feature-email-notifications-for-activity-streams


  Commit: 0cdb0d3aeacebdff4159b528a9d9ad2be202e6fc
      https://github.com/okfn/ckan/commit/0cdb0d3aeacebdff4159b528a9d9ad2be202e6fc
  Author: Sean Hammond <seanhammond at lavabit.com>
  Date:   2012-11-28 (Wed, 28 Nov 2012)

  Changed paths:
    M ckan/model/activity.py
    M pip-requirements-test.txt
    M pip-requirements.txt

  Log Message:
  -----------
  Merge branch 'master' of github.com:okfn/ckan into 1635-feature-email-notifications-for-activity-streams


  Commit: 48a5d1fc15982f3c3d52854114e150f6c8fec3c9
      https://github.com/okfn/ckan/commit/48a5d1fc15982f3c3d52854114e150f6c8fec3c9
  Author: Sean Hammond <seanhammond at lavabit.com>
  Date:   2012-11-28 (Wed, 28 Nov 2012)

  Changed paths:
    M ckan/tests/mock_publisher_auth.py

  Log Message:
  -----------
  Merge branch 'master' of github.com:okfn/ckan into 1635-feature-email-notifications-for-activity-streams


  Commit: a22275088a8f15a4634d579ea91415cb375fce66
      https://github.com/okfn/ckan/commit/a22275088a8f15a4634d579ea91415cb375fce66
  Author: Sean Hammond <seanhammond at lavabit.com>
  Date:   2012-11-28 (Wed, 28 Nov 2012)

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

  Log Message:
  -----------
  [#1635] Fix a broken import


  Commit: c1600048d7fbc854dd93493f608b01487d7aab7d
      https://github.com/okfn/ckan/commit/c1600048d7fbc854dd93493f608b01487d7aab7d
  Author: Sean Hammond <seanhammond at lavabit.com>
  Date:   2012-11-28 (Wed, 28 Nov 2012)

  Changed paths:
    M ckan/tests/lib/test_dictization.py

  Log Message:
  -----------
  [#1635] Update an outdated test


  Commit: 39cdfde297076de5df8fbc6528284948f0f8c791
      https://github.com/okfn/ckan/commit/39cdfde297076de5df8fbc6528284948f0f8c791
  Author: Sean Hammond <seanhammond at lavabit.com>
  Date:   2012-11-28 (Wed, 28 Nov 2012)

  Changed paths:
    M ckan/model/user.py
    M ckan/tests/lib/test_dictization.py

  Log Message:
  -----------
  [#1635] Remove last_activity_streams_notification_email column from user model.

This got committed accidentally in commit
a678e0e27efb1aaea8fd11bc10f0cb5db709e3d7, should not have been committed, I
went with email_last_sent column on the Dashboard model instead.


  Commit: cd57dd3b67a85ef0ec00b3d4e5fa8622b1afea66
      https://github.com/okfn/ckan/commit/cd57dd3b67a85ef0ec00b3d4e5fa8622b1afea66
  Author: Sean Hammond <seanhammond at lavabit.com>
  Date:   2012-11-28 (Wed, 28 Nov 2012)

  Changed paths:
    A ckan/migration/versions/063_add_email_last_sent_column.py

  Log Message:
  -----------
  [#1635] Add email_last_sent migration script


  Commit: 913ce71812ae165a67c09292debe0cbb6a46a843
      https://github.com/okfn/ckan/commit/913ce71812ae165a67c09292debe0cbb6a46a843
  Author: Sean Hammond <seanhammond at lavabit.com>
  Date:   2012-11-29 (Thu, 29 Nov 2012)

  Changed paths:
    M ckan/lib/email_notifications.py
    M ckan/logic/schema.py
    M ckan/model/user.py
    M ckan/tests/lib/test_email_notifications.py

  Log Message:
  -----------
  [#1635] Add email notifications user preference

Don't send email notifications if the user has them turned off in her
preferences.


  Commit: c4e349c405a716367ae67dd75567ac3f48b0bc82
      https://github.com/okfn/ckan/commit/c4e349c405a716367ae67dd75567ac3f48b0bc82
  Author: Sean Hammond <seanhammond at lavabit.com>
  Date:   2012-11-29 (Thu, 29 Nov 2012)

  Changed paths:
    A ckan/migration/versions/064_add_email_notifications_preference.py

  Log Message:
  -----------
  [#1635] Add email notifications user preference migration script


  Commit: f5fac45ff9bede1217b2283c68a51d0904b6d31d
      https://github.com/okfn/ckan/commit/f5fac45ff9bede1217b2283c68a51d0904b6d31d
  Author: Sean Hammond <seanhammond at lavabit.com>
  Date:   2012-11-29 (Thu, 29 Nov 2012)

  Changed paths:
    M ckan/lib/email_notifications.py
    M ckan/tests/lib/test_email_notifications.py

  Log Message:
  -----------
  [#1635] Don't send old emails when user enables notifications

After a user enables her email notifications preference, don't send her
emails about old activities that happened before she enabled it (even if
those activities are still marked as new on her dashboard).

This prevents the user from getting a flood of email notifications as
soon as she enables the preference (currently she would only get one
email anyway as all activities are always packed into one digest email,
but if that changes in future this safeguard might come in handy)


  Commit: 0ec7ef80dab6e8262e44f337856d4be70f5c3f0e
      https://github.com/okfn/ckan/commit/0ec7ef80dab6e8262e44f337856d4be70f5c3f0e
  Author: Sean Hammond <seanhammond at lavabit.com>
  Date:   2012-11-29 (Thu, 29 Nov 2012)

  Changed paths:
    M ckan/tests/__init__.py
    M ckan/tests/functional/api/test_follow.py

  Log Message:
  -----------
  Merge branch 'master' of github.com:okfn/ckan into 1635-feature-email-notifications-for-activity-streams


  Commit: 35cb12bb65bc0b353c99eee8ea04d9da3d757f09
      https://github.com/okfn/ckan/commit/35cb12bb65bc0b353c99eee8ea04d9da3d757f09
  Author: Sean Hammond <seanhammond at lavabit.com>
  Date:   2012-11-29 (Thu, 29 Nov 2012)

  Changed paths:
    M ckan/tests/lib/test_dictization.py

  Log Message:
  -----------
  [#1635] Update an outdated test


  Commit: ed221a2e52d3ee317a0f0e3b955c7bfbffa11286
      https://github.com/okfn/ckan/commit/ed221a2e52d3ee317a0f0e3b955c7bfbffa11286
  Author: Sean Hammond <seanhammond at lavabit.com>
  Date:   2012-12-03 (Mon, 03 Dec 2012)

  Changed paths:
    M ckan/lib/mailer.py

  Log Message:
  -----------
  [#1635] Remove pylons.g from lib/mailer.py

Don't use pylons.g in ckan/lib/mailer.py, use pylons.config instead.
This allows mailer.py to be used from outside of a Pylons request thread
(where pylons.g has not been registered for the thread), e.g. from a
paster command.


  Commit: 0d9e6274991393c28e3bbe9b930a0551dd627ae7
      https://github.com/okfn/ckan/commit/0d9e6274991393c28e3bbe9b930a0551dd627ae7
  Author: Sean Hammond <seanhammond at lavabit.com>
  Date:   2012-12-03 (Mon, 03 Dec 2012)

  Changed paths:
    M ckan/lib/cli.py
    M ckan/lib/email_notifications.py
    M setup.py

  Log Message:
  -----------
  - Add EmailNotificationsCommand in cli.py and setup.py

- Move an import in email_notifications.py into a function. This seems to be
  necessary otherwise the paster command crashes.


  Commit: 100bf3166fae97154887126417a6742185aaa7bd
      https://github.com/okfn/ckan/commit/100bf3166fae97154887126417a6742185aaa7bd
  Author: Sean Hammond <seanhammond at lavabit.com>
  Date:   2012-12-03 (Mon, 03 Dec 2012)

  Changed paths:
    M ckan/lib/email_notifications.py

  Log Message:
  -----------
  [#1635] Fix a couple of comments


  Commit: 7f9c2358bb1ed8d03f08060a0799a88adbc24afb
      https://github.com/okfn/ckan/commit/7f9c2358bb1ed8d03f08060a0799a88adbc24afb
  Author: Sean Hammond <seanhammond at lavabit.com>
  Date:   2012-12-03 (Mon, 03 Dec 2012)

  Changed paths:
    M ckan/controllers/home.py
    M ckan/lib/helpers.py

  Log Message:
  -----------
  Merge branch 'master' of github.com:okfn/ckan into 1635-feature-email-notifications-for-activity-streams


  Commit: 794d61bf2159ed07b7075faf126fac3348325c39
      https://github.com/okfn/ckan/commit/794d61bf2159ed07b7075faf126fac3348325c39
  Author: Sean Hammond <seanhammond at lavabit.com>
  Date:   2012-12-04 (Tue, 04 Dec 2012)

  Changed paths:
    M ckan/lib/mailer.py

  Log Message:
  -----------
  [#1635] Improve CKAN's SMTP support

Rename config option smtp_server -> smtp.server, add options smtp.starttls,
smtp.user and smtp.password, refactor the email-sending code in
mailer.py to (optionally) support STARTTLS and user and password
authentication. This means CKAN can now send emails using gmail's SMTP
server with a gmail username and password, for example. Sending mail
using a local sendmail process with no STARTTLS, username, or password
should still work as before.


  Commit: 44abd17417429aca106993f78702d601e87c799b
      https://github.com/okfn/ckan/commit/44abd17417429aca106993f78702d601e87c799b
  Author: Sean Hammond <seanhammond at lavabit.com>
  Date:   2012-12-04 (Tue, 04 Dec 2012)

  Changed paths:
    M ckan/lib/mailer.py
    M ckan/tests/lib/test_mailer.py
    M test-core.ini

  Log Message:
  -----------
  [#1635] Rename config option ckan.mail_from -> smtp.mail_from

This makes it consistent with the other smtp options it is used with.


  Commit: bb86b7ba5a054a9c87a837f86040d53bc22ef459
      https://github.com/okfn/ckan/commit/bb86b7ba5a054a9c87a837f86040d53bc22ef459
  Author: Sean Hammond <seanhammond at lavabit.com>
  Date:   2012-12-04 (Tue, 04 Dec 2012)

  Changed paths:
    M ckan/lib/mailer.py
    M ckan/tests/functional/test_user.py
    M ckan/tests/lib/test_mailer.py
    M ckan/tests/misc/test_mock_mail_server.py
    M ckan/tests/mock_mail_server.py
    M test-core.ini

  Log Message:
  -----------
  [#1635] Rename test_smtp_server -> smtp.test_server

Rename config setting test_smtp_server -> smtp.test_server, making it
consistent with the other smtp options it is used with.


  Commit: 4cb027704676ef81fd632a0e997d835f13e3bdd2
      https://github.com/okfn/ckan/commit/4cb027704676ef81fd632a0e997d835f13e3bdd2
  Author: Sean Hammond <seanhammond at lavabit.com>
  Date:   2012-12-04 (Tue, 04 Dec 2012)

  Changed paths:
    M ckan/config/deployment.ini_tmpl

  Log Message:
  -----------
  [#1635] Document new smtp options

Add docs and examples for new smtp options to deployment.ini_tmpl


  Commit: b29c28f865f5ebd71298089d747b917530c3c217
      https://github.com/okfn/ckan/commit/b29c28f865f5ebd71298089d747b917530c3c217
  Author: Sean Hammond <seanhammond at lavabit.com>
  Date:   2012-12-04 (Tue, 04 Dec 2012)

  Changed paths:
    M ckan/lib/mailer.py

  Log Message:
  -----------
  [#1635] Fix handling of smtp.starttls option


  Commit: ce7041fb848909bc898f5343a70d598b0535875d
      https://github.com/okfn/ckan/commit/ce7041fb848909bc898f5343a70d598b0535875d
  Author: Sean Hammond <seanhammond at lavabit.com>
  Date:   2012-12-04 (Tue, 04 Dec 2012)

  Changed paths:
    M ckan/lib/email_notifications.py

  Log Message:
  -----------
  [#1635] Fix repeat email sending

The `since` date wasn't being saved after sending an email to a user,
resulting in repeat emails being sent about the same activity.

There is a test for this, but for some reason it was working in the
tests, just not in production. Don't know why. This seems to fix it in
production.


  Commit: e8c1cdb85857b3b53eceddf4caa962407bbdfe7e
      https://github.com/okfn/ckan/commit/e8c1cdb85857b3b53eceddf4caa962407bbdfe7e
  Author: Sean Hammond <seanhammond at lavabit.com>
  Date:   2012-12-05 (Wed, 05 Dec 2012)

  Changed paths:
    M ckan/lib/cli.py
    M ckan/logic/action/update.py
    M ckan/logic/auth/publisher/update.py
    M ckan/logic/auth/update.py
    M setup.py

  Log Message:
  -----------
  [#1635] Change email notifications paster command to an API function

Move the send-email-notifications paster command added in commit
0d9e6274991393c28e3bbe9b930a0551dd627ae7 to a logic action function that only
sysadmins are authorised to use.

I was running into too many problems with the paster command because it runs
outside of a Pylons request thread so various Pylons objects used throughout
CKAN are not registered.

This way, the command can still be called from cron via:

    echo '{}' | paster post development.ini /api/action/send_email_notifications

this simulates an HTTP request, so all the Pylons objects are registered for
the thread. The `echo '{}' | ` part is unfortunately necessary because the CKAN
API still requires any empty data dict to be posted when the function being
called doesn't take any arguments.

The action function checks whether it is being run via paster and if so, skips
the authorisation check. This just makes it simpler to use as it means you
don't have to POST a sysadmin's API key when calling the command via paster.

This makes the changes to ckan/lib/mailer.py that I did in commit
ed221a2e52d3ee317a0f0e3b955c7bfbffa11286 unnecessary, but I'm leaving them in
because I don't think they do any harm and they may prove useful one day.

This means that the email notifications tests can become API tests now, and I
should add some tests for the auth of the new API function.


  Commit: 9c797ac4011159e7e8fdb3a0a7ae3338d0cc50f2
      https://github.com/okfn/ckan/commit/9c797ac4011159e7e8fdb3a0a7ae3338d0cc50f2
  Author: Sean Hammond <seanhammond at lavabit.com>
  Date:   2012-12-05 (Wed, 05 Dec 2012)

  Changed paths:
    M ckan/tests/lib/test_email_notifications.py

  Log Message:
  -----------
  [#1635] Factor out unneeded post() function

test_email_notifications.py no longer needs its own post() function as
it can use ckan.tests.call_action_api()


  Commit: bcf6d8943d078b9950d2919ec20fc631addddf64
      https://github.com/okfn/ckan/commit/bcf6d8943d078b9950d2919ec20fc631addddf64
  Author: Sean Hammond <seanhammond at lavabit.com>
  Date:   2012-12-05 (Wed, 05 Dec 2012)

  Changed paths:
    M ckan/tests/lib/test_email_notifications.py

  Log Message:
  -----------
  [#1635] Use send_email_notifications API in tests

Call the new send_email_notifications API endpoint in the tests, rather
than calling the lib function directly.


  Commit: c770f11474539a25c2f370b82458a6dbd481ef1e
      https://github.com/okfn/ckan/commit/c770f11474539a25c2f370b82458a6dbd481ef1e
  Author: Sean Hammond <seanhammond at lavabit.com>
  Date:   2012-12-05 (Wed, 05 Dec 2012)

  Changed paths:
    A ckan/tests/functional/api/test_email_notifications.py
    R ckan/tests/lib/test_email_notifications.py

  Log Message:
  -----------
  [#1635] Move email notification tests into api dir

The tests now test everything via the API, so move the file into
tests/functional/api/ with the other API tests


  Commit: aa48871d227c3514ada848907ff472edbec801e9
      https://github.com/okfn/ckan/commit/aa48871d227c3514ada848907ff472edbec801e9
  Author: Sean Hammond <seanhammond at lavabit.com>
  Date:   2012-12-05 (Wed, 05 Dec 2012)

  Changed paths:
    M ckan/tests/functional/api/test_email_notifications.py

  Log Message:
  -----------
  [#1635] Add auth tests for email notifications

Add a couple of tests to make sure that users who are not sysadmins
cannot call the send_email_notifications API.


  Commit: b998ab417f4879653662d0bd7b43f2bb68457f5b
      https://github.com/okfn/ckan/commit/b998ab417f4879653662d0bd7b43f2bb68457f5b
  Author: Sean Hammond <seanhammond at lavabit.com>
  Date:   2012-12-05 (Wed, 05 Dec 2012)

  Changed paths:
    M ckan/lib/email_notifications.py
    A ckan/templates/activity_streams/activity_stream_email_notifications.text

  Log Message:
  -----------
  [#1635] Improve activity stream notification email contents


  Commit: 6d1c521117169380593d5a0114bebf4ea3b0b4ca
      https://github.com/okfn/ckan/commit/6d1c521117169380593d5a0114bebf4ea3b0b4ca
  Author: Sean Hammond <seanhammond at lavabit.com>
  Date:   2012-12-05 (Wed, 05 Dec 2012)

  Changed paths:
    M ckan/tests/functional/api/test_email_notifications.py

  Log Message:
  -----------
  [#1635] Update a couple of tests

I'm giving up on testing the email body, would need to mime decode it


  Commit: d54b1f622f4f70056d991734f553b3dd0c6a23f7
      https://github.com/okfn/ckan/commit/d54b1f622f4f70056d991734f553b3dd0c6a23f7
  Author: Sean Hammond <seanhammond at lavabit.com>
  Date:   2012-12-05 (Wed, 05 Dec 2012)

  Changed paths:
    M ckan/controllers/user.py
    M ckan/templates/user/edit_user_form.html

  Log Message:
  -----------
  [#1635] Add UI for email notifications user preference


  Commit: ab675c967793e06de01ba470e631af475f91bf04
      https://github.com/okfn/ckan/commit/ab675c967793e06de01ba470e631af475f91bf04
  Author: Sean Hammond <seanhammond at lavabit.com>
  Date:   2012-12-05 (Wed, 05 Dec 2012)

  Changed paths:
    M ckan/config/deployment.ini_tmpl
    M ckan/controllers/user.py
    M ckan/logic/action/update.py
    M ckan/templates/user/edit_user_form.html

  Log Message:
  -----------
  [#1635] Add ckan.email_notifications setting


  Commit: 50d12474bbd155178f9a63989be4630f51a71d3b
      https://github.com/okfn/ckan/commit/50d12474bbd155178f9a63989be4630f51a71d3b
  Author: Sean Hammond <seanhammond at lavabit.com>
  Date:   2012-12-05 (Wed, 05 Dec 2012)

  Changed paths:
    M test-core.ini

  Log Message:
  -----------
  [#1635] Add ckan.email_notifications to test-core.ini

Make the tests pass again


  Commit: 109dcbb975a240f5a6f39d82b2226c5e786601fc
      https://github.com/okfn/ckan/commit/109dcbb975a240f5a6f39d82b2226c5e786601fc
  Author: Sean Hammond <seanhammond at lavabit.com>
  Date:   2012-12-07 (Fri, 07 Dec 2012)

  Changed paths:
    M ckan/logic/action/update.py
    M ckan/tests/functional/api/test_email_notifications.py

  Log Message:
  -----------
  [#1635] Add tests for ckan.email_notifications setting


  Commit: ac39450f964b08cbfb5c012ba804794279163c01
      https://github.com/okfn/ckan/commit/ac39450f964b08cbfb5c012ba804794279163c01
  Author: Sean Hammond <seanhammond at lavabit.com>
  Date:   2012-12-07 (Fri, 07 Dec 2012)

  Changed paths:
    M ckan/config/deployment.ini_tmpl
    M ckan/lib/email_notifications.py
    M ckan/lib/helpers.py
    M ckan/tests/functional/api/test_email_notifications.py
    M ckan/tests/lib/test_helpers.py

  Log Message:
  -----------
  [#1635] Add email_notifications_since setting


  Commit: a5b3ad9940d2eb054d7cbd32990bf27e71c6e44b
      https://github.com/okfn/ckan/commit/a5b3ad9940d2eb054d7cbd32990bf27e71c6e44b
  Author: Sean Hammond <seanhammond at lavabit.com>
  Date:   2012-12-07 (Fri, 07 Dec 2012)

  Changed paths:
    M ckan/config/solr/CHANGELOG.txt
    A ckan/config/solr/schema-2.0.xml
    M ckan/lib/search/__init__.py
    M ckan/lib/search/index.py
    M ckan/lib/search/query.py
    M ckan/tests/functional/test_search.py
    M ckan/tests/lib/test_solr_package_search.py
    M ckan/tests/lib/test_solr_package_search_synchronous_update.py
    M ckan_deb/usr/lib/ckan/common.sh
    M ckanext/multilingual/solr/schema.xml
    M doc/configuration.rst

  Log Message:
  -----------
  Merge branch 'master' of github.com:okfn/ckan into 1635-feature-email-notifications-for-activity-streams


  Commit: 02cda1c9216ea50682a1c5cd0697bea03c24abc4
      https://github.com/okfn/ckan/commit/02cda1c9216ea50682a1c5cd0697bea03c24abc4
  Author: Sean Hammond <seanhammond at lavabit.com>
  Date:   2012-12-11 (Tue, 11 Dec 2012)

  Changed paths:
    M ckan/config/deployment.ini_tmpl

  Log Message:
  -----------
  [#1635] Typo


  Commit: 5e4669d8e8c2aa26ca9dfb17278bc85bab2f366e
      https://github.com/okfn/ckan/commit/5e4669d8e8c2aa26ca9dfb17278bc85bab2f366e
  Author: Sean Hammond <seanhammond at lavabit.com>
  Date:   2012-12-11 (Tue, 11 Dec 2012)

  Changed paths:
    M ckan/lib/email_notifications.py
    M ckan/lib/helpers.py
    A ckan/tests/lib/test_email_notifications.py
    M ckan/tests/lib/test_helpers.py

  Log Message:
  -----------
  [#1635] Move string_to_timedelta() out of helpers

This is not intended to be a template helper function so doesn't belong
in ckan/lib/helpers.py. Just put it in email_notifications, since that's
the only module that uses it.


  Commit: 3b76185af30d7ff5d17e4500efe3b32d9b9d41de
      https://github.com/okfn/ckan/commit/3b76185af30d7ff5d17e4500efe3b32d9b9d41de
  Author: Sean Hammond <seanhammond at lavabit.com>
  Date:   2012-12-11 (Tue, 11 Dec 2012)

  Changed paths:
    M ckan/lib/email_notifications.py
    M ckan/tests/lib/test_email_notifications.py

  Log Message:
  -----------
  [#1635] Handle "1 day" in string_to_timedelta()

Handle strings like "1 day" or "1 day, 3:23:46" etc. in the
string_to_timedelta() function used to parse the
ckan.email_notifications_since config setting.


  Commit: 37b6abf674218a40e674b5fd97514315541a5ca0
      https://github.com/okfn/ckan/commit/37b6abf674218a40e674b5fd97514315541a5ca0
  Author: Sean Hammond <seanhammond at lavabit.com>
  Date:   2012-12-11 (Tue, 11 Dec 2012)

  Changed paths:
    M ckan/lib/email_notifications.py
    M ckan/tests/lib/test_email_notifications.py

  Log Message:
  -----------
  [#1635] Handle variable whitespace in string_to_timedelta()

Handle multiple spaces, tabs etc. instead of just single space between
words in strings parsed by string_to_timedelta().


  Commit: 710cb80662ffe06d01c2bb0e9bfe9d32374dd1a7
      https://github.com/okfn/ckan/commit/710cb80662ffe06d01c2bb0e9bfe9d32374dd1a7
  Author: Sean Hammond <seanhammond at lavabit.com>
  Date:   2012-12-11 (Tue, 11 Dec 2012)

  Changed paths:
    M ckan/lib/email_notifications.py

  Log Message:
  -----------
  [#1635] Remove an unneeded import

Now that string_to_timedelta() has been moved into lib, it no longer
needs an inline import logic.


  Commit: 0c724817eca50d711c58889909c80d4fb5065b3a
      https://github.com/okfn/ckan/commit/0c724817eca50d711c58889909c80d4fb5065b3a
  Author: Sean Hammond <seanhammond at lavabit.com>
  Date:   2012-12-11 (Tue, 11 Dec 2012)

  Changed paths:
    M ckan/lib/mailer.py

  Log Message:
  -----------
  Revert "[#1635] Remove pylons.g from lib/mailer.py"

This reverts commit ed221a2e52d3ee317a0f0e3b955c7bfbffa11286. The
changes are no longer necessary now that send-email-notifications is no
longer a paster command, and ckan is better off without these changes
because g.site_title etc. can be database-defined whereas
config.get('site_title') cannot.


  Commit: 3bb3310a3c91cfec8e2ff524e05968ac55224ee4
      https://github.com/okfn/ckan/commit/3bb3310a3c91cfec8e2ff524e05968ac55224ee4
  Author: Sean Hammond <seanhammond at lavabit.com>
  Date:   2012-12-11 (Tue, 11 Dec 2012)

  Changed paths:
    M ckan/config/deployment.ini_tmpl
    M ckan/config/routing.py
    M ckan/controllers/group.py
    M ckan/controllers/home.py
    M ckan/controllers/package.py
    M ckan/controllers/user.py
    M ckan/lib/activity_streams.py
    M ckan/lib/helpers.py
    M ckan/logic/action/get.py
    M ckan/model/activity.py
    M ckan/plugins/interfaces.py
    A ckan/public/base/javascript/modules/activity-stream.js
    M ckan/public/base/javascript/resource.config
    M ckan/public/base/less/activity.less
    M ckan/public/base/less/forms.less
    M ckan/templates/activity_streams/activity_stream_items.html
    A ckan/templates/package/activity_stream.html
    M ckan/tests/functional/test_package.py
    M test-core.ini

  Log Message:
  -----------
  Merge branch 'master' of github.com:okfn/ckan into 1635-feature-email-notifications-for-activity-streams

Conflicts:
	test-core.ini


  Commit: 8fce85e74cf009aefa0be3d49c7b0948b7f88565
      https://github.com/okfn/ckan/commit/8fce85e74cf009aefa0be3d49c7b0948b7f88565
  Author: Sean Hammond <seanhammond at lavabit.com>
  Date:   2012-12-11 (Tue, 11 Dec 2012)

  Changed paths:
    M ckan/templates/activity_streams/activity_stream_email_notifications.text

  Log Message:
  -----------
  [#1635] Fix links in email notifications

h.url_for() doesn't seem to work when a request is made via a
`paster post...` command (it returns 'localhost' links). Use g.site_url
instead.


  Commit: c75784a7f2a1ba8bebe73b863012a0723015317b
      https://github.com/okfn/ckan/commit/c75784a7f2a1ba8bebe73b863012a0723015317b
  Author: Sean Hammond <seanhammond at lavabit.com>
  Date:   2012-12-12 (Wed, 12 Dec 2012)

  Changed paths:
    M ckan/templates/activity_streams/activity_stream_email_notifications.text

  Log Message:
  -----------
  [#1635] Make email template translatable


  Commit: 7bdc62043673bf79a382e52150ef465663cc2624
      https://github.com/okfn/ckan/commit/7bdc62043673bf79a382e52150ef465663cc2624
  Author: Sean Hammond <seanhammond at lavabit.com>
  Date:   2012-12-12 (Wed, 12 Dec 2012)

  Changed paths:
    M ckan/controllers/user.py

  Log Message:
  -----------
  [#1635] Change a #FIXME to a #MOAN


  Commit: 16ddee47b187468dbce4b813b87b5d99ed9e89b9
      https://github.com/okfn/ckan/commit/16ddee47b187468dbce4b813b87b5d99ed9e89b9
  Author: Sean Hammond <seanhammond at lavabit.com>
  Date:   2012-12-12 (Wed, 12 Dec 2012)

  Changed paths:
    M ckan/i18n/check_po_files.py
    M ckan/lib/app_globals.py
    M ckan/lib/base.py
    M ckan/lib/cli.py
    M ckan/templates/base.html
    M ckan/templates/footer.html
    M ckan/templates/header.html
    M ckan/templates/package/resource_read.html
    M ckan/templates/package/search.html
    M ckan/templates/page.html

  Log Message:
  -----------
  Merge branch 'master' of github.com:okfn/ckan into 1635-feature-email-notifications-for-activity-streams


  Commit: 7868c98dc4ab2519916c46b881eaa21a9b1f29f4
      https://github.com/okfn/ckan/commit/7868c98dc4ab2519916c46b881eaa21a9b1f29f4
  Author: Sean Hammond <seanhammond at lavabit.com>
  Date:   2012-12-14 (Fri, 14 Dec 2012)

  Changed paths:
    M ckan/authz.py
    M ckan/config/environment.py
    M ckan/config/routing.py
    M ckan/controllers/admin.py
    M ckan/controllers/api.py
    M ckan/controllers/group.py
    R ckan/controllers/group_formalchemy.py
    A ckan/controllers/organization.py
    M ckan/controllers/package.py
    R ckan/controllers/package_formalchemy.py
    M ckan/controllers/related.py
    M ckan/controllers/storage.py
    M ckan/controllers/user.py
    R ckan/forms/__init__.py
    R ckan/forms/authorization_group.py
    R ckan/forms/authz.py
    R ckan/forms/builder.py
    R ckan/forms/common.py
    R ckan/forms/group.py
    R ckan/forms/package.py
    R ckan/forms/package_dict.py
    R ckan/forms/registry.py
    M ckan/lib/activity_streams.py
    M ckan/lib/app_globals.py
    M ckan/lib/base.py
    M ckan/lib/cli.py
    M ckan/lib/create_test_data.py
    M ckan/lib/dictization/model_dictize.py
    M ckan/lib/dictization/model_save.py
    M ckan/lib/formatters.py
    M ckan/lib/helpers.py
    M ckan/lib/jinja_extensions.py
    M ckan/lib/plugins.py
    M ckan/lib/search/index.py
    M ckan/logic/__init__.py
    M ckan/logic/action/create.py
    M ckan/logic/action/delete.py
    M ckan/logic/action/get.py
    M ckan/logic/action/update.py
    M ckan/logic/auth/create.py
    M ckan/logic/auth/delete.py
    M ckan/logic/auth/get.py
    R ckan/logic/auth/publisher/__init__.py
    R ckan/logic/auth/publisher/create.py
    R ckan/logic/auth/publisher/delete.py
    R ckan/logic/auth/publisher/get.py
    R ckan/logic/auth/publisher/update.py
    M ckan/logic/auth/update.py
    M ckan/logic/schema.py
    M ckan/logic/validators.py
    R ckan/migration/versions/063_add_email_last_sent_column.py
    A ckan/migration/versions/063_org_changes.py
    A ckan/migration/versions/064_add_email_last_sent_column.py
    R ckan/migration/versions/064_add_email_notifications_preference.py
    A ckan/migration/versions/065_add_email_notifications_preference.py
    M ckan/model/__init__.py
    M ckan/model/group.py
    M ckan/model/package.py
    M ckan/model/user.py
    M ckan/new_authz.py
    M ckan/plugins/interfaces.py
    M ckan/public/base/css/fuchsia.css
    M ckan/public/base/css/fuchsia.min.css
    M ckan/public/base/css/green.css
    M ckan/public/base/css/green.min.css
    M ckan/public/base/css/main.css
    M ckan/public/base/css/main.min.css
    M ckan/public/base/css/maroon.css
    M ckan/public/base/css/maroon.min.css
    M ckan/public/base/css/red.css
    M ckan/public/base/css/red.min.css
    M ckan/public/base/datapreview/css/recline.min.css
    M ckan/public/base/datapreview/preview_recline.min.js
    A ckan/public/base/datapreview/vendor/flot/0.7/excanvas.min.js
    A ckan/public/base/datapreview/vendor/flot/0.7/jquery.flot.min.js
    A ckan/public/base/datapreview/vendor/leaflet.markercluster/MarkerCluster.Default.ie.min.css
    A ckan/public/base/datapreview/vendor/leaflet.markercluster/MarkerCluster.Default.min.css
    A ckan/public/base/datapreview/vendor/leaflet.markercluster/MarkerCluster.min.css
    A ckan/public/base/datapreview/vendor/leaflet.markercluster/leaflet.markercluster.min.js
    A ckan/public/base/datapreview/vendor/leaflet/0.3.1/leaflet.ie.min.css
    A ckan/public/base/datapreview/vendor/leaflet/0.3.1/leaflet.min.css
    A ckan/public/base/datapreview/vendor/leaflet/0.3.1/leaflet.min.js
    A ckan/public/base/datapreview/vendor/leaflet/0.4.4/leaflet-src.min.js
    M ckan/public/base/datapreview/vendor/leaflet/leaflet.min.css
    M ckan/public/base/datapreview/vendor/leaflet/leaflet.min.js
    M ckan/public/base/datapreview/vendor/pdfjs/pdf.min.js
    M ckan/public/base/datapreview/vendor/pdfviewer/viewer.min.css
    M ckan/public/base/datapreview/vendor/pdfviewer/viewer.min.js
    M ckan/public/base/datapreview/vendor/recline/css/recline.min.css
    M ckan/public/base/datapreview/vendor/recline/recline.min.js
    A ckan/public/base/images/editing.png
    A ckan/public/base/images/placeholder-organization.png
    M ckan/public/base/javascript/client.js
    M ckan/public/base/javascript/client.min.js
    M ckan/public/base/javascript/module.min.js
    A ckan/public/base/javascript/modules/dashboard.min.js
    M ckan/public/base/javascript/modules/data-viewer.min.js
    A ckan/public/base/javascript/modules/follow.min.js
    M ckan/public/base/javascript/modules/popover-context.js
    A ckan/public/base/javascript/modules/popover-context.min.js
    M ckan/public/base/less/activity.less
    M ckan/public/base/less/forms.less
    M ckan/public/base/less/group.less
    M ckan/public/base/less/masthead.less
    M ckan/public/base/less/profile.less
    M ckan/public/base/less/variables.less
    A ckan/public/base/vendor/bootstrap/js/bootstrap-dropdown.min.js
    A ckan/public/base/vendor/bootstrap/js/bootstrap-popover.min.js
    A ckan/public/base/vendor/bootstrap/js/bootstrap-tooltip.min.js
    M ckan/templates/activity_streams/activity_stream_items.html
    R ckan/templates/ajax_snippets/popover-context-dataset.html
    R ckan/templates/ajax_snippets/popover-context-group.html
    R ckan/templates/ajax_snippets/popover-context-user.html
    A ckan/templates/ajax_snippets/popover_context_dataset.html
    A ckan/templates/ajax_snippets/popover_context_group.html
    A ckan/templates/ajax_snippets/popover_context_user.html
    M ckan/templates/development/primer.html
    A ckan/templates/development/snippets/page_header.html
    A ckan/templates/group/confirm_delete_member.html
    M ckan/templates/group/index.html
    A ckan/templates/group/member_new.html
    A ckan/templates/group/members.html
    M ckan/templates/group/read.html
    A ckan/templates/group/read_base.html
    M ckan/templates/group/snippets/group_form.html
    M ckan/templates/header.html
    A ckan/templates/organization/about.html
    A ckan/templates/organization/admins.html
    A ckan/templates/organization/base_form_page.html
    A ckan/templates/organization/confirm_delete.html
    A ckan/templates/organization/confirm_delete_member.html
    A ckan/templates/organization/edit.html
    A ckan/templates/organization/edit_base.html
    A ckan/templates/organization/index.html
    A ckan/templates/organization/member_new.html
    A ckan/templates/organization/members.html
    A ckan/templates/organization/new.html
    A ckan/templates/organization/new_organization_form.html
    A ckan/templates/organization/read.html
    A ckan/templates/organization/read_base.html
    A ckan/templates/organization/snippets/feeds.html
    A ckan/templates/organization/snippets/info.html
    A ckan/templates/organization/snippets/organization_form.html
    A ckan/templates/organization/snippets/organization_item.html
    A ckan/templates/organization/snippets/organization_list.html
    M ckan/templates/package/activity.html
    M ckan/templates/package/followers.html
    M ckan/templates/package/read.html
    A ckan/templates/package/read_base.html
    M ckan/templates/package/related_list.html
    M ckan/templates/package/snippets/package_basic_fields.html
    M ckan/templates/package/snippets/package_metadata_fields.html
    M ckan/templates/snippets/facet_list.html
    M ckan/templates/snippets/group.html
    M ckan/templates/snippets/group_item.html
    A ckan/templates/snippets/organization.html
    A ckan/templates/snippets/organization_item.html
    A ckan/templates/snippets/page_header.html
    A ckan/templates/snippets/private.html
    M ckan/templates/user/read.html
    A ckan/templates/user/read_base.html
    M ckan/templates/user/snippets/followers.html
    M ckan/templates_legacy/admin/index.html
    M ckan/templates_legacy/admin/layout.html
    M ckan/templates_legacy/group/layout.html
    M ckan/templates_legacy/package/layout.html
    M ckan/templates_legacy/package/new_package_form.html
    M ckan/tests/ckantestplugin/ckantestplugin/__init__.py
    R ckan/tests/forms/__init__.py
    R ckan/tests/forms/test_authz.py
    R ckan/tests/forms/test_group.py
    R ckan/tests/forms/test_package.py
    M ckan/tests/functional/api/base.py
    M ckan/tests/functional/api/model/test_group.py
    M ckan/tests/functional/api/model/test_package.py
    M ckan/tests/functional/api/model/test_vocabulary.py
    M ckan/tests/functional/api/test_activity.py
    M ckan/tests/functional/api/test_dashboard.py
    M ckan/tests/functional/api/test_email_notifications.py
    M ckan/tests/functional/test_activity.py
    M ckan/tests/functional/test_admin.py
    R ckan/tests/functional/test_authz.py
    R ckan/tests/functional/test_edit_authz.py
    M ckan/tests/functional/test_group.py
    M ckan/tests/functional/test_package.py
    R ckan/tests/functional/test_package_edit_authz.py
    R ckan/tests/functional/test_publisher_auth.py
    M ckan/tests/functional/test_tag_vocab.py
    M ckan/tests/functional/test_upload.py
    R ckan/tests/lib/test_authztool.py
    M ckan/tests/lib/test_dictization.py
    M ckan/tests/lib/test_dictization_schema.py
    M ckan/tests/lib/test_solr_search_index.py
    M ckan/tests/logic/test_action.py
    A ckan/tests/logic/test_auth.py
    R ckan/tests/misc/test_auth_profiles.py
    R ckan/tests/misc/test_package_saver.py
    R ckan/tests/models/test_authz.py
    R ckan/tests/models/test_repo.py
    R ckan/tests/test_authz.py
    A doc/organizations_and_groups.rst
    M test-core.ini

  Log Message:
  -----------
  Merge branch 'master' of github.com:okfn/ckan into 1635-feature-email-notifications-for-activity-streams

Conflicts:
	ckan/logic/action/update.py
	ckan/logic/auth/get.py
	ckan/logic/auth/publisher/get.py
	ckan/logic/auth/publisher/update.py
	ckan/model/user.py


  Commit: ba4d6dff049124992b7435f1956bebe276461629
      https://github.com/okfn/ckan/commit/ba4d6dff049124992b7435f1956bebe276461629
  Author: Sean Hammond <seanhammond at lavabit.com>
  Date:   2012-12-14 (Fri, 14 Dec 2012)

  Changed paths:
    A doc/email-notifications.rst
    M doc/index.rst

  Log Message:
  -----------
  [#1635] Add docs for email notifications feature


  Commit: 08970c943e54f454fdff0e25e3a80f236c25bdff
      https://github.com/okfn/ckan/commit/08970c943e54f454fdff0e25e3a80f236c25bdff
  Author: Sean Hammond <seanhammond at lavabit.com>
  Date:   2012-12-16 (Sun, 16 Dec 2012)

  Changed paths:
    M ckan/config/deployment.ini_tmpl
    M ckan/controllers/user.py
    M ckan/lib/email_notifications.py
    M ckan/logic/action/update.py
    M ckan/logic/schema.py
    M ckan/migration/versions/065_add_email_notifications_preference.py
    M ckan/model/user.py
    M ckan/templates/user/edit_user_form.html
    M ckan/tests/functional/api/test_email_notifications.py
    M ckan/tests/lib/test_dictization.py
    M doc/email-notifications.rst
    M test-core.ini

  Log Message:
  -----------
  [#1635] Rename ckan.email_notifications -> activity_streams_email_notifications

This makes things more extensible


  Commit: 56540910ec87131ba1c6b291bd28d603bc3cd5e4
      https://github.com/okfn/ckan/commit/56540910ec87131ba1c6b291bd28d603bc3cd5e4
  Author: Sean Hammond <seanhammond at lavabit.com>
  Date:   2012-12-16 (Sun, 16 Dec 2012)

  Changed paths:
    M ckan/tests/functional/api/test_email_notifications.py

  Log Message:
  -----------
  [#1635] Remove an unnecessary line


  Commit: a3d7f5d4f99b2d88a45e3c0e7605fa2ce7e643f6
      https://github.com/okfn/ckan/commit/a3d7f5d4f99b2d88a45e3c0e7605fa2ce7e643f6
  Author: Sean Hammond <seanhammond at lavabit.com>
  Date:   2012-12-16 (Sun, 16 Dec 2012)

  Changed paths:
    M ckan/lib/email_notifications.py
    M ckan/tests/lib/test_email_notifications.py

  Log Message:
  -----------
  [#1635] Fix an email_notifications_since bug

Fix the error response when ckan.email_notifications_since is an invalid
string.


  Commit: 503cb9aa6aca8481c8e9cff99896a5fbbd9e5eb8
      https://github.com/okfn/ckan/commit/503cb9aa6aca8481c8e9cff99896a5fbbd9e5eb8
  Author: John Martin <me at johnmart.in>
  Date:   2012-12-18 (Tue, 18 Dec 2012)

  Changed paths:
    M ckan/public/base/less/forms.less
    M ckan/templates/macros/form.html
    M ckan/templates/user/edit_user_form.html

  Log Message:
  -----------
  [#1635] Tweaked the edit profile form notifications email checkbox


  Commit: c04ca74366bf2a7de85105c53b2cca42f5545bed
      https://github.com/okfn/ckan/commit/c04ca74366bf2a7de85105c53b2cca42f5545bed
  Author: John Martin <me at johnmart.in>
  Date:   2012-12-18 (Tue, 18 Dec 2012)

  Changed paths:
    M ckan/templates/user/edit_user_form.html

  Log Message:
  -----------
  [#1635] Spaces... not tabs.


  Commit: a5aa6738646cafac50817b8e141150cde680e2c2
      https://github.com/okfn/ckan/commit/a5aa6738646cafac50817b8e141150cde680e2c2
  Author: John Martin <me at johnmart.in>
  Date:   2012-12-18 (Tue, 18 Dec 2012)

  Changed paths:
    M ckan/public/base/css/main.css

  Log Message:
  -----------
  [#1635] Re-compiled main.css


  Commit: d245f8ef9e44ddaed8cb221e4f9f0e390756e455
      https://github.com/okfn/ckan/commit/d245f8ef9e44ddaed8cb221e4f9f0e390756e455
  Author: Sean Hammond <seanhammond at lavabit.com>
  Date:   2012-12-18 (Tue, 18 Dec 2012)

  Changed paths:
    M ckan/public/base/css/main.css
    M ckan/public/base/less/forms.less
    M ckan/templates/macros/form.html
    M ckan/templates/user/edit_user_form.html

  Log Message:
  -----------
  Merge branch '1635-feature-email-notifications-for-activity-streams' of github.com:okfn/ckan into 1635-feature-email-notifications-for-activity-streams

Conflicts:
	ckan/templates/user/edit_user_form.html


  Commit: c63c24fc874937bff43815657bec23a63a8a15e6
      https://github.com/okfn/ckan/commit/c63c24fc874937bff43815657bec23a63a8a15e6
  Author: John Martin <me at johnmart.in>
  Date:   2012-12-18 (Tue, 18 Dec 2012)

  Changed paths:
    M ckan/public/base/less/forms.less
    M ckan/templates/macros/form.html
    M ckan/templates/user/edit_user_form.html

  Log Message:
  -----------
  [#1635] Removed uneeded macro


  Commit: 7a3431400f37f305864652daffe2f23ebe9c3ead
      https://github.com/okfn/ckan/commit/7a3431400f37f305864652daffe2f23ebe9c3ead
  Author: John Martin <me at johnmart.in>
  Date:   2012-12-18 (Tue, 18 Dec 2012)

  Changed paths:
    M ckan/public/base/css/main.css

  Log Message:
  -----------
  [#1635] Re-compiled main.css


  Commit: aae71d5fab54ad1cdc56be53167b9fee77d74200
      https://github.com/okfn/ckan/commit/aae71d5fab54ad1cdc56be53167b9fee77d74200
  Author: Sean Hammond <seanhammond at lavabit.com>
  Date:   2012-12-18 (Tue, 18 Dec 2012)

  Changed paths:
    M ckan/templates/user/edit_user_form.html

  Log Message:
  -----------
  [#1635] User preference text tweak


  Commit: a6ff3a1420aaeeb8e8de0c15962355db2d9d865f
      https://github.com/okfn/ckan/commit/a6ff3a1420aaeeb8e8de0c15962355db2d9d865f
  Author: Sean Hammond <seanhammond at lavabit.com>
  Date:   2012-12-18 (Tue, 18 Dec 2012)

  Changed paths:
    M ckan/controllers/group.py
    M ckan/logic/action/create.py
    M ckan/logic/action/delete.py
    M ckan/logic/action/update.py
    M ckan/tests/functional/api/model/test_vocabulary.py

  Log Message:
  -----------
  Merge branch 'master' of github.com:okfn/ckan into 1635-feature-email-notifications-for-activity-streams


  Commit: 38126ace2c57ee182da949256a9adfda2cbaf933
      https://github.com/okfn/ckan/commit/38126ace2c57ee182da949256a9adfda2cbaf933
  Author: Sean Hammond <seanhammond at lavabit.com>
  Date:   2012-12-18 (Tue, 18 Dec 2012)

  Changed paths:
    M ckan/tests/lib/test_dictization.py

  Log Message:
  -----------
  [#1635] Fix a typo in a test case


  Commit: 6bfce0101c7840299060099ae58191f15e1a49d4
      https://github.com/okfn/ckan/commit/6bfce0101c7840299060099ae58191f15e1a49d4
  Author: Sean Hammond <seanhammond at lavabit.com>
  Date:   2012-12-18 (Tue, 18 Dec 2012)

  Changed paths:
    M ckan/public/base/css/main.css
    M ckan/public/base/less/forms.less
    M ckan/templates/macros/form.html

  Log Message:
  -----------
  Merge branch '1635-feature-email-notifications-for-activity-streams' of github.com:okfn/ckan into 1635-feature-email-notifications-for-activity-streams

Conflicts:
	ckan/templates/user/edit_user_form.html


  Commit: c3e817462fcb024b1f01fede03090ea852aed18c
      https://github.com/okfn/ckan/commit/c3e817462fcb024b1f01fede03090ea852aed18c
  Author: Sean Hammond <seanhammond at lavabit.com>
  Date:   2012-12-18 (Tue, 18 Dec 2012)

  Changed paths:
    M ckan/templates/user/edit_user_form.html

  Log Message:
  -----------
  [#1635] Fix a merge error


  Commit: b09e8a59186d523fdb22fb35759218791e56b45b
      https://github.com/okfn/ckan/commit/b09e8a59186d523fdb22fb35759218791e56b45b
  Author: Sean Hammond <seanhammond at lavabit.com>
  Date:   2012-12-18 (Tue, 18 Dec 2012)

  Changed paths:
    M ckan/templates/user/edit_user_form.html

  Log Message:
  -----------
  [#1635] Fix email notifications user preference frontend

The email notifications preference was working, but a recent commit
broke the frontend and made it impossible to turn the feature on. This
is why we need frontend tests.


  Commit: ec07a0a4745d33666eeb6ff9c5aeef4a587c956b
      https://github.com/okfn/ckan/commit/ec07a0a4745d33666eeb6ff9c5aeef4a587c956b
  Author: Sean Hammond <seanhammond at lavabit.com>
  Date:   2012-12-18 (Tue, 18 Dec 2012)

  Changed paths:
    M ckan/lib/email_notifications.py
    M ckan/templates/activity_streams/activity_stream_email_notifications.text
    M ckan/tests/functional/api/test_email_notifications.py

  Log Message:
  -----------
  [#1635] Put num. new activities in email notifications

Make email notifications say "1 new activity", "3 new activities" etc.
instead of just "You have new activity". Both in the email subject and
in the body. Handle plural form translation properly with ungettext.

Also make the email subjects translatable, which I had forgotten to do before.


  Commit: 7ed492f41449c66d13ad3048ae7d09a225c63480
      https://github.com/okfn/ckan/commit/7ed492f41449c66d13ad3048ae7d09a225c63480
  Author: tobes <toby.junk at gmail.com>
  Date:   2012-12-19 (Wed, 19 Dec 2012)

  Changed paths:
    M ckan/migration/versions/063_org_changes.py

  Log Message:
  -----------
  [#1635] Improve migration script


  Commit: 595587f81a02d56120616f3454a2092ef7f0e046
      https://github.com/okfn/ckan/commit/595587f81a02d56120616f3454a2092ef7f0e046
  Author: Sean Hammond <seanhammond at lavabit.com>
  Date:   2012-12-20 (Thu, 20 Dec 2012)

  Changed paths:
    R ckan/authz.py
    M ckan/config/deployment.ini_tmpl
    M ckan/config/routing.py
    M ckan/controllers/admin.py
    M ckan/controllers/api.py
    M ckan/controllers/package.py
    M ckan/controllers/revision.py
    M ckan/lib/base.py
    A ckan/lib/datapreview.py
    M ckan/lib/dictization/model_dictize.py
    M ckan/lib/helpers.py
    M ckan/lib/search/query.py
    M ckan/logic/__init__.py
    M ckan/logic/action/get.py
    M ckan/logic/action/update.py
    M ckan/model/authz.py
    M ckan/plugins/interfaces.py
    M ckan/public/base/css/main.css
    R ckan/public/base/datapreview/css/json.css
    R ckan/public/base/datapreview/css/json.min.css
    R ckan/public/base/datapreview/css/pdf.css
    R ckan/public/base/datapreview/css/pdf.min.css
    R ckan/public/base/datapreview/css/recline.css
    R ckan/public/base/datapreview/css/recline.min.css
    R ckan/public/base/datapreview/img/ajaxload-circle.gif
    R ckan/public/base/datapreview/preview_json.js
    R ckan/public/base/datapreview/preview_json.min.js
    R ckan/public/base/datapreview/preview_pdf.js
    R ckan/public/base/datapreview/preview_pdf.min.js
    R ckan/public/base/datapreview/preview_recline.js
    R ckan/public/base/datapreview/preview_recline.min.js
    R ckan/public/base/datapreview/resource.config
    R ckan/public/base/datapreview/vendor/backbone/backbone.js
    R ckan/public/base/datapreview/vendor/backbone/backbone.min.js
    R ckan/public/base/datapreview/vendor/bootstrap/bootstrap.js
    R ckan/public/base/datapreview/vendor/bootstrap/bootstrap.min.js
    R ckan/public/base/datapreview/vendor/bootstrap/css/bootstrap.css
    R ckan/public/base/datapreview/vendor/bootstrap/css/bootstrap.min.css
    R ckan/public/base/datapreview/vendor/bootstrap/img/glyphicons-halflings-white.png
    R ckan/public/base/datapreview/vendor/bootstrap/img/glyphicons-halflings.png
    R ckan/public/base/datapreview/vendor/flotr2/excanvas.js
    R ckan/public/base/datapreview/vendor/flotr2/excanvas.min.js
    R ckan/public/base/datapreview/vendor/flotr2/flotr2.js
    R ckan/public/base/datapreview/vendor/flotr2/flotr2.min.js
    R ckan/public/base/datapreview/vendor/jquery.mustache/jquery.mustache.js
    R ckan/public/base/datapreview/vendor/jquery.mustache/jquery.mustache.min.js
    R ckan/public/base/datapreview/vendor/leaflet.markercluster/MarkerCluster.Default.css
    R ckan/public/base/datapreview/vendor/leaflet.markercluster/MarkerCluster.Default.ie.css
    R ckan/public/base/datapreview/vendor/leaflet.markercluster/MarkerCluster.css
    R ckan/public/base/datapreview/vendor/leaflet.markercluster/leaflet.markercluster.js
    R ckan/public/base/datapreview/vendor/leaflet/images/layers.png
    R ckan/public/base/datapreview/vendor/leaflet/images/marker-icon.png
    R ckan/public/base/datapreview/vendor/leaflet/images/marker-shadow.png
    R ckan/public/base/datapreview/vendor/leaflet/images/zoom-in.png
    R ckan/public/base/datapreview/vendor/leaflet/images/zoom-out.png
    R ckan/public/base/datapreview/vendor/leaflet/leaflet.css
    R ckan/public/base/datapreview/vendor/leaflet/leaflet.ie.css
    R ckan/public/base/datapreview/vendor/leaflet/leaflet.ie.min.css
    R ckan/public/base/datapreview/vendor/leaflet/leaflet.js
    R ckan/public/base/datapreview/vendor/leaflet/leaflet.min.css
    R ckan/public/base/datapreview/vendor/leaflet/leaflet.min.js
    R ckan/public/base/datapreview/vendor/moment/moment.js
    R ckan/public/base/datapreview/vendor/moment/moment.min.js
    R ckan/public/base/datapreview/vendor/mustache/mustache.js
    R ckan/public/base/datapreview/vendor/mustache/mustache.min.js
    R ckan/public/base/datapreview/vendor/pdfjs/pdf.js
    R ckan/public/base/datapreview/vendor/pdfjs/pdf.min.js
    R ckan/public/base/datapreview/vendor/pdfviewer/compatibility.js
    R ckan/public/base/datapreview/vendor/pdfviewer/compatibility.min.js
    R ckan/public/base/datapreview/vendor/pdfviewer/debugger.js
    R ckan/public/base/datapreview/vendor/pdfviewer/debugger.min.js
    R ckan/public/base/datapreview/vendor/pdfviewer/images/annotation-check.svg
    R ckan/public/base/datapreview/vendor/pdfviewer/images/annotation-comment.svg
    R ckan/public/base/datapreview/vendor/pdfviewer/images/annotation-text.svg
    R ckan/public/base/datapreview/vendor/pdfviewer/images/loading-icon.gif
    R ckan/public/base/datapreview/vendor/pdfviewer/images/texture.png
    R ckan/public/base/datapreview/vendor/pdfviewer/images/toolbarButton-bookmark.png
    R ckan/public/base/datapreview/vendor/pdfviewer/images/toolbarButton-download.png
    R ckan/public/base/datapreview/vendor/pdfviewer/images/toolbarButton-fullscreen.png
    R ckan/public/base/datapreview/vendor/pdfviewer/images/toolbarButton-menuArrows.png
    R ckan/public/base/datapreview/vendor/pdfviewer/images/toolbarButton-openFile.png
    R ckan/public/base/datapreview/vendor/pdfviewer/images/toolbarButton-pageDown-rtl.png
    R ckan/public/base/datapreview/vendor/pdfviewer/images/toolbarButton-pageDown.png
    R ckan/public/base/datapreview/vendor/pdfviewer/images/toolbarButton-pageUp-rtl.png
    R ckan/public/base/datapreview/vendor/pdfviewer/images/toolbarButton-pageUp.png
    R ckan/public/base/datapreview/vendor/pdfviewer/images/toolbarButton-print.png
    R ckan/public/base/datapreview/vendor/pdfviewer/images/toolbarButton-search.png
    R ckan/public/base/datapreview/vendor/pdfviewer/images/toolbarButton-sidebarToggle.png
    R ckan/public/base/datapreview/vendor/pdfviewer/images/toolbarButton-viewOutline.png
    R ckan/public/base/datapreview/vendor/pdfviewer/images/toolbarButton-viewThumbnail.png
    R ckan/public/base/datapreview/vendor/pdfviewer/images/toolbarButton-zoomIn.png
    R ckan/public/base/datapreview/vendor/pdfviewer/images/toolbarButton-zoomOut.png
    R ckan/public/base/datapreview/vendor/pdfviewer/locale.properties
    R ckan/public/base/datapreview/vendor/pdfviewer/viewer.css
    R ckan/public/base/datapreview/vendor/pdfviewer/viewer.js
    R ckan/public/base/datapreview/vendor/pdfviewer/viewer.min.css
    R ckan/public/base/datapreview/vendor/pdfviewer/viewer.min.js
    R ckan/public/base/datapreview/vendor/recline/css/recline.css
    R ckan/public/base/datapreview/vendor/recline/css/recline.min.css
    R ckan/public/base/datapreview/vendor/recline/recline.js
    R ckan/public/base/datapreview/vendor/recline/recline.min.js
    R ckan/public/base/datapreview/vendor/slickgrid/MIT-LICENSE.txt
    R ckan/public/base/datapreview/vendor/slickgrid/README.txt
    R ckan/public/base/datapreview/vendor/slickgrid/images/sort-asc.gif
    R ckan/public/base/datapreview/vendor/slickgrid/images/sort-desc.gif
    R ckan/public/base/datapreview/vendor/slickgrid/jquery-ui-1.8.16.custom.js
    R ckan/public/base/datapreview/vendor/slickgrid/jquery-ui-1.8.16.custom.min.js
    R ckan/public/base/datapreview/vendor/slickgrid/jquery.event.drag-2.0.js
    R ckan/public/base/datapreview/vendor/slickgrid/jquery.event.drag-2.0.min.js
    R ckan/public/base/datapreview/vendor/slickgrid/slick.grid.css
    R ckan/public/base/datapreview/vendor/slickgrid/slick.grid.js
    R ckan/public/base/datapreview/vendor/slickgrid/slick.grid.min.css
    R ckan/public/base/datapreview/vendor/slickgrid/slick.grid.min.js
    R ckan/public/base/datapreview/vendor/underscore/underscore.js
    R ckan/public/base/datapreview/vendor/underscore/underscore.min.js
    R ckan/public/base/datapreview/vendor/webL10n/README.md
    R ckan/public/base/datapreview/vendor/webL10n/l10n.js
    R ckan/public/base/datapreview/vendor/webL10n/l10n.min.js
    M ckan/public/base/less/masthead.less
    R ckan/templates/dataviewer/json.html
    R ckan/templates/dataviewer/pdf.html
    R ckan/templates/dataviewer/recline.html
    M ckan/templates/dataviewer/snippets/no_preview.html
    M ckan/templates/header.html
    M ckan/templates/macros/form.html
    M ckan/templates/package/search.html
    A ckan/templates/tests/mock_json_resource_preview_template.html
    A ckan/templates/tests/mock_resource_preview_template.html
    M ckan/tests/functional/api/base.py
    M ckan/tests/functional/test_package.py
    M ckan/tests/functional/test_pagination.py
    A ckan/tests/functional/test_preview_interface.py
    A ckan/tests/lib/test_datapreview.py
    M ckan/tests/lib/test_helpers.py
    M ckan/tests/lib/test_solr_package_search.py
    A ckanext/jsonpreview/__init__.py
    A ckanext/jsonpreview/plugin.py
    A ckanext/jsonpreview/tests/__init__.py
    A ckanext/jsonpreview/tests/test_preview.py
    A ckanext/jsonpreview/theme/public/css/json.css
    A ckanext/jsonpreview/theme/public/css/json.min.css
    A ckanext/jsonpreview/theme/public/preview_json.js
    A ckanext/jsonpreview/theme/public/preview_json.min.js
    A ckanext/jsonpreview/theme/public/resource.config
    A ckanext/jsonpreview/theme/templates/json.html
    A ckanext/pdfpreview/__init__.py
    A ckanext/pdfpreview/plugin.py
    A ckanext/pdfpreview/tests/__init__.py
    A ckanext/pdfpreview/tests/test_preview.py
    A ckanext/pdfpreview/theme/public/css/pdf.css
    A ckanext/pdfpreview/theme/public/css/pdf.min.css
    A ckanext/pdfpreview/theme/public/css/recline.css
    A ckanext/pdfpreview/theme/public/css/recline.min.css
    A ckanext/pdfpreview/theme/public/img/ajaxload-circle.gif
    A ckanext/pdfpreview/theme/public/preview_pdf.js
    A ckanext/pdfpreview/theme/public/preview_pdf.min.js
    A ckanext/pdfpreview/theme/public/resource.config
    A ckanext/pdfpreview/theme/public/vendor/pdfjs/pdf.js
    A ckanext/pdfpreview/theme/public/vendor/pdfjs/pdf.min.js
    A ckanext/pdfpreview/theme/public/vendor/pdfviewer/compatibility.js
    A ckanext/pdfpreview/theme/public/vendor/pdfviewer/compatibility.min.js
    A ckanext/pdfpreview/theme/public/vendor/pdfviewer/debugger.js
    A ckanext/pdfpreview/theme/public/vendor/pdfviewer/debugger.min.js
    A ckanext/pdfpreview/theme/public/vendor/pdfviewer/images/annotation-check.svg
    A ckanext/pdfpreview/theme/public/vendor/pdfviewer/images/annotation-comment.svg
    A ckanext/pdfpreview/theme/public/vendor/pdfviewer/images/annotation-text.svg
    A ckanext/pdfpreview/theme/public/vendor/pdfviewer/images/loading-icon.gif
    A ckanext/pdfpreview/theme/public/vendor/pdfviewer/images/texture.png
    A ckanext/pdfpreview/theme/public/vendor/pdfviewer/images/toolbarButton-bookmark.png
    A ckanext/pdfpreview/theme/public/vendor/pdfviewer/images/toolbarButton-download.png
    A ckanext/pdfpreview/theme/public/vendor/pdfviewer/images/toolbarButton-fullscreen.png
    A ckanext/pdfpreview/theme/public/vendor/pdfviewer/images/toolbarButton-menuArrows.png
    A ckanext/pdfpreview/theme/public/vendor/pdfviewer/images/toolbarButton-openFile.png
    A ckanext/pdfpreview/theme/public/vendor/pdfviewer/images/toolbarButton-pageDown-rtl.png
    A ckanext/pdfpreview/theme/public/vendor/pdfviewer/images/toolbarButton-pageDown.png
    A ckanext/pdfpreview/theme/public/vendor/pdfviewer/images/toolbarButton-pageUp-rtl.png
    A ckanext/pdfpreview/theme/public/vendor/pdfviewer/images/toolbarButton-pageUp.png
    A ckanext/pdfpreview/theme/public/vendor/pdfviewer/images/toolbarButton-print.png
    A ckanext/pdfpreview/theme/public/vendor/pdfviewer/images/toolbarButton-search.png
    A ckanext/pdfpreview/theme/public/vendor/pdfviewer/images/toolbarButton-sidebarToggle.png
    A ckanext/pdfpreview/theme/public/vendor/pdfviewer/images/toolbarButton-viewOutline.png
    A ckanext/pdfpreview/theme/public/vendor/pdfviewer/images/toolbarButton-viewThumbnail.png
    A ckanext/pdfpreview/theme/public/vendor/pdfviewer/images/toolbarButton-zoomIn.png
    A ckanext/pdfpreview/theme/public/vendor/pdfviewer/images/toolbarButton-zoomOut.png
    A ckanext/pdfpreview/theme/public/vendor/pdfviewer/locale.properties.js
    A ckanext/pdfpreview/theme/public/vendor/pdfviewer/viewer.css
    A ckanext/pdfpreview/theme/public/vendor/pdfviewer/viewer.js
    A ckanext/pdfpreview/theme/public/vendor/pdfviewer/viewer.min.css
    A ckanext/pdfpreview/theme/public/vendor/pdfviewer/viewer.min.js
    A ckanext/pdfpreview/theme/public/vendor/webL10n/README.md
    A ckanext/pdfpreview/theme/public/vendor/webL10n/l10n.js
    A ckanext/pdfpreview/theme/public/vendor/webL10n/l10n.min.js
    A ckanext/pdfpreview/theme/templates/pdf.html
    A ckanext/reclinepreview/__init__.py
    A ckanext/reclinepreview/plugin.py
    A ckanext/reclinepreview/tests/__init__.py
    A ckanext/reclinepreview/tests/test_preview.py
    A ckanext/reclinepreview/theme/public/css/recline.css
    A ckanext/reclinepreview/theme/public/css/recline.min.css
    A ckanext/reclinepreview/theme/public/img/ajaxload-circle.gif
    A ckanext/reclinepreview/theme/public/preview_recline.js
    A ckanext/reclinepreview/theme/public/preview_recline.min.js
    A ckanext/reclinepreview/theme/public/resource.config
    A ckanext/reclinepreview/theme/public/vendor/backbone/backbone.js
    A ckanext/reclinepreview/theme/public/vendor/backbone/backbone.min.js
    A ckanext/reclinepreview/theme/public/vendor/bootstrap/bootstrap.js
    A ckanext/reclinepreview/theme/public/vendor/bootstrap/bootstrap.min.js
    A ckanext/reclinepreview/theme/public/vendor/bootstrap/css/bootstrap.css
    A ckanext/reclinepreview/theme/public/vendor/bootstrap/css/bootstrap.min.css
    A ckanext/reclinepreview/theme/public/vendor/bootstrap/img/glyphicons-halflings-white.png
    A ckanext/reclinepreview/theme/public/vendor/bootstrap/img/glyphicons-halflings.png
    A ckanext/reclinepreview/theme/public/vendor/flotr2/excanvas.js
    A ckanext/reclinepreview/theme/public/vendor/flotr2/excanvas.min.js
    A ckanext/reclinepreview/theme/public/vendor/flotr2/flotr2.js
    A ckanext/reclinepreview/theme/public/vendor/flotr2/flotr2.min.js
    A ckanext/reclinepreview/theme/public/vendor/jquery.mustache/jquery.mustache.js
    A ckanext/reclinepreview/theme/public/vendor/jquery.mustache/jquery.mustache.min.js
    A ckanext/reclinepreview/theme/public/vendor/leaflet.markercluster/MarkerCluster.Default.css
    A ckanext/reclinepreview/theme/public/vendor/leaflet.markercluster/MarkerCluster.Default.ie.css
    A ckanext/reclinepreview/theme/public/vendor/leaflet.markercluster/MarkerCluster.Default.ie.min.css
    A ckanext/reclinepreview/theme/public/vendor/leaflet.markercluster/MarkerCluster.Default.min.css
    A ckanext/reclinepreview/theme/public/vendor/leaflet.markercluster/MarkerCluster.css
    A ckanext/reclinepreview/theme/public/vendor/leaflet.markercluster/MarkerCluster.min.css
    A ckanext/reclinepreview/theme/public/vendor/leaflet.markercluster/leaflet.markercluster.js
    A ckanext/reclinepreview/theme/public/vendor/leaflet.markercluster/leaflet.markercluster.min.js
    A ckanext/reclinepreview/theme/public/vendor/leaflet/images/layers.png
    A ckanext/reclinepreview/theme/public/vendor/leaflet/images/marker-icon.png
    A ckanext/reclinepreview/theme/public/vendor/leaflet/images/marker-shadow.png
    A ckanext/reclinepreview/theme/public/vendor/leaflet/images/zoom-in.png
    A ckanext/reclinepreview/theme/public/vendor/leaflet/images/zoom-out.png
    A ckanext/reclinepreview/theme/public/vendor/leaflet/leaflet.css
    A ckanext/reclinepreview/theme/public/vendor/leaflet/leaflet.ie.css
    A ckanext/reclinepreview/theme/public/vendor/leaflet/leaflet.ie.min.css
    A ckanext/reclinepreview/theme/public/vendor/leaflet/leaflet.js
    A ckanext/reclinepreview/theme/public/vendor/leaflet/leaflet.min.css
    A ckanext/reclinepreview/theme/public/vendor/leaflet/leaflet.min.js
    A ckanext/reclinepreview/theme/public/vendor/moment/moment.js
    A ckanext/reclinepreview/theme/public/vendor/moment/moment.min.js
    A ckanext/reclinepreview/theme/public/vendor/mustache/mustache.js
    A ckanext/reclinepreview/theme/public/vendor/mustache/mustache.min.js
    A ckanext/reclinepreview/theme/public/vendor/recline/css/recline.css
    A ckanext/reclinepreview/theme/public/vendor/recline/css/recline.min.css
    A ckanext/reclinepreview/theme/public/vendor/recline/recline.js
    A ckanext/reclinepreview/theme/public/vendor/recline/recline.min.js
    A ckanext/reclinepreview/theme/public/vendor/slickgrid/MIT-LICENSE.txt
    A ckanext/reclinepreview/theme/public/vendor/slickgrid/README.txt
    A ckanext/reclinepreview/theme/public/vendor/slickgrid/images/sort-asc.gif
    A ckanext/reclinepreview/theme/public/vendor/slickgrid/images/sort-desc.gif
    A ckanext/reclinepreview/theme/public/vendor/slickgrid/jquery-ui-1.8.16.custom.js
    A ckanext/reclinepreview/theme/public/vendor/slickgrid/jquery-ui-1.8.16.custom.min.js
    A ckanext/reclinepreview/theme/public/vendor/slickgrid/jquery.event.drag-2.0.js
    A ckanext/reclinepreview/theme/public/vendor/slickgrid/jquery.event.drag-2.0.min.js
    A ckanext/reclinepreview/theme/public/vendor/slickgrid/slick.grid.css
    A ckanext/reclinepreview/theme/public/vendor/slickgrid/slick.grid.js
    A ckanext/reclinepreview/theme/public/vendor/slickgrid/slick.grid.min.css
    A ckanext/reclinepreview/theme/public/vendor/slickgrid/slick.grid.min.js
    A ckanext/reclinepreview/theme/public/vendor/underscore/underscore.js
    A ckanext/reclinepreview/theme/public/vendor/underscore/underscore.min.js
    A ckanext/reclinepreview/theme/templates/recline.html
    A ckanext/resourceproxy/__init__.py
    A ckanext/resourceproxy/controller.py
    A ckanext/resourceproxy/plugin.py
    A ckanext/resourceproxy/tests/__init__.py
    A ckanext/resourceproxy/tests/file_server.py
    A ckanext/resourceproxy/tests/static/huge.json
    A ckanext/resourceproxy/tests/static/test.json
    A ckanext/resourceproxy/tests/test_proxy.py
    M doc/configuration.rst
    M doc/toolkit.rst
    M doc/writing-extensions.rst
    M setup.py

  Log Message:
  -----------
  Merge branch 'master' of github.com:okfn/ckan into 1635-feature-email-notifications-for-activity-streams

Conflicts:
	ckan/config/deployment.ini_tmpl


  Commit: 9c15d8c747814ab2fb4445fb8ef2bf363958d503
      https://github.com/okfn/ckan/commit/9c15d8c747814ab2fb4445fb8ef2bf363958d503
  Author: tobes <toby.junk at gmail.com>
  Date:   2012-12-20 (Thu, 20 Dec 2012)

  Changed paths:
    M ckan/config/deployment.ini_tmpl
    M ckan/controllers/user.py
    M ckan/lib/cli.py
    M ckan/lib/dictization/model_dictize.py
    A ckan/lib/email_notifications.py
    M ckan/lib/mailer.py
    M ckan/logic/action/get.py
    M ckan/logic/action/update.py
    M ckan/logic/auth/get.py
    M ckan/logic/auth/update.py
    M ckan/logic/schema.py
    M ckan/migration/versions/063_org_changes.py
    A ckan/migration/versions/064_add_email_last_sent_column.py
    A ckan/migration/versions/065_add_email_notifications_preference.py
    M ckan/model/dashboard.py
    M ckan/model/user.py
    M ckan/public/base/css/main.css
    M ckan/public/base/less/forms.less
    A ckan/templates/activity_streams/activity_stream_email_notifications.text
    M ckan/templates/user/edit_user_form.html
    M ckan/tests/functional/api/test_dashboard.py
    A ckan/tests/functional/api/test_email_notifications.py
    M ckan/tests/functional/test_user.py
    M ckan/tests/lib/test_dictization.py
    A ckan/tests/lib/test_email_notifications.py
    M ckan/tests/lib/test_mailer.py
    M ckan/tests/misc/test_mock_mail_server.py
    M ckan/tests/mock_mail_server.py
    A doc/email-notifications.rst
    M doc/index.rst
    M test-core.ini

  Log Message:
  -----------
  Merge branch '1635-feature-email-notifications-for-activity-streams'


Compare: https://github.com/okfn/ckan/compare/5ca73a5e7eee...9c15d8c74781


More information about the ckan-changes mailing list