diff --git a/addons/crm/crm.py b/addons/crm/crm.py
index 81d2c632266..a02155f8f19 100644
--- a/addons/crm/crm.py
+++ b/addons/crm/crm.py
@@ -164,7 +164,7 @@ class crm_case_section(osv.osv):
def create(self, cr, uid, vals, context=None):
alias_pool = self.pool.get('mail.alias')
if not vals.get('alias_id'):
- name = vals.get('alias_name') or vals['name']
+ name = vals.pop('alias_name', None) or vals['name']
alias_id = alias_pool.create_unique_alias(cr, uid,
{'alias_name': name},
model_name="crm.lead",
diff --git a/addons/hr_recruitment/hr_recruitment.py b/addons/hr_recruitment/hr_recruitment.py
index c2112c9ad84..b33f98cabe9 100644
--- a/addons/hr_recruitment/hr_recruitment.py
+++ b/addons/hr_recruitment/hr_recruitment.py
@@ -19,16 +19,19 @@
#
##############################################################################
-from base_status.base_stage import base_stage
+import logging
import time
-from datetime import datetime, timedelta
-from lxml import etree
-from osv import fields, osv
+from datetime import datetime
+
import tools
-import collections
-import binascii
+from osv import fields, osv
+from openerp.modules.registry import RegistryManager
+from openerp import SUPERUSER_ID
+from base_status.base_stage import base_stage
from tools.translate import _
+_logger = logging.getLogger(__name__)
+
AVAILABLE_STATES = [
('draft', 'New'),
('cancel', 'Refused'),
@@ -511,14 +514,34 @@ class hr_job(osv.osv):
_columns = {
'survey_id': fields.many2one('survey', 'Interview Form', help="Choose an interview form for this job position and you will be able to print/answer this interview from all applicants who apply for this job"),
'alias_id': fields.many2one('mail.alias', 'Alias', ondelete="cascade", required=True,
- help="The email address associated with this job position. New emails received will automatically "
- "create new applicants for this job."),
+ help="Email alias for this job position. New emails will automatically "
+ "create new applicants for this job position."),
}
+
+ def init(self, cr):
+ # Installation hook to create aliases for all jobs, right after _auto_init
+ registry = RegistryManager.get(cr.dbname)
+ mail_alias = registry.get('mail.alias')
+ hr_job = registry.get('hr.job')
+ 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)
+ 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'])
+
+ # 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')
if not vals.get('alias_id'):
- name = vals.get('alias_name') or vals['name']
+ name = vals.pop('alias_name', None) or vals['name']
alias_id = alias_pool.create_unique_alias(cr, uid,
{'alias_name': "job_"+name},
model_name="hr.applicant",
diff --git a/addons/hr_recruitment/hr_recruitment_view.xml b/addons/hr_recruitment/hr_recruitment_view.xml
index 222341041d3..06e9ac93857 100644
--- a/addons/hr_recruitment/hr_recruitment_view.xml
+++ b/addons/hr_recruitment/hr_recruitment_view.xml
@@ -348,11 +348,13 @@
attrs="{'invisible':[('survey_id','=',False)]}"/>
-
+
- @
+
+
+ @
-
+
diff --git a/addons/mail/mail_alias.py b/addons/mail/mail_alias.py
index 9aefd5a94d4..807ed5dbe61 100644
--- a/addons/mail/mail_alias.py
+++ b/addons/mail/mail_alias.py
@@ -80,7 +80,7 @@ class mail_alias(osv.Model):
}
_sql_constraints = [
- ('mailbox_uniq', 'UNIQUE(alias_name)', 'Unfortunately this mail alias is already used, please choose a unique one')
+ ('alias_unique', 'UNIQUE(alias_name)', 'Unfortunately this email alias is already used, please choose a unique one')
]
def _check_alias_defaults(self, cr, uid, ids, context=None):
diff --git a/addons/mail/res_config.py b/addons/mail/res_config.py
index 3670ddf1f82..ce2f75687ba 100644
--- a/addons/mail/res_config.py
+++ b/addons/mail/res_config.py
@@ -2,7 +2,7 @@
##############################################################################
#
# OpenERP, Open Source Management Solution
-# Copyright (C) 2010-Today OpenERP SA ()
+# Copyright (C) 2012-Today OpenERP SA ()
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -25,8 +25,8 @@ class project_configuration(osv.TransientModel):
_inherit = 'base.config.settings'
_columns = {
- 'alias_domain' : fields.char('Alias Domain', size=None,
- help="If you have setup a catch-all mail domain redirected to "
+ 'alias_domain' : fields.char('Alias Domain',
+ help="If you have setup a catch-all email domain redirected to "
"the OpenERP server, enter the domain name here."),
}
diff --git a/addons/mail/res_config_view.xml b/addons/mail/res_config_view.xml
index 6dec5ec9583..a17a1f22a80 100644
--- a/addons/mail/res_config_view.xml
+++ b/addons/mail/res_config_view.xml
@@ -7,8 +7,10 @@
form
-
-
+
+
+
+
diff --git a/addons/mail/res_users.py b/addons/mail/res_users.py
index cad2734d672..f0b987b369f 100644
--- a/addons/mail/res_users.py
+++ b/addons/mail/res_users.py
@@ -73,13 +73,13 @@ class res_users(osv.osv):
mail_alias = registry.get('mail.alias')
res_users = registry.get('res.users')
users_no_alias = res_users.search(cr, SUPERUSER_ID, [('alias_id', '=', False)])
- # User read() not browse(), to avoid prefetching uninitialized inherited fields
+ # Use read() not browse(), to avoid prefetching uninitialized inherited fields
for user_data in res_users.read(cr, SUPERUSER_ID, users_no_alias, ['login']):
alias_id = mail_alias.create_unique_alias(cr, SUPERUSER_ID, {'alias_name': user_data['login'],
- 'alias_model_id': self._name,
- 'alias_force_id': user_data['id']})
+ 'alias_force_id': user_data['id']},
+ model_name=self._name)
res_users.write(cr, SUPERUSER_ID, user_data['id'], {'alias_id': alias_id})
- _logger.info('Mail alias created for user_data %s (uid %s)', user_data['login'], user_data['id'])
+ _logger.info('Mail alias created for user %s (uid %s)', user_data['login'], user_data['id'])
# Finally attempt to reinstate the missing constraint
try:
diff --git a/addons/project/project.py b/addons/project/project.py
index e2a9a49e9ed..0af02cdf6b9 100644
--- a/addons/project/project.py
+++ b/addons/project/project.py
@@ -58,8 +58,8 @@ def short_name(name):
but distinctive"""
if not name: return name
# keep 7 chars + end of the last word
- hardcut_tokens = name[:7].split()
- return ' '.join(name.split()[:len(hardcut_tokens)])
+ keep_words = name[:7].strip().split()
+ return ' '.join(name.split()[:len(keep_words)])
class project(osv.osv):
_name = "project.project"
diff --git a/addons/project/project_view.xml b/addons/project/project_view.xml
index 3711c84f135..09a6bf20631 100644
--- a/addons/project/project_view.xml
+++ b/addons/project/project_view.xml
@@ -82,6 +82,7 @@