summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRomain Derie <rde@odoo.com>2018-10-02 16:14:42 +0000
committerRomain Derie <rde@odoo.com>2018-10-11 17:08:20 +0000
commit47406d6e5d104ebcdf6cb05b73203563b27c3c37 (patch)
tree9d2cf9f38d6bc6913624252f6a66e67e72d46e59
parent76cc621c1d85cd6eb3f3c8793a8f232f4a7b9056 (diff)
[FIX] website_hr(_recruitment): make website specific
As commit 066cfc9598a30 did for other website_module, this commit make theses 2 modules multi-website compatible. Mostly by: - Adding website_id in form/list views - Preventing routes from being accessed by wrong website (only needed for admin as portal users will get a 403) - Adapt search([]) with multi website domain - Add domain in model converter in routes for URL autocomplete (eg menu URL) Note that it is not needed for sitemap.xml closes odoo/odoo#27528
-rw-r--r--addons/website_forum/controllers/main.py2
-rw-r--r--addons/website_hr/views/hr_employee_views.xml13
-rw-r--r--addons/website_hr/views/website_hr_templates.xml3
-rw-r--r--addons/website_hr_recruitment/controllers/main.py14
-rw-r--r--addons/website_hr_recruitment/views/hr_recruitment_views.xml23
5 files changed, 50 insertions, 5 deletions
diff --git a/addons/website_forum/controllers/main.py b/addons/website_forum/controllers/main.py
index dd3606ca727..db85837d780 100644
--- a/addons/website_forum/controllers/main.py
+++ b/addons/website_forum/controllers/main.py
@@ -81,7 +81,7 @@ class WebsiteForum(http.Controller):
@http.route(['/forum'], type='http', auth="public", website=True)
def forum(self, **kwargs):
- domain = request.website.get_current_website().website_domain()
+ domain = request.website.website_domain()
forums = request.env['forum.forum'].search(domain)
if len(forums) == 1:
return werkzeug.utils.redirect('/forum/%s' % slug(forums[0]), code=302)
diff --git a/addons/website_hr/views/hr_employee_views.xml b/addons/website_hr/views/hr_employee_views.xml
index 702bad88009..e48c6e6b38d 100644
--- a/addons/website_hr/views/hr_employee_views.xml
+++ b/addons/website_hr/views/hr_employee_views.xml
@@ -17,6 +17,19 @@
<field name="public_info"/>
</group>
</xpath>
+ <field name="company_id" position="after">
+ <field name="website_id" options="{'no_create': True}" groups="website.group_multi_website"/>
+ </field>
+ </field>
+ </record>
+ <record id="view_employee_tree_inherit_website" model="ir.ui.view">
+ <field name="name">hr.employee.tree.inherit</field>
+ <field name="model">hr.employee</field>
+ <field name="inherit_id" ref="hr.view_employee_tree"/>
+ <field name="arch" type="xml">
+ <field name="company_id" position="after">
+ <field name="website_id" groups="website.group_multi_website"/>
+ </field>
</field>
</record>
diff --git a/addons/website_hr/views/website_hr_templates.xml b/addons/website_hr/views/website_hr_templates.xml
index 15beed09fa6..2cf58cbc98c 100644
--- a/addons/website_hr/views/website_hr_templates.xml
+++ b/addons/website_hr/views/website_hr_templates.xml
@@ -11,8 +11,9 @@
<xpath expr="//div[hasclass('oe_structure')]" position="after">
<section class="pt32 pb32" id="team">
<t t-set="is_publisher" t-value="request.env['res.users'].has_group('website.group_website_publisher')" />
+ <t t-set="multiwebsite_domain" t-value="request.website.website_domain()"/>
<t t-set="employees_domain" t-value="[] if is_publisher else [('website_published', '=', True)]" />
- <t t-set="employees" t-value="request.env['hr.employee'].search(employees_domain)" />
+ <t t-set="employees" t-value="request.env['hr.employee'].search(employees_domain + multiwebsite_domain)" />
<div class="container" t-if="len(employees)">
<div class="row">
<div class="col-lg-12 text-center">
diff --git a/addons/website_hr_recruitment/controllers/main.py b/addons/website_hr_recruitment/controllers/main.py
index 8198e65f293..9cce2a36846 100644
--- a/addons/website_hr_recruitment/controllers/main.py
+++ b/addons/website_hr_recruitment/controllers/main.py
@@ -4,6 +4,7 @@
from odoo import http, _
from odoo.addons.http_routing.models.ir_http import slug
from odoo.http import request
+from werkzeug.exceptions import NotFound
class WebsiteHrRecruitment(http.Controller):
@@ -28,7 +29,8 @@ class WebsiteHrRecruitment(http.Controller):
Jobs = env['hr.job']
# List jobs available to current UID
- job_ids = Jobs.search([], order="website_published desc,no_of_recruitment desc").ids
+ domain = request.website.website_domain()
+ job_ids = Jobs.search(domain, order="website_published desc,no_of_recruitment desc").ids
# Browse jobs as superuser, because address is restricted
jobs = Jobs.sudo().browse(job_ids)
@@ -78,15 +80,21 @@ class WebsiteHrRecruitment(http.Controller):
})
return request.redirect("/jobs/detail/%s?enable_editor=1" % slug(job))
- @http.route('/jobs/detail/<model("hr.job"):job>', type='http', auth="public", website=True)
+ @http.route('''/jobs/detail/<model("hr.job", "[('website_id', 'in', (False, current_website_id))]"):job>''', type='http', auth="public", website=True)
def jobs_detail(self, job, **kwargs):
+ if not job.can_access_from_current_website():
+ raise NotFound()
+
return request.render("website_hr_recruitment.detail", {
'job': job,
'main_object': job,
})
- @http.route('/jobs/apply/<model("hr.job"):job>', type='http', auth="public", website=True)
+ @http.route('''/jobs/apply/<model("hr.job", "[('website_id', 'in', (False, current_website_id))]"):job>''', type='http', auth="public", website=True)
def jobs_apply(self, job, **kwargs):
+ if not job.can_access_from_current_website():
+ raise NotFound()
+
error = {}
default = {}
if 'website_hr_recruitment_error' in request.session:
diff --git a/addons/website_hr_recruitment/views/hr_recruitment_views.xml b/addons/website_hr_recruitment/views/hr_recruitment_views.xml
index 5bc5ba457cd..b74351b389a 100644
--- a/addons/website_hr_recruitment/views/hr_recruitment_views.xml
+++ b/addons/website_hr_recruitment/views/hr_recruitment_views.xml
@@ -24,4 +24,27 @@
</div>
</field>
</record>
+
+ <record id="view_hr_job_form_inherit_website" model="ir.ui.view">
+ <field name="name">hr.job.form</field>
+ <field name="model">hr.job</field>
+ <field name="inherit_id" ref="hr.view_hr_job_form"/>
+ <field name="arch" type="xml">
+ <field name="company_id" position="after">
+ <field name="website_id" options="{'no_create': True}" groups="website.group_multi_website"/>
+ </field>
+ </field>
+ </record>
+
+ <record id="view_hr_job_tree_inherit_website" model="ir.ui.view">
+ <field name="name">hr.job.tree</field>
+ <field name="model">hr.job</field>
+ <field name="inherit_id" ref="hr.view_hr_job_tree"/>
+ <field name="arch" type="xml">
+ <field name="department_id" position="after">
+ <field name="website_id" groups="website.group_multi_website"/>
+ </field>
+ </field>
+ </record>
+
</odoo> \ No newline at end of file