diff --git a/addons/hr_skills/__manifest__.py b/addons/hr_skills/__manifest__.py index 28381984c50..e67ef2d670d 100644 --- a/addons/hr_skills/__manifest__.py +++ b/addons/hr_skills/__manifest__.py @@ -23,6 +23,7 @@ This module introduces skills and resume management for employees. 'data/hr_resume_data.xml', 'data/hr_skill_data.xml', 'data/ir_actions_server_data.xml', + 'data/report_paperformat.xml', 'report/hr_employee_skill_report_views.xml', 'report/hr_employee_cv_report.xml', 'views/hr_department_views.xml', diff --git a/addons/hr_skills/controllers/main.py b/addons/hr_skills/controllers/main.py index 76ed039f92c..75c6382b398 100644 --- a/addons/hr_skills/controllers/main.py +++ b/addons/hr_skills/controllers/main.py @@ -4,13 +4,14 @@ import re from odoo import _ + from odoo.http import request, route, Controller, content_disposition class HrEmployeeCV(Controller): @route(["/print/cv"], type='http', auth='user') - def print_employee_cv(self, employee_ids='', color='#42a8c0', side_panel_position='right', **post): + def print_employee_cv(self, employee_ids='', color_primary='#666666', color_secondary='#666666', **post): if not request.env.user.has_group('base.group_user') or not employee_ids or re.search("[^0-9|,]", employee_ids): return request.not_found() @@ -23,18 +24,22 @@ class HrEmployeeCV(Controller): skill_type_language = request.env.ref('hr_skills.hr_skill_type_lang', raise_if_not_found=False) report = request.env.ref('hr_skills.action_report_employee_cv', False) + pdf_content, dummy = request.env['ir.actions.report'].sudo()._render_qweb_pdf( report, employees.ids, data={ - 'color': color, - 'side_panel_position': side_panel_position, + 'color_primary': color_primary, + 'color_secondary': color_secondary, 'resume_type_education': resume_type_education, 'skill_type_language': skill_type_language, + 'show_skills': 'show_skills' in post, + 'show_contact': 'show_contact' in post, + 'show_others': 'show_others' in post, }) if len(employees) == 1: - report_name = _('CV %s', employees.name) + report_name = _('Resume %s', employees.name) else: - report_name = _('CV Book') + report_name = _('Resumes') pdfhttpheaders = [ ('Content-Type', 'application/pdf'), diff --git a/addons/hr_skills/data/ir_actions_server_data.xml b/addons/hr_skills/data/ir_actions_server_data.xml index 0c1260b5f25..3cfb4bffc18 100644 --- a/addons/hr_skills/data/ir_actions_server_data.xml +++ b/addons/hr_skills/data/ir_actions_server_data.xml @@ -25,10 +25,11 @@ action['domain'] = [('department_id', '=', record.id)] - Print CV + Print Resume list,form + report code action = env['ir.actions.act_window']._for_xml_id('hr_skills.action_hr_employee_cv_wizard') diff --git a/addons/hr_skills/data/report_paperformat.xml b/addons/hr_skills/data/report_paperformat.xml new file mode 100644 index 00000000000..01dd1144fc4 --- /dev/null +++ b/addons/hr_skills/data/report_paperformat.xml @@ -0,0 +1,16 @@ + + + + Resume + + A4 + Portrait + 12 + 12 + 5 + 5 + + 20 + 90 + + diff --git a/addons/hr_skills/report/__init__.py b/addons/hr_skills/report/__init__.py index 48e5c625b0d..e9547892258 100644 --- a/addons/hr_skills/report/__init__.py +++ b/addons/hr_skills/report/__init__.py @@ -1,3 +1,4 @@ # Part of Odoo. See LICENSE file for full copyright and licensing details. +from . import hr_employee_cv_report from . import hr_employee_skill_report diff --git a/addons/hr_skills/report/hr_employee_cv_report.py b/addons/hr_skills/report/hr_employee_cv_report.py new file mode 100644 index 00000000000..df59da34139 --- /dev/null +++ b/addons/hr_skills/report/hr_employee_cv_report.py @@ -0,0 +1,28 @@ +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from collections import defaultdict + +from odoo import _, models + +class EmployeeResumeReport(models.AbstractModel): + _name = 'report.hr_skills.report_employee_cv' + _description = 'Employee Resume' + + def _get_report_values(self, docids, data=None): + show_others = (data or {}).get('show_others') + employees = self.env['hr.employee'].browse(docids) + + resume_lines = {} + for employee in employees: + resume_lines[employee] = defaultdict(self.env['hr.resume.line'].browse) + for line in employee.resume_line_ids: + if not show_others and not line.line_type_id: + continue + resume_lines[employee][line.line_type_id.name or _('Other')] |= line + + return { + 'doc_ids': docids, + 'doc_model': 'hr.employee', + 'docs': employees, + 'resume_lines': resume_lines, + } diff --git a/addons/hr_skills/report/hr_employee_cv_report.xml b/addons/hr_skills/report/hr_employee_cv_report.xml index 9d423d98067..a4d638b0aa3 100644 --- a/addons/hr_skills/report/hr_employee_cv_report.xml +++ b/addons/hr_skills/report/hr_employee_cv_report.xml @@ -1,11 +1,12 @@ - Employee CV + Employee Resume hr.employee qweb-pdf hr_skills.report_employee_cv hr_skills.report_employee_cv + 'CV - %s' % (object.name) report diff --git a/addons/hr_skills/static/src/scss/report_employee_cv.scss b/addons/hr_skills/static/src/scss/report_employee_cv.scss index 25787a2e4ff..a0e8eb886cf 100644 --- a/addons/hr_skills/static/src/scss/report_employee_cv.scss +++ b/addons/hr_skills/static/src/scss/report_employee_cv.scss @@ -23,8 +23,8 @@ div.o_employee_cv { line-height: 1.5; } - &:not(:first-child) .o_new_page { - page-break-before: always; + &:not(:last-child) .o_new_page { + page-break-after: always; } .o_sidebar { @@ -42,6 +42,7 @@ div.o_employee_cv { .o_profile { padding: 30px; + padding-top: 15px; background: rgba(0, 0, 0, 0.2); text-align: center; color: #fff; @@ -183,10 +184,6 @@ div.o_employee_cv { } - .o_main_panel_section:not(:last-of-type) { - margin-bottom: 60px; - } - .o_main_panel_resume_title { position: relative; overflow: hidden; diff --git a/addons/hr_skills/views/hr_employee_cv_templates.xml b/addons/hr_skills/views/hr_employee_cv_templates.xml index 0f7e06cd8f3..c3203b3c54d 100644 --- a/addons/hr_skills/views/hr_employee_cv_templates.xml +++ b/addons/hr_skills/views/hr_employee_cv_templates.xml @@ -5,17 +5,10 @@
+ + +

- - - - - - - - - -

@@ -23,24 +16,26 @@