summaryrefslogtreecommitdiff
path: root/addons/website_hr_recruitment/models
diff options
context:
space:
mode:
authorstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
committerstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
commit3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch)
treea44932296ef4a9b71d5f010906253d8c53727726 /addons/website_hr_recruitment/models
parent0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff)
initial commit 2
Diffstat (limited to 'addons/website_hr_recruitment/models')
-rw-r--r--addons/website_hr_recruitment/models/__init__.py5
-rw-r--r--addons/website_hr_recruitment/models/hr_recruitment.py66
-rw-r--r--addons/website_hr_recruitment/models/website.py14
3 files changed, 85 insertions, 0 deletions
diff --git a/addons/website_hr_recruitment/models/__init__.py b/addons/website_hr_recruitment/models/__init__.py
new file mode 100644
index 00000000..dad12c93
--- /dev/null
+++ b/addons/website_hr_recruitment/models/__init__.py
@@ -0,0 +1,5 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from . import hr_recruitment
+from . import website
diff --git a/addons/website_hr_recruitment/models/hr_recruitment.py b/addons/website_hr_recruitment/models/hr_recruitment.py
new file mode 100644
index 00000000..8f47ef3c
--- /dev/null
+++ b/addons/website_hr_recruitment/models/hr_recruitment.py
@@ -0,0 +1,66 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from werkzeug import urls
+
+from odoo import api, fields, models
+from odoo.tools.translate import html_translate
+
+
+class RecruitmentSource(models.Model):
+ _inherit = 'hr.recruitment.source'
+
+ url = fields.Char(compute='_compute_url', string='Url Parameters')
+
+ @api.depends('source_id', 'source_id.name', 'job_id')
+ def _compute_url(self):
+ base_url = self.env['ir.config_parameter'].sudo().get_param('web.base.url')
+ for source in self:
+ source.url = urls.url_join(base_url, "%s?%s" % (source.job_id.website_url,
+ urls.url_encode({
+ 'utm_campaign': self.env.ref('hr_recruitment.utm_campaign_job').name,
+ 'utm_medium': self.env.ref('utm.utm_medium_website').name,
+ 'utm_source': source.source_id.name
+ })
+ ))
+
+
+class Applicant(models.Model):
+
+ _inherit = 'hr.applicant'
+
+ def website_form_input_filter(self, request, values):
+ if 'partner_name' in values:
+ values.setdefault('name', '%s\'s Application' % values['partner_name'])
+ if values.get('job_id'):
+ stage = self.env['hr.recruitment.stage'].sudo().search([
+ ('fold', '=', False),
+ '|', ('job_ids', '=', False), ('job_ids', '=', values['job_id']),
+ ], order='sequence asc', limit=1)
+ if stage:
+ values['stage_id'] = stage.id
+ return values
+
+
+class Job(models.Model):
+
+ _name = 'hr.job'
+ _inherit = ['hr.job', 'website.seo.metadata', 'website.published.multi.mixin']
+
+ def _get_default_website_description(self):
+ default_description = self.env["ir.model.data"].xmlid_to_object("website_hr_recruitment.default_website_description")
+ return (default_description._render() if default_description else "")
+
+ website_description = fields.Html('Website description', translate=html_translate, sanitize_attributes=False, default=_get_default_website_description, prefetch=False, sanitize_form=False)
+
+ def _compute_website_url(self):
+ super(Job, self)._compute_website_url()
+ for job in self:
+ job.website_url = "/jobs/detail/%s" % job.id
+
+ def set_open(self):
+ self.write({'website_published': False})
+ return super(Job, self).set_open()
+
+ def get_backend_menu_id(self):
+ return self.env.ref('hr_recruitment.menu_hr_recruitment_root').id
diff --git a/addons/website_hr_recruitment/models/website.py b/addons/website_hr_recruitment/models/website.py
new file mode 100644
index 00000000..5a2cd5d3
--- /dev/null
+++ b/addons/website_hr_recruitment/models/website.py
@@ -0,0 +1,14 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from odoo import models, _
+from odoo.addons.http_routing.models.ir_http import url_for
+
+
+class Website(models.Model):
+ _inherit = "website"
+
+ def get_suggested_controllers(self):
+ suggested_controllers = super(Website, self).get_suggested_controllers()
+ suggested_controllers.append((_('Jobs'), url_for('/jobs'), 'website_hr_recruitment'))
+ return suggested_controllers