fb259ed1a19dde4eb5fbd4ceae9c5954cf87d8c4
[odoo/odoo.git] / addons / website_hr_recruitment / controllers / main.py
1 # -*- coding: utf-8 -*-
2 from openerp.addons.web import http
3 from openerp import SUPERUSER_ID
4 from openerp.addons.web.http import request
5 from openerp.addons.website import website
6 import base64
7 import simplejson
8
9 from urllib import quote_plus
10
11 class website_hr_recruitment(http.Controller):
12
13     @website.route(['/jobs'], type='http', auth="public")
14     def jobs(self, **post):
15         website = request.registry['website']
16         hr_job_obj = request.registry['hr.job']
17
18         domain = [(1, '=', 1)] or [('website_published', '=', True)]
19         search = [("state", 'in', ['recruit', 'open'])]
20         domain += search
21
22         jobpost_ids = hr_job_obj.search(request.cr, request.uid, domain)
23         request.cr.execute("select distinct(com.id) from hr_job job, res_company com where com.id=job.company_id")
24         ids = []
25         for i in request.cr.fetchall():
26             ids.append(i[0])
27         companies = request.registry['res.company'].browse(request.cr, request.uid, ids)
28         vals = {}
29         for rec in hr_job_obj.browse(request.cr, request.uid, jobpost_ids):
30             vals[rec.id] = {'count': int(rec.no_of_recruitment), 'date_recruitment': rec.write_date.split(' ')[0]}
31         values = {
32             'companies': companies,
33             'res_job': hr_job_obj.browse(request.cr, request.uid, jobpost_ids),
34             'vals': vals,
35             'no_of_jobs': len(hr_job_obj.browse(request.cr, request.uid, jobpost_ids)),
36         }
37         return request.webcontext.render("website_hr_recruitment.index", values)
38
39     @website.route(['/job/detail/<id>'], type='http', auth="public")
40     def detail(self, id=0):
41         id = id and int(id) or 0
42         website = request.registry['website']
43         values = {
44             'job': request.registry['hr.job'].browse(request.cr, request.uid, id)
45         }
46         return request.webcontext.render("website_hr_recruitment.detail", values)
47
48     @website.route(['/job/success'], type='http', auth="admin")
49     def success(self, **post):
50         id = request.registry['hr.applicant'].create(request.cr, request.uid, post)
51         if post['ufile']:
52             attachment_values = {
53                 'name': post['ufile'].filename,
54                 'datas': base64.encodestring(post['ufile'].read()),
55                 'datas_fname': post['ufile'].filename,
56                 'res_model': 'hr.applicant',
57                 'res_name': post['name'],
58                 'res_id': id
59                 }
60             request.registry['ir.attachment'].create(request.cr, request.uid, attachment_values)
61         website = request.registry['website']
62         values = {
63                 'jobid': post['job_id']
64            }
65         return request.webcontext.render("website_hr_recruitment.thankyou", values)
66
67     @website.route('/recruitment/message_get_subscribed', type='json', auth="admin")
68     def message_get_subscribed(self, email, id, mail_group_id):
69         id = int(id)
70         mail_group_id = int(mail_group_id)
71         group_obj = request.registry['mail.group']
72         partner_obj = request.registry['res.partner']
73         partner_ids = partner_obj.search(request.cr, SUPERUSER_ID, [("email", "=", email)])
74         if not partner_ids:
75             partner_ids = [partner_obj.create(request.cr, SUPERUSER_ID, {"email": email, "name": "Subscribe: %s" % email})]
76         group_obj.check_access_rule(request.cr, request.uid, [mail_group_id], 'read')
77         group_obj.message_subscribe(request.cr, SUPERUSER_ID, [mail_group_id], partner_ids)
78         return 1
79
80     @website.route('/recruitment/message_get_unsubscribed', type='json', auth="admin")
81     def message_get_unsubscribed(self, email, id, mail_group_id):
82         mail_group_id = int(mail_group_id)
83         id = int(id)
84         partner_obj = request.registry['res.partner']
85         group_obj = request.registry['mail.group']
86         partner_ids = partner_obj.search(request.cr, SUPERUSER_ID, [("email", "=", email)])
87         group_obj.check_access_rule(request.cr, request.uid, [mail_group_id], 'read')
88         group_obj.message_unsubscribe(request.cr, SUPERUSER_ID, [mail_group_id], partner_ids)
89         return 1
90
91     @website.route('/recruitment/published', type='json', auth="admin")
92     def published (self, **post):
93         hr_job = request.registry['hr.job']
94         id = int(post['id'])
95         rec = hr_job.browse(request.cr, request.uid, id)
96         vals = {}
97
98         if rec.website_published:
99             vals['state'] = 'recruit'
100             if rec.no_of_recruitment == 0.0:
101                 vals ['no_of_recruitment'] = 1.0
102         else:
103             vals['state'] = 'open'
104             vals ['no_of_recruitment'] = 0.0
105
106         res = hr_job.write(request.cr, request.uid, [rec.id], vals)
107         obj = hr_job.browse(request.cr, request.uid, id)
108         return { 'count': obj.no_of_recruitment, 'state': obj.state, 'published': obj.website_published }
109 # vim:expandtab:tabstop=4:softtabstop=4:shiftwidth=4: