From 6a4d0f02708a64d629dbffcb8bb072fd12503c01 Mon Sep 17 00:00:00 2001 From: bth-openerp Date: Fri, 20 Sep 2013 14:28:39 +0530 Subject: [PATCH] [IMP]View is changed like event. bzr revid: bth@tinyerp.com-20130920085839-o7jxsr7a9oa2h73o --- addons/website_hr_recruitment/controllers/main.py | 92 +++++++---- .../static/src/js/recruitment.js | 30 ---- .../views/website_hr_recruitment.xml | 162 ++++++++++---------- 3 files changed, 147 insertions(+), 137 deletions(-) diff --git a/addons/website_hr_recruitment/controllers/main.py b/addons/website_hr_recruitment/controllers/main.py index b898063..df94329 100644 --- a/addons/website_hr_recruitment/controllers/main.py +++ b/addons/website_hr_recruitment/controllers/main.py @@ -10,10 +10,12 @@ from urllib import quote_plus class website_hr_recruitment(http.Controller): - @website.route(['/jobs', '/jobs/page//'], type='http', auth="public") - def jobs(self, page=1, **post): + @website.route(['/jobs', '/jobs/page//', '/department//', '/department//page//'], type='http', auth="public") + def jobs(self, id=0, page=1, **post): + id = id and int(id) or 0 website = request.registry['website'] hr_job_obj = request.registry['hr.job'] + hr_department_obj = request.registry['hr.department'] domain = [(1, '=', 1)] or [('website_published', '=', True)] search = [("state", 'in', ['recruit', 'open'])] @@ -31,21 +33,36 @@ class website_hr_recruitment(http.Controller): step = 5 pager = request.website.pager(url="/jobs/", total=len(jobpost_ids), page=page, step=step, scope=5) jobpost_ids = hr_job_obj.search(request.cr, request.uid, domain, limit=step, offset=pager['offset']) + department_ids = [] + request.cr.execute("select * from hr_department") + for i in request.cr.fetchall(): + department_ids.append(i[0]) + if not id: + id = 1 + active = id + jobids = hr_job_obj.search(request.cr, request.uid, [('department_id','=',id)]) + step = 5 + pager = request.website.pager(url="/jobs/", total=len(jobids), page=page, step=step, scope=5) values = { + 'active': active, 'companies': companies, - 'res_job': hr_job_obj.browse(request.cr, request.uid, jobpost_ids), + 'res_job': hr_job_obj.browse(request.cr, request.uid, jobids), +# 'res_job': hr_job_obj.browse(request.cr, request.uid, jobpost_ids), + 'departments': hr_department_obj.browse(request.cr, request.uid, department_ids), 'vals': vals, 'no_of_jobs': len(hr_job_obj.browse(request.cr, request.uid, jobpost_ids)), 'pager': pager } return request.website.render("website_hr_recruitment.index", values) + @website.route(['/job/detail/'], type='http', auth="public") def detail(self, id=0): id = id and int(id) or 0 website = request.registry['website'] values = { - 'job': request.registry['hr.job'].browse(request.cr, request.uid, id) + 'job': request.registry['hr.job'].browse(request.cr, request.uid, id), + 'vals_date': request.registry['hr.job'].browse(request.cr, request.uid, id).write_date.split(' ')[0] } return request.website.render("website_hr_recruitment.detail", values) @@ -68,29 +85,52 @@ class website_hr_recruitment(http.Controller): } return request.website.render("website_hr_recruitment.thankyou", values) - @website.route('/recruitment/message_get_subscribed', type='json', auth="admin") - def message_get_subscribed(self, email, id, mail_group_id): - id = int(id) - mail_group_id = int(mail_group_id) - group_obj = request.registry['mail.group'] + @website.route(['/job/detail//subscribe'], type='http', auth="public") + def subscribe(self, event_id=None, **post): partner_obj = request.registry['res.partner'] - partner_ids = partner_obj.search(request.cr, SUPERUSER_ID, [("email", "=", email)]) - if not partner_ids: - partner_ids = [partner_obj.create(request.cr, SUPERUSER_ID, {"email": email, "name": "Subscribe: %s" % email})] - group_obj.check_access_rule(request.cr, request.uid, [mail_group_id], 'read') - group_obj.message_subscribe(request.cr, SUPERUSER_ID, [mail_group_id], partner_ids) - return 1 - - @website.route('/recruitment/message_get_unsubscribed', type='json', auth="admin") - def message_get_unsubscribed(self, email, id, mail_group_id): - mail_group_id = int(mail_group_id) - id = int(id) + job_obj = request.registry['hr.job'] + user_obj = request.registry['res.users'] + + if job_id and 'subscribe' in post and (post.get('email') or not request.context['is_public_user']): + if request.context['is_public_user']: + partner_ids = partner_obj.search( + request.cr, SUPERUSER_ID, [("email", "=", post.get('email'))], + context=request.context) + if not partner_ids: + partner_data = { + "email": post.get('email'), + "name": "Subscribe: %s" % post.get('email') + } + partner_ids = [partner_obj.create( + request.cr, SUPERUSER_ID, partner_data, context=request.context)] + else: + partner_ids = [user_obj.browse( + request.cr, request.uid, request.uid, + context=request.context).partner_id.id] + job_obj.check_access_rule(request.cr, request.uid, [event_id], + 'read', request.context) + job_obj.message_subscribe(request.cr, SUPERUSER_ID, [event_id], + partner_ids, request.context) + + return self.detail(job_id=job_id) + + @website.route(['/job/detail//unsubscribe'], type='http', auth="public") + def unsubscribe(self, job_id=None, **post): partner_obj = request.registry['res.partner'] - group_obj = request.registry['mail.group'] - partner_ids = partner_obj.search(request.cr, SUPERUSER_ID, [("email", "=", email)]) - group_obj.check_access_rule(request.cr, request.uid, [mail_group_id], 'read') - group_obj.message_unsubscribe(request.cr, SUPERUSER_ID, [mail_group_id], partner_ids) - return 1 + job_obj = request.registry['hr.job'] + user_obj = request.registry['res.users'] + + if job_id and 'unsubscribe' in post and (post.get('email') or not request.context['is_public_user']): + if request.context['is_public_user']: + partner_ids = partner_obj.search( + request.cr, SUPERUSER_ID, [("email", "=", post.get('email'))], + context=request.context) + else: + partner_ids = [user_obj.browse(request.cr, request.uid, request.uid, request.context).partner_id.id] + job_obj.check_access_rule(request.cr, request.uid, [event_id], 'read', request.context) + job_obj.message_unsubscribe(request.cr, SUPERUSER_ID, [job_id], partner_ids, request.context) + + return self.detail(job_id=job_id) @website.route('/recruitment/published', type='json', auth="admin") def published (self, **post): @@ -110,4 +150,4 @@ class website_hr_recruitment(http.Controller): res = hr_job.write(request.cr, request.uid, [rec.id], vals) obj = hr_job.browse(request.cr, request.uid, id) return { 'count': obj.no_of_recruitment, 'state': obj.state, 'published': obj.website_published } -# vim:expandtab:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/website_hr_recruitment/static/src/js/recruitment.js b/addons/website_hr_recruitment/static/src/js/recruitment.js index 12d99cf..715e8f5 100644 --- a/addons/website_hr_recruitment/static/src/js/recruitment.js +++ b/addons/website_hr_recruitment/static/src/js/recruitment.js @@ -1,34 +1,4 @@ $(function () { - $(document).on('click', 'button[name=subscribe]', function (e) { - var div = $(this).parent(); - var parent = $(this).parent().parent(); - var groupid = $(this).siblings('input[name=group_id]').val(); - var id = $(this).parent().parent().attr('id'); - var email = $(this).siblings('div').find('input[name=email]').val(); - if (!email) return; - openerp.jsonRpc('/recruitment/message_get_subscribed', 'call', {'email': email, 'id': id, 'mail_group_id': groupid}).then(function (result) { - if (result == 1) { - div.removeClass('show').addClass('hidden'); - parent.find('div:gt(0)').find('input[type=hidden][name=email]').val(email); - parent.find('div:gt(0)').removeClass('hidden'); - } - }); - - // $(this).siblings('div').find('input[name=email]').attr("value", ""); - }); - $(document).on('click', 'button[name=unsubscribe]', function (e) { - var div = $(this).parent(); - var parent = $(this).parent().parent(); - var id = $(this).parent().parent().attr('id'); - var groupid = $(this).siblings('input[name=group_id]').val(); - - openerp.jsonRpc('/recruitment/message_get_unsubscribed', 'call', {'email': $(this).siblings('input[name=email]').val(), 'id': id, 'mail_group_id': groupid}).then(function (result) { - if (result == 1) { - parent.find('div:first').removeClass('hidden').addClass('show'); - div.addClass('hidden'); - } - }); - }); $(document).on('click', '.js_publish', function (e) { var id = $(this).data('id'); var row = $(this).parents().find('tr#'+id); diff --git a/addons/website_hr_recruitment/views/website_hr_recruitment.xml b/addons/website_hr_recruitment/views/website_hr_recruitment.xml index d4d5974..e039025 100644 --- a/addons/website_hr_recruitment/views/website_hr_recruitment.xml +++ b/addons/website_hr_recruitment/views/website_hr_recruitment.xml @@ -7,100 +7,100 @@ Job Posts on your website -