# -*- coding: utf-8 -*- from openerp.addons.web import http from openerp.tools.translate import _ from openerp.addons.web.http import request from openerp.addons.website.controllers.main import Website as controllers controllers = controllers() import base64 class website_hr_recruitment(http.Controller): @http.route([ '/jobs', '/jobs/department//office/', '/jobs/department/', '/jobs/office/' ], type='http', auth="public", website=True, multilang=True) def jobs(self, department=None, office=None): JobsObj = request.registry['hr.job'] jobpost_ids = JobsObj.search(request.cr, request.uid, [], order="website_published desc,no_of_recruitment desc", context=request.context) jobs = JobsObj.browse(request.cr, request.uid, jobpost_ids, context=dict(request.context, show_address=True, no_tag_br=True)) departments = set() offices = set() for job in jobs: if job.department_id: departments.add(job.department_id) if job.address_id: offices.add(job.address_id) if department or office: _jobs = [] for job in jobs: if (department and job.department_id.id == department.id) or \ (office and job.address_id.id == office.id): _jobs.append(job) jobs = _jobs return request.website.render("website_hr_recruitment.index", { 'jobs': jobs, 'departments': departments, 'offices': offices, 'active': department and department.id or None, 'office': office and office.id or None }) @http.route(['/job/detail/'], type='http', auth="public", website=True, multilang=True) def detail(self, job, **kwargs): return request.website.render("website_hr_recruitment.detail", { 'job': job, 'main_object': job }) @http.route(['/job/success'], methods=['POST'], type='http', auth="admin", website=True, multilang=True) def success(self, **post): data = { 'name': _('Online Form'), 'phone': post.get('phone', False), 'email_from': post.get('email_from', False), 'partner_name': post.get('partner_name', False), 'description': post.get('description', False), 'department_id': post.get('department_id', False), 'job_id': post.get('job_id', False), 'user_id': False } imd = request.registry['ir.model.data'] try: model, source_id = imd.get_object_reference(request.cr, request.uid, 'hr_recruitment', 'source_website_company') data['source_id'] = source_id except ValueError: pass jobid = request.registry['hr.applicant'].create(request.cr, request.uid, data, context=request.context) if post['ufile']: attachment_values = { 'name': post['ufile'].filename, 'datas': base64.encodestring(post['ufile'].read()), 'datas_fname': post['ufile'].filename, 'res_model': 'hr.applicant', 'res_name': data['partner_name'], 'res_id': jobid } request.registry['ir.attachment'].create(request.cr, request.uid, attachment_values, context=request.context) return request.website.render("website_hr_recruitment.thankyou", {}) @http.route(['/job/apply'], type='http', auth="public", website=True, multilang=True) def applyjobpost(self, job): [job_object] = request.registry['hr.job'].browse( request.cr, request.uid, [int(job)], context=request.context) return request.website.render("website_hr_recruitment.applyjobpost", { 'job': job_object }) @http.route('/job/add_job_offer/', type='http', auth="user", methods=['POST'], website=True, multilang=True) def add_job_offer(self, **kwargs): Job = request.registry.get('hr.job') job_id = Job.create(request.cr, request.uid, { 'name': 'New Job Offer', }, context=request.context) return request.redirect("/job/detail/%s/?enable_editor=1" % job_id)