diff --git a/addons/auth_signup/models/res_partner.py b/addons/auth_signup/models/res_partner.py index a1d9f7d3ec5..1f79b89e992 100644 --- a/addons/auth_signup/models/res_partner.py +++ b/addons/auth_signup/models/res_partner.py @@ -26,9 +26,9 @@ def now(**kwargs): class ResPartner(models.Model): _inherit = 'res.partner' - signup_token = fields.Char(copy=False) - signup_type = fields.Char(string='Signup Token Type', copy=False) - signup_expiration = fields.Datetime(copy=False) + signup_token = fields.Char(copy=False, groups="base.group_erp_manager") + signup_type = fields.Char(string='Signup Token Type', copy=False, groups="base.group_erp_manager") + signup_expiration = fields.Datetime(copy=False, groups="base.group_erp_manager") signup_valid = fields.Boolean(compute='_compute_signup_valid', string='Signup Token is Valid') signup_url = fields.Char(compute='_compute_signup_url', string='Signup URL') @@ -36,15 +36,17 @@ class ResPartner(models.Model): @api.depends('signup_token', 'signup_expiration') def _compute_signup_valid(self): dt = now() - for partner in self: + for partner in self.sudo(): partner.signup_valid = bool(partner.signup_token) and \ (not partner.signup_expiration or dt <= partner.signup_expiration) @api.multi def _compute_signup_url(self): """ proxy for function field towards actual implementation """ - result = self._get_signup_url_for_action() + result = self.sudo()._get_signup_url_for_action() for partner in self: + if any(u.has_group('base.group_user') for u in partner.user_ids if u != self.env.user): + self.env['res.users'].check_access_rights('write') partner.signup_url = result.get(partner.id, False) @api.multi diff --git a/addons/auth_signup/models/res_users.py b/addons/auth_signup/models/res_users.py index f5c0a6f2d88..c170b7ab8a4 100644 --- a/addons/auth_signup/models/res_users.py +++ b/addons/auth_signup/models/res_users.py @@ -132,10 +132,20 @@ class ResUsers(models.Model): template = self.env.ref('auth_signup.reset_password_email') assert template._name == 'mail.template' + template_values = { + 'email_to': '${object.email|safe}', + 'email_cc': False, + 'auto_delete': True, + 'partner_to': False, + 'scheduled_date': False, + } + template.write(template_values) + for user in self: if not user.email: raise UserError(_("Cannot send email: user %s has no email address.") % user.name) - template.with_context(lang=user.lang).send_mail(user.id, force_send=True, raise_exception=True) + with self.env.cr.savepoint(): + template.with_context(lang=user.lang).send_mail(user.id, force_send=True, raise_exception=True) _logger.info("Password reset email sent for user <%s> to <%s>", user.login, user.email) @api.model diff --git a/addons/crm/tests/test_lead2opportunity.py b/addons/crm/tests/test_lead2opportunity.py index 861444b3f7c..e4847b5bf45 100644 --- a/addons/crm/tests/test_lead2opportunity.py +++ b/addons/crm/tests/test_lead2opportunity.py @@ -38,7 +38,7 @@ class TestLead2opportunity2win(TestCrmCases): crm_case_3.message_post(subject='Test note', body='Détails envoyés par le client sur ​​le FAX pour la qualité') # I convert mass lead into opportunity customer. - mass = CrmLead2OpportunityPartnerMass.with_context({'active_model': 'crm.lead', 'active_ids': [crm_case_13.id, crm_case_2.id], 'active_id': crm_case_13.id}).create({ + mass = CrmLead2OpportunityPartnerMass.sudo(self.crm_salemanager.id).with_context({'active_model': 'crm.lead', 'active_ids': [crm_case_13.id, crm_case_2.id], 'active_id': crm_case_13.id}).create({ 'user_ids': [(6, 0, self.env.ref('base.user_root').ids)], 'team_id': self.env.ref("sales_team.team_sales_department").id }) diff --git a/addons/event_sale/models/sale_order.py b/addons/event_sale/models/sale_order.py index 6902d8e4743..2ac4deaed5f 100644 --- a/addons/event_sale/models/sale_order.py +++ b/addons/event_sale/models/sale_order.py @@ -8,12 +8,13 @@ class SaleOrder(models.Model): @api.multi def action_confirm(self): - self.ensure_one() res = super(SaleOrder, self).action_confirm() - # confirm registration if it was free (otherwise it will be confirmed once invoice fully paid) - self.order_line._update_registrations(confirm=self.amount_total == 0, cancel_to_draft=False) - if any(self.order_line.filtered(lambda line: line.event_id)): - return self.env['ir.actions.act_window'].with_context(default_sale_order_id=self.id).for_xml_id('event_sale', 'action_sale_order_event_registration') + for order in self: + # confirm registration if it was free (otherwise it will be confirmed once invoice fully paid) + order.order_line._update_registrations(confirm=order.amount_total == 0, cancel_to_draft=False) + if any(order.order_line.filtered(lambda line: line.event_id)): + return self.env['ir.actions.act_window'].with_context(default_sale_order_id=order.id).for_xml_id( + 'event_sale', 'action_sale_order_event_registration') return res diff --git a/addons/mail/models/mail_template.py b/addons/mail/models/mail_template.py index 5e9a96b3959..bf7b89c5c0a 100644 --- a/addons/mail/models/mail_template.py +++ b/addons/mail/models/mail_template.py @@ -255,22 +255,22 @@ class MailTemplate(models.Model): def unlink_action(self): for template in self: if template.ref_ir_act_window: - template.ref_ir_act_window.sudo().unlink() + template.ref_ir_act_window.unlink() if template.ref_ir_value: - template.ref_ir_value.sudo().unlink() + template.ref_ir_value.unlink() return True @api.multi def create_action(self): - ActWindowSudo = self.env['ir.actions.act_window'].sudo() - IrValuesSudo = self.env['ir.values'].sudo() + ActWindow = self.env['ir.actions.act_window'] + IrValues = self.env['ir.values'] view = self.env.ref('mail.email_compose_message_wizard_form') for template in self: src_obj = template.model_id.model button_name = _('Send Mail (%s)') % template.name - action = ActWindowSudo.create({ + action = ActWindow.create({ 'name': button_name, 'type': 'ir.actions.act_window', 'res_model': 'mail.compose.message', @@ -281,7 +281,7 @@ class MailTemplate(models.Model): 'view_id': view.id, 'target': 'new', }) - ir_value = IrValuesSudo.create({ + ir_value = IrValues.create({ 'name': button_name, 'model': src_obj, 'key2': 'client_action_multi', diff --git a/addons/mail/views/mail_template_views.xml b/addons/mail/views/mail_template_views.xml index 483c80ae394..4306f1fe8d1 100644 --- a/addons/mail/views/mail_template_views.xml +++ b/addons/mail/views/mail_template_views.xml @@ -9,7 +9,9 @@
- -