{"action":"created","comment":{"url":"https://api.github.com/repos/odoo/odoo/pulls/comments/47327184","id":47327184,"diff_hunk":"@@ -0,0 +1,130 @@\n+# -*- coding: utf-8 -*-\n+# Part of Odoo. See LICENSE file for full copyright and licensing details.\n+from odoo.tests import common\n+\n+class TestMassMailing(common.TransactionCase):\n+\n+    def setUp(self):\n+        super(TestMassMailing, self).setUp()\n+        self.MassMailing = self.env['mail.mass_mailing']\n+        self.MassMailingList = self.env['mail.mass_mailing.list']\n+        self.MassMailingContact = self.env['mail.mass_mailing.contact']\n+        self.ResPartner = self.env['res.partner']\n+        self.TestMailingWizard = self.env['mail.mass_mailing.test']\n+        self.MailStats = self.env['mail.mail.statistics']\n+\n+    def test_create_mass_mailing_to_customers(self):\n+        customer_ids = self.ResPartner.search([('email', '!=', False)], limit=5).ids\n+        mass_mailing = self.MassMailing.create({\n+            'name': 'Test Mass Mailing Customers',\n+            'mailing_model': 'res.partner',\n+            'reply_to_mode': 'email',\n+            'mailing_domain': \"[('id', 'in', %s)]\" % customer_ids,\n+            'body_html': \"<p>this is a test mass mailing to all customers<p>\"})\n+        mass_mailing_recipients = mass_mailing.get_remaining_recipients()\n+        #checking that this mailing is to customers only, contact list ids should not set.\n+        self.assertEqual(mass_mailing.contact_list_ids.ids, [], \"Mass mailing created for customers not mailing lists\")\n+        #checking the recipients of mass mail based on given domain or not.\n+        #didn't modified the mailing domain yet\n+        for recipient in mass_mailing_recipients:\n+            self.assertIn(recipient, customer_ids, \"Mailing domain not set properly.\")\n+        #putting this mass mailing in queue\n+        mass_mailing.put_in_queue()\n+        self.assertEqual(mass_mailing.state, 'in_queue', \"Mass Mailing State should be 'In Queue', found '%s'.\" % (mass_mailing.state))\n+        #running the \"process mass mailing queue\" cron\n+        mass_mailing._process_mass_mailing_queue()\n+        mass_mailing._compute_statistics()\n+        #checking mass mailing statistics\n+        #checking received Ratio\n+        self.assertEqual(mass_mailing.received_ratio, 100, \"all mails should have been sent, found %s\" % (str(mass_mailing.received_ratio)+\"% only.\"))\n+        #100% received then the state of mass_mailing should be \"Done\"\n+        self.assertEqual(mass_mailing.state, 'done', \"Mass Mailing State should be 'Done', found '%s'.\" % (mass_mailing.state))\n+        #checking opened Ratio\n+        self.MailStats.set_opened(mail_mail_ids=[mass_mailing.statistics_ids[1].mail_mail_id_int])\n+        mass_mailing._compute_statistics()\n+        opened_ratio = (mass_mailing.opened*100)/mass_mailing.total\n+        self.assertEqual(mass_mailing.opened_ratio, opened_ratio, \"Opened Ratio should be %s\" % (str(opened_ratio)+\"%.\"))\n+        #checking replied Ratio\n+        self.MailStats.set_replied(mail_mail_ids=[mass_mailing.statistics_ids[2].mail_mail_id_int])\n+        mass_mailing._compute_statistics()\n+        replied_ratio = (mass_mailing.replied*100)/mass_mailing.total\n+        self.assertEqual(mass_mailing.replied_ratio, replied_ratio, \"Replied ratio should be %s\" % (str(replied_ratio)+\"%.\"))\n+        #checking bounced Ratio\n+        self.MailStats.set_bounced(mail_mail_ids=[mass_mailing.statistics_ids[3].mail_mail_id_int])\n+        mass_mailing._compute_statistics()\n+        bounced_ratio = (mass_mailing.bounced*100)/mass_mailing.total\n+        self.assertEqual(mass_mailing.bounced_ratio, bounced_ratio, \"Bounced ratio should be %s\" % (str(bounced_ratio)+\"%.\"))\n+\n+    def test_create_mass_mailing_to_mailing_list(self):\n+        mailing_list_new = self.MassMailingList.create({\n+            'name': \"Test mailing List\"})\n+        mass_mailing = self.MassMailing.create({\n+            'name': 'Test Mass Mailing List',\n+            'contact_list_ids': [(4, mailing_list_new.id)],\n+            'reply_to_mode': 'email',\n+            'body_html': \"<p>this is a test mass mailing to mailing_list(s)<p>\"})\n+        mass_mailing.on_change_model_and_list()\n+        mass_mailing_contact_01 = self.MassMailingContact.create({\n+            'name': 'test',\n+            'email': 'test@example.com',\n+            'list_id': mailing_list_new.id,\n+            })\n+        #adding contacts to mailing list\n+        mass_mailing_contact_02 = self.MassMailingContact.create({\n+            'name': 'test_contact_02',\n+            'email': 'test02@example.com',\n+            })\n+        mass_mailing_contact_03 = self.MassMailingContact.create({\n+            'name': 'test_contact_03',\n+            'email': 'test03@example.com',\n+            })\n+        #checking that whether the contact assigend the newly created mailing list or not-default behaviour\n+        self.assertEqual(mass_mailing_contact_03.list_id.id, mailing_list_new.id, \"Default list for the contact should be the latest mailing list created.\")\n+        #adding a new contact to existing mailing list\n+        #adding a contact via add_to_list(), actually called from controller\n+        self.MassMailingContact.add_to_list(\"test04@example.com\", mailing_list_new.id)\n+        contact = self.MassMailingContact.search([('email', '=', \"test04@example.com\"), ('list_id', '=', mailing_list_new.id)])\n+        #checking that newly created contact is properly created or not\n+        self.assertEqual(contact.email, \"test04@example.com\", \"newly created contact's email should be 'test04@example.com'.\")\n+        self.assertEqual(contact.name, \"test04@example.com\", \"newly created contact's name should be 'test04@example.com'.\")\n+        self.assertNotEqual(mailing_list_new.contact_nbr, 0, \"initially no contacts should be assigned\")\n+        self.assertIn(mass_mailing_contact_01.id, mass_mailing.get_recipients(), \"recipients are not processed properly.\")\n+        #putting this mass mailing in queue\n+        mass_mailing.put_in_queue()\n+        self.assertEqual(mass_mailing.state, 'in_queue', \"Mass Mailing State should be 'In Queue', found '%s'.\" % (mass_mailing.state))\n+        #running the \"process mass mailing queue\" cron\n+        mass_mailing._process_mass_mailing_queue()\n+        mass_mailing._compute_statistics()\n+        #checking mass mailing statistics\n+        #checking received Ratio\n+        self.assertEqual(mass_mailing.received_ratio, 100, \"all the mails should have sent, found %s\" % (str(mass_mailing.received_ratio)+\"% only.\"))\n+        #100% received then the state of mass_mailing should be \"Done\"\n+        self.assertEqual(mass_mailing.state, 'done', \"Mass Mailing State should be 'Done', found '%s'.\" % (mass_mailing.state))\n+        #checking opened Ratio\n+        self.MailStats.set_opened(mail_mail_ids=[mass_mailing.statistics_ids[1].mail_mail_id_int])\n+        mass_mailing._compute_statistics()\n+        opened_ratio = (mass_mailing.opened*100)/mass_mailing.total\n+        self.assertEqual(mass_mailing.opened_ratio, opened_ratio, \"Opened Ratio should be %s\" % (str(opened_ratio)+\"%.\"))\n+        #checking replied Ratio\n+        self.MailStats.set_replied(mail_mail_ids=[mass_mailing.statistics_ids[2].mail_mail_id_int])\n+        mass_mailing._compute_statistics()\n+        replied_ratio = (mass_mailing.replied*100)/mass_mailing.total\n+        self.assertEqual(mass_mailing.replied_ratio, replied_ratio, \"Replied ratio should be %s\" % (str(replied_ratio)+\"%.\"))\n+        #checking bounced Ratio\n+        self.MailStats.set_bounced(mail_mail_ids=[mass_mailing.statistics_ids[3].mail_mail_id_int])\n+        mass_mailing._compute_statistics()\n+        bounced_ratio = (mass_mailing.bounced*100)/mass_mailing.total\n+        self.assertEqual(mass_mailing.bounced_ratio, bounced_ratio, \"Bounced ratio should be %s\" % (str(bounced_ratio)+\"%.\"))\n+\n+    def test_test_mailing_wizard(self):","path":"addons/mass_mailing/tests/test_mass_mailing.py","position":119,"original_position":119,"commit_id":"f9acd2252976337928cabe3b06fe9a033b87bb9b","original_commit_id":"f9acd2252976337928cabe3b06fe9a033b87bb9b","user":{"login":"atp-odoo","id":7599410,"avatar_url":"https://avatars.githubusercontent.com/u/7599410?v=3","gravatar_id":"","url":"https://api.github.com/users/atp-odoo","html_url":"https://github.com/atp-odoo","followers_url":"https://api.github.com/users/atp-odoo/followers","following_url":"https://api.github.com/users/atp-odoo/following{/other_user}","gists_url":"https://api.github.com/users/atp-odoo/gists{/gist_id}","starred_url":"https://api.github.com/users/atp-odoo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/atp-odoo/subscriptions","organizations_url":"https://api.github.com/users/atp-odoo/orgs","repos_url":"https://api.github.com/users/atp-odoo/repos","events_url":"https://api.github.com/users/atp-odoo/events{/privacy}","received_events_url":"https://api.github.com/users/atp-odoo/received_events","type":"User","site_admin":false},"body":"change name test_mailing_wizard.","created_at":"2015-12-11T07:09:47Z","updated_at":"2015-12-11T07:09:47Z","html_url":"https://github.com/odoo/odoo/pull/9262#discussion_r47327184","pull_request_url":"https://api.github.com/repos/odoo/odoo/pulls/9262","_links":{"self":{"href":"https://api.github.com/repos/odoo/odoo/pulls/comments/47327184"},"html":{"href":"https://github.com/odoo/odoo/pull/9262#discussion_r47327184"},"pull_request":{"href":"https://api.github.com/repos/odoo/odoo/pulls/9262"}}},"pull_request":{"url":"https://api.github.com/repos/odoo/odoo/pulls/9262","id":48836005,"html_url":"https://github.com/odoo/odoo/pull/9262","diff_url":"https://github.com/odoo/odoo/pull/9262.diff","patch_url":"https://github.com/odoo/odoo/pull/9262.patch","issue_url":"https://api.github.com/repos/odoo/odoo/issues/9262","number":9262,"state":"open","locked":false,"title":"[MIG] Mass Mailing convert into new api kga","user":{"login":"kga-odoo","id":12183876,"avatar_url":"https://avatars.githubusercontent.com/u/12183876?v=3","gravatar_id":"","url":"https://api.github.com/users/kga-odoo","html_url":"https://github.com/kga-odoo","followers_url":"https://api.github.com/users/kga-odoo/followers","following_url":"https://api.github.com/users/kga-odoo/following{/other_user}","gists_url":"https://api.github.com/users/kga-odoo/gists{/gist_id}","starred_url":"https://api.github.com/users/kga-odoo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kga-odoo/subscriptions","organizations_url":"https://api.github.com/users/kga-odoo/orgs","repos_url":"https://api.github.com/users/kga-odoo/repos","events_url":"https://api.github.com/users/kga-odoo/events{/privacy}","received_events_url":"https://api.github.com/users/kga-odoo/received_events","type":"User","site_admin":false},"body":"<b>TASK:<b> https://www.odoo.com/web#id=13385&view_type=form&model=project.task&action=327\r\n<b>PAD:</b> https://pad.odoo.com/p/r.AAcxdoY19shFk0xW","created_at":"2015-10-27T07:19:09Z","updated_at":"2015-12-11T07:09:47Z","closed_at":null,"merged_at":null,"merge_commit_sha":"1b4849df28685dd14e30b3f1999897a28553f9e8","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/odoo/odoo/pulls/9262/commits","review_comments_url":"https://api.github.com/repos/odoo/odoo/pulls/9262/comments","review_comment_url":"https://api.github.com/repos/odoo/odoo/pulls/comments{/number}","comments_url":"https://api.github.com/repos/odoo/odoo/issues/9262/comments","statuses_url":"https://api.github.com/repos/odoo/odoo/statuses/f9acd2252976337928cabe3b06fe9a033b87bb9b","head":{"label":"odoo-dev:master-mass-mailing-new-api-kga","ref":"master-mass-mailing-new-api-kga","sha":"f9acd2252976337928cabe3b06fe9a033b87bb9b","user":{"login":"odoo-dev","id":7466976,"avatar_url":"https://avatars.githubusercontent.com/u/7466976?v=3","gravatar_id":"","url":"https://api.github.com/users/odoo-dev","html_url":"https://github.com/odoo-dev","followers_url":"https://api.github.com/users/odoo-dev/followers","following_url":"https://api.github.com/users/odoo-dev/following{/other_user}","gists_url":"https://api.github.com/users/odoo-dev/gists{/gist_id}","starred_url":"https://api.github.com/users/odoo-dev/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/odoo-dev/subscriptions","organizations_url":"https://api.github.com/users/odoo-dev/orgs","repos_url":"https://api.github.com/users/odoo-dev/repos","events_url":"https://api.github.com/users/odoo-dev/events{/privacy}","received_events_url":"https://api.github.com/users/odoo-dev/received_events","type":"Organization","site_admin":false},"repo":{"id":19853934,"name":"odoo","full_name":"odoo-dev/odoo","owner":{"login":"odoo-dev","id":7466976,"avatar_url":"https://avatars.githubusercontent.com/u/7466976?v=3","gravatar_id":"","url":"https://api.github.com/users/odoo-dev","html_url":"https://github.com/odoo-dev","followers_url":"https://api.github.com/users/odoo-dev/followers","following_url":"https://api.github.com/users/odoo-dev/following{/other_user}","gists_url":"https://api.github.com/users/odoo-dev/gists{/gist_id}","starred_url":"https://api.github.com/users/odoo-dev/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/odoo-dev/subscriptions","organizations_url":"https://api.github.com/users/odoo-dev/orgs","repos_url":"https://api.github.com/users/odoo-dev/repos","events_url":"https://api.github.com/users/odoo-dev/events{/privacy}","received_events_url":"https://api.github.com/users/odoo-dev/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/odoo-dev/odoo","description":"RD Dev Repository","fork":true,"url":"https://api.github.com/repos/odoo-dev/odoo","forks_url":"https://api.github.com/repos/odoo-dev/odoo/forks","keys_url":"https://api.github.com/repos/odoo-dev/odoo/keys{/key_id}","collaborators_url":"https://api.github.com/repos/odoo-dev/odoo/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/odoo-dev/odoo/teams","hooks_url":"https://api.github.com/repos/odoo-dev/odoo/hooks","issue_events_url":"https://api.github.com/repos/odoo-dev/odoo/issues/events{/number}","events_url":"https://api.github.com/repos/odoo-dev/odoo/events","assignees_url":"https://api.github.com/repos/odoo-dev/odoo/assignees{/user}","branches_url":"https://api.github.com/repos/odoo-dev/odoo/branches{/branch}","tags_url":"https://api.github.com/repos/odoo-dev/odoo/tags","blobs_url":"https://api.github.com/repos/odoo-dev/odoo/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/odoo-dev/odoo/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/odoo-dev/odoo/git/refs{/sha}","trees_url":"https://api.github.com/repos/odoo-dev/odoo/git/trees{/sha}","statuses_url":"https://api.github.com/repos/odoo-dev/odoo/statuses/{sha}","languages_url":"https://api.github.com/repos/odoo-dev/odoo/languages","stargazers_url":"https://api.github.com/repos/odoo-dev/odoo/stargazers","contributors_url":"https://api.github.com/repos/odoo-dev/odoo/contributors","subscribers_url":"https://api.github.com/repos/odoo-dev/odoo/subscribers","subscription_url":"https://api.github.com/repos/odoo-dev/odoo/subscription","commits_url":"https://api.github.com/repos/odoo-dev/odoo/commits{/sha}","git_commits_url":"https://api.github.com/repos/odoo-dev/odoo/git/commits{/sha}","comments_url":"https://api.github.com/repos/odoo-dev/odoo/comments{/number}","issue_comment_url":"https://api.github.com/repos/odoo-dev/odoo/issues/comments{/number}","contents_url":"https://api.github.com/repos/odoo-dev/odoo/contents/{+path}","compare_url":"https://api.github.com/repos/odoo-dev/odoo/compare/{base}...{head}","merges_url":"https://api.github.com/repos/odoo-dev/odoo/merges","archive_url":"https://api.github.com/repos/odoo-dev/odoo/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/odoo-dev/odoo/downloads","issues_url":"https://api.github.com/repos/odoo-dev/odoo/issues{/number}","pulls_url":"https://api.github.com/repos/odoo-dev/odoo/pulls{/number}","milestones_url":"https://api.github.com/repos/odoo-dev/odoo/milestones{/number}","notifications_url":"https://api.github.com/repos/odoo-dev/odoo/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/odoo-dev/odoo/labels{/name}","releases_url":"https://api.github.com/repos/odoo-dev/odoo/releases{/id}","created_at":"2014-05-16T11:16:19Z","updated_at":"2015-12-06T02:47:41Z","pushed_at":"2015-12-11T07:07:19Z","git_url":"git://github.com/odoo-dev/odoo.git","ssh_url":"git@github.com:odoo-dev/odoo.git","clone_url":"https://github.com/odoo-dev/odoo.git","svn_url":"https://github.com/odoo-dev/odoo","homepage":"https://www.odoo.com","size":1154841,"stargazers_count":65,"watchers_count":65,"language":null,"has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":26,"mirror_url":null,"open_issues_count":0,"forks":26,"open_issues":0,"watchers":65,"default_branch":"master"}},"base":{"label":"odoo:master","ref":"master","sha":"1bb822ca32e659149e86861bed4a2cfafdc014aa","user":{"login":"odoo","id":6368483,"avatar_url":"https://avatars.githubusercontent.com/u/6368483?v=3","gravatar_id":"","url":"https://api.github.com/users/odoo","html_url":"https://github.com/odoo","followers_url":"https://api.github.com/users/odoo/followers","following_url":"https://api.github.com/users/odoo/following{/other_user}","gists_url":"https://api.github.com/users/odoo/gists{/gist_id}","starred_url":"https://api.github.com/users/odoo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/odoo/subscriptions","organizations_url":"https://api.github.com/users/odoo/orgs","repos_url":"https://api.github.com/users/odoo/repos","events_url":"https://api.github.com/users/odoo/events{/privacy}","received_events_url":"https://api.github.com/users/odoo/received_events","type":"Organization","site_admin":false},"repo":{"id":19745004,"name":"odoo","full_name":"odoo/odoo","owner":{"login":"odoo","id":6368483,"avatar_url":"https://avatars.githubusercontent.com/u/6368483?v=3","gravatar_id":"","url":"https://api.github.com/users/odoo","html_url":"https://github.com/odoo","followers_url":"https://api.github.com/users/odoo/followers","following_url":"https://api.github.com/users/odoo/following{/other_user}","gists_url":"https://api.github.com/users/odoo/gists{/gist_id}","starred_url":"https://api.github.com/users/odoo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/odoo/subscriptions","organizations_url":"https://api.github.com/users/odoo/orgs","repos_url":"https://api.github.com/users/odoo/repos","events_url":"https://api.github.com/users/odoo/events{/privacy}","received_events_url":"https://api.github.com/users/odoo/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/odoo/odoo","description":"Odoo (formerly OpenERP). Open Source Apps To Grow Your Business.","fork":false,"url":"https://api.github.com/repos/odoo/odoo","forks_url":"https://api.github.com/repos/odoo/odoo/forks","keys_url":"https://api.github.com/repos/odoo/odoo/keys{/key_id}","collaborators_url":"https://api.github.com/repos/odoo/odoo/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/odoo/odoo/teams","hooks_url":"https://api.github.com/repos/odoo/odoo/hooks","issue_events_url":"https://api.github.com/repos/odoo/odoo/issues/events{/number}","events_url":"https://api.github.com/repos/odoo/odoo/events","assignees_url":"https://api.github.com/repos/odoo/odoo/assignees{/user}","branches_url":"https://api.github.com/repos/odoo/odoo/branches{/branch}","tags_url":"https://api.github.com/repos/odoo/odoo/tags","blobs_url":"https://api.github.com/repos/odoo/odoo/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/odoo/odoo/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/odoo/odoo/git/refs{/sha}","trees_url":"https://api.github.com/repos/odoo/odoo/git/trees{/sha}","statuses_url":"https://api.github.com/repos/odoo/odoo/statuses/{sha}","languages_url":"https://api.github.com/repos/odoo/odoo/languages","stargazers_url":"https://api.github.com/repos/odoo/odoo/stargazers","contributors_url":"https://api.github.com/repos/odoo/odoo/contributors","subscribers_url":"https://api.github.com/repos/odoo/odoo/subscribers","subscription_url":"https://api.github.com/repos/odoo/odoo/subscription","commits_url":"https://api.github.com/repos/odoo/odoo/commits{/sha}","git_commits_url":"https://api.github.com/repos/odoo/odoo/git/commits{/sha}","comments_url":"https://api.github.com/repos/odoo/odoo/comments{/number}","issue_comment_url":"https://api.github.com/repos/odoo/odoo/issues/comments{/number}","contents_url":"https://api.github.com/repos/odoo/odoo/contents/{+path}","compare_url":"https://api.github.com/repos/odoo/odoo/compare/{base}...{head}","merges_url":"https://api.github.com/repos/odoo/odoo/merges","archive_url":"https://api.github.com/repos/odoo/odoo/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/odoo/odoo/downloads","issues_url":"https://api.github.com/repos/odoo/odoo/issues{/number}","pulls_url":"https://api.github.com/repos/odoo/odoo/pulls{/number}","milestones_url":"https://api.github.com/repos/odoo/odoo/milestones{/number}","notifications_url":"https://api.github.com/repos/odoo/odoo/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/odoo/odoo/labels{/name}","releases_url":"https://api.github.com/repos/odoo/odoo/releases{/id}","created_at":"2014-05-13T15:38:58Z","updated_at":"2015-12-11T04:25:53Z","pushed_at":"2015-12-11T07:07:21Z","git_url":"git://github.com/odoo/odoo.git","ssh_url":"git@github.com:odoo/odoo.git","clone_url":"https://github.com/odoo/odoo.git","svn_url":"https://github.com/odoo/odoo","homepage":"https://www.odoo.com","size":1230275,"stargazers_count":3482,"watchers_count":3482,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":3202,"mirror_url":null,"open_issues_count":2951,"forks":3202,"open_issues":2951,"watchers":3482,"default_branch":"9.0"}},"_links":{"self":{"href":"https://api.github.com/repos/odoo/odoo/pulls/9262"},"html":{"href":"https://github.com/odoo/odoo/pull/9262"},"issue":{"href":"https://api.github.com/repos/odoo/odoo/issues/9262"},"comments":{"href":"https://api.github.com/repos/odoo/odoo/issues/9262/comments"},"review_comments":{"href":"https://api.github.com/repos/odoo/odoo/pulls/9262/comments"},"review_comment":{"href":"https://api.github.com/repos/odoo/odoo/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/odoo/odoo/pulls/9262/commits"},"statuses":{"href":"https://api.github.com/repos/odoo/odoo/statuses/f9acd2252976337928cabe3b06fe9a033b87bb9b"}}}}