[ADD] mail: aded alias feature for users.
authorTurkesh Patel (Open ERP) <tpa@tinyerp.com>
Tue, 26 Jun 2012 06:09:06 +0000 (11:39 +0530)
committerTurkesh Patel (Open ERP) <tpa@tinyerp.com>
Tue, 26 Jun 2012 06:09:06 +0000 (11:39 +0530)
bzr revid: tpa@tinyerp.com-20120626060906-wn4sniccnw25e2nz

addons/mail/__openerp__.py
addons/mail/mail_data.xml
addons/mail/mail_demo.xml [new file with mode: 0644]
addons/mail/res_users.py
addons/mail/res_users_view.xml

index 1a416cf..274e861 100644 (file)
@@ -70,6 +70,9 @@ The main features are:
         'res_users_view.xml',
         'mail_alias_view.xml',
     ],
+    'demo_xml': [
+        'mail_demo.xml',
+    ],
     'installable': True,
     'auto_install': False,
     'certificate': '001056784984222247309',
index c8e8b1a..38e3b6a 100644 (file)
             <field eval="'process_email_queue'" name="function"/>
             <field eval="'()'" name="args"/>
         </record>
+                  
+        <record id="mail_alias_root_user" model="mail.alias">
+            <field name="alias_name">admin@openerp.my.openerp.com</field>
+            <field name="alias_model_id" ref="model_res_users"/>
+            <field name="alias_user_id" ref="base.user_root"/>
+            <field name="alias_force_thread_id" ref="base.user_root"/>
+            <field name="alias_defaults">{}</field>
+        </record>
+
+        <record model="res.users" id="base.user_root">
+            <field name="alias_id" ref="mail_alias_root_user"/>
+        </record>
+        
     </data>
 </openerp>
diff --git a/addons/mail/mail_demo.xml b/addons/mail/mail_demo.xml
new file mode 100644 (file)
index 0000000..739c449
--- /dev/null
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+    <data noupdate="1">
+        <record id="mail_alias_demo_user" model="mail.alias">
+            <field name="alias_name">demo@openerp.my.openerp.com</field>
+            <field name="alias_model_id" ref="model_res_users"/>
+            <field name="alias_user_id" ref="base.user_root"/>
+            <field name="alias_force_thread_id" ref="base.user_demo"/>
+            <field name="alias_defaults">{}</field>
+        </record>
+
+        <record model="res.users" id="base.user_demo">
+            <field name="alias_id" ref="mail_alias_demo_user"/>
+        </record>
+     
+     </data>
+</openerp>      
\ No newline at end of file
index 2223d9e..e953229 100644 (file)
@@ -29,6 +29,7 @@ class res_users(osv.osv):
     """
     _name = 'res.users'
     _inherit = ['res.users', 'mail.thread']
+    _inherits = {'mail.alias': 'alias_id'}
     
     _columns = {
         'notification_email_pref': fields.selection([
@@ -38,6 +39,7 @@ class res_users(osv.osv):
                         ('none', 'Never')
                         ], 'Receive Feeds by E-mail', required=True,
                         help="Choose in which case you want to receive an email when you receive new feeds."),
+        'alias_id': fields.many2one('mail.alias', 'Mail Alias', ondelete="cascade", required=True),
     }
     
     _defaults = {
@@ -56,8 +58,16 @@ class res_users(osv.osv):
         return init_res
     
     def create(self, cr, uid, data, context=None):
+        # create default alias same as the login
+        model_pool = self.pool.get('ir.model.data')
+        alias_pool = self.pool.get('mail.alias')
+        res_id = model_pool.get_object( cr, uid, "mail", "model_res_users")
+        data.update({'alias_name': data.get('login'),
+                     'alias_model_id': res_id.id})
+        name = alias_pool.create_unique_alias(cr, uid, data, context=context)
         user_id = super(res_users, self).create(cr, uid, data, context=context)
         user = self.browse(cr, uid, [user_id], context=context)[0]
+        alias_pool.write(cr, uid, [user.alias_id.id], {"alias_force_thread_id": user.id}, context)
         # make user follow itself
         self.message_subscribe(cr, uid, [user_id], [user_id], context=context)
         # create a welcome message to broadcast
@@ -66,7 +76,18 @@ class res_users(osv.osv):
         # TODO: clean the broadcast feature. As this is not cleany specified, temporarily remove the message broadcasting that is not buggy but not very nice.
         #self.message_broadcast(cr, uid, [user.id], 'Welcome notification', message, context=context)
         return user_id
+    
+    def write(self, cr, uid, ids, vals, context=None):
+        result = super(res_users, self).write(cr, uid, ids, vals, context=context)
+        # if login of user have been changed then change alias of user also.
+        if vals.get('login'):
+            alias_id = self.browse(cr, uid, ids[0]).alias_id
+            domain = self.pool.get("ir.config_parameter").get_param(cr, uid, "mail.catchall.domain", context=context)
+            name = vals.get('login') + '@' + domain
+            self.pool.get('mail.alias').write(cr, uid, [alias_id.id], {'alias_name': name}, context=context)
+        return result
 
+    
     def message_load_ids(self, cr, uid, ids, limit=100, offset=0, domain=[], ascent=False, root_ids=[False], context=None):
         """ Override of message_load_ids
             User discussion page :
index 428f53d..9af90ef 100644 (file)
@@ -31,6 +31,9 @@
                         <field name="message_ids" colspan="4" widget="ThreadView" nolabel="1"/>
                     </div>
                 </xpath>
+                <field name="active" position="after">
+                    <field name="alias_id" readonly="1" required="0"/>
+                </field>
             </data>
             </field>
         </record>