



What is controller?

Problem Statement

# -*- coding: utf-8 -*- from openerp import http from openerp.http import Controller, route, request class graph_controller(http.Controller): @http.route('/graph/<self_id>', auth='user', website=True) def graph(self,self_id): return http.request.render('test_workflow.graph_template', { 'x_axis':[1500,1600,1700,1750,1800,1850,1900,1950,1999,2050], 'y_axis':[86,114,106,106,107,111,133,221,783,2478], })

<openerp> <data> <template id="graph_template"> <t t-call="website.layout"> <head> <title>Graph Web Controller Example</title> </head> <body> <div class="container"> <div class="page"> <div class="row"> <canvas id="line-chart" width="200" height="50"></canvas> </div> </div> </div> <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.5.0/Chart.min.js"></script> <script> var x_axis = <t t-esc="x_axis"/>; var y_axis = <t t-esc="y_axis"/>; new Chart(document.getElementById("line-chart"), { type: 'line', data: { labels: x_axis, datasets: [{ data: y_axis, label: "Actual Curve", borderColor: "#3e95cd", fill: false } ] }, options: { title: { display: false, text: 'World population per region (in millions)' } } }); </script> </body> </t> </template> </data> </openerp>

Today I am gonna talk about odoo controller. By using odoo controller you can create front end or web pages that are integrated with our odoo modules . It means that instead of showing data on CRM or odoo typical form or tree view , you can show records or data on web pages. And we will achieve this using custom web controller or odoo controller.Odoo Web Controller is athat can be used when we want to render some data into website. By using odoo controller we can show any data/records on web pages or website in any template.Now I will show you what we are going to achieve here by using odoo controller. Actually I want to show some graph on web page. The idea is that on a button click i will call an odoo controller and return a template (render) with some dictionary of data. So first of all I will create a controller and than its template (You must create a website page or template in order to handle data sent by controller method on the page.) to show graph. To draw a graph I will use "chart.js" library, you can use any of your favorite library. So lets start...1- Create a controller.2- Create template, to create template create a new file and named it "graph_template.xml". Don't forget toNow its time to test our custom controller, go to browser and open "http://localhost:8069/graph/1", remember here "/graph/1" is the route of our custom controller.