[IMP] Add one alias for all jobs in the hr config view and related changes
bzr revid: tpa@tinyerp.com-20130527133237-s1s1ifi8cg3l1a07
This commit is contained in:
parent
da476860dd
commit
0365283243
|
@ -112,7 +112,7 @@ class hr_job(osv.osv):
|
|||
},
|
||||
multi='no_of_employee'),
|
||||
'no_of_recruitment': fields.float('Expected New Employee', help='Number of new employees you expect to recruit.'),
|
||||
'no_of_hired_employee':fields.float('Hired Employee', help='Number of hired employees.'),
|
||||
'no_of_hired_employee':fields.float('Hired Employee', help='Number of hired employees during this recruitment phase.'),
|
||||
'employee_ids': fields.one2many('hr.employee', 'job_id', 'Employees', groups='base.group_user'),
|
||||
'description': fields.text('Job Description'),
|
||||
'requirements': fields.text('Requirements'),
|
||||
|
|
|
@ -482,7 +482,6 @@ class hr_applicant(base_stage, osv.Model):
|
|||
|
||||
def get_empty_list_help(self, cr, uid, help, context=None):
|
||||
context['empty_list_help_model'] = 'hr.job'
|
||||
context['empty_list_help_id'] = context.get('default_job_id', None)
|
||||
context['empty_list_help_document_name'] = _("job applicants")
|
||||
return super(hr_applicant, self).get_empty_list_help(cr, uid, help, context=context)
|
||||
|
||||
|
@ -490,7 +489,6 @@ class hr_applicant(base_stage, osv.Model):
|
|||
class hr_job(osv.osv):
|
||||
_inherit = "hr.job"
|
||||
_name = "hr.job"
|
||||
_inherits = {'mail.alias': 'alias_id'}
|
||||
|
||||
def _application_count(self, cr, uid, ids, field_name, arg, context=None):
|
||||
"""Calculate total Applications per job"""
|
||||
|
@ -501,47 +499,22 @@ class hr_job(osv.osv):
|
|||
res[applicant.job_id.id] += 1
|
||||
return res
|
||||
|
||||
def _job_alias(self, cr, uid, ids, field_name, arg, context=None):
|
||||
res = dict.fromkeys(ids, False)
|
||||
mail_alias = self.pool.get('mail.alias')
|
||||
model_ids = self.pool.get('ir.model').search(cr, uid, [('model', '=', 'hr.applicant')], context=context)
|
||||
alias_ids = mail_alias.search(cr, uid, [('alias_model_id', '=', model_ids[0])], context=context)
|
||||
if alias_ids:
|
||||
for id in ids:
|
||||
res[id] = alias_ids[0]
|
||||
return res
|
||||
|
||||
_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="Email alias for this job position. New emails will automatically "
|
||||
"create new applicants for this job position."),
|
||||
'application_count': fields.function(_application_count, type='integer', string="Total Applications"),
|
||||
'manager_id': fields.related('department_id', 'manager_id', type='many2one', string='Department Manager', relation='hr.employee', readonly=True, store=True),
|
||||
'alias_prefix': fields.char("Alias Name Prefix For Jobs",help="Default Prefix for Alias name of jobs"),
|
||||
'job_alias': fields.function(_job_alias, type='many2one', relation='mail.alias', string='Mail Alias'),
|
||||
}
|
||||
_defaults = {
|
||||
'alias_domain': False, # always hide alias during creation
|
||||
}
|
||||
|
||||
def _auto_init(self, cr, context=None):
|
||||
"""Installation hook to create aliases for all jobs and avoid constraint errors."""
|
||||
res = self.pool.get('mail.alias').migrate_to_alias(cr, self._name, self._table, super(hr_job,self)._auto_init,
|
||||
self._columns['alias_id'], 'name', alias_prefix='job+', alias_defaults={'job_id': 'id'}, context=context)
|
||||
return res
|
||||
|
||||
def create(self, cr, uid, vals, context=None):
|
||||
mail_alias = self.pool.get('mail.alias')
|
||||
if not vals.get('alias_id'):
|
||||
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': vals['alias_prefix']+'+'+vals['name']},
|
||||
model_name="hr.applicant",
|
||||
context=context)
|
||||
vals['alias_id'] = alias_id
|
||||
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):
|
||||
# Cascade-delete mail aliases as well, as they should not exist without the job position.
|
||||
mail_alias = self.pool.get('mail.alias')
|
||||
alias_ids = [job.alias_id.id for job in self.browse(cr, uid, ids, context=context) if job.alias_id]
|
||||
res = super(hr_job, self).unlink(cr, uid, ids, context=context)
|
||||
mail_alias.unlink(cr, uid, alias_ids, context=context)
|
||||
return res
|
||||
|
||||
def action_print_survey(self, cr, uid, ids, context=None):
|
||||
if context is None:
|
||||
|
|
|
@ -312,20 +312,6 @@
|
|||
attrs="{'invisible':[('survey_id','=',False)]}"/>
|
||||
</div>
|
||||
</field>
|
||||
<xpath expr="//div[@class='oe_title']//h1" position="after">
|
||||
<div name="group_alias"
|
||||
attrs="{'invisible': [('alias_domain', '=', False)]}">
|
||||
<label for="alias_id" string="Email Alias"/>
|
||||
<field name="alias_id" class="oe_inline oe_read_only" required="0" nolabel="1"/>
|
||||
<field name="alias_prefix" invisible="1"/>
|
||||
<span name="edit_alias" class="oe_edit_only">
|
||||
<field name="alias_name" class="oe_inline"
|
||||
attrs="{'required': [('alias_id', '!=', False)]}"/>
|
||||
@
|
||||
<field name="alias_domain" class="oe_inline" readonly="1"/>
|
||||
</span>
|
||||
</div>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
@ -368,8 +354,8 @@
|
|||
</div>
|
||||
<div class = "oe_kanban_content">
|
||||
<h3 class="oe_kanban_ellipsis"><field name="name"/></h3>
|
||||
<div class="oe_kanban_alias" t-if=" record.alias_id.value">
|
||||
<span class="oe_e">%%</span><small><field name="alias_id"/></small>
|
||||
<div class="oe_kanban_alias" t-if=" record.job_alias.value">
|
||||
<span class="oe_e">%%</span><small><field name="job_alias"/></small>
|
||||
</div>
|
||||
<div class="oe_department">
|
||||
<div class="oe_job oe_kanban_ellipsis">
|
||||
|
|
|
@ -33,6 +33,36 @@ class hr_applicant_settings(osv.osv_memory):
|
|||
fetchmail_model='hr.applicant', fetchmail_name='Incoming HR Applications',
|
||||
help ="""Allow applicants to send their job application to an email address (jobs@mycompany.com),
|
||||
and create automatically application documents in the system."""),
|
||||
'default_alias_prefix': fields.char('Default Alias Prefix for Jobs', default_model='hr.job'),
|
||||
'alias_prefix': fields.char('Default Alias Name for Jobs'),
|
||||
'alias_domain' : fields.char('Alias Domain'),
|
||||
}
|
||||
|
||||
def get_default_alias_prefix(self, cr, uid, ids, context=None):
|
||||
alias_name = ''
|
||||
mail_alias = self.pool.get('mail.alias')
|
||||
model_ids = self.pool.get('ir.model').search(cr, uid, [('model', '=', 'hr.applicant')], context=context)
|
||||
alias_ids = mail_alias.search(cr, uid, [('alias_model_id', '=', model_ids[0])], context=context)
|
||||
if alias_ids:
|
||||
alias_name = mail_alias.browse(cr, uid, alias_ids[0], context=context).alias_name
|
||||
return {'alias_prefix': alias_name}
|
||||
|
||||
def set_default_alias_prefix(self, cr, uid, ids, context=None):
|
||||
mail_alias = self.pool.get('mail.alias')
|
||||
record = self.browse(cr, uid, ids[0], context=context)
|
||||
if record.alias_prefix:
|
||||
model_ids = self.pool.get('ir.model').search(cr, uid, [('model', '=', 'hr.applicant')], context=context)
|
||||
alias_ids = mail_alias.search(cr, uid, [('alias_model_id', '=', model_ids[0])], context=context)
|
||||
if alias_ids:
|
||||
mail_alias.write(cr, uid, alias_ids[0],{'alias_name': record.alias_prefix}, context=context)
|
||||
else:
|
||||
mail_alias.create_unique_alias(cr, uid, {'alias_name': record.alias_prefix}, model_name="hr.applicant", context=context)
|
||||
|
||||
def get_default_alias_domain(self, cr, uid, ids, context=None):
|
||||
alias_domain = self.pool.get("ir.config_parameter").get_param(cr, uid, "mail.catchall.domain", context=context)
|
||||
if not alias_domain:
|
||||
domain = self.pool.get("ir.config_parameter").get_param(cr, uid, "web.base.url", context=context)
|
||||
try:
|
||||
alias_domain = urlparse.urlsplit(domain).netloc.split(':')[0]
|
||||
except Exception:
|
||||
pass
|
||||
return {'alias_domain': alias_domain}
|
|
@ -26,9 +26,11 @@
|
|||
</div>
|
||||
</div>
|
||||
<xpath expr="//div/div[@name='hr_recruitment']" position="after">
|
||||
<div attrs="{'invisible': [('module_hr_recruitment','=',False)]}">
|
||||
<label for="default_alias_prefix"/>
|
||||
<field name="default_alias_prefix" class="oe_inline"/>
|
||||
<div attrs="{'invisible': ['|',('module_hr_recruitment','=',False),('alias_domain', '=', False)]}">
|
||||
<label string="Alias for Jobs"/>
|
||||
<field name="alias_prefix" class="oe_inline" attrs="{'required': [('alias_domain', '!=', False)]}"/>
|
||||
@
|
||||
<field name="alias_domain" class="oe_inline" readonly="1"/>
|
||||
</div>
|
||||
</xpath>
|
||||
</field>
|
||||
|
|
Loading…
Reference in New Issue