[FIX] project,hr: improved alias creation/duplication
[odoo/odoo.git] / addons / hr_recruitment / hr_recruitment.py
index b33f98c..9fe3cbf 100644 (file)
@@ -526,29 +526,31 @@ class hr_job(osv.osv):
         jobs_no_alias = hr_job.search(cr, SUPERUSER_ID, [('alias_id', '=', False)])
         # Use read() not browse(), to avoid prefetching uninitialized inherited fields
         for job_data in hr_job.read(cr, SUPERUSER_ID, jobs_no_alias, ['name']):
-            alias_id = mail_alias.create_unique_alias(cr, SUPERUSER_ID, {'alias_name': 'job_'+job_data['name'],
-                                                                         'alias_force_id': job_data['id']},
-                                                      model_name=self._name)
+            alias_id = mail_alias.create_unique_alias(cr, SUPERUSER_ID, {'alias_name': 'job+'+job_data['name'],
+                                                                         'alias_defaults': {'job_id': job_data['id']}},
+                                                      model_name='hr.applicant')
             hr_job.write(cr, SUPERUSER_ID, job_data['id'], {'alias_id': alias_id})
-            _logger.info('Mail alias created for hr.job %s (uid %s)', job_data['login'], job_data['id'])
+            _logger.info('Mail alias created for hr.job %s (uid %s)', job_data['name'], job_data['id'])
 
         # Finally attempt to reinstate the missing constraint
         try:
             cr.execute('ALTER TABLE hr_job ALTER COLUMN alias_id SET NOT NULL')
         except Exception:
             pass
-    
+
     def create(self, cr, uid, vals, context=None):
-        alias_pool = self.pool.get('mail.alias')
+        mail_alias = self.pool.get('mail.alias')
         if not vals.get('alias_id'):
-            name = vals.pop('alias_name', None) or vals['name']
-            alias_id = alias_pool.create_unique_alias(cr, uid, 
-                          {'alias_name': "job_"+name},
+            vals.pop('alias_name', None) # prevent errors during copy()
+            alias_id = mail_alias.create_unique_alias(cr, uid, 
+                          # Using '+' allows using subaddressing for those who don't
+                          # have a catchall domain setup.
+                          {'alias_name': 'jobs+'+vals['name']},
                           model_name="hr.applicant",
                           context=context)
             vals['alias_id'] = alias_id
-        res = super( hr_job, self).create(cr, uid, vals, context)
-        alias_pool.write(cr, uid, [vals['alias_id']], {"alias_defaults": {'job_id': res}}, context)
+        res = super(hr_job, self).create(cr, uid, vals, context)
+        mail_alias.write(cr, uid, [vals['alias_id']], {"alias_defaults": {'job_id': res}}, context)
         return res
 
     def unlink(self, cr, uid, ids, context=None):