diff options
| author | Romain Derie <rde@odoo.com> | 2018-10-02 16:14:42 +0000 |
|---|---|---|
| committer | Romain Derie <rde@odoo.com> | 2018-10-11 17:08:20 +0000 |
| commit | 47406d6e5d104ebcdf6cb05b73203563b27c3c37 (patch) | |
| tree | 9d2cf9f38d6bc6913624252f6a66e67e72d46e59 | |
| parent | 76cc621c1d85cd6eb3f3c8793a8f232f4a7b9056 (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.py | 2 | ||||
| -rw-r--r-- | addons/website_hr/views/hr_employee_views.xml | 13 | ||||
| -rw-r--r-- | addons/website_hr/views/website_hr_templates.xml | 3 | ||||
| -rw-r--r-- | addons/website_hr_recruitment/controllers/main.py | 14 | ||||
| -rw-r--r-- | addons/website_hr_recruitment/views/hr_recruitment_views.xml | 23 |
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 |
