{"action":"closed","number":193,"pull_request":{"url":"https://api.github.com/repos/OCA/social/pulls/193","id":140094419,"node_id":"MDExOlB1bGxSZXF1ZXN0MTQwMDk0NDE5","html_url":"https://github.com/OCA/social/pull/193","diff_url":"https://github.com/OCA/social/pull/193.diff","patch_url":"https://github.com/OCA/social/pull/193.patch","issue_url":"https://api.github.com/repos/OCA/social/issues/193","number":193,"state":"closed","locked":false,"title":"[ADD] mail_anti_spam: Anti-SPAM filtering","user":{"login":"lasley","id":7397578,"node_id":"MDQ6VXNlcjczOTc1Nzg=","avatar_url":"https://avatars3.githubusercontent.com/u/7397578?v=4","gravatar_id":"","url":"https://api.github.com/users/lasley","html_url":"https://github.com/lasley","followers_url":"https://api.github.com/users/lasley/followers","following_url":"https://api.github.com/users/lasley/following{/other_user}","gists_url":"https://api.github.com/users/lasley/gists{/gist_id}","starred_url":"https://api.github.com/users/lasley/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lasley/subscriptions","organizations_url":"https://api.github.com/users/lasley/orgs","repos_url":"https://api.github.com/users/lasley/repos","events_url":"https://api.github.com/users/lasley/events{/privacy}","received_events_url":"https://api.github.com/users/lasley/received_events","type":"User","site_admin":false},"body":"This is a WIP of the anti-spam module described in #121.\r\n\r\nSPAM filtering is implemented using Bayesian classification, powered by [LasLabs/python-reverend](https://github.com/LasLabs/python-reverend).\r\n\r\nBayesian logic is one of the standard ways that emails are classified in spam filters, such as SpamAssassin (described more in https://github.com/OCA/social/pull/193#issuecomment-329803134).\r\n\r\nThe current big question is how this is going to perform in regards to false positives, and with other languages - as somewhat described in https://github.com/OCA/social/pull/193#issuecomment-329543021.\r\n\r\nThere are a few other combiners (algorithms) that I can use here too, so the other question is exactly how well each performs. I'm working up some test cases on all that, hopefully with automatable benchmarks that can be obtained through our CI.","created_at":"2017-09-08T18:05:48Z","updated_at":"2018-08-28T11:38:52Z","closed_at":"2018-08-28T11:38:52Z","merged_at":null,"merge_commit_sha":"60fda359076e56ce0ed80af16cca81d5274879bb","assignee":null,"assignees":[],"requested_reviewers":[{"login":"rafaelbn","id":8736623,"node_id":"MDQ6VXNlcjg3MzY2MjM=","avatar_url":"https://avatars0.githubusercontent.com/u/8736623?v=4","gravatar_id":"","url":"https://api.github.com/users/rafaelbn","html_url":"https://github.com/rafaelbn","followers_url":"https://api.github.com/users/rafaelbn/followers","following_url":"https://api.github.com/users/rafaelbn/following{/other_user}","gists_url":"https://api.github.com/users/rafaelbn/gists{/gist_id}","starred_url":"https://api.github.com/users/rafaelbn/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rafaelbn/subscriptions","organizations_url":"https://api.github.com/users/rafaelbn/orgs","repos_url":"https://api.github.com/users/rafaelbn/repos","events_url":"https://api.github.com/users/rafaelbn/events{/privacy}","received_events_url":"https://api.github.com/users/rafaelbn/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[{"id":254402025,"node_id":"MDU6TGFiZWwyNTQ0MDIwMjU=","url":"https://api.github.com/repos/OCA/social/labels/work%20in%20progress","name":"work in progress","color":"0052cc","default":false}],"milestone":{"url":"https://api.github.com/repos/OCA/social/milestones/3","html_url":"https://github.com/OCA/social/milestone/3","labels_url":"https://api.github.com/repos/OCA/social/milestones/3/labels","id":2052386,"node_id":"MDk6TWlsZXN0b25lMjA1MjM4Ng==","number":3,"title":"10.0","description":null,"creator":{"login":"pedrobaeza","id":7165771,"node_id":"MDQ6VXNlcjcxNjU3NzE=","avatar_url":"https://avatars2.githubusercontent.com/u/7165771?v=4","gravatar_id":"","url":"https://api.github.com/users/pedrobaeza","html_url":"https://github.com/pedrobaeza","followers_url":"https://api.github.com/users/pedrobaeza/followers","following_url":"https://api.github.com/users/pedrobaeza/following{/other_user}","gists_url":"https://api.github.com/users/pedrobaeza/gists{/gist_id}","starred_url":"https://api.github.com/users/pedrobaeza/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pedrobaeza/subscriptions","organizations_url":"https://api.github.com/users/pedrobaeza/orgs","repos_url":"https://api.github.com/users/pedrobaeza/repos","events_url":"https://api.github.com/users/pedrobaeza/events{/privacy}","received_events_url":"https://api.github.com/users/pedrobaeza/received_events","type":"User","site_admin":false},"open_issues":14,"closed_issues":54,"state":"open","created_at":"2016-10-06T14:08:45Z","updated_at":"2018-08-28T11:38:52Z","due_on":null,"closed_at":null},"commits_url":"https://api.github.com/repos/OCA/social/pulls/193/commits","review_comments_url":"https://api.github.com/repos/OCA/social/pulls/193/comments","review_comment_url":"https://api.github.com/repos/OCA/social/pulls/comments{/number}","comments_url":"https://api.github.com/repos/OCA/social/issues/193/comments","statuses_url":"https://api.github.com/repos/OCA/social/statuses/754fa9ce87c75f9dda8b73d46f16abee5d6c4a16","head":{"label":"LasLabs:release/10.0/mail_spam","ref":"release/10.0/mail_spam","sha":"754fa9ce87c75f9dda8b73d46f16abee5d6c4a16","user":{"login":"LasLabs","id":13024740,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzMDI0NzQw","avatar_url":"https://avatars2.githubusercontent.com/u/13024740?v=4","gravatar_id":"","url":"https://api.github.com/users/LasLabs","html_url":"https://github.com/LasLabs","followers_url":"https://api.github.com/users/LasLabs/followers","following_url":"https://api.github.com/users/LasLabs/following{/other_user}","gists_url":"https://api.github.com/users/LasLabs/gists{/gist_id}","starred_url":"https://api.github.com/users/LasLabs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/LasLabs/subscriptions","organizations_url":"https://api.github.com/users/LasLabs/orgs","repos_url":"https://api.github.com/users/LasLabs/repos","events_url":"https://api.github.com/users/LasLabs/events{/privacy}","received_events_url":"https://api.github.com/users/LasLabs/received_events","type":"Organization","site_admin":false},"repo":{"id":57453295,"node_id":"MDEwOlJlcG9zaXRvcnk1NzQ1MzI5NQ==","name":"social","full_name":"LasLabs/social","owner":{"login":"LasLabs","id":13024740,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzMDI0NzQw","avatar_url":"https://avatars2.githubusercontent.com/u/13024740?v=4","gravatar_id":"","url":"https://api.github.com/users/LasLabs","html_url":"https://github.com/LasLabs","followers_url":"https://api.github.com/users/LasLabs/followers","following_url":"https://api.github.com/users/LasLabs/following{/other_user}","gists_url":"https://api.github.com/users/LasLabs/gists{/gist_id}","starred_url":"https://api.github.com/users/LasLabs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/LasLabs/subscriptions","organizations_url":"https://api.github.com/users/LasLabs/orgs","repos_url":"https://api.github.com/users/LasLabs/repos","events_url":"https://api.github.com/users/LasLabs/events{/privacy}","received_events_url":"https://api.github.com/users/LasLabs/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/LasLabs/social","description":"Addons concerning odoo's social ERP features and messaging in general","fork":true,"url":"https://api.github.com/repos/LasLabs/social","forks_url":"https://api.github.com/repos/LasLabs/social/forks","keys_url":"https://api.github.com/repos/LasLabs/social/keys{/key_id}","collaborators_url":"https://api.github.com/repos/LasLabs/social/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/LasLabs/social/teams","hooks_url":"https://api.github.com/repos/LasLabs/social/hooks","issue_events_url":"https://api.github.com/repos/LasLabs/social/issues/events{/number}","events_url":"https://api.github.com/repos/LasLabs/social/events","assignees_url":"https://api.github.com/repos/LasLabs/social/assignees{/user}","branches_url":"https://api.github.com/repos/LasLabs/social/branches{/branch}","tags_url":"https://api.github.com/repos/LasLabs/social/tags","blobs_url":"https://api.github.com/repos/LasLabs/social/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/LasLabs/social/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/LasLabs/social/git/refs{/sha}","trees_url":"https://api.github.com/repos/LasLabs/social/git/trees{/sha}","statuses_url":"https://api.github.com/repos/LasLabs/social/statuses/{sha}","languages_url":"https://api.github.com/repos/LasLabs/social/languages","stargazers_url":"https://api.github.com/repos/LasLabs/social/stargazers","contributors_url":"https://api.github.com/repos/LasLabs/social/contributors","subscribers_url":"https://api.github.com/repos/LasLabs/social/subscribers","subscription_url":"https://api.github.com/repos/LasLabs/social/subscription","commits_url":"https://api.github.com/repos/LasLabs/social/commits{/sha}","git_commits_url":"https://api.github.com/repos/LasLabs/social/git/commits{/sha}","comments_url":"https://api.github.com/repos/LasLabs/social/comments{/number}","issue_comment_url":"https://api.github.com/repos/LasLabs/social/issues/comments{/number}","contents_url":"https://api.github.com/repos/LasLabs/social/contents/{+path}","compare_url":"https://api.github.com/repos/LasLabs/social/compare/{base}...{head}","merges_url":"https://api.github.com/repos/LasLabs/social/merges","archive_url":"https://api.github.com/repos/LasLabs/social/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/LasLabs/social/downloads","issues_url":"https://api.github.com/repos/LasLabs/social/issues{/number}","pulls_url":"https://api.github.com/repos/LasLabs/social/pulls{/number}","milestones_url":"https://api.github.com/repos/LasLabs/social/milestones{/number}","notifications_url":"https://api.github.com/repos/LasLabs/social/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/LasLabs/social/labels{/name}","releases_url":"https://api.github.com/repos/LasLabs/social/releases{/id}","deployments_url":"https://api.github.com/repos/LasLabs/social/deployments","created_at":"2016-04-30T17:12:12Z","updated_at":"2016-04-30T17:12:12Z","pushed_at":"2017-12-12T21:09:58Z","git_url":"git://github.com/LasLabs/social.git","ssh_url":"git@github.com:LasLabs/social.git","clone_url":"https://github.com/LasLabs/social.git","svn_url":"https://github.com/LasLabs/social","homepage":"https://odoo-community.org/project/99","size":1896,"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":0,"mirror_url":null,"archived":false,"open_issues_count":0,"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","node_id":"MDc6TGljZW5zZTE="},"forks":0,"open_issues":0,"watchers":0,"default_branch":"9.0"}},"base":{"label":"OCA:10.0","ref":"10.0","sha":"97795a5d285375ae8fbd2c3b8b20289af761fea2","user":{"login":"OCA","id":7600578,"node_id":"MDEyOk9yZ2FuaXphdGlvbjc2MDA1Nzg=","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":39009740,"node_id":"MDEwOlJlcG9zaXRvcnkzOTAwOTc0MA==","name":"social","full_name":"OCA/social","owner":{"login":"OCA","id":7600578,"node_id":"MDEyOk9yZ2FuaXphdGlvbjc2MDA1Nzg=","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/social","description":"Addons concerning odoo's social ERP features and messaging in general","fork":false,"url":"https://api.github.com/repos/OCA/social","forks_url":"https://api.github.com/repos/OCA/social/forks","keys_url":"https://api.github.com/repos/OCA/social/keys{/key_id}","collaborators_url":"https://api.github.com/repos/OCA/social/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/OCA/social/teams","hooks_url":"https://api.github.com/repos/OCA/social/hooks","issue_events_url":"https://api.github.com/repos/OCA/social/issues/events{/number}","events_url":"https://api.github.com/repos/OCA/social/events","assignees_url":"https://api.github.com/repos/OCA/social/assignees{/user}","branches_url":"https://api.github.com/repos/OCA/social/branches{/branch}","tags_url":"https://api.github.com/repos/OCA/social/tags","blobs_url":"https://api.github.com/repos/OCA/social/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/OCA/social/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/OCA/social/git/refs{/sha}","trees_url":"https://api.github.com/repos/OCA/social/git/trees{/sha}","statuses_url":"https://api.github.com/repos/OCA/social/statuses/{sha}","languages_url":"https://api.github.com/repos/OCA/social/languages","stargazers_url":"https://api.github.com/repos/OCA/social/stargazers","contributors_url":"https://api.github.com/repos/OCA/social/contributors","subscribers_url":"https://api.github.com/repos/OCA/social/subscribers","subscription_url":"https://api.github.com/repos/OCA/social/subscription","commits_url":"https://api.github.com/repos/OCA/social/commits{/sha}","git_commits_url":"https://api.github.com/repos/OCA/social/git/commits{/sha}","comments_url":"https://api.github.com/repos/OCA/social/comments{/number}","issue_comment_url":"https://api.github.com/repos/OCA/social/issues/comments{/number}","contents_url":"https://api.github.com/repos/OCA/social/contents/{+path}","compare_url":"https://api.github.com/repos/OCA/social/compare/{base}...{head}","merges_url":"https://api.github.com/repos/OCA/social/merges","archive_url":"https://api.github.com/repos/OCA/social/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/OCA/social/downloads","issues_url":"https://api.github.com/repos/OCA/social/issues{/number}","pulls_url":"https://api.github.com/repos/OCA/social/pulls{/number}","milestones_url":"https://api.github.com/repos/OCA/social/milestones{/number}","notifications_url":"https://api.github.com/repos/OCA/social/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/OCA/social/labels{/name}","releases_url":"https://api.github.com/repos/OCA/social/releases{/id}","deployments_url":"https://api.github.com/repos/OCA/social/deployments","created_at":"2015-07-13T12:06:47Z","updated_at":"2018-08-27T04:52:17Z","pushed_at":"2018-08-24T03:29:59Z","git_url":"git://github.com/OCA/social.git","ssh_url":"git@github.com:OCA/social.git","clone_url":"https://github.com/OCA/social.git","svn_url":"https://github.com/OCA/social","homepage":"https://odoo-community.org/project/99","size":4597,"stargazers_count":21,"watchers_count":21,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":157,"mirror_url":null,"archived":false,"open_issues_count":37,"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","node_id":"MDc6TGljZW5zZTE="},"forks":157,"open_issues":37,"watchers":21,"default_branch":"11.0"}},"_links":{"self":{"href":"https://api.github.com/repos/OCA/social/pulls/193"},"html":{"href":"https://github.com/OCA/social/pull/193"},"issue":{"href":"https://api.github.com/repos/OCA/social/issues/193"},"comments":{"href":"https://api.github.com/repos/OCA/social/issues/193/comments"},"review_comments":{"href":"https://api.github.com/repos/OCA/social/pulls/193/comments"},"review_comment":{"href":"https://api.github.com/repos/OCA/social/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/OCA/social/pulls/193/commits"},"statuses":{"href":"https://api.github.com/repos/OCA/social/statuses/754fa9ce87c75f9dda8b73d46f16abee5d6c4a16"}},"author_association":"MEMBER","merged":false,"mergeable":false,"rebaseable":false,"mergeable_state":"dirty","merged_by":null,"comments":9,"review_comments":7,"maintainer_can_modify":false,"commits":19,"additions":1008,"deletions":0,"changed_files":23}}
{"actor":{"display_login":"hbrunn"}}