Skip to content
Snippets Groups Projects
Commit fcfd72a5 authored by niyasraphy's avatar niyasraphy
Browse files

[FIX] google_gmail, microsoft_outlook : move UserError to ir_mail_server

The orginal PR and it's forward ports https://github.com/odoo/odoo/pull/121048


intorduced an unexpected AttributeError when using OAuth for incoming
mail servers (fetchmail.server). Since `smtp_user` is not a defined field
in fetchmail.server (it uses the field `user` instead), we had to change
the approach.

To prevent this error, we move the UserError call into the respective
ir_mail_server models, which should check the contrains at that level.
This means that before the form gets saved, trying to connect using an
OAuth account, should prompt the user to first specify an smtp_user before
proceeding.

closes odoo/odoo#122222

Signed-off-by: default avatarStéphane Debauche (std) <std@odoo.com>
parent fa2cb330
No related branches found
No related tags found
No related merge requests found
...@@ -147,7 +147,7 @@ msgid "Please configure your Gmail credentials." ...@@ -147,7 +147,7 @@ msgid "Please configure your Gmail credentials."
msgstr "" msgstr ""
#. module: google_gmail #. module: google_gmail
#: code:addons/google_gmail/models/google_gmail_mixin.py:0 #: code:addons/google_gmail/models/ir_mail_server.py:0
#, python-format #, python-format
msgid "" msgid ""
"Please fill the \"Username\" field with your Gmail username (your email " "Please fill the \"Username\" field with your Gmail username (your email "
......
...@@ -72,11 +72,6 @@ class GoogleGmailMixin(models.AbstractModel): ...@@ -72,11 +72,6 @@ class GoogleGmailMixin(models.AbstractModel):
if not self.google_gmail_uri: if not self.google_gmail_uri:
raise UserError(_('Please configure your Gmail credentials.')) raise UserError(_('Please configure your Gmail credentials.'))
if not self.smtp_user:
raise UserError(_(
'Please fill the "Username" field with your Gmail username (your email address). '
'This should be the same account as the one used for the Gmail OAuthentication Token.'))
return { return {
'type': 'ir.actions.act_url', 'type': 'ir.actions.act_url',
'url': self.google_gmail_uri, 'url': self.google_gmail_uri,
......
...@@ -3,7 +3,8 @@ ...@@ -3,7 +3,8 @@
import base64 import base64
from odoo import models, api from odoo import _, models, api
from odoo.exceptions import UserError
class IrMailServer(models.Model): class IrMailServer(models.Model):
...@@ -12,6 +13,13 @@ class IrMailServer(models.Model): ...@@ -12,6 +13,13 @@ class IrMailServer(models.Model):
_name = 'ir.mail_server' _name = 'ir.mail_server'
_inherit = ['ir.mail_server', 'google.gmail.mixin'] _inherit = ['ir.mail_server', 'google.gmail.mixin']
@api.constrains('use_google_gmail_service')
def _check_use_google_gmail_service(self):
if self.filtered(lambda server: server.use_google_gmail_service and not server.smtp_user):
raise UserError(_(
'Please fill the "Username" field with your Gmail username (your email address). '
'This should be the same account as the one used for the Gmail OAuthentication Token.'))
@api.onchange('smtp_encryption') @api.onchange('smtp_encryption')
def _onchange_encryption(self): def _onchange_encryption(self):
"""Do not change the SMTP configuration if it's a Gmail server """Do not change the SMTP configuration if it's a Gmail server
......
...@@ -171,7 +171,7 @@ msgid "Please configure your Outlook credentials." ...@@ -171,7 +171,7 @@ msgid "Please configure your Outlook credentials."
msgstr "" msgstr ""
#. module: microsoft_outlook #. module: microsoft_outlook
#: code:addons/microsoft_outlook/models/microsoft_outlook_mixin.py:0 #: code:addons/microsoft_outlook/models/ir_mail_server.py:0
#, python-format #, python-format
msgid "" msgid ""
"Please fill the \"Username\" field with your Outlook/Office365 username " "Please fill the \"Username\" field with your Outlook/Office365 username "
......
...@@ -33,6 +33,11 @@ class IrMailServer(models.Model): ...@@ -33,6 +33,11 @@ class IrMailServer(models.Model):
'Please set it to "TLS (STARTTLS)".') 'Please set it to "TLS (STARTTLS)".')
% server.name) % server.name)
if not server.smtp_user:
raise UserError(_(
'Please fill the "Username" field with your Outlook/Office365 username (your email address). '
'This should be the same account as the one used for the Outlook OAuthentication Token.'))
@api.onchange('smtp_encryption') @api.onchange('smtp_encryption')
def _onchange_encryption(self): def _onchange_encryption(self):
"""Do not change the SMTP configuration if it's a Outlook server """Do not change the SMTP configuration if it's a Outlook server
......
...@@ -81,11 +81,6 @@ class MicrosoftOutlookMixin(models.AbstractModel): ...@@ -81,11 +81,6 @@ class MicrosoftOutlookMixin(models.AbstractModel):
if not self.use_microsoft_outlook_service or not self.is_microsoft_outlook_configured: if not self.use_microsoft_outlook_service or not self.is_microsoft_outlook_configured:
raise UserError(_('Please configure your Outlook credentials.')) raise UserError(_('Please configure your Outlook credentials.'))
if not self.smtp_user:
raise UserError(_(
'Please fill the "Username" field with your Outlook/Office365 username (your email address). '
'This should be the same account as the one used for the Outlook OAuthentication Token.'))
return { return {
'type': 'ir.actions.act_url', 'type': 'ir.actions.act_url',
'url': self.microsoft_outlook_uri, 'url': self.microsoft_outlook_uri,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment