{"action":"created","comment":{"url":"https://api.github.com/repos/odoo/odoo/pulls/comments/45908475","id":45908475,"diff_hunk":"@@ -15,182 +11,43 @@\n # (note that calling '_' has no effect except exporting those strings for translation)\n \n \n-def extract_email(email):\n-    \"\"\" extract the email address from a user-friendly email address \"\"\"\n-    addresses = email_split(email)\n-    return addresses[0] if addresses else ''\n-\n-\n-\n-class wizard(osv.osv_memory):\n+class PortalWizard(models.TransientModel):\n     \"\"\"\n         A wizard to manage the creation/removal of portal users.\n     \"\"\"\n     _name = 'portal.wizard'\n     _description = 'Portal Access Management'\n \n-    _columns = {\n-        'portal_id': fields.many2one('res.groups', domain=[('is_portal', '=', True)], required=True,\n-            string='Portal', help=\"The portal that users can be added in or removed from.\"),\n-        'user_ids': fields.one2many('portal.wizard.user', 'wizard_id', string='Users'),\n-        'welcome_message': fields.text(string='Invitation Message',\n-            help=\"This text is included in the email sent to new users of the portal.\"),\n-    }\n-\n-    def _default_portal(self, cr, uid, context):\n-        portal_ids = self.pool.get('res.groups').search(cr, uid, [('is_portal', '=', True)])\n-        return portal_ids and portal_ids[0] or False\n+    def _default_portal(self):\n+        return self.env['res.groups'].search([('is_portal', '=', True)], limit=1)\n \n-    _defaults = {\n-        'portal_id': _default_portal,\n-    }\n+    portal_id = fields.Many2one('res.groups', domain=[('is_portal', '=', True)], required=True, string='Portal', help=\"The portal that users can be added in or removed from.\", default=_default_portal)\n+    user_ids = fields.One2many('portal.wizard.user', 'wizard_id', string='Users')\n+    welcome_message = fields.Text(string='Invitation Message', help=\"This text is included in the email sent to new users of the portal.\")\n \n-    def onchange_portal_id(self, cr, uid, ids, portal_id, context=None):\n+    @api.onchange('portal_id')\n+    def onchange_portal_id(self):\n         # for each partner, determine corresponding portal.wizard.user records\n-        res_partner = self.pool.get('res.partner')\n-        partner_ids = context and context.get('active_ids') or []\n+        ResPartner = self.env['res.partner']\n+        partner_ids = self.env.context.get('active_ids')\n         contact_ids = set()\n         user_changes = []\n-        for partner in res_partner.browse(cr, SUPERUSER_ID, partner_ids, context):\n+        for partner in ResPartner.sudo().browse(partner_ids):\n             for contact in (partner.child_ids or [partner]):\n                 # make sure that each contact appears at most once in the list\n                 if contact.id not in contact_ids:\n                     contact_ids.add(contact.id)\n                     in_portal = False\n                     if contact.user_ids:\n-                        in_portal = portal_id in [g.id for g in contact.user_ids[0].groups_id]\n+                        in_portal = self.portal_id in contact.user_ids[0].groups_id.ids","path":"addons/portal/wizard/portal_wizard.py","position":72,"original_position":72,"commit_id":"37ed4141f8ecd01f04ec477a4e451497f68ffe55","original_commit_id":"37ed4141f8ecd01f04ec477a4e451497f68ffe55","user":{"login":"WHPODOO","id":14940179,"avatar_url":"https://avatars.githubusercontent.com/u/14940179?v=3","gravatar_id":"","url":"https://api.github.com/users/WHPODOO","html_url":"https://github.com/WHPODOO","followers_url":"https://api.github.com/users/WHPODOO/followers","following_url":"https://api.github.com/users/WHPODOO/following{/other_user}","gists_url":"https://api.github.com/users/WHPODOO/gists{/gist_id}","starred_url":"https://api.github.com/users/WHPODOO/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/WHPODOO/subscriptions","organizations_url":"https://api.github.com/users/WHPODOO/orgs","repos_url":"https://api.github.com/users/WHPODOO/repos","events_url":"https://api.github.com/users/WHPODOO/events{/privacy}","received_events_url":"https://api.github.com/users/WHPODOO/received_events","type":"User","site_admin":false},"body":"If you store list of ids into variable then variable name should be with suffix of ```_id```","created_at":"2015-11-25T19:20:12Z","updated_at":"2015-11-25T19:20:12Z","html_url":"https://github.com/odoo/odoo/pull/9325#discussion_r45908475","pull_request_url":"https://api.github.com/repos/odoo/odoo/pulls/9325","_links":{"self":{"href":"https://api.github.com/repos/odoo/odoo/pulls/comments/45908475"},"html":{"href":"https://github.com/odoo/odoo/pull/9325#discussion_r45908475"},"pull_request":{"href":"https://api.github.com/repos/odoo/odoo/pulls/9325"}}},"pull_request":{"url":"https://api.github.com/repos/odoo/odoo/pulls/9325","id":49245044,"html_url":"https://github.com/odoo/odoo/pull/9325","diff_url":"https://github.com/odoo/odoo/pull/9325.diff","patch_url":"https://github.com/odoo/odoo/pull/9325.patch","issue_url":"https://api.github.com/repos/odoo/odoo/issues/9325","number":9325,"state":"open","locked":false,"title":"[MIGRATE] Portal: Migrated to new api.","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":"Task: https://www.odoo.com/web#id=12003&view_type=form&model=project.task&menu_id=3942&action=327\r\nPad: https://pad.odoo.com/p/r.q9wZCSb3Xk2xmg5n","created_at":"2015-10-30T09:01:06Z","updated_at":"2015-11-25T19:20:12Z","closed_at":null,"merged_at":null,"merge_commit_sha":"acc92768fe5d2ebb3dfa106f1fc4c809cae54474","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/odoo/odoo/pulls/9325/commits","review_comments_url":"https://api.github.com/repos/odoo/odoo/pulls/9325/comments","review_comment_url":"https://api.github.com/repos/odoo/odoo/pulls/comments{/number}","comments_url":"https://api.github.com/repos/odoo/odoo/issues/9325/comments","statuses_url":"https://api.github.com/repos/odoo/odoo/statuses/37ed4141f8ecd01f04ec477a4e451497f68ffe55","head":{"label":"odoo-dev:master-portal-new-api-rra","ref":"master-portal-new-api-rra","sha":"37ed4141f8ecd01f04ec477a4e451497f68ffe55","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-11-23T04:22:05Z","pushed_at":"2015-11-25T18:00:41Z","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":1130363,"stargazers_count":63,"watchers_count":63,"language":null,"has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":27,"mirror_url":null,"open_issues_count":0,"forks":27,"open_issues":0,"watchers":63,"default_branch":"master"}},"base":{"label":"odoo:master","ref":"master","sha":"36c05660eec79f738cb7a20eddff600672907c9d","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-11-25T18:12:31Z","pushed_at":"2015-11-25T18:17:17Z","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":1205628,"stargazers_count":3436,"watchers_count":3436,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":3125,"mirror_url":null,"open_issues_count":2857,"forks":3125,"open_issues":2857,"watchers":3436,"default_branch":"9.0"}},"_links":{"self":{"href":"https://api.github.com/repos/odoo/odoo/pulls/9325"},"html":{"href":"https://github.com/odoo/odoo/pull/9325"},"issue":{"href":"https://api.github.com/repos/odoo/odoo/issues/9325"},"comments":{"href":"https://api.github.com/repos/odoo/odoo/issues/9325/comments"},"review_comments":{"href":"https://api.github.com/repos/odoo/odoo/pulls/9325/comments"},"review_comment":{"href":"https://api.github.com/repos/odoo/odoo/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/odoo/odoo/pulls/9325/commits"},"statuses":{"href":"https://api.github.com/repos/odoo/odoo/statuses/37ed4141f8ecd01f04ec477a4e451497f68ffe55"}}}}