summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--addons/auth_signup/__manifest__.py1
-rw-r--r--addons/auth_signup/data/auth_signup_data.xml52
-rw-r--r--addons/auth_signup/data/ir_cron_data.xml13
-rw-r--r--addons/auth_signup/models/res_users.py24
4 files changed, 90 insertions, 0 deletions
diff --git a/addons/auth_signup/__manifest__.py b/addons/auth_signup/__manifest__.py
index bf3c9d64c81..81f6cbdb285 100644
--- a/addons/auth_signup/__manifest__.py
+++ b/addons/auth_signup/__manifest__.py
@@ -17,6 +17,7 @@ Allow users to sign up and reset their password
],
'data': [
'data/auth_signup_data.xml',
+ 'data/ir_cron_data.xml',
'views/res_config_settings_views.xml',
'views/res_users_views.xml',
'views/auth_signup_login_templates.xml',
diff --git a/addons/auth_signup/data/auth_signup_data.xml b/addons/auth_signup/data/auth_signup_data.xml
index 88852ce662b..5fe062a6d44 100644
--- a/addons/auth_signup/data/auth_signup_data.xml
+++ b/addons/auth_signup/data/auth_signup_data.xml
@@ -197,6 +197,58 @@
<field name="user_signature" eval="False"/>
</record>
+ <!-- Email template for reminder of unregistered users -->
+ <record id="mail_template_data_unregistered_users" model="mail.template">
+ <field name="name">Auth Signup: Unregistered Users</field>
+ <field name="model_id" ref="base.model_res_users"/>
+ <field name="subject">Reminder for unregistered users</field>
+ <field name="email_from">${object.company_id.partner_id.email_formatted|safe}</field>
+ <field name="email_to">${object.email_formatted|safe}</field>
+ <field name="body_html" type="html">
+<table border="0" cellpadding="0" cellspacing="0" style="background-color: #F1F1F1; font-family:Verdana, Arial,sans-serif; color: #454748; width: 100%; border-collapse:separate;"><tr><td align="center">
+<table border="0" cellpadding="0" cellspacing="0" width="590" style="padding: 16px; background-color: white; color: #454748; border-collapse:separate;">
+<tbody>
+ <!-- CONTENT -->
+ <tr>
+ <td align="center" style="min-width: 590px;">
+ <table border="0" cellpadding="0" cellspacing="0" width="590" style="min-width: 590px; background-color: white; padding: 0px 8px 0px 8px; border-collapse:separate;">
+ % set invited_users = ctx['invited_users']
+ <td style="text-align : left">
+ <span style="font-size: 20px; font-weight: bold;">
+ Pending Invitations
+ </span><br/><br/>
+ </td>
+ <tr><td valign="top" style="font-size: 13px;">
+ <div>
+ Dear ${object.name or ''},<br/> <br/>
+ You added the following user(s) to your database but they haven't registered yet:
+ <ul>
+ % for invited_user in invited_users:
+ <li>${invited_user}</li>
+ % endfor
+ </ul>
+ Follow up with them so they can access your database and start working with you.
+ <br /><br/>
+ Have a nice day!<br />
+ --<br/>The ${object.company_id.name} Team
+ </div>
+ </td></tr>
+ <tr><td style="text-align:center;">
+ <hr width="100%" style="background-color:rgb(204,204,204);border:medium none;clear:both;display:block;font-size:0px;min-height:1px;line-height:0; margin: 16px 0px 16px 0px;"/>
+ </td></tr>
+ </table>
+ </td>
+ </tr>
+</tbody>
+</table>
+</td></tr>
+</table>
+ </field>
+ <field name="lang">${object.partner_id.lang}</field>
+ <field name="auto_delete" eval="True"/>
+ <field name="user_signature" eval="False"/>
+ </record>
+
<!-- Email template for new users that used a signup token -->
<record id="mail_template_user_signup_account_created" model="mail.template">
<field name="name">Auth Signup: Odoo Account Created</field>
diff --git a/addons/auth_signup/data/ir_cron_data.xml b/addons/auth_signup/data/ir_cron_data.xml
new file mode 100644
index 00000000000..b583d5e65fd
--- /dev/null
+++ b/addons/auth_signup/data/ir_cron_data.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<odoo>
+ <record id="ir_cron_auth_signup_send_pending_user_reminder" model="ir.cron">
+ <field name="name">Users: Notify About Unregistered Users</field>
+ <field name="model_id" ref="model_res_users"/>
+ <field name="state">code</field>
+ <field name="code">model.send_unregistered_user_reminder()</field>
+ <field name="user_id" ref="base.user_root" />
+ <field name="interval_number">1</field>
+ <field name="interval_type">days</field>
+ <field name="numbercall">-1</field>
+ </record>
+</odoo>
diff --git a/addons/auth_signup/models/res_users.py b/addons/auth_signup/models/res_users.py
index f7c35761987..559f92f9fb5 100644
--- a/addons/auth_signup/models/res_users.py
+++ b/addons/auth_signup/models/res_users.py
@@ -4,6 +4,8 @@
import logging
from ast import literal_eval
+from collections import defaultdict
+from dateutil.relativedelta import relativedelta
from odoo import api, fields, models, _
from odoo.exceptions import UserError
@@ -201,6 +203,28 @@ class ResUsers(models.Model):
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.multi
+ def send_unregistered_user_reminder(self, after_days=5):
+ datetime_min = fields.Datetime.today() - relativedelta(days=after_days)
+ datetime_max = datetime_min + relativedelta(hours=23, minutes=59, seconds=59)
+
+ res_users_with_details = self.env['res.users'].search_read([
+ ('share', '=', False),
+ ('create_uid.email', '!=', False),
+ ('create_date', '>=', datetime_min),
+ ('create_date', '<=', datetime_max),
+ ('log_ids', '=', False)], ['create_uid', 'name', 'login'])
+
+ # group by invited by
+ invited_users = defaultdict(list)
+ for user in res_users_with_details:
+ invited_users[user.get('create_uid')[0]].append("%s (%s)" % (user.get('name'), user.get('login')))
+
+ # For sending mail to all the invitors about their invited users
+ for user in invited_users:
+ template = self.env.ref('auth_signup.mail_template_data_unregistered_users').with_context(dbname=self._cr.dbname, invited_users=invited_users[user])
+ template.send_mail(user, notif_layout='mail.mail_notification_light', force_send=False)
+
@api.model
def web_dashboard_create_users(self, emails):
inactive_users = self.search([('state', '=', 'new'), '|', ('login', 'in', emails), ('email', 'in', emails)])