[ckan-changes] [ckan/ckan] 665499: [#1527] Make emails customizable

GitHub noreply at github.com
Thu Jan 7 21:10:01 UTC 2016


  Branch: refs/heads/master
  Home:   https://github.com/ckan/ckan
  Commit: 66549991119191fb00a7aaf907e4027036df4561
      https://github.com/ckan/ckan/commit/66549991119191fb00a7aaf907e4027036df4561
  Author: amercader <amercadero at gmail.com>
  Date:   2015-06-12 (Fri, 12 Jun 2015)

  Changed paths:
    M ckan/lib/mailer.py
    A ckan/templates/emails/invite_user.txt
    A ckan/templates/emails/reset_password.txt
    M doc/maintaining/configuration.rst

  Log Message:
  -----------
  [#1527] Make emails customizable

Read the reset password and invite user emails body from text templates
(which are magically translated!) and the subjects from config options.


  Commit: 9eeb6a7a7f590049dbc22fa39b03c24a08691eb8
      https://github.com/ckan/ckan/commit/9eeb6a7a7f590049dbc22fa39b03c24a08691eb8
  Author: amercader <amercadero at gmail.com>
  Date:   2015-06-12 (Fri, 12 Jun 2015)

  Changed paths:
    M ckan/lib/mailer.py
    R ckan/tests/legacy/lib/test_mailer.py
    R ckan/tests/legacy/mock_mail_server.py
    A ckan/tests/lib/test_mailer.py
    A ckan/tests/mock_mail_server.py

  Log Message:
  -----------
  [#1527] Update mailing tests


  Commit: 3a863ab446d5cd7e33f4f2de716b3b6884ca0124
      https://github.com/ckan/ckan/commit/3a863ab446d5cd7e33f4f2de716b3b6884ca0124
  Author: amercader <amercadero at gmail.com>
  Date:   2015-06-12 (Fri, 12 Jun 2015)

  Changed paths:
    M ckan/lib/mailer.py
    M ckan/tests/legacy/test_coding_standards.py

  Log Message:
  -----------
  [#1527] PEP8


  Commit: 52e033586b95be99782081bece2a5899208678d2
      https://github.com/ckan/ckan/commit/52e033586b95be99782081bece2a5899208678d2
  Author: amercader <amercadero at gmail.com>
  Date:   2015-06-12 (Fri, 12 Jun 2015)

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

  Log Message:
  -----------
  [#1527] Fix wrong import


  Commit: c0c6e90ac7af0faf8bfa67c3d05900c71296e3be
      https://github.com/ckan/ckan/commit/c0c6e90ac7af0faf8bfa67c3d05900c71296e3be
  Author: amercader <amercadero at gmail.com>
  Date:   2015-06-15 (Mon, 15 Jun 2015)

  Changed paths:
    M ckan/lib/mailer.py
    M ckan/tests/lib/test_mailer.py

  Log Message:
  -----------
  [#1527] Fix bug on From header, added test


  Commit: 1830e2e98ed6de3e9a07a6f31a147fdebbf68295
      https://github.com/ckan/ckan/commit/1830e2e98ed6de3e9a07a6f31a147fdebbf68295
  Author: amercader <amercadero at gmail.com>
  Date:   2015-06-15 (Mon, 15 Jun 2015)

  Changed paths:
    M ckan/logic/action/create.py
    M ckan/tests/logic/action/test_create.py

  Log Message:
  -----------
  [#1527] Raise NotFound on user invite if group does not exist


  Commit: 281996344f1c6f84af9ecc2679dc8c8a42aab41e
      https://github.com/ckan/ckan/commit/281996344f1c6f84af9ecc2679dc8c8a42aab41e
  Author: amercader <amercadero at gmail.com>
  Date:   2015-06-15 (Mon, 15 Jun 2015)

  Changed paths:
    M ckan/lib/helpers.py
    M ckan/lib/mailer.py
    M ckan/logic/action/create.py
    M ckan/templates/emails/invite_user.txt
    M ckan/tests/lib/test_mailer.py

  Log Message:
  -----------
  [#1527] Add information about the org/group and role to the invite email

The current invite email doesn't really give you much information about
what you are actually signing for. This adds the organization title and
the role that you've been assigned to the invite email.


  Commit: 3607016766108f09aed076861f4dd21818e2f9fd
      https://github.com/ckan/ckan/commit/3607016766108f09aed076861f4dd21818e2f9fd
  Author: amercader <amercadero at gmail.com>
  Date:   2015-06-15 (Mon, 15 Jun 2015)

  Changed paths:
    A ckan/tests/legacy/mock_mail_server.py
    M ckan/tests/legacy/test_coding_standards.py
    M ckan/tests/lib/test_mailer.py
    R ckan/tests/mock_mail_server.py

  Log Message:
  -----------
  [#1527] Keep mock email server on legacy folder


  Commit: 422df7555c477ab04ceb2281940e10a8b5834855
      https://github.com/ckan/ckan/commit/422df7555c477ab04ceb2281940e10a8b5834855
  Author: amercader <amercadero at gmail.com>
  Date:   2015-06-15 (Mon, 15 Jun 2015)

  Changed paths:
    M ckan/lib/mailer.py
    A ckan/templates/emails/invite_user_subject.txt
    A ckan/templates/emails/reset_password_subject.txt
    M ckan/tests/lib/test_mailer.py
    A ckanext/example_theme/custom_emails/__init__.py
    A ckanext/example_theme/custom_emails/plugin.py
    A ckanext/example_theme/custom_emails/templates/emails/invite_user.txt
    A ckanext/example_theme/custom_emails/templates/emails/invite_user_subject.txt
    A ckanext/example_theme/custom_emails/templates/emails/reset_password.txt
    A ckanext/example_theme/custom_emails/templates/emails/reset_password_subject.txt
    A ckanext/example_theme/custom_emails/tests.py
    M doc/maintaining/configuration.rst
    M setup.py

  Log Message:
  -----------
  [#1527] Read email subjects from templates as well

As per @wardi's suggestion. Added a new example plugin with tests


  Commit: c3b6fc6431be0f877c7c0b5803938bc967a32de2
      https://github.com/ckan/ckan/commit/c3b6fc6431be0f877c7c0b5803938bc967a32de2
  Author: amercader <amercadero at gmail.com>
  Date:   2015-06-15 (Mon, 15 Jun 2015)

  Changed paths:
    M ckan/tests/lib/test_mailer.py
    M setup.py

  Log Message:
  -----------
  [#1527] Fix assert_in import, failing on Travis because nose/unitest versions


  Commit: be28d6bac9178b15627fb950878a16b1c7962306
      https://github.com/ckan/ckan/commit/be28d6bac9178b15627fb950878a16b1c7962306
  Author: amercader <amercadero at gmail.com>
  Date:   2015-06-15 (Mon, 15 Jun 2015)

  Changed paths:
    M ckanext/example_theme/custom_emails/tests.py

  Log Message:
  -----------
  [#1527] Fix assert_in import, failing on Travis because nose/unitest versions


  Commit: 03ac7857d4aee932bbcfbfd98b2d9b4747cba092
      https://github.com/ckan/ckan/commit/03ac7857d4aee932bbcfbfd98b2d9b4747cba092
  Author: amercader <amercadero at gmail.com>
  Date:   2015-10-28 (Wed, 28 Oct 2015)

  Changed paths:
    M CHANGELOG.rst
    R bin/canada.py
    R bin/ckan-correct-tags.py
    R bin/ckan-edit-tags.py
    R bin/ckan-edit-tags2.py
    R bin/ckan-hmg-breakdown.py
    R bin/ckan-hmg-update-licenses.py
    R bin/ckan-rest-edit-tags.py
    R bin/ckan_edit_local.py
    R bin/ckan_spam.py
    R bin/copy-ckan-2-ckan.py
    R bin/dump-ukgov.py
    R bin/dump_23_pkgs.py
    R bin/fixes.py
    M bin/less
    R bin/loadconfig.py
    R bin/ons-load.py
    R bin/revision_manager.py
    R bin/status.py
    R bin/talisckan.py
    R bin/webstore_test.py
    A circle.yml
    M ckan/__init__.py
    M ckan/authz.py
    M ckan/config/deployment.ini_tmpl
    M ckan/config/environment.py
    M ckan/config/resource_formats.json
    M ckan/config/routing.py
    M ckan/config/solr/schema.xml
    M ckan/controllers/admin.py
    M ckan/controllers/api.py
    M ckan/controllers/group.py
    M ckan/controllers/home.py
    M ckan/controllers/package.py
    R ckan/controllers/related.py
    M ckan/controllers/storage.py
    M ckan/controllers/user.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/__init__.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/i18n.py
    A ckan/lib/lazyjson.py
    M ckan/lib/munge.py
    M ckan/lib/plugins.py
    M ckan/lib/search/__init__.py
    M ckan/lib/uploader.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
    M ckan/logic/auth/update.py
    M ckan/logic/schema.py
    A ckan/migration/versions/077_add_revisions_to_system_info.py
    A ckan/migration/versions/078_remove_old_authz_model.py
    A ckan/migration/versions/079_resource_revision_index.py
    A ckan/migration/versions/080_continuity_id_indexes.py
    M ckan/model/__init__.py
    R ckan/model/authz.py
    M ckan/model/domain_object.py
    M ckan/model/group.py
    M ckan/model/modification.py
    M ckan/model/system_info.py
    M ckan/pastertemplates/__init__.py
    M ckan/pastertemplates/template/+dot+travis.yml_tmpl
    M ckan/pastertemplates/template/README.rst_tmpl
    A ckan/pastertemplates/template/setup.cfg_tmpl
    M ckan/pastertemplates/template/setup.py_tmpl
    M ckan/plugins/interfaces.py
    M ckan/plugins/toolkit.py
    M ckan/public/base/css/main.css
    M ckan/public/base/javascript/main.js
    M ckan/public/base/test/index.html
    A ckan/public/base/vendor/moment-with-locales.js
    M ckan/public/base/vendor/resource.config
    R ckan/public/css/boilerplate.css
    R ckan/public/css/bootstrap.min.css
    R ckan/public/css/chosen.css
    R ckan/public/css/forms.css
    R ckan/public/css/handheld.css
    R ckan/public/css/style.css
    R ckan/public/images/bullet_separator.png
    R ckan/public/images/button-shadow.png
    R ckan/public/images/chevron-down.png
    R ckan/public/images/chevron-up.png
    R ckan/public/images/chosen-sprite.png
    R ckan/public/images/ckan_logo_fullname_long.png
    R ckan/public/images/dlbg.png
    R ckan/public/images/dragbars.png
    R ckan/public/images/icons/add.png
    R ckan/public/images/icons/arrow-closed.gif
    R ckan/public/images/icons/arrow-down-16.png
    R ckan/public/images/icons/arrow-down-32.png
    R ckan/public/images/icons/arrow-open.gif
    R ckan/public/images/icons/arrow-right-16-black.png
    R ckan/public/images/icons/arrow-right-16.png
    R ckan/public/images/icons/arrow-right-32.png
    R ckan/public/images/icons/arrow_down.png
    R ckan/public/images/icons/arrow_down_grey.png
    R ckan/public/images/icons/arrow_up.png
    R ckan/public/images/icons/atom_feed.png
    R ckan/public/images/icons/ckan.ico
    R ckan/public/images/icons/comments.png
    R ckan/public/images/icons/delete.png
    R ckan/public/images/icons/door.png
    R ckan/public/images/icons/door_grey.png
    R ckan/public/images/icons/door_open.png
    R ckan/public/images/icons/drive_web.png
    R ckan/public/images/icons/edit-collapse.png
    R ckan/public/images/icons/edit-expand.png
    R ckan/public/images/icons/error.png
    R ckan/public/images/icons/followers.png
    R ckan/public/images/icons/group.png
    R ckan/public/images/icons/group_add.png
    R ckan/public/images/icons/group_edit.png
    R ckan/public/images/icons/key.png
    R ckan/public/images/icons/lock.png
    R ckan/public/images/icons/magnifier.png
    R ckan/public/images/icons/note.png
    R ckan/public/images/icons/openid.png
    R ckan/public/images/icons/package-disabled.png
    R ckan/public/images/icons/package.png
    R ckan/public/images/icons/package_add.png
    R ckan/public/images/icons/package_edit.png
    R ckan/public/images/icons/page_stack.png
    R ckan/public/images/icons/page_white.png
    R ckan/public/images/icons/page_white_add.png
    R ckan/public/images/icons/page_white_code.png
    R ckan/public/images/icons/page_white_compressed.png
    R ckan/public/images/icons/page_white_cup.png
    R ckan/public/images/icons/page_white_database.png
    R ckan/public/images/icons/page_white_error.png
    R ckan/public/images/icons/page_white_excel.png
    R ckan/public/images/icons/page_white_gear.png
    R ckan/public/images/icons/page_white_json.png
    R ckan/public/images/icons/page_white_link.png
    R ckan/public/images/icons/page_white_rdf.png
    R ckan/public/images/icons/page_white_stack.png
    R ckan/public/images/icons/page_white_text.png
    R ckan/public/images/icons/pencil.png
    R ckan/public/images/icons/remove.png
    R ckan/public/images/icons/star.png
    R ckan/public/images/icons/tag_blue.png
    R ckan/public/images/icons/unfilter.png
    R ckan/public/images/icons/user.png
    R ckan/public/images/icons/user_grey.png
    R ckan/public/images/icons/world_go.png
    R ckan/public/images/ldquo.png
    R ckan/public/images/photo-placeholder.png
    R ckan/public/images/stars.png
    R ckan/public/img/collaborate.png
    R ckan/public/img/find.png
    R ckan/public/img/glyphicons-halflings-white.png
    R ckan/public/img/glyphicons-halflings.png
    R ckan/public/img/lod2.png
    R ckan/public/img/logo.png
    R ckan/public/img/logo_64px_wide.png
    R ckan/public/img/share.png
    R ckan/public/scripts/application.js
    R ckan/public/scripts/dataexplorer/icon-sprite.png
    R ckan/public/scripts/dataexplorer/loading.gif
    R ckan/public/scripts/dataexplorer/table-view-template.js
    R ckan/public/scripts/dataexplorer/table-view.css
    R ckan/public/scripts/dataexplorer/table-view.js
    R ckan/public/scripts/dataexplorer/table-view.ui.js
    R ckan/public/scripts/outside.js
    R ckan/public/scripts/templates.js
    R ckan/public/scripts/vendor/backbone/0.5.1/backbone.js
    R ckan/public/scripts/vendor/bootstrap/2.0.3/bootstrap.min.js
    R ckan/public/scripts/vendor/flot/0.7/excanvas.js
    R ckan/public/scripts/vendor/flot/0.7/jquery.flot.js
    R ckan/public/scripts/vendor/html5shiv/html5.js
    R ckan/public/scripts/vendor/jquery.chosen/0.9.7/chosen.js
    R ckan/public/scripts/vendor/jquery.cookie/jquery.cookie.min.js
    R ckan/public/scripts/vendor/jquery.event.drag/2.0/jquery.event.drag.min.js
    R ckan/public/scripts/vendor/jquery.fileupload/20110801/jquery.fileupload-ui.css
    R ckan/public/scripts/vendor/jquery.fileupload/20110801/jquery.fileupload-ui.js
    R ckan/public/scripts/vendor/jquery.fileupload/20110801/jquery.fileupload.js
    R ckan/public/scripts/vendor/jquery.fileupload/20110801/jquery.iframe-transport.js
    R ckan/public/scripts/vendor/jquery.mustache/jquery.mustache.js
    R ckan/public/scripts/vendor/jquery.placeholder/jquery.placeholder.js
    R ckan/public/scripts/vendor/jquery.tmpl/beta1/jquery.tmpl.js
    R ckan/public/scripts/vendor/jquery/1.7.1/jquery.js
    R ckan/public/scripts/vendor/jqueryui/1.8.14/css/images/ui-bg_flat_0_000_40x100.png
    R ckan/public/scripts/vendor/jqueryui/1.8.14/css/images/ui-bg_flat_100_000_40x100.png
    R ckan/public/scripts/vendor/jqueryui/1.8.14/css/images/ui-bg_flat_75_ffffff_40x100.png
    R ckan/public/scripts/vendor/jqueryui/1.8.14/css/images/ui-bg_glass_100_f0f0f0_1x400.png
    R ckan/public/scripts/vendor/jqueryui/1.8.14/css/images/ui-bg_glass_55_fbf9ee_1x400.png
    R ckan/public/scripts/vendor/jqueryui/1.8.14/css/images/ui-bg_glass_65_ffffff_1x400.png
    R ckan/public/scripts/vendor/jqueryui/1.8.14/css/images/ui-bg_glass_75_dadada_1x400.png
    R ckan/public/scripts/vendor/jqueryui/1.8.14/css/images/ui-bg_glass_95_fef1ec_1x400.png
    R ckan/public/scripts/vendor/jqueryui/1.8.14/css/images/ui-bg_highlight-soft_100_f0f0f0_1x100.png
    R ckan/public/scripts/vendor/jqueryui/1.8.14/css/images/ui-icons_000_256x240.png
    R ckan/public/scripts/vendor/jqueryui/1.8.14/css/images/ui-icons_222222_256x240.png
    R ckan/public/scripts/vendor/jqueryui/1.8.14/css/images/ui-icons_2e83ff_256x240.png
    R ckan/public/scripts/vendor/jqueryui/1.8.14/css/images/ui-icons_444444_256x240.png
    R ckan/public/scripts/vendor/jqueryui/1.8.14/css/images/ui-icons_888888_256x240.png
    R ckan/public/scripts/vendor/jqueryui/1.8.14/css/images/ui-icons_b22_256x240.png
    R ckan/public/scripts/vendor/jqueryui/1.8.14/css/images/ui-icons_cd0a0a_256x240.png
    R ckan/public/scripts/vendor/jqueryui/1.8.14/css/jquery-ui.custom.css
    R ckan/public/scripts/vendor/jqueryui/1.8.14/jquery-ui.min.js
    R ckan/public/scripts/vendor/json2.js
    R ckan/public/scripts/vendor/leaflet/0.3.1/images/layers.png
    R ckan/public/scripts/vendor/leaflet/0.3.1/images/marker-shadow.png
    R ckan/public/scripts/vendor/leaflet/0.3.1/images/marker.png
    R ckan/public/scripts/vendor/leaflet/0.3.1/images/popup-close.png
    R ckan/public/scripts/vendor/leaflet/0.3.1/images/zoom-in.png
    R ckan/public/scripts/vendor/leaflet/0.3.1/images/zoom-out.png
    R ckan/public/scripts/vendor/leaflet/0.3.1/leaflet.css
    R ckan/public/scripts/vendor/leaflet/0.3.1/leaflet.ie.css
    R ckan/public/scripts/vendor/leaflet/0.3.1/leaflet.js
    R ckan/public/scripts/vendor/modernizr/1.7/modernizr.min.js
    R ckan/public/scripts/vendor/moment/1.6.2/moment.js
    R ckan/public/scripts/vendor/mustache/0.5.0-dev/mustache.js
    R ckan/public/scripts/vendor/openid-selector/css/openid.css
    R ckan/public/scripts/vendor/openid-selector/images/aol.gif
    R ckan/public/scripts/vendor/openid-selector/images/blogger.ico
    R ckan/public/scripts/vendor/openid-selector/images/claimid.ico
    R ckan/public/scripts/vendor/openid-selector/images/facebook.gif
    R ckan/public/scripts/vendor/openid-selector/images/flickr.ico
    R ckan/public/scripts/vendor/openid-selector/images/google.gif
    R ckan/public/scripts/vendor/openid-selector/images/livejournal.ico
    R ckan/public/scripts/vendor/openid-selector/images/myopenid.ico
    R ckan/public/scripts/vendor/openid-selector/images/openid-inputicon.gif
    R ckan/public/scripts/vendor/openid-selector/images/openid.gif
    R ckan/public/scripts/vendor/openid-selector/images/technorati.ico
    R ckan/public/scripts/vendor/openid-selector/images/verisign.gif
    R ckan/public/scripts/vendor/openid-selector/images/verisign.ico
    R ckan/public/scripts/vendor/openid-selector/images/vidoop.ico
    R ckan/public/scripts/vendor/openid-selector/images/wordpress.ico
    R ckan/public/scripts/vendor/openid-selector/images/yahoo.gif
    R ckan/public/scripts/vendor/openid-selector/js/jquery-1.2.6.min.js
    R ckan/public/scripts/vendor/openid-selector/js/openid-jquery.js
    R ckan/public/scripts/vendor/recline/css/recline.css
    R ckan/public/scripts/vendor/resize/resize.js
    R ckan/public/scripts/vendor/slickgrid/2.0.1/MIT-LICENSE.txt
    R ckan/public/scripts/vendor/slickgrid/2.0.1/README.txt
    R ckan/public/scripts/vendor/slickgrid/2.0.1/images/sort-asc.gif
    R ckan/public/scripts/vendor/slickgrid/2.0.1/images/sort-desc.gif
    R ckan/public/scripts/vendor/slickgrid/2.0.1/jquery-ui-1.8.16.custom.min.js
    R ckan/public/scripts/vendor/slickgrid/2.0.1/jquery.event.drag-2.0.min.js
    R ckan/public/scripts/vendor/slickgrid/2.0.1/slick.grid.css
    R ckan/public/scripts/vendor/slickgrid/2.0.1/slick.grid.min.js
    R ckan/public/scripts/vendor/underscore/1.1.6/underscore.js
    M ckan/templates/admin/config.html
    R ckan/templates/ajax_snippets/related-item.html
    M ckan/templates/group/confirm_delete.html
    M ckan/templates/group/index.html
    M ckan/templates/group/member_new.html
    M ckan/templates/group/members.html
    M ckan/templates/group/read.html
    M ckan/templates/group/snippets/info.html
    M ckan/templates/home/snippets/stats.html
    M ckan/templates/organization/bulk_process.html
    M ckan/templates/organization/confirm_delete.html
    M ckan/templates/organization/index.html
    M ckan/templates/organization/read.html
    M ckan/templates/organization/read_base.html
    M ckan/templates/organization/snippets/organization_form.html
    M ckan/templates/organization/snippets/organization_item.html
    M ckan/templates/package/confirm_delete.html
    M ckan/templates/package/confirm_delete_resource.html
    M ckan/templates/package/read.html
    R ckan/templates/package/read.n3
    R ckan/templates/package/read.rdf
    M ckan/templates/package/read_base.html
    M ckan/templates/package/resource_data.html
    M ckan/templates/package/search.html
    M ckan/templates/package/snippets/additional_info.html
    M ckan/templates/package/snippets/package_basic_fields.html
    M ckan/templates/package/snippets/resource_form.html
    R ckan/templates/related/base_form_page.html
    R ckan/templates/related/confirm_delete.html
    R ckan/templates/related/dashboard.html
    R ckan/templates/related/edit.html
    R ckan/templates/related/edit_form.html
    R ckan/templates/related/new.html
    R ckan/templates/related/snippets/related_form.html
    R ckan/templates/related/snippets/related_item.html
    R ckan/templates/related/snippets/related_list.html
    A ckan/templates/snippets/local_friendly_datetime.html
    M ckan/templates/snippets/organization_item.html
    M ckan/templates/snippets/search_form.html
    M ckan/templates/user/edit_user_form.html
    M ckan/templates/user/new_user_form.html
    M ckan/templates/user/snippets/user_search.html
    M ckan/tests/config/test_environment.py
    A ckan/tests/controllers/test_admin.py
    M ckan/tests/controllers/test_api.py
    M ckan/tests/controllers/test_group.py
    A ckan/tests/controllers/test_home.py
    A ckan/tests/controllers/test_organization.py
    M ckan/tests/controllers/test_package.py
    A ckan/tests/controllers/test_tags.py
    M ckan/tests/controllers/test_user.py
    M ckan/tests/factories.py
    M ckan/tests/helpers.py
    M ckan/tests/legacy/__init__.py
    M ckan/tests/legacy/ckantestplugins.py
    M ckan/tests/legacy/functional/api/model/test_group.py
    R ckan/tests/legacy/functional/api/model/test_group_and_organization_purge.py
    M ckan/tests/legacy/functional/api/model/test_package.py
    M ckan/tests/legacy/functional/api/model/test_tag.py
    M ckan/tests/legacy/functional/api/model/test_vocabulary.py
    M ckan/tests/legacy/functional/api/test_dashboard.py
    M ckan/tests/legacy/functional/api/test_package_search.py
    R ckan/tests/legacy/functional/api/test_revision_search.py
    M ckan/tests/legacy/functional/api/test_util.py
    M ckan/tests/legacy/functional/test_admin.py
    M ckan/tests/legacy/functional/test_group.py
    R ckan/tests/legacy/functional/test_home.py
    M ckan/tests/legacy/functional/test_package.py
    M ckan/tests/legacy/functional/test_pagination.py
    M ckan/tests/legacy/functional/test_related.py
    R ckan/tests/legacy/functional/test_storage.py
    M ckan/tests/legacy/functional/test_user.py
    M ckan/tests/legacy/lib/test_cli.py
    M ckan/tests/legacy/lib/test_dictization.py
    M ckan/tests/legacy/lib/test_dictization_schema.py
    M ckan/tests/legacy/lib/test_helpers.py
    M ckan/tests/legacy/lib/test_solr_package_search.py
    M ckan/tests/legacy/lib/test_solr_package_search_synchronous_update.py
    M ckan/tests/legacy/logic/test_action.py
    M ckan/tests/legacy/logic/test_tag.py
    M ckan/tests/legacy/models/test_group.py
    M ckan/tests/legacy/models/test_user.py
    M ckan/tests/legacy/test_coding_standards.py
    M ckan/tests/legacy/test_plugins.py
    R ckan/tests/legacy/test_wsgi_ckanclient.py
    R ckan/tests/legacy/wsgi_ckanclient.py
    M ckan/tests/lib/dictization/test_model_dictize.py
    A ckan/tests/lib/test_app_globals.py
    M ckan/tests/lib/test_base.py
    M ckan/tests/lib/test_helpers.py
    M ckan/tests/lib/test_munge.py
    M ckan/tests/logic/action/test_create.py
    M ckan/tests/logic/action/test_delete.py
    M ckan/tests/logic/action/test_get.py
    M ckan/tests/logic/action/test_update.py
    M ckan/tests/logic/auth/test_get.py
    M ckan/tests/logic/auth/test_update.py
    A ckan/tests/model/test_system_info.py
    A ckan/tests/plugins/test_toolkit.py
    A ckanext/datapusher/interfaces.py
    M ckanext/datapusher/logic/action.py
    M ckanext/datapusher/plugin.py
    A ckanext/datapusher/tests/test_interfaces.py
    M ckanext/datastore/db.py
    M ckanext/datastore/helpers.py
    M ckanext/datastore/plugin.py
    M ckanext/datastore/tests/test_create.py
    A ckanext/datastore/tests/test_disable.py
    M ckanext/example_iconfigurer/plugin.py
    A ckanext/example_iconfigurer/plugin_v1.py
    A ckanext/example_iconfigurer/plugin_v2.py
    A ckanext/example_iconfigurer/templates/admin/config.html
    A ckanext/example_iconfigurer/tests/test_iconfigurer_update_config.py
    M ckanext/example_idatasetform/tests/test_example_idatasetform.py
    A ckanext/example_itranslation/__init__.py
    A ckanext/example_itranslation/babel_mapping.cfg
    A ckanext/example_itranslation/i18n/ckanext-example_itranslation.pot
    A ckanext/example_itranslation/i18n/en/LC_MESSAGES/ckanext-example_itranslation.mo
    A ckanext/example_itranslation/i18n/en/LC_MESSAGES/ckanext-example_itranslation.po
    A ckanext/example_itranslation/i18n/en/LC_MESSAGES/ckanext-example_translation.po
    A ckanext/example_itranslation/i18n/fr/LC_MESSAGES/ckanext-example_itranslation.mo
    A ckanext/example_itranslation/i18n/fr/LC_MESSAGES/ckanext-example_itranslation.po
    A ckanext/example_itranslation/plugin.py
    A ckanext/example_itranslation/plugin_v1.py
    A ckanext/example_itranslation/setup.cfg
    A ckanext/example_itranslation/templates/home/index.html
    A ckanext/example_itranslation/tests/__init__.py
    A ckanext/example_itranslation/tests/test_plugin.py
    M ckanext/example_theme/v08_custom_helper_function/plugin.py
    M ckanext/example_theme/v18_snippet_api/templates/ajax_snippets/example_theme_popover.html
    M ckanext/multilingual/solr/schema.xml
    M ckanext/multilingual/tests/test_multilingual_plugin.py
    M ckanext/reclineview/plugin.py
    M ckanext/reclineview/theme/public/vendor/recline/recline.js
    M ckanext/reclineview/theme/templates/recline_map_form.html
    M ckanext/resourceproxy/controller.py
    M ckanext/stats/controller.py
    R ckanext/stats/public/ckanext/stats/app.js
    R ckanext/stats/public/ckanext/stats/demo.html
    R ckanext/stats/public/ckanext/stats/style.css
    M ckanext/stats/stats.py
    M ckanext/stats/templates/ckanext/stats/index.html
    R ckanext/stats/templates_legacy/__init__.py
    R ckanext/stats/templates_legacy/ckanext/__init__.py
    R ckanext/stats/templates_legacy/ckanext/stats/__init__.py
    R ckanext/stats/templates_legacy/ckanext/stats/index.html
    R ckanext/stats/templates_legacy/ckanext/stats/leaderboard.html
    M ckanext/stats/tests/test_stats_lib.py
    M contrib/docker/my_init.d/50_configure
    M dev-requirements.txt
    R doc/api.rst
    M doc/api/index.rst
    M doc/api/legacy-api.rst
    M doc/contents.rst
    M doc/contributing/frontend/index.rst
    M doc/contributing/frontend/template-blocks.rst
    M doc/contributing/issues.rst
    M doc/contributing/release-process.rst
    M doc/contributing/reviewing.rst
    M doc/extensions/adding-custom-fields.rst
    M doc/extensions/index.rst
    A doc/extensions/remote-config-update.rst
    A doc/extensions/translating-extensions.rst
    A doc/images/custom_config_fields.png
    M doc/index.rst
    M doc/maintaining/configuration.rst
    M doc/maintaining/datastore.rst
    M doc/maintaining/installing/install-from-package.rst
    M doc/maintaining/installing/install-from-source.rst
    M doc/maintaining/linked-data-and-rdf.rst
    M requirements.in
    M requirements.txt
    M setup.py
    M test-core.ini

  Log Message:
  -----------
  Merge branch 'master' into 1527-custom-emails

Conflicts:
	setup.py


  Commit: 50dc951b858aa4679aedc20cc81a833a8d4c5c8b
      https://github.com/ckan/ckan/commit/50dc951b858aa4679aedc20cc81a833a8d4c5c8b
  Author: amercader <amercadero at gmail.com>
  Date:   2015-12-08 (Tue, 08 Dec 2015)

  Changed paths:
    R .coveragerc
    M .tx/config
    M CHANGELOG.rst
    M README.rst
    M bin/travis-run-tests
    M ckan/__init__.py
    M ckan/config/deployment.ini_tmpl
    M ckan/config/resource_formats.json
    M ckan/config/routing.py
    M ckan/controllers/api.py
    M ckan/controllers/error.py
    M ckan/controllers/group.py
    M ckan/controllers/package.py
    M ckan/i18n/ar/LC_MESSAGES/ckan.mo
    M ckan/i18n/ar/LC_MESSAGES/ckan.po
    M ckan/i18n/bg/LC_MESSAGES/ckan.mo
    M ckan/i18n/bg/LC_MESSAGES/ckan.po
    M ckan/i18n/ca/LC_MESSAGES/ckan.mo
    M ckan/i18n/ca/LC_MESSAGES/ckan.po
    M ckan/i18n/check_po_files.py
    M ckan/i18n/ckan.pot
    M ckan/i18n/cs_CZ/LC_MESSAGES/ckan.mo
    M ckan/i18n/cs_CZ/LC_MESSAGES/ckan.po
    M ckan/i18n/da_DK/LC_MESSAGES/ckan.mo
    M ckan/i18n/da_DK/LC_MESSAGES/ckan.po
    M ckan/i18n/de/LC_MESSAGES/ckan.mo
    M ckan/i18n/de/LC_MESSAGES/ckan.po
    R ckan/i18n/dv/LC_MESSAGES/ckan.mo
    R ckan/i18n/dv/LC_MESSAGES/ckan.po
    M ckan/i18n/el/LC_MESSAGES/ckan.mo
    M ckan/i18n/el/LC_MESSAGES/ckan.po
    M ckan/i18n/en_AU/LC_MESSAGES/ckan.mo
    M ckan/i18n/en_AU/LC_MESSAGES/ckan.po
    R ckan/i18n/en_CA/LC_MESSAGES/ckan.mo
    R ckan/i18n/en_CA/LC_MESSAGES/ckan.po
    M ckan/i18n/en_GB/LC_MESSAGES/ckan.mo
    M ckan/i18n/en_GB/LC_MESSAGES/ckan.po
    M ckan/i18n/es/LC_MESSAGES/ckan.mo
    M ckan/i18n/es/LC_MESSAGES/ckan.po
    R ckan/i18n/es_AR/LC_MESSAGES/ckan.mo
    R ckan/i18n/es_AR/LC_MESSAGES/ckan.po
    R ckan/i18n/es_MX/LC_MESSAGES/ckan.mo
    R ckan/i18n/es_MX/LC_MESSAGES/ckan.po
    R ckan/i18n/eu/LC_MESSAGES/ckan.mo
    R ckan/i18n/eu/LC_MESSAGES/ckan.po
    M ckan/i18n/fa_IR/LC_MESSAGES/ckan.mo
    M ckan/i18n/fa_IR/LC_MESSAGES/ckan.po
    M ckan/i18n/fi/LC_MESSAGES/ckan.mo
    M ckan/i18n/fi/LC_MESSAGES/ckan.po
    M ckan/i18n/fr/LC_MESSAGES/ckan.mo
    M ckan/i18n/fr/LC_MESSAGES/ckan.po
    M ckan/i18n/he/LC_MESSAGES/ckan.mo
    M ckan/i18n/he/LC_MESSAGES/ckan.po
    M ckan/i18n/hr/LC_MESSAGES/ckan.mo
    M ckan/i18n/hr/LC_MESSAGES/ckan.po
    M ckan/i18n/hu/LC_MESSAGES/ckan.mo
    M ckan/i18n/hu/LC_MESSAGES/ckan.po
    M ckan/i18n/id/LC_MESSAGES/ckan.mo
    M ckan/i18n/id/LC_MESSAGES/ckan.po
    M ckan/i18n/is/LC_MESSAGES/ckan.mo
    M ckan/i18n/is/LC_MESSAGES/ckan.po
    M ckan/i18n/it/LC_MESSAGES/ckan.mo
    M ckan/i18n/it/LC_MESSAGES/ckan.po
    M ckan/i18n/ja/LC_MESSAGES/ckan.mo
    M ckan/i18n/ja/LC_MESSAGES/ckan.po
    M ckan/i18n/km/LC_MESSAGES/ckan.mo
    M ckan/i18n/km/LC_MESSAGES/ckan.po
    M ckan/i18n/ko_KR/LC_MESSAGES/ckan.mo
    M ckan/i18n/ko_KR/LC_MESSAGES/ckan.po
    R ckan/i18n/lo/LC_MESSAGES/ckan.mo
    R ckan/i18n/lo/LC_MESSAGES/ckan.po
    M ckan/i18n/lt/LC_MESSAGES/ckan.mo
    M ckan/i18n/lt/LC_MESSAGES/ckan.po
    M ckan/i18n/lv/LC_MESSAGES/ckan.mo
    M ckan/i18n/lv/LC_MESSAGES/ckan.po
    M ckan/i18n/mn_MN/LC_MESSAGES/ckan.mo
    M ckan/i18n/mn_MN/LC_MESSAGES/ckan.po
    R ckan/i18n/my/LC_MESSAGES/ckan.mo
    R ckan/i18n/my/LC_MESSAGES/ckan.po
    R ckan/i18n/my_MM/LC_MESSAGES/ckan.mo
    R ckan/i18n/my_MM/LC_MESSAGES/ckan.po
    M ckan/i18n/ne/LC_MESSAGES/ckan.mo
    M ckan/i18n/ne/LC_MESSAGES/ckan.po
    M ckan/i18n/nl/LC_MESSAGES/ckan.mo
    M ckan/i18n/nl/LC_MESSAGES/ckan.po
    M ckan/i18n/no/LC_MESSAGES/ckan.mo
    M ckan/i18n/no/LC_MESSAGES/ckan.po
    M ckan/i18n/pl/LC_MESSAGES/ckan.mo
    M ckan/i18n/pl/LC_MESSAGES/ckan.po
    M ckan/i18n/pt_BR/LC_MESSAGES/ckan.mo
    M ckan/i18n/pt_BR/LC_MESSAGES/ckan.po
    M ckan/i18n/pt_PT/LC_MESSAGES/ckan.mo
    M ckan/i18n/pt_PT/LC_MESSAGES/ckan.po
    M ckan/i18n/ro/LC_MESSAGES/ckan.mo
    M ckan/i18n/ro/LC_MESSAGES/ckan.po
    M ckan/i18n/ru/LC_MESSAGES/ckan.mo
    M ckan/i18n/ru/LC_MESSAGES/ckan.po
    M ckan/i18n/sk/LC_MESSAGES/ckan.mo
    M ckan/i18n/sk/LC_MESSAGES/ckan.po
    M ckan/i18n/sl/LC_MESSAGES/ckan.mo
    M ckan/i18n/sl/LC_MESSAGES/ckan.po
    M ckan/i18n/sq/LC_MESSAGES/ckan.mo
    M ckan/i18n/sq/LC_MESSAGES/ckan.po
    M ckan/i18n/sr/LC_MESSAGES/ckan.mo
    M ckan/i18n/sr/LC_MESSAGES/ckan.po
    M ckan/i18n/sr_Latn/LC_MESSAGES/ckan.mo
    M ckan/i18n/sr_Latn/LC_MESSAGES/ckan.po
    M ckan/i18n/sv/LC_MESSAGES/ckan.mo
    M ckan/i18n/sv/LC_MESSAGES/ckan.po
    R ckan/i18n/sw/LC_MESSAGES/ckan.mo
    R ckan/i18n/sw/LC_MESSAGES/ckan.po
    M ckan/i18n/th/LC_MESSAGES/ckan.mo
    M ckan/i18n/th/LC_MESSAGES/ckan.po
    M ckan/i18n/tr/LC_MESSAGES/ckan.mo
    M ckan/i18n/tr/LC_MESSAGES/ckan.po
    M ckan/i18n/uk_UA/LC_MESSAGES/ckan.mo
    M ckan/i18n/uk_UA/LC_MESSAGES/ckan.po
    M ckan/i18n/vi/LC_MESSAGES/ckan.mo
    M ckan/i18n/vi/LC_MESSAGES/ckan.po
    R ckan/i18n/vi_VN/LC_MESSAGES/ckan.mo
    R ckan/i18n/vi_VN/LC_MESSAGES/ckan.po
    M ckan/i18n/zh_CN/LC_MESSAGES/ckan.mo
    M ckan/i18n/zh_CN/LC_MESSAGES/ckan.po
    M ckan/i18n/zh_TW/LC_MESSAGES/ckan.mo
    M ckan/i18n/zh_TW/LC_MESSAGES/ckan.po
    R ckan/lib/accept.py
    M ckan/lib/cli.py
    M ckan/lib/dictization/model_dictize.py
    M ckan/lib/dumper.py
    M ckan/lib/email_notifications.py
    M ckan/lib/helpers.py
    M ckan/lib/plugins.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
    A ckan/migration/versions/081_set_datastore_active.py
    A ckan/migration/versions/082_create_index_creator_user_id.py
    M ckan/pastertemplates/template/bin/travis-build.bash_tmpl
    M ckan/plugins/interfaces.py
    M ckan/templates/activity_streams/activity_stream_email_notifications.text
    A ckan/tests/i18n/test_check_po_files.py
    M ckan/tests/legacy/functional/api/test_api.py
    R ckan/tests/legacy/lib/test_accept.py
    M ckan/tests/legacy/logic/test_action.py
    M ckan/tests/legacy/misc/test_format_text.py
    M ckan/tests/legacy/models/test_package.py
    M ckan/tests/legacy/test_coding_standards.py
    M ckan/tests/legacy/test_dumper.py
    M ckan/tests/lib/test_helpers.py
    M ckan/tests/lib/test_munge.py
    M ckan/tests/logic/action/test_create.py
    M ckan/tests/logic/action/test_get.py
    M ckan/tests/logic/action/test_update.py
    M ckan/tests/logic/test_validators.py
    M ckanext/datapusher/tests/test.py
    M ckanext/datastore/logic/action.py
    M ckanext/datastore/plugin.py
    M ckanext/datastore/tests/test_create.py
    M ckanext/example_igroupform/plugin.py
    A ckanext/example_igroupform/templates/example_igroup_form/group_form.html
    M ckanext/example_igroupform/tests/test_controllers.py
    M ckanext/resourceproxy/controller.py
    M ckanext/resourceproxy/tests/test_proxy.py
    M dev-requirements.txt
    M doc/conf.py
    M doc/contributing/frontend/index.rst
    M doc/contributing/release-process.rst
    M doc/maintaining/configuration.rst
    M doc/maintaining/installing/deployment.rst
    M doc/maintaining/installing/index.rst
    M doc/maintaining/installing/install-from-package.rst
    M doc/maintaining/installing/install-from-source.rst
    M doc/maintaining/upgrading/upgrade-package-ckan-1-to-2.rst
    M requirements.in
    M requirements.txt
    M setup.py

  Log Message:
  -----------
  Merge branch 'master' into 1527-custom-emails


  Commit: a65cce9f4e1e8e0ef7f149c189e3ffd4f1d2b53a
      https://github.com/ckan/ckan/commit/a65cce9f4e1e8e0ef7f149c189e3ffd4f1d2b53a
  Author: amercader <amercadero at gmail.com>
  Date:   2015-12-09 (Wed, 09 Dec 2015)

  Changed paths:
    M ckan/tests/legacy/lib/test_resource_search.py

  Log Message:
  -----------
  [#1527] Change resource fields in legacy tests to avoid conflicts


  Commit: 9d97d5348c08f2d4ca68ef1473fab46cfc8ad590
      https://github.com/ckan/ckan/commit/9d97d5348c08f2d4ca68ef1473fab46cfc8ad590
  Author: Ian Ward <ian at excess.org>
  Date:   2016-01-07 (Thu, 07 Jan 2016)

  Changed paths:
    M ckan/lib/helpers.py
    M ckan/lib/mailer.py
    M ckan/logic/action/create.py
    A ckan/templates/emails/invite_user.txt
    A ckan/templates/emails/invite_user_subject.txt
    A ckan/templates/emails/reset_password.txt
    A ckan/templates/emails/reset_password_subject.txt
    R ckan/tests/legacy/lib/test_mailer.py
    M ckan/tests/legacy/lib/test_resource_search.py
    M ckan/tests/legacy/mock_mail_server.py
    M ckan/tests/legacy/test_coding_standards.py
    A ckan/tests/lib/test_mailer.py
    M ckan/tests/logic/action/test_create.py
    A ckanext/example_theme/custom_emails/__init__.py
    A ckanext/example_theme/custom_emails/plugin.py
    A ckanext/example_theme/custom_emails/templates/emails/invite_user.txt
    A ckanext/example_theme/custom_emails/templates/emails/invite_user_subject.txt
    A ckanext/example_theme/custom_emails/templates/emails/reset_password.txt
    A ckanext/example_theme/custom_emails/templates/emails/reset_password_subject.txt
    A ckanext/example_theme/custom_emails/tests.py
    M setup.py

  Log Message:
  -----------
  Merge pull request #2465 from ckan/1527-custom-emails

[#1527] Allow to customize emails sent from CKAN


Compare: https://github.com/ckan/ckan/compare/9b5cb5cb1afa...9d97d5348c08


More information about the ckan-changes mailing list