[IMP]View is changed like event.
[odoo/odoo.git] / addons / website_hr_recruitment / controllers / main.py
index b898063..df94329 100644 (file)
@@ -10,10 +10,12 @@ from urllib import quote_plus
 
 class website_hr_recruitment(http.Controller):
 
-    @website.route(['/jobs', '/jobs/page/<int:page>/'], type='http', auth="public")
-    def jobs(self, page=1, **post):
+    @website.route(['/jobs', '/jobs/page/<int:page>/', '/department/<id>/', '/department/<id>/page/<int: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/<id>'], 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/<int:job_id>/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/<int:job_id>/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: