summaryrefslogtreecommitdiff
path: root/addons/website_rating_project_issue/controllers/main.py
diff options
context:
space:
mode:
authorJérome Maes <jem@openerp.com>2015-02-04 11:40:54 +0100
committerJérome Maes <jem@openerp.com>2015-02-04 15:24:48 +0100
commit6219c0b0fa593e9c1d28f42b2fc5988dc2d6df62 (patch)
tree3a9475b471acbb67b64d8ea22c52e8adcda0c01a /addons/website_rating_project_issue/controllers/main.py
parenta82b1394962b57ec27bd167fba63e5c1d844b623 (diff)
[ADD] website_rating_project_issue : display project feedback on the website. Using privacy/visibily defined on project.project and security rules defined in website_project_issue.
Diffstat (limited to 'addons/website_rating_project_issue/controllers/main.py')
-rw-r--r--addons/website_rating_project_issue/controllers/main.py52
1 files changed, 52 insertions, 0 deletions
diff --git a/addons/website_rating_project_issue/controllers/main.py b/addons/website_rating_project_issue/controllers/main.py
new file mode 100644
index 00000000000..ae12d9eefb2
--- /dev/null
+++ b/addons/website_rating_project_issue/controllers/main.py
@@ -0,0 +1,52 @@
+# -*- coding: utf-8 -*-
+from openerp import _
+from openerp.addons.web import http
+from openerp.addons.web.http import request
+
+
+class WebsiteRatingProject(http.Controller):
+
+ @http.route(['/project/rating/'], type='http', auth="public", website=True)
+ def index(self, **kw):
+ projects = request.env['project.project'].search([])
+ values = {'projects' : projects}
+ return request.website.render('website_rating_project_issue.index', values)
+
+ @http.route(['/project/rating/<model("project.project"):project>'], type='http', auth="public", website=True)
+ def page(self, project=None, **kw):
+ # create domain for rating
+ domain = []
+ if project.use_tasks:
+ task_ids = [t.id for t in project.tasks]
+ domain += ['&', ('res_model', '=', 'project.task'), ('res_id', 'in', task_ids)]
+ if project.use_issues:
+ issue_ids = [i.id for i in project.issue_ids]
+ domain += ['&', ('res_model', '=', 'project.issue'), ('res_id', 'in', issue_ids)]
+ if project.use_issues and project.use_tasks:
+ domain = ['|'] + domain
+ ratings = request.env['rating.rating'].search(domain, order="write_date desc", limit=100)
+ # compute stat only for the last 100 ratings
+ grades_label = {
+ 'success' : _('Happy'),
+ 'warning': _('Okay'),
+ 'danger': _('Bad'),
+ }
+ res = dict.fromkeys(grades_label.keys(), 0)
+ for rating in ratings:
+ if rating.rating >= 7:
+ res['success'] += 1
+ elif rating.rating > 3:
+ res['warning'] += 1
+ else:
+ res['danger'] += 1
+ for key, value in res.iteritems():
+ res[key] = value / float(len(ratings)) * 100 if len(ratings) else 0
+ # prepare and render
+ values = {
+ 'team': project.sudo().members,
+ 'project': project,
+ 'ratings' : ratings,
+ 'stats': res,
+ 'labels': grades_label,
+ }
+ return request.website.render('website_rating_project_issue.project_rating_page', values)