{"action":"created","comment":{"url":"https://api.github.com/repos/OCA/server-tools/pulls/comments/172816432","pull_request_review_id":101896270,"id":172816432,"diff_hunk":"@@ -0,0 +1,30 @@\n+# -*- coding: utf-8 -*-\n+# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl).\n+\n+{\n+    'name': 'Module Checksum Upgrade',\n+    'summary': 'Base mechanism to detect changes to '\n+               'installed Odoo modules and upgrade them '\n+               'automatically',\n+    'version': '9.0.1.0.0',\n+    'category': 'Extra Tools',\n+    'website': 'https://odoo-community.org/',","path":"module_checksum_upgrade/__openerp__.py","position":11,"original_position":11,"commit_id":"998f34196a57c7edeec22c06ac540b8b86766214","original_commit_id":"998f34196a57c7edeec22c06ac540b8b86766214","user":{"login":"Yajo","id":973709,"avatar_url":"https://avatars0.githubusercontent.com/u/973709?v=4","gravatar_id":"","url":"https://api.github.com/users/Yajo","html_url":"https://github.com/Yajo","followers_url":"https://api.github.com/users/Yajo/followers","following_url":"https://api.github.com/users/Yajo/following{/other_user}","gists_url":"https://api.github.com/users/Yajo/gists{/gist_id}","starred_url":"https://api.github.com/users/Yajo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Yajo/subscriptions","organizations_url":"https://api.github.com/users/Yajo/orgs","repos_url":"https://api.github.com/users/Yajo/repos","events_url":"https://api.github.com/users/Yajo/events{/privacy}","received_events_url":"https://api.github.com/users/Yajo/received_events","type":"User","site_admin":false},"body":"server-tools","created_at":"2018-03-07T11:41:13Z","updated_at":"2018-03-07T12:03:45Z","html_url":"https://github.com/OCA/server-tools/pull/1176#discussion_r172816432","pull_request_url":"https://api.github.com/repos/OCA/server-tools/pulls/1176","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/OCA/server-tools/pulls/comments/172816432"},"html":{"href":"https://github.com/OCA/server-tools/pull/1176#discussion_r172816432"},"pull_request":{"href":"https://api.github.com/repos/OCA/server-tools/pulls/1176"}}},"pull_request":{"url":"https://api.github.com/repos/OCA/server-tools/pulls/1176","id":172208481,"html_url":"https://github.com/OCA/server-tools/pull/1176","diff_url":"https://github.com/OCA/server-tools/pull/1176.diff","patch_url":"https://github.com/OCA/server-tools/pull/1176.patch","issue_url":"https://api.github.com/repos/OCA/server-tools/issues/1176","number":1176,"state":"open","locked":false,"title":"[9.0] module_checksum_upgrade","user":{"login":"sbidoul","id":692075,"avatar_url":"https://avatars2.githubusercontent.com/u/692075?v=4","gravatar_id":"","url":"https://api.github.com/users/sbidoul","html_url":"https://github.com/sbidoul","followers_url":"https://api.github.com/users/sbidoul/followers","following_url":"https://api.github.com/users/sbidoul/following{/other_user}","gists_url":"https://api.github.com/users/sbidoul/gists{/gist_id}","starred_url":"https://api.github.com/users/sbidoul/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sbidoul/subscriptions","organizations_url":"https://api.github.com/users/sbidoul/orgs","repos_url":"https://api.github.com/users/sbidoul/repos","events_url":"https://api.github.com/users/sbidoul/events{/privacy}","received_events_url":"https://api.github.com/users/sbidoul/received_events","type":"User","site_admin":false},"body":"Following the very interesting conversation in #1151 I've had a deeper look into module_auto_update. The idea is indeed brilliant. However I came to the conclusion that `module_auto_update` is not adequate for our needs for the following reasons:\r\n\r\n* it does too many things automatically and is intrusive in the regular Odoo upgrade process\r\n* in v9, it goes into autocommit mode during the upgrade process\r\n* once installed, it cannot be uninstalled (tested in v9), due to a deadlock when removing the stored field on ir.module.module\r\n\r\nIn general by looking at the history of `module_auto_update`, we can see that it started with a simple and elegant idea, but the resulting implementation taking into account of the edge cases has become very complex and difficult to understand and looks fragile. I believe this comes from the fact that it tries to immediately update the installed hash whatever the mean of installing a module or running the upgrade. \r\n\r\nSo I came up with this new module `module_checksum_upgrade` that provides the basic scriptable building blocks (ie computing hashes, and saving them, and upgrading the changed modules only). \r\n\r\nThe approach is a little bit different from module_auto_update as it saves the checksums in a ir.config_parameter instead as a field on the module (this is necessary for the uninstall to work, at least in 9). \r\n\r\nWe intend to port this module from 8 to 11.\r\n\r\nIf there is interest, it is easy to adapt module_auto_update to depend on this new module, therefore fixing the uninstall issue in module_auto_update, and avoiding code duplication. I've a [commit](https://github.com/acsone/server-tools/commit/63b5fc961475a63eeb8033f6dd720cec081f05de) ready that does just that.","created_at":"2018-03-01T11:16:52Z","updated_at":"2018-03-07T12:03:46Z","closed_at":null,"merged_at":null,"merge_commit_sha":"878604d5e615a6879c1a72a3c0b1b9bad54ecfa0","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/OCA/server-tools/pulls/1176/commits","review_comments_url":"https://api.github.com/repos/OCA/server-tools/pulls/1176/comments","review_comment_url":"https://api.github.com/repos/OCA/server-tools/pulls/comments{/number}","comments_url":"https://api.github.com/repos/OCA/server-tools/issues/1176/comments","statuses_url":"https://api.github.com/repos/OCA/server-tools/statuses/998f34196a57c7edeec22c06ac540b8b86766214","head":{"label":"acsone:9.0-module_auto_update_base-sbi","ref":"9.0-module_auto_update_base-sbi","sha":"998f34196a57c7edeec22c06ac540b8b86766214","user":{"login":"acsone","id":7601056,"avatar_url":"https://avatars2.githubusercontent.com/u/7601056?v=4","gravatar_id":"","url":"https://api.github.com/users/acsone","html_url":"https://github.com/acsone","followers_url":"https://api.github.com/users/acsone/followers","following_url":"https://api.github.com/users/acsone/following{/other_user}","gists_url":"https://api.github.com/users/acsone/gists{/gist_id}","starred_url":"https://api.github.com/users/acsone/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/acsone/subscriptions","organizations_url":"https://api.github.com/users/acsone/orgs","repos_url":"https://api.github.com/users/acsone/repos","events_url":"https://api.github.com/users/acsone/events{/privacy}","received_events_url":"https://api.github.com/users/acsone/received_events","type":"Organization","site_admin":false},"repo":{"id":21769382,"name":"server-tools","full_name":"acsone/server-tools","owner":{"login":"acsone","id":7601056,"avatar_url":"https://avatars2.githubusercontent.com/u/7601056?v=4","gravatar_id":"","url":"https://api.github.com/users/acsone","html_url":"https://github.com/acsone","followers_url":"https://api.github.com/users/acsone/followers","following_url":"https://api.github.com/users/acsone/following{/other_user}","gists_url":"https://api.github.com/users/acsone/gists{/gist_id}","starred_url":"https://api.github.com/users/acsone/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/acsone/subscriptions","organizations_url":"https://api.github.com/users/acsone/orgs","repos_url":"https://api.github.com/users/acsone/repos","events_url":"https://api.github.com/users/acsone/events{/privacy}","received_events_url":"https://api.github.com/users/acsone/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/acsone/server-tools","description":null,"fork":true,"url":"https://api.github.com/repos/acsone/server-tools","forks_url":"https://api.github.com/repos/acsone/server-tools/forks","keys_url":"https://api.github.com/repos/acsone/server-tools/keys{/key_id}","collaborators_url":"https://api.github.com/repos/acsone/server-tools/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/acsone/server-tools/teams","hooks_url":"https://api.github.com/repos/acsone/server-tools/hooks","issue_events_url":"https://api.github.com/repos/acsone/server-tools/issues/events{/number}","events_url":"https://api.github.com/repos/acsone/server-tools/events","assignees_url":"https://api.github.com/repos/acsone/server-tools/assignees{/user}","branches_url":"https://api.github.com/repos/acsone/server-tools/branches{/branch}","tags_url":"https://api.github.com/repos/acsone/server-tools/tags","blobs_url":"https://api.github.com/repos/acsone/server-tools/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/acsone/server-tools/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/acsone/server-tools/git/refs{/sha}","trees_url":"https://api.github.com/repos/acsone/server-tools/git/trees{/sha}","statuses_url":"https://api.github.com/repos/acsone/server-tools/statuses/{sha}","languages_url":"https://api.github.com/repos/acsone/server-tools/languages","stargazers_url":"https://api.github.com/repos/acsone/server-tools/stargazers","contributors_url":"https://api.github.com/repos/acsone/server-tools/contributors","subscribers_url":"https://api.github.com/repos/acsone/server-tools/subscribers","subscription_url":"https://api.github.com/repos/acsone/server-tools/subscription","commits_url":"https://api.github.com/repos/acsone/server-tools/commits{/sha}","git_commits_url":"https://api.github.com/repos/acsone/server-tools/git/commits{/sha}","comments_url":"https://api.github.com/repos/acsone/server-tools/comments{/number}","issue_comment_url":"https://api.github.com/repos/acsone/server-tools/issues/comments{/number}","contents_url":"https://api.github.com/repos/acsone/server-tools/contents/{+path}","compare_url":"https://api.github.com/repos/acsone/server-tools/compare/{base}...{head}","merges_url":"https://api.github.com/repos/acsone/server-tools/merges","archive_url":"https://api.github.com/repos/acsone/server-tools/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/acsone/server-tools/downloads","issues_url":"https://api.github.com/repos/acsone/server-tools/issues{/number}","pulls_url":"https://api.github.com/repos/acsone/server-tools/pulls{/number}","milestones_url":"https://api.github.com/repos/acsone/server-tools/milestones{/number}","notifications_url":"https://api.github.com/repos/acsone/server-tools/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/acsone/server-tools/labels{/name}","releases_url":"https://api.github.com/repos/acsone/server-tools/releases{/id}","deployments_url":"https://api.github.com/repos/acsone/server-tools/deployments","created_at":"2014-07-12T14:52:28Z","updated_at":"2016-01-21T00:03:54Z","pushed_at":"2018-03-05T00:01:59Z","git_url":"git://github.com/acsone/server-tools.git","ssh_url":"git@github.com:acsone/server-tools.git","clone_url":"https://github.com/acsone/server-tools.git","svn_url":"https://github.com/acsone/server-tools","homepage":null,"size":17967,"stargazers_count":0,"watchers_count":0,"language":"Python","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1,"mirror_url":null,"archived":false,"open_issues_count":1,"license":{"key":"agpl-3.0","name":"GNU Affero General Public License v3.0","spdx_id":"AGPL-3.0","url":"https://api.github.com/licenses/agpl-3.0"},"forks":1,"open_issues":1,"watchers":0,"default_branch":"8.0"}},"base":{"label":"OCA:9.0","ref":"9.0","sha":"554ac958dbe6286042e42eeb76c56138247e1529","user":{"login":"OCA","id":7600578,"avatar_url":"https://avatars1.githubusercontent.com/u/7600578?v=4","gravatar_id":"","url":"https://api.github.com/users/OCA","html_url":"https://github.com/OCA","followers_url":"https://api.github.com/users/OCA/followers","following_url":"https://api.github.com/users/OCA/following{/other_user}","gists_url":"https://api.github.com/users/OCA/gists{/gist_id}","starred_url":"https://api.github.com/users/OCA/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/OCA/subscriptions","organizations_url":"https://api.github.com/users/OCA/orgs","repos_url":"https://api.github.com/users/OCA/repos","events_url":"https://api.github.com/users/OCA/events{/privacy}","received_events_url":"https://api.github.com/users/OCA/received_events","type":"Organization","site_admin":false},"repo":{"id":20896532,"name":"server-tools","full_name":"OCA/server-tools","owner":{"login":"OCA","id":7600578,"avatar_url":"https://avatars1.githubusercontent.com/u/7600578?v=4","gravatar_id":"","url":"https://api.github.com/users/OCA","html_url":"https://github.com/OCA","followers_url":"https://api.github.com/users/OCA/followers","following_url":"https://api.github.com/users/OCA/following{/other_user}","gists_url":"https://api.github.com/users/OCA/gists{/gist_id}","starred_url":"https://api.github.com/users/OCA/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/OCA/subscriptions","organizations_url":"https://api.github.com/users/OCA/orgs","repos_url":"https://api.github.com/users/OCA/repos","events_url":"https://api.github.com/users/OCA/events{/privacy}","received_events_url":"https://api.github.com/users/OCA/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/OCA/server-tools","description":"Tools for Odoo Administrators to improve some technical features on Odoo.","fork":false,"url":"https://api.github.com/repos/OCA/server-tools","forks_url":"https://api.github.com/repos/OCA/server-tools/forks","keys_url":"https://api.github.com/repos/OCA/server-tools/keys{/key_id}","collaborators_url":"https://api.github.com/repos/OCA/server-tools/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/OCA/server-tools/teams","hooks_url":"https://api.github.com/repos/OCA/server-tools/hooks","issue_events_url":"https://api.github.com/repos/OCA/server-tools/issues/events{/number}","events_url":"https://api.github.com/repos/OCA/server-tools/events","assignees_url":"https://api.github.com/repos/OCA/server-tools/assignees{/user}","branches_url":"https://api.github.com/repos/OCA/server-tools/branches{/branch}","tags_url":"https://api.github.com/repos/OCA/server-tools/tags","blobs_url":"https://api.github.com/repos/OCA/server-tools/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/OCA/server-tools/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/OCA/server-tools/git/refs{/sha}","trees_url":"https://api.github.com/repos/OCA/server-tools/git/trees{/sha}","statuses_url":"https://api.github.com/repos/OCA/server-tools/statuses/{sha}","languages_url":"https://api.github.com/repos/OCA/server-tools/languages","stargazers_url":"https://api.github.com/repos/OCA/server-tools/stargazers","contributors_url":"https://api.github.com/repos/OCA/server-tools/contributors","subscribers_url":"https://api.github.com/repos/OCA/server-tools/subscribers","subscription_url":"https://api.github.com/repos/OCA/server-tools/subscription","commits_url":"https://api.github.com/repos/OCA/server-tools/commits{/sha}","git_commits_url":"https://api.github.com/repos/OCA/server-tools/git/commits{/sha}","comments_url":"https://api.github.com/repos/OCA/server-tools/comments{/number}","issue_comment_url":"https://api.github.com/repos/OCA/server-tools/issues/comments{/number}","contents_url":"https://api.github.com/repos/OCA/server-tools/contents/{+path}","compare_url":"https://api.github.com/repos/OCA/server-tools/compare/{base}...{head}","merges_url":"https://api.github.com/repos/OCA/server-tools/merges","archive_url":"https://api.github.com/repos/OCA/server-tools/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/OCA/server-tools/downloads","issues_url":"https://api.github.com/repos/OCA/server-tools/issues{/number}","pulls_url":"https://api.github.com/repos/OCA/server-tools/pulls{/number}","milestones_url":"https://api.github.com/repos/OCA/server-tools/milestones{/number}","notifications_url":"https://api.github.com/repos/OCA/server-tools/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/OCA/server-tools/labels{/name}","releases_url":"https://api.github.com/repos/OCA/server-tools/releases{/id}","deployments_url":"https://api.github.com/repos/OCA/server-tools/deployments","created_at":"2014-06-16T18:52:44Z","updated_at":"2018-02-20T05:46:58Z","pushed_at":"2018-03-07T10:51:37Z","git_url":"git://github.com/OCA/server-tools.git","ssh_url":"git@github.com:OCA/server-tools.git","clone_url":"https://github.com/OCA/server-tools.git","svn_url":"https://github.com/OCA/server-tools","homepage":"https://odoo-community.org/project/tools-maintainers-30","size":17659,"stargazers_count":221,"watchers_count":221,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":649,"mirror_url":null,"archived":false,"open_issues_count":222,"license":{"key":"agpl-3.0","name":"GNU Affero General Public License v3.0","spdx_id":"AGPL-3.0","url":"https://api.github.com/licenses/agpl-3.0"},"forks":649,"open_issues":222,"watchers":221,"default_branch":"11.0"}},"_links":{"self":{"href":"https://api.github.com/repos/OCA/server-tools/pulls/1176"},"html":{"href":"https://github.com/OCA/server-tools/pull/1176"},"issue":{"href":"https://api.github.com/repos/OCA/server-tools/issues/1176"},"comments":{"href":"https://api.github.com/repos/OCA/server-tools/issues/1176/comments"},"review_comments":{"href":"https://api.github.com/repos/OCA/server-tools/pulls/1176/comments"},"review_comment":{"href":"https://api.github.com/repos/OCA/server-tools/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/OCA/server-tools/pulls/1176/commits"},"statuses":{"href":"https://api.github.com/repos/OCA/server-tools/statuses/998f34196a57c7edeec22c06ac540b8b86766214"}},"author_association":"OWNER"}}
{"actor":{"display_login":"Yajo"}}