id: cc99ea46309145a496fe45b76d64588b
parent_id: 
item_type: 1
item_id: 43f8871d124d4f85aba50f91bca293a8
item_updated_time: 1764345576920
title_diff: "[{\"diffs\":[[1,\"Building a Module — odoo 8.0 documentation\"]],\"start1\":0,\"start2\":0,\"length1\":0,\"length2\":42}]"
body_diff: "[{\"diffs\":[[1,\"<html>\\\r\\\n<head>\\\r\\\n  <title>Building a Module — odoo 8.0 documentation</title>\\\r\\\n  <basefont face=\\\"微软雅黑\\\" size=\\\"2\\\" />\\\r\\\n  <meta http-equiv=\\\"Content-Type\\\" content=\\\"text/html;charset=utf-8\\\" />\\\r\\\n  <meta name=\\\"exporter-version\\\" content=\\\"YXBJ Windows/608924 (zh-CN, DDL); Windows/10.0.0 (Win64); EDAMVersion=V2;\\\"/>\\\r\\\n  <meta name=\\\"application-data:2525275\\\" content=\\\"6692893/s30/de8d1eee-6847-4808-8b98-45e4e31373f0/app.yinxiang.com\\\"/>\\\r\\\n  <style>\\\r\\\n\\tbody, td {\\\r\\\n\\t  font-family: 微软雅黑;\\\r\\\n\\t  font-size: 12pt;\\\r\\\n\\t}\\\r\\\n  </style>\\\r\\\n</head>\\\r\\\n<body>\\\r\\\n<a name=\\\"13428\\\"></a>\\\r\\\n<h1>Building a Module — odoo 8.0 documentation</h1>\\\r\\\n\\\r\\\n<div><span><br/><div style=\\\"font-size: 16px\\\"><div style=\\\"box-sizing:border-box;font-family:sans-serif;font-size:10px;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);\\\"><div style=\\\"box-sizing:border-box;font-family:'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:14px;line-height:1.42857143;color:rgb(51, 51, 51);background-color:rgb(255, 255, 255);overflow:auto;\\\"><div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;\\\">\\\n<h1 style=\\\"box-sizing:border-box;font-size:42px;margin:40px 0px 20px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;padding-bottom:9px;border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:rgb(238, 238, 238);\\\">Building a Module</h1>\\\n<div style=\\\"box-sizing:border-box;padding:20px;margin:20px 0px;border-width:1px 1px 1px 5px;border-style:solid;border-color:rgb(238, 238, 238);border-radius:3px;border-left-color:rgb(240, 173, 78);\\\">\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(240, 173, 78);font-size:18px;\\\">Warning<span style=\\\"font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(240, 173, 78);font-size:18px;\\\">: </span></p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;margin-bottom:0px;\\\">This tutorial requires <a href=\\\"https://www.odoo.com/documentation/8.0/setup/install.html#setup-install\\\" style=\\\"box-sizing:border-box;background:transparent;color:rgb(162, 70, 137);text-decoration:none;\\\"><em style=\\\"box-sizing:border-box;\\\">having installed Odoo</em></a></p>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;margin-bottom:60px;\\\">\\\n<h2 style=\\\"box-sizing:border-box;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;font-size:36px;padding-bottom:9px;margin:0px 0px 20px;border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:rgb(238, 238, 238);padding-top:20px;\\\">Start/Stop the Odoo server</h2>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Odoo uses a client/server architecture in which clients are web browsers\\\naccessing the Odoo server via RPC.</p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Business logic and extension is generally performed on the server side,\\\nalthough supporting client features (e.g. new data representation such as\\\ninteractive maps) can be added to the client.</p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">In order to start the server, simply invoke the command <a href=\\\"https://www.odoo.com/documentation/8.0/reference/cmdline.html#reference-cmdline\\\" style=\\\"box-sizing:border-box;background:transparent;color:rgb(162, 70, 137);text-decoration:none;\\\"><em style=\\\"box-sizing:border-box;\\\">odoo.py</em></a> in the shell, adding the full path to the file if\\\nnecessary:</p>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\"><span style=\\\"box-sizing:border-box;\\\">odoo</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">py</span>\\\n</pre></div>\\\n</div>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">The server is stopped by hitting <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">Ctrl-C</span></tt> twice from the terminal, or by\\\nkilling the corresponding OS process.</p>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;margin-bottom:60px;\\\">\\\n<h2 style=\\\"box-sizing:border-box;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;font-size:36px;padding-bottom:9px;margin:0px 0px 20px;border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:rgb(238, 238, 238);padding-top:20px;\\\">Build an Odoo module</h2>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Both server and client extensions are packaged as <em style=\\\"box-sizing:border-box;\\\">modules</em> which are\\\noptionally loaded in a <em style=\\\"box-sizing:border-box;\\\">database</em>.</p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Odoo modules can either add brand new business logic to an Odoo system, or\\\nalter and extend existing business logic: a module can be created to add your\\\ncountry’s accounting rules to Odoo’s generic accounting support, while the\\\nnext module adds support for real-time visualisation of a bus fleet.</p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Everything in Odoo thus starts and ends with modules.</p>\\\n<div style=\\\"box-sizing:border-box;\\\">\\\n<h3 style=\\\"box-sizing:border-box;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;margin-top:20px;margin-bottom:10px;font-size:24px;\\\">Composition of a module</h3>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">An Odoo module can contain a number of elements:</p>\\\n<dl style=\\\"box-sizing:border-box;margin-top:0px;margin-bottom:20px;\\\">\\\n<dt style=\\\"box-sizing:border-box;line-height:1.42857143;font-weight:bold;\\\">Business objects</dt>\\\n<dd style=\\\"box-sizing:border-box;line-height:1.42857143;margin-left:30px;\\\">declared as Python classes, these resources are automatically persisted\\\nby Odoo based on their configuration</dd>\\\n<dt style=\\\"box-sizing:border-box;line-height:1.42857143;font-weight:bold;\\\">Data files</dt>\\\n<dd style=\\\"box-sizing:border-box;line-height:1.42857143;margin-left:30px;\\\">XML or CSV files declaring metadata (views or workflows), configuration\\\ndata (modules parameterization), demonstration data and more</dd>\\\n<dt style=\\\"box-sizing:border-box;line-height:1.42857143;font-weight:bold;\\\">Web controllers</dt>\\\n<dd style=\\\"box-sizing:border-box;line-height:1.42857143;margin-left:30px;\\\">Handle requests from web browsers</dd>\\\n<dt style=\\\"box-sizing:border-box;line-height:1.42857143;font-weight:bold;\\\">Static web data</dt>\\\n<dd style=\\\"box-sizing:border-box;line-height:1.42857143;margin-left:30px;\\\">Images, CSS or javascript files used by the web interface or website</dd>\\\n</dl>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;\\\">\\\n<h3 style=\\\"box-sizing:border-box;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;margin-top:20px;margin-bottom:10px;font-size:24px;\\\">Module structure</h3>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Each module is a directory within a <em style=\\\"box-sizing:border-box;\\\">module directory</em>. Module directories\\\nare specified by using the <a href=\\\"https://www.odoo.com/documentation/8.0/reference/cmdline.html#cmdoption-odoo.py--addons-path\\\" style=\\\"box-sizing:border-box;background:transparent;color:rgb(162, 70, 137);text-decoration:none;\\\"><em style=\\\"box-sizing:border-box;\\\">--addons-path</em></a>\\\noption.</p>\\\n<div style=\\\"box-sizing:border-box;padding:20px;margin:20px 0px;border-width:1px 1px 1px 5px;border-style:solid;border-color:rgb(238, 238, 238);border-radius:3px;border-left-color:rgb(91, 192, 222);\\\">\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(91, 192, 222);font-size:18px;\\\">Tip<span style=\\\"font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(91, 192, 222);font-size:18px;\\\">: </span></p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;margin-bottom:5px;display:inline-block;margin-top:0px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;font-size:18px;\\\">most command-line options can also be set using <a href=\\\"https://www.odoo.com/documentation/8.0/reference/cmdline.html#reference-cmdline-config\\\" style=\\\"box-sizing:border-box;background:transparent;color:rgb(162, 70, 137);text-decoration:none;\\\"><em style=\\\"box-sizing:border-box;\\\">a configuration\\\nfile</em></a></p>\\\n</div>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">An Odoo module is declared by its <a href=\\\"https://www.odoo.com/documentation/8.0/reference/module.html#reference-module-manifest\\\" style=\\\"box-sizing:border-box;background:transparent;color:rgb(162, 70, 137);text-decoration:none;\\\"><em style=\\\"box-sizing:border-box;\\\">manifest</em></a>.\\\nSee the <a href=\\\"https://www.odoo.com/documentation/8.0/reference/module.html#reference-module-manifest\\\" style=\\\"box-sizing:border-box;background:transparent;color:rgb(162, 70, 137);text-decoration:none;\\\"><em style=\\\"box-sizing:border-box;\\\">manifest documentation</em></a> information\\\nabout it.</p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">A module is also a\\\n<a href=\\\"http://docs.python.org/2/tutorial/modules.html#packages\\\" style=\\\"box-sizing:border-box;background:transparent;color:rgb(162, 70, 137);text-decoration:none;\\\">Python package</a>\\\nwith a <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">__init__.py</span></tt> file, containing import instructions for various Python\\\nfiles in the module.</p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">For instance, if the module has a single <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">mymodule.py</span></tt> file <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">__init__.py</span></tt>\\\nmight contain:</p>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\"><span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">from</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 204, 255);\\\">.</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">import</span> <span style=\\\"box-sizing:border-box;\\\">mymodule</span>\\\n</pre></div>\\\n</div>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Odoo provides a mechanism to help set up a new module, <a href=\\\"https://www.odoo.com/documentation/8.0/reference/cmdline.html#reference-cmdline-server\\\" style=\\\"box-sizing:border-box;background:transparent;color:rgb(162, 70, 137);text-decoration:none;\\\"><em style=\\\"box-sizing:border-box;\\\">odoo.py</em></a> has a subcommand <a href=\\\"https://www.odoo.com/documentation/8.0/reference/cmdline.html#reference-cmdline-scaffold\\\" style=\\\"box-sizing:border-box;background:transparent;color:rgb(162, 70, 137);text-decoration:none;\\\"><em style=\\\"box-sizing:border-box;\\\">scaffold</em></a> to create an empty module:</p>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\"><span style=\\\"box-sizing:border-box;color:rgb(0, 0, 153);\\\">$</span> odoo.py scaffold &lt;module name&gt; &lt;where to put it&gt;\\\n</pre></div>\\\n</div>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">The command creates a subdirectory for your module, and automatically creates a\\\nbunch of standard files for a module. Most of them simply contain commented code\\\nor XML. The usage of most of those files will be explained along this tutorial.</p>\\\n<div style=\\\"box-sizing:border-box;padding:20px;margin:20px 0px;border-width:1px 1px 1px 5px;border-style:solid;border-color:rgb(238, 238, 238);border-radius:3px;border-left-color:rgb(119, 119, 119);\\\">\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(85, 85, 85);font-size:18px;\\\">Exercise<span style=\\\"font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(85, 85, 85);font-size:18px;\\\">: </span></p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;font-size:18px;\\\">Module creation</p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Use the command line above to  create an empty module Open Academy, and\\\ninstall it in Odoo.</p>\\\n<ol style=\\\"box-sizing:border-box;margin-top:0px;margin-bottom:10px;\\\">\\\n<li style=\\\"box-sizing:border-box;\\\">Invoke the command <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">odoo.py</span> <span style=\\\"box-sizing:border-box;\\\">scaffold</span> <span style=\\\"box-sizing:border-box;\\\">openacademy</span> <span style=\\\"box-sizing:border-box;\\\">addons</span></tt>.</li>\\\n<li style=\\\"box-sizing:border-box;\\\">Adapt the manifest file to your module.</li>\\\n<li style=\\\"box-sizing:border-box;\\\">Don’t bother about the other files.</li>\\\n</ol>\\\n<div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<em style=\\\"box-sizing:border-box;\\\">openacademy/__openerp__.py</em><div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\"><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\"><span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\"># -*- coding: utf-8 -*-</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\"><span style=\\\"box-sizing:border-box;\\\">{</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'name'</span><span style=\\\"box-sizing:border-box;\\\">:</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Open Academy&quot;</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'summary'</span><span style=\\\"box-sizing:border-box;\\\">:</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;&quot;&quot;Manage trainings&quot;&quot;&quot;</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'description'</span><span style=\\\"box-sizing:border-box;\\\">:</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;&quot;&quot;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\"><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">        Open Academy module for managing trainings:</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\"><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">            - training courses</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\"><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">            - training sessions</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\"><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">            - attendees registration</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\"><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">    &quot;&quot;&quot;</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'author'</span><span style=\\\"box-sizing:border-box;\\\">:</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Your Company&quot;</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'website'</span><span style=\\\"box-sizing:border-box;\\\">:</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;http://www.yourcompany.com&quot;</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\"># Categories can be used to filter modules in modules listing</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\"># Check https://github.com/odoo/odoo/blob/master/openerp/addons/base/module/module_data.xml</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\"># for the full list</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'category'</span><span style=\\\"box-sizing:border-box;\\\">:</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'Test'</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'version'</span><span style=\\\"box-sizing:border-box;\\\">:</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'0.1'</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\"># any module necessary for this one to work correctly</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'depends'</span><span style=\\\"box-sizing:border-box;\\\">:</span> <span style=\\\"box-sizing:border-box;\\\">[</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'base'</span><span style=\\\"box-sizing:border-box;\\\">],</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\"># always loaded</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'data'</span><span style=\\\"box-sizing:border-box;\\\">:</span> <span style=\\\"box-sizing:border-box;\\\">[</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\"># 'security/ir.model.access.csv',</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'templates.xml'</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;\\\">],</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\"># only loaded in demonstration mode</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'demo'</span><span style=\\\"box-sizing:border-box;\\\">:</span> <span style=\\\"box-sizing:border-box;\\\">[</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'demo.xml'</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;\\\">],</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\"><span style=\\\"box-sizing:border-box;\\\">}</span>\\\n</span></pre></div>\\\n</div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n<em style=\\\"box-sizing:border-box;\\\">openacademy/__init__.py</em><div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\"><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\"><span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\"># -*- coding: utf-8 -*-</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\"><span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">from</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 204, 255);\\\">.</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">import</span> <span style=\\\"box-sizing:border-box;\\\">controllers</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\"><span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">from</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 204, 255);\\\">.</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">import</span> <span style=\\\"box-sizing:border-box;\\\">models</span>\\\n</span></pre></div>\\\n</div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n<em style=\\\"box-sizing:border-box;\\\">openacademy/controllers.py</em><div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\"><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\"><span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\"># -*- coding: utf-8 -*-</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\"><span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">from</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 204, 255);\\\">openerp</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">import</span> <span style=\\\"box-sizing:border-box;\\\">http</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\"><span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\"># class Openacademy(http.Controller):</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\"><span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">#     @http.route('/openacademy/openacademy/', auth='public')</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\"><span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">#     def index(self, **kw):</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\"><span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">#         return &quot;Hello, world&quot;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\"><span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">#     @http.route('/openacademy/openacademy/objects/', auth='public')</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\"><span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">#     def list(self, **kw):</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\"><span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">#         return http.request.render('openacademy.listing', {</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\"><span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">#             'root': '/openacademy/openacademy',</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\"><span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">#             'objects': http.request.env['openacademy.openacademy'].search([]),</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\"><span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">#         })</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\"><span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">#     @http.route('/openacademy/openacademy/objects/&lt;model(&quot;openacademy.openacademy&quot;):obj&gt;/', auth='public')</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\"><span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">#     def object(self, obj, **kw):</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\"><span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">#         return http.request.render('openacademy.object', {</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\"><span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">#             'object': obj</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\"><span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">#         })</span>\\\n</span></pre></div>\\\n</div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n<em style=\\\"box-sizing:border-box;\\\">openacademy/demo.xml</em><div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\"><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\"><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;openerp&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;data&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">&lt;!--  --&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">&lt;!--   &lt;record id=&quot;object0&quot; model=&quot;openacademy.openacademy&quot;&gt; --&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">&lt;!--     &lt;field name=&quot;name&quot;&gt;Object 0&lt;/field&gt; --&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">&lt;!--   &lt;/record&gt; --&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">&lt;!--  --&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">&lt;!--   &lt;record id=&quot;object1&quot; model=&quot;openacademy.openacademy&quot;&gt; --&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">&lt;!--     &lt;field name=&quot;name&quot;&gt;Object 1&lt;/field&gt; --&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">&lt;!--   &lt;/record&gt; --&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">&lt;!--  --&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">&lt;!--   &lt;record id=&quot;object2&quot; model=&quot;openacademy.openacademy&quot;&gt; --&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">&lt;!--     &lt;field name=&quot;name&quot;&gt;Object 2&lt;/field&gt; --&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">&lt;!--   &lt;/record&gt; --&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">&lt;!--  --&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">&lt;!--   &lt;record id=&quot;object3&quot; model=&quot;openacademy.openacademy&quot;&gt; --&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">&lt;!--     &lt;field name=&quot;name&quot;&gt;Object 3&lt;/field&gt; --&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">&lt;!--   &lt;/record&gt; --&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">&lt;!--  --&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">&lt;!--   &lt;record id=&quot;object4&quot; model=&quot;openacademy.openacademy&quot;&gt; --&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">&lt;!--     &lt;field name=&quot;name&quot;&gt;Object 4&lt;/field&gt; --&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">&lt;!--   &lt;/record&gt; --&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">&lt;!--  --&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/data&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\"><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/openerp&gt;</span>\\\n</span></pre></div>\\\n</div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n<em style=\\\"box-sizing:border-box;\\\">openacademy/models.py</em><div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\"><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\"><span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\"># -*- coding: utf-8 -*-</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\"><span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">from</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 204, 255);\\\">openerp</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">import</span> <span style=\\\"box-sizing:border-box;\\\">models</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">fields</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">api</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\"><span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\"># class openacademy(models.Model):</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\"><span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">#     _name = 'openacademy.openacademy'</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\"><span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">#     name = fields.Char()</span>\\\n</span></pre></div>\\\n</div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n<em style=\\\"box-sizing:border-box;\\\">openacademy/security/ir.model.access.csv</em><div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\"><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\"><span style=\\\"box-sizing:border-box;\\\">id</span><span style=\\\"box-sizing:border-box;\\\">,</span><span style=\\\"box-sizing:border-box;\\\">name</span><span style=\\\"box-sizing:border-box;\\\">,</span><span style=\\\"box-sizing:border-box;\\\">model_id</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">/</span><span style=\\\"box-sizing:border-box;\\\">id</span><span style=\\\"box-sizing:border-box;\\\">,</span><span style=\\\"box-sizing:border-box;\\\">group_id</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">/</span><span style=\\\"box-sizing:border-box;\\\">id</span><span style=\\\"box-sizing:border-box;\\\">,</span><span style=\\\"box-sizing:border-box;\\\">perm_read</span><span style=\\\"box-sizing:border-box;\\\">,</span><span style=\\\"box-sizing:border-box;\\\">perm_write</span><span style=\\\"box-sizing:border-box;\\\">,</span><span style=\\\"box-sizing:border-box;\\\">perm_create</span><span style=\\\"box-sizing:border-box;\\\">,</span><span style=\\\"box-sizing:border-box;\\\">perm_unlink</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\"><span style=\\\"box-sizing:border-box;\\\">access_openacademy_openacademy</span><span style=\\\"box-sizing:border-box;\\\">,</span><span style=\\\"box-sizing:border-box;\\\">openacademy</span><span style=\\\"box-sizing:border-box;\\\">.</span><span style=\\\"box-sizing:border-box;\\\">openacademy</span><span style=\\\"box-sizing:border-box;\\\">,</span><span style=\\\"box-sizing:border-box;\\\">model_openacademy_openacademy</span><span style=\\\"box-sizing:border-box;\\\">,,</span><span style=\\\"box-sizing:border-box;color:rgb(255, 102, 0);\\\">1</span><span style=\\\"box-sizing:border-box;\\\">,</span><span style=\\\"box-sizing:border-box;color:rgb(255, 102, 0);\\\">0</span><span style=\\\"box-sizing:border-box;\\\">,</span><span style=\\\"box-sizing:border-box;color:rgb(255, 102, 0);\\\">0</span><span style=\\\"box-sizing:border-box;\\\">,</span><span style=\\\"box-sizing:border-box;color:rgb(255, 102, 0);\\\">0</span>\\\n</span></pre></div>\\\n</div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n<em style=\\\"box-sizing:border-box;\\\">openacademy/templates.xml</em><div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\"><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\"><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;openerp&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;data&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">&lt;!-- &lt;template id=&quot;listing&quot;&gt; --&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">&lt;!--   &lt;ul&gt; --&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">&lt;!--     &lt;li t-foreach=&quot;objects&quot; t-as=&quot;object&quot;&gt; --&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">&lt;!--       &lt;a t-attf-href=&quot;{{ root }}/objects/{{ object.id }}&quot;&gt; --&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">&lt;!--         &lt;t t-esc=&quot;object.display_name&quot;/&gt; --&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">&lt;!--       &lt;/a&gt; --&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">&lt;!--     &lt;/li&gt; --&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">&lt;!--   &lt;/ul&gt; --&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">&lt;!-- &lt;/template&gt; --&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">&lt;!-- &lt;template id=&quot;object&quot;&gt; --&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">&lt;!--   &lt;h1&gt;&lt;t t-esc=&quot;object.display_name&quot;/&gt;&lt;/h1&gt; --&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">&lt;!--   &lt;dl&gt; --&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">&lt;!--     &lt;t t-foreach=&quot;object._fields&quot; t-as=&quot;field&quot;&gt; --&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">&lt;!--       &lt;dt&gt;&lt;t t-esc=&quot;field&quot;/&gt;&lt;/dt&gt; --&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">&lt;!--       &lt;dd&gt;&lt;t t-esc=&quot;object</span><span style=\\\"box-sizing:border-box;color:rgb(0, 153, 153);\\\">[</span><span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">field</span><span style=\\\"box-sizing:border-box;color:rgb(0, 153, 153);\\\">]</span><span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">&quot;/&gt;&lt;/dd&gt; --&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">&lt;!--     &lt;/t&gt; --&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">&lt;!--   &lt;/dl&gt; --&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">&lt;!-- &lt;/template&gt; --&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/data&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\"><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/openerp&gt;</span>\\\n</span></pre></div>\\\n</div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n</div>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;\\\">\\\n<h3 style=\\\"box-sizing:border-box;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;margin-top:20px;margin-bottom:10px;font-size:24px;\\\">Object-Relational Mapping</h3>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">A key component of Odoo is the <abbr style=\\\"box-sizing:border-box;border-bottom-width:1px;border-bottom-style:dotted;cursor:help;border-bottom-color:rgb(119, 119, 119);\\\" title=\\\"Object-Relational Mapping\\\">ORM</abbr> layer.\\\nThis layer avoids having to write most <abbr style=\\\"box-sizing:border-box;border-bottom-width:1px;border-bottom-style:dotted;cursor:help;border-bottom-color:rgb(119, 119, 119);\\\" title=\\\"Structured Query Language\\\">SQL</abbr>\\\nby hand and provides extensibility and security services<a href=\\\"https://www.odoo.com/documentation/8.0/howtos/backend.html#rawsql\\\" style=\\\"box-sizing:border-box;background:transparent;color:rgb(162, 70, 137);text-decoration:none;\\\">[2]</a>.</p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Business objects are declared as Python classes extending\\\n<a href=\\\"https://www.odoo.com/documentation/8.0/reference/orm.html#openerp.models.Model\\\" style=\\\"box-sizing:border-box;background:transparent;color:rgb(162, 70, 137);text-decoration:none;\\\" title=\\\"openerp.models.Model\\\"><tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">Model</span></tt></a> which integrates them into the automated\\\npersistence system.</p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Models can be configured by setting a number of attributes at their\\\ndefinition. The most important attribute is\\\n<a href=\\\"https://www.odoo.com/documentation/8.0/reference/orm.html#openerp.models.Model._name\\\" style=\\\"box-sizing:border-box;background:transparent;color:rgb(162, 70, 137);text-decoration:none;\\\" title=\\\"openerp.models.Model._name\\\"><tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">_name</span></tt></a> which is required and defines the name for\\\nthe model in the Odoo system. Here is a minimally complete definition of a\\\nmodel:</p>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\"><span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">from</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 204, 255);\\\">openerp</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">import</span> <span style=\\\"box-sizing:border-box;\\\">models</span>\\\n<span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">class</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 170, 136);\\\">MinimalModel</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">models</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Model</span><span style=\\\"box-sizing:border-box;\\\">):</span>\\\n    <span style=\\\"box-sizing:border-box;\\\">_name</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'test.model'</span>\\\n</pre></div>\\\n</div>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;\\\">\\\n<h3 style=\\\"box-sizing:border-box;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;margin-top:20px;margin-bottom:10px;font-size:24px;\\\">Model fields</h3>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Fields are used to define what the model can store and where. Fields are\\\ndefined as attributes on the model class:</p>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\"><span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">from</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 204, 255);\\\">openerp</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">import</span> <span style=\\\"box-sizing:border-box;\\\">models</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">fields</span>\\\n\\\n<span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">class</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 170, 136);\\\">LessMinimalModel</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">models</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Model</span><span style=\\\"box-sizing:border-box;\\\">):</span>\\\n    <span style=\\\"box-sizing:border-box;\\\">_name</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'test.model2'</span>\\\n\\\n    <span style=\\\"box-sizing:border-box;\\\">name</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">fields</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Char</span><span style=\\\"box-sizing:border-box;\\\">()</span>\\\n</pre></div>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;\\\">\\\n<h4 style=\\\"box-sizing:border-box;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;margin-top:10px;margin-bottom:10px;font-size:18px;\\\">Common Attributes</h4>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Much like the model itself, its fields can be configured, by passing\\\nconfiguration attributes as parameters:</p>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\"><span style=\\\"box-sizing:border-box;\\\">name</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">field</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Char</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">required</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">True</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n</pre></div>\\\n</div>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Some attributes are available on all fields, here are the most common ones:</p>\\\n<dl style=\\\"box-sizing:border-box;margin-top:0px;margin-bottom:20px;\\\">\\\n<dt style=\\\"box-sizing:border-box;line-height:1.42857143;font-weight:bold;\\\"><tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">string</span></tt> (<tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">unicode</span></tt>, default: field’s name)</dt>\\\n<dd style=\\\"box-sizing:border-box;line-height:1.42857143;margin-left:30px;\\\">The label of the field in UI (visible by users).</dd>\\\n<dt style=\\\"box-sizing:border-box;line-height:1.42857143;font-weight:bold;\\\"><tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">required</span></tt> (<tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">bool</span></tt>, default: <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">False</span></tt>)</dt>\\\n<dd style=\\\"box-sizing:border-box;line-height:1.42857143;margin-left:30px;\\\">If <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">True</span></tt>, the field can not be empty, it must either have a default\\\nvalue or always be given a value when creating a record.</dd>\\\n<dt style=\\\"box-sizing:border-box;line-height:1.42857143;font-weight:bold;\\\"><tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">help</span></tt> (<tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">unicode</span></tt>, default: <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">''</span></tt>)</dt>\\\n<dd style=\\\"box-sizing:border-box;line-height:1.42857143;margin-left:30px;\\\">Long-form, provides a help tooltip to users in the UI.</dd>\\\n<dt style=\\\"box-sizing:border-box;line-height:1.42857143;font-weight:bold;\\\"><tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">index</span></tt> (<tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">bool</span></tt>, default: <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">False</span></tt>)</dt>\\\n<dd style=\\\"box-sizing:border-box;line-height:1.42857143;margin-left:30px;\\\">Requests that Odoo create a <a href=\\\"http://use-the-index-luke.com/sql/preface\\\" style=\\\"box-sizing:border-box;background:transparent;color:rgb(162, 70, 137);text-decoration:none;\\\">database index</a> on the column</dd>\\\n</dl>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;\\\">\\\n<h4 style=\\\"box-sizing:border-box;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;margin-top:10px;margin-bottom:10px;font-size:18px;\\\">Simple fields</h4>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">There are two broad categories of fields: “simple” fields which are atomic\\\nvalues stored directly in the model’s table and “relational” fields linking\\\nrecords (of the same model or of different models).</p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Example of simple fields are <a href=\\\"https://www.odoo.com/documentation/8.0/reference/orm.html#openerp.fields.Boolean\\\" style=\\\"box-sizing:border-box;background:transparent;color:rgb(162, 70, 137);text-decoration:none;\\\" title=\\\"openerp.fields.Boolean\\\"><tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">Boolean</span></tt></a>,\\\n<a href=\\\"https://www.odoo.com/documentation/8.0/reference/orm.html#openerp.fields.Date\\\" style=\\\"box-sizing:border-box;background:transparent;color:rgb(162, 70, 137);text-decoration:none;\\\" title=\\\"openerp.fields.Date\\\"><tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">Date</span></tt></a>, <a href=\\\"https://www.odoo.com/documentation/8.0/reference/orm.html#openerp.fields.Char\\\" style=\\\"box-sizing:border-box;background:transparent;color:rgb(162, 70, 137);text-decoration:none;\\\" title=\\\"openerp.fields.Char\\\"><tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">Char</span></tt></a>.</p>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;\\\">\\\n<h4 style=\\\"box-sizing:border-box;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;margin-top:10px;margin-bottom:10px;font-size:18px;\\\">Reserved fields</h4>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Odoo creates a few fields in all models<a href=\\\"https://www.odoo.com/documentation/8.0/howtos/backend.html#autofields\\\" style=\\\"box-sizing:border-box;background:transparent;color:rgb(162, 70, 137);text-decoration:none;\\\">[1]</a>. These fields are\\\nmanaged by the system and shouldn’t be written to. They can be read if\\\nuseful or necessary:</p>\\\n<dl style=\\\"box-sizing:border-box;margin-top:0px;margin-bottom:20px;\\\">\\\n<dt style=\\\"box-sizing:border-box;line-height:1.42857143;font-weight:bold;\\\"><tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">id</span></tt> (<tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">Id</span></tt>)</dt>\\\n<dd style=\\\"box-sizing:border-box;line-height:1.42857143;margin-left:30px;\\\">the unique identifier for a record in its model</dd>\\\n<dt style=\\\"box-sizing:border-box;line-height:1.42857143;font-weight:bold;\\\"><tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">create_date</span></tt> (<a href=\\\"https://www.odoo.com/documentation/8.0/reference/orm.html#openerp.fields.Datetime\\\" style=\\\"box-sizing:border-box;background:transparent;color:rgb(162, 70, 137);text-decoration:none;\\\" title=\\\"openerp.fields.Datetime\\\"><tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">Datetime</span></tt></a>)</dt>\\\n<dd style=\\\"box-sizing:border-box;line-height:1.42857143;margin-left:30px;\\\">creation date of the record</dd>\\\n<dt style=\\\"box-sizing:border-box;line-height:1.42857143;font-weight:bold;\\\"><tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">create_uid</span></tt> (<a href=\\\"https://www.odoo.com/documentation/8.0/reference/orm.html#openerp.fields.Many2one\\\" style=\\\"box-sizing:border-box;background:transparent;color:rgb(162, 70, 137);text-decoration:none;\\\" title=\\\"openerp.fields.Many2one\\\"><tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">Many2one</span></tt></a>)</dt>\\\n<dd style=\\\"box-sizing:border-box;line-height:1.42857143;margin-left:30px;\\\">user who created the record</dd>\\\n<dt style=\\\"box-sizing:border-box;line-height:1.42857143;font-weight:bold;\\\"><tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">write_date</span></tt> (<a href=\\\"https://www.odoo.com/documentation/8.0/reference/orm.html#openerp.fields.Datetime\\\" style=\\\"box-sizing:border-box;background:transparent;color:rgb(162, 70, 137);text-decoration:none;\\\" title=\\\"openerp.fields.Datetime\\\"><tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">Datetime</span></tt></a>)</dt>\\\n<dd style=\\\"box-sizing:border-box;line-height:1.42857143;margin-left:30px;\\\">last modification date of the record</dd>\\\n<dt style=\\\"box-sizing:border-box;line-height:1.42857143;font-weight:bold;\\\"><tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">write_uid</span></tt> (<a href=\\\"https://www.odoo.com/documentation/8.0/reference/orm.html#openerp.fields.Many2one\\\" style=\\\"box-sizing:border-box;background:transparent;color:rgb(162, 70, 137);text-decoration:none;\\\" title=\\\"openerp.fields.Many2one\\\"><tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">Many2one</span></tt></a>)</dt>\\\n<dd style=\\\"box-sizing:border-box;line-height:1.42857143;margin-left:30px;\\\">user who last modified the record</dd>\\\n</dl>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;\\\">\\\n<h4 style=\\\"box-sizing:border-box;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;margin-top:10px;margin-bottom:10px;font-size:18px;\\\">Special fields</h4>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">By default, Odoo also requires a <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">name</span></tt> field on all models for various\\\ndisplay and search behaviors. The field used for these purposes can be\\\noverridden by setting <a href=\\\"https://www.odoo.com/documentation/8.0/reference/orm.html#openerp.models.Model._rec_name\\\" style=\\\"box-sizing:border-box;background:transparent;color:rgb(162, 70, 137);text-decoration:none;\\\" title=\\\"openerp.models.Model._rec_name\\\"><tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">_rec_name</span></tt></a>.</p>\\\n<div style=\\\"box-sizing:border-box;padding:20px;margin:20px 0px;border-width:1px 1px 1px 5px;border-style:solid;border-color:rgb(238, 238, 238);border-radius:3px;border-left-color:rgb(119, 119, 119);\\\">\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(85, 85, 85);font-size:18px;\\\">Exercise<span style=\\\"font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(85, 85, 85);font-size:18px;\\\">: </span></p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;font-size:18px;\\\">Define a model</p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Define a new data model <em style=\\\"box-sizing:border-box;\\\">Course</em> in the <em style=\\\"box-sizing:border-box;\\\">openacademy</em> module. A course\\\nhas a title and a description. Courses must have a title.</p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Edit the file <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">openacademy/models.py</span></tt> to include a <em style=\\\"box-sizing:border-box;\\\">Course</em> class.</p>\\\n<div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<em style=\\\"box-sizing:border-box;\\\">openacademy/models.py</em><div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\"><span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">from</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 204, 255);\\\">openerp</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">import</span> <span style=\\\"box-sizing:border-box;\\\">models</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">fields</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">api</span>\\\n\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\"><span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">class</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 170, 136);\\\">Course</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">models</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Model</span><span style=\\\"box-sizing:border-box;\\\">):</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;\\\">_name</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'openacademy.course'</span>\\\n</span>\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;\\\">name</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">fields</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Char</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">string</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Title&quot;</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">required</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">True</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;\\\">description</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">fields</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Text</span><span style=\\\"box-sizing:border-box;\\\">()</span>\\\n</span></pre></div>\\\n</div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n</div>\\\n</div>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;\\\">\\\n<h3 style=\\\"box-sizing:border-box;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;margin-top:20px;margin-bottom:10px;font-size:24px;\\\">Data files</h3>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Odoo is a highly data driven system. Although behavior is customized using\\\n<a href=\\\"http://python.org/\\\" style=\\\"box-sizing:border-box;background:transparent;color:rgb(162, 70, 137);text-decoration:none;\\\">Python</a> code part of a module’s value is in the data it sets up when loaded.</p>\\\n<div style=\\\"box-sizing:border-box;padding:20px;margin:20px 0px;border-width:1px 1px 1px 5px;border-style:solid;border-color:rgb(238, 238, 238);border-radius:3px;border-left-color:rgb(91, 192, 222);\\\">\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(91, 192, 222);font-size:18px;\\\">Tip<span style=\\\"font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(91, 192, 222);font-size:18px;\\\">: </span></p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;margin-bottom:5px;display:inline-block;margin-top:0px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;font-size:18px;\\\">some modules exist solely to add data into Odoo</p>\\\n</div>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Module data is declared via <a href=\\\"https://www.odoo.com/documentation/8.0/reference/data.html#reference-data\\\" style=\\\"box-sizing:border-box;background:transparent;color:rgb(162, 70, 137);text-decoration:none;\\\"><em style=\\\"box-sizing:border-box;\\\">data files</em></a>, XML files with\\\n<tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">&lt;record&gt;</span></tt> elements. Each <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">&lt;record&gt;</span></tt> element creates or updates a database\\\nrecord.</p>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\"><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;openerp&gt;</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;data&gt;</span>\\\n        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;record</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">model=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;{model name}&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">id=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;{record identifier}&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;{a field name}&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>{a value}<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/record&gt;</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/data&gt;</span>\\\n<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;openerp&gt;</span>\\\n</pre></div>\\\n</div>\\\n<ul style=\\\"box-sizing:border-box;margin-top:0px;margin-bottom:10px;\\\">\\\n<li style=\\\"box-sizing:border-box;\\\"><tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">model</span></tt> is the name of the Odoo model for the record</li>\\\n<li style=\\\"box-sizing:border-box;\\\"><tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">id</span></tt> is an <a href=\\\"https://www.odoo.com/documentation/8.0/glossary.html#term-external-identifier\\\" style=\\\"box-sizing:border-box;background:transparent;color:rgb(162, 70, 137);text-decoration:none;\\\"><em style=\\\"box-sizing:border-box;\\\">external identifier</em></a>, it allows referring to the record\\\n(without having to know its in-database identifier)</li>\\\n<li style=\\\"box-sizing:border-box;\\\"><tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">&lt;field&gt;</span></tt> elements have a <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">name</span></tt> which is the name of the field in the\\\nmodel (e.g. <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">description</span></tt>). Their body is the field’s value.</li>\\\n</ul>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Data files have to be declared in the manifest file to be loaded, they can\\\nbe declared in the <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">'data'</span></tt> list (always loaded) or in the <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">'demo'</span></tt> list\\\n(only loaded in demonstration mode).</p>\\\n<div style=\\\"box-sizing:border-box;padding:20px;margin:20px 0px;border-width:1px 1px 1px 5px;border-style:solid;border-color:rgb(238, 238, 238);border-radius:3px;border-left-color:rgb(119, 119, 119);\\\">\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(85, 85, 85);font-size:18px;\\\">Exercise<span style=\\\"font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(85, 85, 85);font-size:18px;\\\">: </span></p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;font-size:18px;\\\">Define demonstration data</p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Create demonstration data filling the <em style=\\\"box-sizing:border-box;\\\">Courses</em> model with a few\\\ndemonstration courses.</p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Edit the file <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">openacademy/demo.xml</span></tt> to include some data.</p>\\\n<div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<em style=\\\"box-sizing:border-box;\\\">openacademy/demo.xml</em><div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\"><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;openerp&gt;</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;data&gt;</span>\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;record</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">model=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;openacademy.course&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">id=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;course0&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;name&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>Course 0<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;description&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>Course 0's description\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">Can have multiple lines\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/record&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;record</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">model=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;openacademy.course&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">id=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;course1&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;name&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>Course 1<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">&lt;!-- no description for this one --&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/record&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;record</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">model=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;openacademy.course&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">id=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;course2&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;name&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>Course 2<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;description&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>Course 2's description<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/record&gt;</span>\\\n</span>    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/data&gt;</span>\\\n<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/openerp&gt;</span>\\\n</pre></div>\\\n</div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n</div>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;\\\">\\\n<h3 style=\\\"box-sizing:border-box;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;margin-top:20px;margin-bottom:10px;font-size:24px;\\\">Actions and Menus</h3>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Actions and menus are regular records in database, usually declared through\\\ndata files. Actions can be triggered in three ways:</p>\\\n<ol style=\\\"box-sizing:border-box;margin-top:0px;margin-bottom:10px;\\\">\\\n<li style=\\\"box-sizing:border-box;\\\">by clicking on menu items (linked to specific actions)</li>\\\n<li style=\\\"box-sizing:border-box;\\\">by clicking on buttons in views (if these are connected to actions)</li>\\\n<li style=\\\"box-sizing:border-box;\\\">as contextual actions on object</li>\\\n</ol>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Because menus are somewhat complex to declare there is a <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">&lt;menuitem&gt;</span></tt>\\\nshortcut to declare an <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">ir.ui.menu</span></tt> and connect it to the corresponding\\\naction more easily.</p>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\"><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;record</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">model=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;ir.actions.act_window&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">id=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;action_list_ideas&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;name&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>Ideas<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;res_model&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>idea.idea<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;view_mode&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>tree,form<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/record&gt;</span>\\\n<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;menuitem</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">id=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;menu_ideas&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">parent=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;menu_root&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Ideas&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">sequence=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;10&quot;</span>\\\n          <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">action=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;action_list_ideas&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</pre></div>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;padding:20px;margin:20px 0px;border-width:1px 1px 1px 5px;border-style:solid;border-color:rgb(238, 238, 238);border-radius:3px;border-left-color:rgb(217, 83, 79);\\\">\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(217, 83, 79);font-size:18px;\\\">Danger<span style=\\\"font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(217, 83, 79);font-size:18px;\\\">: </span></p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;font-size:18px;\\\">The action must be declared before its corresponding menu in the XML file.</p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;margin-bottom:0px;\\\">Data files are executed sequentially, the action’s <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">id</span></tt> must be present\\\nin the database before the menu can be created.</p>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;padding:20px;margin:20px 0px;border-width:1px 1px 1px 5px;border-style:solid;border-color:rgb(238, 238, 238);border-radius:3px;border-left-color:rgb(119, 119, 119);\\\">\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(85, 85, 85);font-size:18px;\\\">Exercise<span style=\\\"font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(85, 85, 85);font-size:18px;\\\">: </span></p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;font-size:18px;\\\">Define new menu entries</p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Define new menu entries to access courses and sessions under the\\\nOpenAcademy menu entry. A user should be able to</p>\\\n<ul style=\\\"box-sizing:border-box;margin-top:0px;margin-bottom:10px;\\\">\\\n<li style=\\\"box-sizing:border-box;\\\">display a list of all the courses</li>\\\n<li style=\\\"box-sizing:border-box;\\\">create/modify courses</li>\\\n</ul>\\\n<ol style=\\\"box-sizing:border-box;margin-top:0px;margin-bottom:10px;\\\">\\\n<li style=\\\"box-sizing:border-box;\\\">Create <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">openacademy/views/openacademy.xml</span></tt> with an action and\\\nthe menus triggering the action</li>\\\n<li style=\\\"box-sizing:border-box;\\\">Add it to the <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">data</span></tt> list of <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">openacademy/__openerp__.py</span></tt></li>\\\n</ol>\\\n<div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<em style=\\\"box-sizing:border-box;\\\">openacademy/__openerp__.py</em><div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\">    <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'data'</span><span style=\\\"box-sizing:border-box;\\\">:</span> <span style=\\\"box-sizing:border-box;\\\">[</span>\\\n        <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\"># 'security/ir.model.access.csv',</span>\\\n        <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'templates.xml'</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'views/openacademy.xml'</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n</span>    <span style=\\\"box-sizing:border-box;\\\">],</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\"># only loaded in demonstration mode</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'demo'</span><span style=\\\"box-sizing:border-box;\\\">:</span> <span style=\\\"box-sizing:border-box;\\\">[</span>\\\n</pre></div>\\\n</div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n<em style=\\\"box-sizing:border-box;\\\">openacademy/views/openacademy.xml</em><div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\"><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\"><span style=\\\"box-sizing:border-box;color:rgb(0, 153, 153);\\\">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\"><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;openerp&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;data&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">&lt;!-- window action --&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">&lt;!--</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\"><span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">            The following tag is an action definition for a &quot;window action&quot;,</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\"><span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">            that is an action opening a view or a set of views</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\"><span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">        --&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;record</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">model=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;ir.actions.act_window&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">id=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;course_list_action&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;name&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>Courses<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;res_model&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>openacademy.course<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;view_type&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>form<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;view_mode&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>tree,form<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;help&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">type=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;html&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;p</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">class=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;oe_view_nocontent_create&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>Create the first course\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/p&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/record&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">&lt;!-- top level menu: no parent --&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;menuitem</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">id=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;main_openacademy_menu&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Open Academy&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">&lt;!-- A first level in the left side menu is needed</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\"><span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">             before using action= attribute --&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;menuitem</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">id=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;openacademy_menu&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Open Academy&quot;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                  <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">parent=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;main_openacademy_menu&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">&lt;!-- the following menuitem should appear *after*</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\"><span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">             its parent openacademy_menu and *after* its</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\"><span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">             action course_list_action --&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;menuitem</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">id=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;courses_menu&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Courses&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">parent=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;openacademy_menu&quot;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                  <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">action=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;course_list_action&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">&lt;!-- Full id location:</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\"><span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">             action=&quot;openacademy.course_list_action&quot;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\"><span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">             It is not required when it is the same module --&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/data&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\"><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/openerp&gt;</span>\\\n</span></pre></div>\\\n</div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n</div>\\\n</div>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;margin-bottom:60px;\\\">\\\n<h2 style=\\\"box-sizing:border-box;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;font-size:36px;padding-bottom:9px;margin:0px 0px 20px;border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:rgb(238, 238, 238);padding-top:20px;\\\">Basic views</h2>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Views define the way the records of a model are displayed. Each type of view\\\nrepresents a mode of visualization (a list of records, a graph of their\\\naggregation, …). Views can either be requested generically via their type\\\n(e.g. <em style=\\\"box-sizing:border-box;\\\">a list of partners</em>) or specifically via their id. For generic\\\nrequests, the view with the correct type and the lowest priority will be\\\nused (so the lowest-priority view of each type is the default view for that\\\ntype).</p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\"><a href=\\\"https://www.odoo.com/documentation/8.0/reference/views.html#reference-views-inheritance\\\" style=\\\"box-sizing:border-box;background:transparent;color:rgb(162, 70, 137);text-decoration:none;\\\"><em style=\\\"box-sizing:border-box;\\\">View inheritance</em></a> allows altering views\\\ndeclared elsewhere (adding or removing content).</p>\\\n<div style=\\\"box-sizing:border-box;\\\">\\\n<h3 style=\\\"box-sizing:border-box;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;margin-top:20px;margin-bottom:10px;font-size:24px;\\\">Generic view declaration</h3>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">A view is declared as a record of the model <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">ir.ui.view</span></tt>. The view type\\\nis implied by the root element of the <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">arch</span></tt> field:</p>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\"><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;record</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">model=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;ir.ui.view&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">id=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;view_id&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;name&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>view.name<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;model&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>object_name<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;priority&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">eval=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;16&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;arch&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">type=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;xml&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n        <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">&lt;!-- view content: &lt;form&gt;, &lt;tree&gt;, &lt;graph&gt;, ... --&gt;</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/record&gt;</span>\\\n</pre></div>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;padding:20px;margin:20px 0px;border-width:1px 1px 1px 5px;border-style:solid;border-color:rgb(238, 238, 238);border-radius:3px;border-left-color:rgb(217, 83, 79);\\\">\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(217, 83, 79);font-size:18px;\\\">Danger<span style=\\\"font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(217, 83, 79);font-size:18px;\\\">: </span></p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;font-size:18px;\\\">The view’s content is XML.</p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;margin-bottom:0px;\\\">The <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">arch</span></tt> field must thus be declared as <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">type=&quot;xml&quot;</span></tt> to be parsed\\\ncorrectly.</p>\\\n</div>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;\\\">\\\n<h3 style=\\\"box-sizing:border-box;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;margin-top:20px;margin-bottom:10px;font-size:24px;\\\">Tree views</h3>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Tree views, also called list views, display records in a tabular form.</p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Their root element is <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">&lt;tree&gt;</span></tt>. The simplest form of the tree view simply\\\nlists all the fields to display in the table (each field as a column):</p>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\"><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;tree</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">string=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Idea list&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;name&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;inventor_id&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/tree&gt;</span>\\\n</pre></div>\\\n</div>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;\\\">\\\n<h3 style=\\\"box-sizing:border-box;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;margin-top:20px;margin-bottom:10px;font-size:24px;\\\">Form views</h3>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Forms are used to create and edit single records.</p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Their root element is <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">&lt;form&gt;</span></tt>. They composed of high-level structure\\\nelements (groups, notebooks) and interactive elements (buttons and fields):</p>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\"><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;form</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">string=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Idea form&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;group</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">colspan=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;4&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;group</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">colspan=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;2&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">col=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;2&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;separator</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">string=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;General stuff&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">colspan=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;2&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;name&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;inventor_id&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/group&gt;</span>\\\n\\\n        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;group</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">colspan=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;2&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">col=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;2&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;separator</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">string=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Dates&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">colspan=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;2&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;active&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;invent_date&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">readonly=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;1&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/group&gt;</span>\\\n\\\n        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;notebook</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">colspan=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;4&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;page</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">string=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Description&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n                <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;description&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">nolabel=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;1&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/page&gt;</span>\\\n        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/notebook&gt;</span>\\\n\\\n        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;state&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/group&gt;</span>\\\n<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/form&gt;</span>\\\n</pre></div>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;padding:20px;margin:20px 0px;border-width:1px 1px 1px 5px;border-style:solid;border-color:rgb(238, 238, 238);border-radius:3px;border-left-color:rgb(119, 119, 119);\\\">\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(85, 85, 85);font-size:18px;\\\">Exercise<span style=\\\"font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(85, 85, 85);font-size:18px;\\\">: </span></p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;font-size:18px;\\\">Customise form view using XML</p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Create your own form view for the Course object. Data displayed should be:\\\nthe name and the description of the course.</p>\\\n<div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<em style=\\\"box-sizing:border-box;\\\">openacademy/views/openacademy.xml</em><div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\"><span style=\\\"box-sizing:border-box;color:rgb(0, 153, 153);\\\">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;</span>\\\n<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;openerp&gt;</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;data&gt;</span>\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;record</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">model=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;ir.ui.view&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">id=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;course_form_view&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;name&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>course.form<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;model&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>openacademy.course<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;arch&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">type=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;xml&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;form</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">string=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Course Form&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;sheet&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;group&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;name&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;description&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/group&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/sheet&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/form&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/record&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">\\\n</span>        <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">&lt;!-- window action --&gt;</span>\\\n        <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">&lt;!--</span>\\\n<span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">            The following tag is an action definition for a &quot;window action&quot;,</span>\\\n</pre></div>\\\n</div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;padding:20px;margin:20px 0px;border-width:1px 1px 1px 5px;border-style:solid;border-color:rgb(238, 238, 238);border-radius:3px;border-left-color:rgb(119, 119, 119);\\\">\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(85, 85, 85);font-size:18px;\\\">Exercise<span style=\\\"font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(85, 85, 85);font-size:18px;\\\">: </span></p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;font-size:18px;\\\">Notebooks</p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">In the Course form view, put the description field under a tab, such that\\\nit will be easier to add other tabs later, containing additional\\\ninformation.</p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Modify the Course form view as follows:</p>\\\n<div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<em style=\\\"box-sizing:border-box;\\\">openacademy/views/openacademy.xml</em><div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\">                    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;sheet&gt;</span>\\\n                        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;group&gt;</span>\\\n                            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;name&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n                        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/group&gt;</span>\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;notebook&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;page</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">string=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Description&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                                <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;description&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/page&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;page</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">string=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;About&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                                This is an example of notebooks\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/page&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/notebook&gt;</span>\\\n</span>                    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/sheet&gt;</span>\\\n                <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/form&gt;</span>\\\n            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</pre></div>\\\n</div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n</div>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Form views can also use plain HTML for more flexible layouts:</p>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\"><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;form</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">string=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Idea Form&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;header&gt;</span>\\\n        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;button</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">string=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Confirm&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">type=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;object&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;action_confirm&quot;</span>\\\n                <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">states=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;draft&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">class=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;oe_highlight&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;button</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">string=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Mark as done&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">type=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;object&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;action_done&quot;</span>\\\n                <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">states=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;confirmed&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">class=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;oe_highlight&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;button</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">string=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Reset to draft&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">type=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;object&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;action_draft&quot;</span>\\\n                <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">states=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;confirmed,done&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;state&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">widget=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;statusbar&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/header&gt;</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;sheet&gt;</span>\\\n        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;div</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">class=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;oe_title&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;label</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">for=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;name&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">class=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;oe_edit_only&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">string=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Idea Name&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;h1&gt;&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;name&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;&lt;/h1&gt;</span>\\\n        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/div&gt;</span>\\\n        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;separator</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">string=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;General&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">colspan=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;2&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;group</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">colspan=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;2&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">col=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;2&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;description&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">placeholder=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Idea description...&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/group&gt;</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/sheet&gt;</span>\\\n<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/form&gt;</span>\\\n</pre></div>\\\n</div>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;\\\">\\\n<h3 style=\\\"box-sizing:border-box;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;margin-top:20px;margin-bottom:10px;font-size:24px;\\\">Search views</h3>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Search views customize the search field associated with the list view (and\\\nother aggregated views). Their root element is <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">&lt;search&gt;</span></tt> and they’re\\\ncomposed of fields defining which fields can be searched on:</p>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\"><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;search&gt;</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;name&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;inventor_id&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/search&gt;</span>\\\n</pre></div>\\\n</div>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">If no search view exists for the model, Odoo generates one which only allows\\\nsearching on the <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">name</span></tt> field.</p>\\\n<div style=\\\"box-sizing:border-box;padding:20px;margin:20px 0px;border-width:1px 1px 1px 5px;border-style:solid;border-color:rgb(238, 238, 238);border-radius:3px;border-left-color:rgb(119, 119, 119);\\\">\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(85, 85, 85);font-size:18px;\\\">Exercise<span style=\\\"font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(85, 85, 85);font-size:18px;\\\">: </span></p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;font-size:18px;\\\">Search courses</p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Allow searching for courses based on their title or their description.</p>\\\n<div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<em style=\\\"box-sizing:border-box;\\\">openacademy/views/openacademy.xml</em><div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/record&gt;</span>\\\n\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;record</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">model=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;ir.ui.view&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">id=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;course_search_view&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;name&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>course.search<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;model&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>openacademy.course<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;arch&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">type=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;xml&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;search&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;name&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;description&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/search&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/record&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">\\\n</span>        <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">&lt;!-- window action --&gt;</span>\\\n        <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">&lt;!--</span>\\\n<span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">            The following tag is an action definition for a &quot;window action&quot;,</span>\\\n</pre></div>\\\n</div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n</div>\\\n</div>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;margin-bottom:60px;\\\">\\\n<h2 style=\\\"box-sizing:border-box;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;font-size:36px;padding-bottom:9px;margin:0px 0px 20px;border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:rgb(238, 238, 238);padding-top:20px;\\\">Relations between models</h2>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">A record from a model may be related to a record from another model. For\\\ninstance, a sale order record is related to a client record that contains the\\\nclient data; it is also related to its sale order line records.</p>\\\n<div style=\\\"box-sizing:border-box;padding:20px;margin:20px 0px;border-width:1px 1px 1px 5px;border-style:solid;border-color:rgb(238, 238, 238);border-radius:3px;border-left-color:rgb(119, 119, 119);\\\">\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(85, 85, 85);font-size:18px;\\\">Exercise<span style=\\\"font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(85, 85, 85);font-size:18px;\\\">: </span></p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;font-size:18px;\\\">Create a session model</p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">For the module Open Academy, we consider a model for <em style=\\\"box-sizing:border-box;\\\">sessions</em>: a session\\\nis an occurrence of a course taught at a given time for a given audience.</p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Create a model for <em style=\\\"box-sizing:border-box;\\\">sessions</em>. A session has a name, a start date, a\\\nduration and a number of seats. Add an action and a menu item to display\\\nthem. Make the new model visible via a menu item.</p>\\\n<ol style=\\\"box-sizing:border-box;margin-top:0px;margin-bottom:10px;\\\">\\\n<li style=\\\"box-sizing:border-box;\\\">Create the class <em style=\\\"box-sizing:border-box;\\\">Session</em> in <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">openacademy/models.py</span></tt>.</li>\\\n<li style=\\\"box-sizing:border-box;\\\">Add access to the session object in <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">openacademy/view/openacademy.xml</span></tt>.</li>\\\n</ol>\\\n<div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<em style=\\\"box-sizing:border-box;\\\">openacademy/models.py</em><div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\">    <span style=\\\"box-sizing:border-box;\\\">name</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">fields</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Char</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">string</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Title&quot;</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">required</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">True</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n    <span style=\\\"box-sizing:border-box;\\\">description</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">fields</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Text</span><span style=\\\"box-sizing:border-box;\\\">()</span>\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\"><span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">class</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 170, 136);\\\">Session</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">models</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Model</span><span style=\\\"box-sizing:border-box;\\\">):</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;\\\">_name</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'openacademy.session'</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;\\\">name</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">fields</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Char</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">required</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">True</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;\\\">start_date</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">fields</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Date</span><span style=\\\"box-sizing:border-box;\\\">()</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;\\\">duration</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">fields</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Float</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">digits</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(255, 102, 0);\\\">6</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;color:rgb(255, 102, 0);\\\">2</span><span style=\\\"box-sizing:border-box;\\\">),</span> <span style=\\\"box-sizing:border-box;\\\">help</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Duration in days&quot;</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;\\\">seats</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">fields</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Integer</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">string</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Number of seats&quot;</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n</span></pre></div>\\\n</div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n<em style=\\\"box-sizing:border-box;\\\">openacademy/views/openacademy.xml</em><div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\">        <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">&lt;!-- Full id location:</span>\\\n<span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">             action=&quot;openacademy.course_list_action&quot;</span>\\\n<span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">             It is not required when it is the same module --&gt;</span>\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">&lt;!-- session form view --&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;record</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">model=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;ir.ui.view&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">id=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;session_form_view&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;name&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>session.form<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;model&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>openacademy.session<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;arch&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">type=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;xml&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;form</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">string=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Session Form&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;sheet&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;group&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;name&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;start_date&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;duration&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;seats&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/group&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/sheet&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/form&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/record&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;record</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">model=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;ir.actions.act_window&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">id=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;session_list_action&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;name&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>Sessions<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;res_model&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>openacademy.session<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;view_type&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>form<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;view_mode&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>tree,form<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/record&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;menuitem</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">id=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;session_menu&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Sessions&quot;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                  <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">parent=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;openacademy_menu&quot;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                  <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">action=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;session_list_action&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span>    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/data&gt;</span>\\\n<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/openerp&gt;</span>\\\n</pre></div>\\\n</div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n<div style=\\\"box-sizing:border-box;padding:20px;margin:20px 0px;border-width:1px 1px 1px 5px;border-style:solid;border-color:rgb(238, 238, 238);border-radius:3px;\\\">\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;font-size:18px;\\\">Note<span style=\\\"font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;font-size:18px;\\\">: </span></p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;margin-bottom:0px;\\\"><tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">digits=(6,</span> <span style=\\\"box-sizing:border-box;\\\">2)</span></tt> specifies the precision of a float number:\\\n6 is the total number of digits, while 2 is the number of\\\ndigits after the comma. Note that it results in the number\\\ndigits before the comma is a maximum 4</p>\\\n</div>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;\\\">\\\n<h3 style=\\\"box-sizing:border-box;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;margin-top:20px;margin-bottom:10px;font-size:24px;\\\">Relational fields</h3>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Relational fields link records, either of the same model (hierarchies) or\\\nbetween different models.</p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Relational field types are:</p>\\\n<dl style=\\\"box-sizing:border-box;margin-top:0px;margin-bottom:20px;\\\">\\\n<dt style=\\\"box-sizing:border-box;line-height:1.42857143;font-weight:bold;\\\"><a href=\\\"https://www.odoo.com/documentation/8.0/reference/orm.html#openerp.fields.Many2one\\\" style=\\\"box-sizing:border-box;background:transparent;color:rgb(162, 70, 137);text-decoration:none;\\\" title=\\\"openerp.fields.Many2one\\\"><tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">Many2one(other_model,</span> <span style=\\\"box-sizing:border-box;\\\">ondelete='set</span> <span style=\\\"box-sizing:border-box;\\\">null')</span></tt></a></dt>\\\n<dd style=\\\"box-sizing:border-box;line-height:1.42857143;margin-left:30px;\\\"><p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">A simple link to an other object:</p>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\"><span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">print</span> <span style=\\\"box-sizing:border-box;\\\">foo</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">other_id</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">name</span>\\\n</pre></div>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;padding:20px;margin:20px 0px;border-width:1px 1px 1px 5px;border-style:solid;border-color:rgb(238, 238, 238);border-radius:3px;\\\">\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;font-size:18px;\\\">See also<span style=\\\"font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;font-size:18px;\\\">: </span></p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;margin-bottom:0px;\\\"><a href=\\\"http://www.postgresql.org/docs/9.3/static/tutorial-fk.html\\\" style=\\\"box-sizing:border-box;background:transparent;color:rgb(162, 70, 137);text-decoration:none;\\\">foreign keys</a></p>\\\n</div>\\\n</dd>\\\n<dt style=\\\"box-sizing:border-box;line-height:1.42857143;font-weight:bold;\\\"><a href=\\\"https://www.odoo.com/documentation/8.0/reference/orm.html#openerp.fields.One2many\\\" style=\\\"box-sizing:border-box;background:transparent;color:rgb(162, 70, 137);text-decoration:none;\\\" title=\\\"openerp.fields.One2many\\\"><tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">One2many(other_model,</span> <span style=\\\"box-sizing:border-box;\\\">related_field)</span></tt></a></dt>\\\n<dd style=\\\"box-sizing:border-box;line-height:1.42857143;margin-left:30px;\\\"><p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">A virtual relationship, inverse of a <a href=\\\"https://www.odoo.com/documentation/8.0/reference/orm.html#openerp.fields.Many2one\\\" style=\\\"box-sizing:border-box;background:transparent;color:rgb(162, 70, 137);text-decoration:none;\\\" title=\\\"openerp.fields.Many2one\\\"><tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">Many2one</span></tt></a>.\\\nA <a href=\\\"https://www.odoo.com/documentation/8.0/reference/orm.html#openerp.fields.One2many\\\" style=\\\"box-sizing:border-box;background:transparent;color:rgb(162, 70, 137);text-decoration:none;\\\" title=\\\"openerp.fields.One2many\\\"><tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">One2many</span></tt></a> behaves as a container of records,\\\naccessing it results in a (possibly empty) set of records:</p>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\"><span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">for</span> <span style=\\\"box-sizing:border-box;\\\">other</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 0, 0);\\\">in</span> <span style=\\\"box-sizing:border-box;\\\">foo</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">other_ids</span><span style=\\\"box-sizing:border-box;\\\">:</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">print</span> <span style=\\\"box-sizing:border-box;\\\">other</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">name</span>\\\n</pre></div>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;padding:20px;margin:20px 0px;border-width:1px 1px 1px 5px;border-style:solid;border-color:rgb(238, 238, 238);border-radius:3px;border-left-color:rgb(217, 83, 79);\\\">\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(217, 83, 79);font-size:18px;\\\">Danger<span style=\\\"font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(217, 83, 79);font-size:18px;\\\">: </span></p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;margin-bottom:0px;\\\">Because a <a href=\\\"https://www.odoo.com/documentation/8.0/reference/orm.html#openerp.fields.One2many\\\" style=\\\"box-sizing:border-box;background:transparent;color:rgb(162, 70, 137);text-decoration:none;\\\" title=\\\"openerp.fields.One2many\\\"><tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">One2many</span></tt></a> is a virtual relationship,\\\nthere <em style=\\\"box-sizing:border-box;\\\">must</em> be a <a href=\\\"https://www.odoo.com/documentation/8.0/reference/orm.html#openerp.fields.Many2one\\\" style=\\\"box-sizing:border-box;background:transparent;color:rgb(162, 70, 137);text-decoration:none;\\\" title=\\\"openerp.fields.Many2one\\\"><tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">Many2one</span></tt></a> field in the\\\n<tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><em style=\\\"box-sizing:border-box;\\\"><span style=\\\"box-sizing:border-box;\\\">other_model</span></em></tt>, and its name <em style=\\\"box-sizing:border-box;\\\">must</em> be <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><em style=\\\"box-sizing:border-box;\\\"><span style=\\\"box-sizing:border-box;\\\">related_field</span></em></tt></p>\\\n</div>\\\n</dd>\\\n<dt style=\\\"box-sizing:border-box;line-height:1.42857143;font-weight:bold;\\\"><a href=\\\"https://www.odoo.com/documentation/8.0/reference/orm.html#openerp.fields.Many2many\\\" style=\\\"box-sizing:border-box;background:transparent;color:rgb(162, 70, 137);text-decoration:none;\\\" title=\\\"openerp.fields.Many2many\\\"><tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">Many2many(other_model)</span></tt></a></dt>\\\n<dd style=\\\"box-sizing:border-box;line-height:1.42857143;margin-left:30px;\\\"><p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Bidirectional multiple relationship, any record on one side can be related\\\nto any number of records on the other side. Behaves as a container of\\\nrecords, accessing it also results in a possibly empty set of records:</p>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\"><span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">for</span> <span style=\\\"box-sizing:border-box;\\\">other</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 0, 0);\\\">in</span> <span style=\\\"box-sizing:border-box;\\\">foo</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">other_ids</span><span style=\\\"box-sizing:border-box;\\\">:</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">print</span> <span style=\\\"box-sizing:border-box;\\\">other</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">name</span>\\\n</pre></div>\\\n</div>\\\n</dd>\\\n</dl>\\\n<div style=\\\"box-sizing:border-box;padding:20px;margin:20px 0px;border-width:1px 1px 1px 5px;border-style:solid;border-color:rgb(238, 238, 238);border-radius:3px;border-left-color:rgb(119, 119, 119);\\\">\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(85, 85, 85);font-size:18px;\\\">Exercise<span style=\\\"font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(85, 85, 85);font-size:18px;\\\">: </span></p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;font-size:18px;\\\">Many2one relations</p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Using a many2one, modify the <em style=\\\"box-sizing:border-box;\\\">Course</em> and <em style=\\\"box-sizing:border-box;\\\">Session</em> models to reflect their\\\nrelation with other models:</p>\\\n<ul style=\\\"box-sizing:border-box;margin-top:0px;margin-bottom:10px;\\\">\\\n<li style=\\\"box-sizing:border-box;\\\">A course has a <em style=\\\"box-sizing:border-box;\\\">responsible</em> user; the value of that field is a record of\\\nthe built-in model <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">res.users</span></tt>.</li>\\\n<li style=\\\"box-sizing:border-box;\\\">A session has an <em style=\\\"box-sizing:border-box;\\\">instructor</em>; the value of that field is a record of the\\\nbuilt-in model <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">res.partner</span></tt>.</li>\\\n<li style=\\\"box-sizing:border-box;\\\">A session is related to a <em style=\\\"box-sizing:border-box;\\\">course</em>; the value of that field is a record\\\nof the model <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">openacademy.course</span></tt> and is required.</li>\\\n<li style=\\\"box-sizing:border-box;\\\">Adapt the views.</li>\\\n</ul>\\\n<ol style=\\\"box-sizing:border-box;margin-top:0px;margin-bottom:10px;\\\">\\\n<li style=\\\"box-sizing:border-box;\\\">Add the relevant <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">Many2one</span></tt> fields to the models, and</li>\\\n<li style=\\\"box-sizing:border-box;\\\">add them in the views.</li>\\\n</ol>\\\n<div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<em style=\\\"box-sizing:border-box;\\\">openacademy/models.py</em><div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\">    <span style=\\\"box-sizing:border-box;\\\">name</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">fields</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Char</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">string</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Title&quot;</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">required</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">True</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n    <span style=\\\"box-sizing:border-box;\\\">description</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">fields</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Text</span><span style=\\\"box-sizing:border-box;\\\">()</span>\\\n\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;\\\">responsible_id</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">fields</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Many2one</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'res.users'</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;\\\">ondelete</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'set null'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">string</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Responsible&quot;</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">index</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">True</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">\\\n</span>\\\n<span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">class</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 170, 136);\\\">Session</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">models</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Model</span><span style=\\\"box-sizing:border-box;\\\">):</span>\\\n    <span style=\\\"box-sizing:border-box;\\\">_name</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'openacademy.session'</span>\\\n</pre></div>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\">    <span style=\\\"box-sizing:border-box;\\\">start_date</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">fields</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Date</span><span style=\\\"box-sizing:border-box;\\\">()</span>\\\n    <span style=\\\"box-sizing:border-box;\\\">duration</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">fields</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Float</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">digits</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(255, 102, 0);\\\">6</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;color:rgb(255, 102, 0);\\\">2</span><span style=\\\"box-sizing:border-box;\\\">),</span> <span style=\\\"box-sizing:border-box;\\\">help</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Duration in days&quot;</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n    <span style=\\\"box-sizing:border-box;\\\">seats</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">fields</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Integer</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">string</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Number of seats&quot;</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;\\\">instructor_id</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">fields</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Many2one</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'res.partner'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">string</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Instructor&quot;</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;\\\">course_id</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">fields</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Many2one</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'openacademy.course'</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;\\\">ondelete</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'cascade'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">string</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Course&quot;</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">required</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">True</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n</span></pre></div>\\\n</div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n<em style=\\\"box-sizing:border-box;\\\">openacademy/views/openacademy.xml</em><div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\">                    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;sheet&gt;</span>\\\n                        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;group&gt;</span>\\\n                            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;name&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;responsible_id&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span>                        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/group&gt;</span>\\\n                        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;notebook&gt;</span>\\\n                            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;page</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">string=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Description&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</pre></div>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/record&gt;</span>\\\n\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">&lt;!-- override the automatically generated list view for courses --&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;record</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">model=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;ir.ui.view&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">id=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;course_tree_view&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;name&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>course.tree<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;model&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>openacademy.course<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;arch&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">type=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;xml&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;tree</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">string=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Course Tree&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;name&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;responsible_id&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/tree&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/record&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">\\\n</span>        <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">&lt;!-- window action --&gt;</span>\\\n        <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">&lt;!--</span>\\\n<span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">            The following tag is an action definition for a &quot;window action&quot;,</span>\\\n</pre></div>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\">                <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;form</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">string=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Session Form&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n                    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;sheet&gt;</span>\\\n                        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;group&gt;</span>\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;group</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">string=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;General&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                                <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;course_id&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                                <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;name&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                                <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;instructor_id&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/group&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;group</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">string=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Schedule&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                                <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;start_date&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                                <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;duration&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                                <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;seats&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/group&gt;</span>\\\n</span>                        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/group&gt;</span>\\\n                    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/sheet&gt;</span>\\\n                <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/form&gt;</span>\\\n            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/record&gt;</span>\\\n\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">&lt;!-- session tree/list view --&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;record</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">model=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;ir.ui.view&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">id=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;session_tree_view&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;name&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>session.tree<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;model&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>openacademy.session<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;arch&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">type=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;xml&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;tree</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">string=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Session Tree&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;name&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;course_id&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/tree&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/record&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">\\\n</span>        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;record</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">model=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;ir.actions.act_window&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">id=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;session_list_action&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;name&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>Sessions<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;res_model&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>openacademy.session<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</pre></div>\\\n</div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;padding:20px;margin:20px 0px;border-width:1px 1px 1px 5px;border-style:solid;border-color:rgb(238, 238, 238);border-radius:3px;border-left-color:rgb(119, 119, 119);\\\">\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(85, 85, 85);font-size:18px;\\\">Exercise<span style=\\\"font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(85, 85, 85);font-size:18px;\\\">: </span></p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;font-size:18px;\\\">Inverse one2many relations</p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Using the inverse relational field one2many, modify the models to reflect\\\nthe relation between courses and sessions.</p>\\\n<ol style=\\\"box-sizing:border-box;margin-top:0px;margin-bottom:10px;\\\">\\\n<li style=\\\"box-sizing:border-box;\\\">Modify the <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">Course</span></tt> class, and</li>\\\n<li style=\\\"box-sizing:border-box;\\\">add the field in the course form view.</li>\\\n</ol>\\\n<div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<em style=\\\"box-sizing:border-box;\\\">openacademy/models.py</em><div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\">    <span style=\\\"box-sizing:border-box;\\\">responsible_id</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">fields</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Many2one</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'res.users'</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n        <span style=\\\"box-sizing:border-box;\\\">ondelete</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'set null'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">string</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Responsible&quot;</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">index</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">True</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;\\\">session_ids</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">fields</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">One2many</span><span style=\\\"box-sizing:border-box;\\\">(</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'openacademy.session'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'course_id'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">string</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Sessions&quot;</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n</span>\\\n\\\n<span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">class</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 170, 136);\\\">Session</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">models</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Model</span><span style=\\\"box-sizing:border-box;\\\">):</span>\\\n</pre></div>\\\n</div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n<em style=\\\"box-sizing:border-box;\\\">openacademy/views/openacademy.xml</em><div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\">                            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;page</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">string=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Description&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n                                <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;description&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n                            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/page&gt;</span>\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;page</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">string=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Sessions&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                                <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;session_ids&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                                    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;tree</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">string=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Registered sessions&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                                        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;name&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                                        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;instructor_id&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                                    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/tree&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                                <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span>                            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/page&gt;</span>\\\n                        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/notebook&gt;</span>\\\n                    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/sheet&gt;</span>\\\n</pre></div>\\\n</div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;padding:20px;margin:20px 0px;border-width:1px 1px 1px 5px;border-style:solid;border-color:rgb(238, 238, 238);border-radius:3px;border-left-color:rgb(119, 119, 119);\\\">\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(85, 85, 85);font-size:18px;\\\">Exercise<span style=\\\"font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(85, 85, 85);font-size:18px;\\\">: </span></p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;font-size:18px;\\\">Multiple many2many relations</p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Using the relational field many2many, modify the <em style=\\\"box-sizing:border-box;\\\">Session</em> model to relate\\\nevery session to a set of <em style=\\\"box-sizing:border-box;\\\">attendees</em>. Attendees will be represented by\\\npartner records, so we will relate to the built-in model <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">res.partner</span></tt>.\\\nAdapt the views accordingly.</p>\\\n<ol style=\\\"box-sizing:border-box;margin-top:0px;margin-bottom:10px;\\\">\\\n<li style=\\\"box-sizing:border-box;\\\">Modify the <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">Session</span></tt> class, and</li>\\\n<li style=\\\"box-sizing:border-box;\\\">add the field in the form view.</li>\\\n</ol>\\\n<div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<em style=\\\"box-sizing:border-box;\\\">openacademy/models.py</em><div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\">    <span style=\\\"box-sizing:border-box;\\\">instructor_id</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">fields</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Many2one</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'res.partner'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">string</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Instructor&quot;</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n    <span style=\\\"box-sizing:border-box;\\\">course_id</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">fields</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Many2one</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'openacademy.course'</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n        <span style=\\\"box-sizing:border-box;\\\">ondelete</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'cascade'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">string</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Course&quot;</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">required</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">True</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;\\\">attendee_ids</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">fields</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Many2many</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'res.partner'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">string</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Attendees&quot;</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n</span></pre></div>\\\n</div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n<em style=\\\"box-sizing:border-box;\\\">openacademy/views/openacademy.xml</em><div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\">                                <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;seats&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n                            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/group&gt;</span>\\\n                        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/group&gt;</span>\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;label</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">for=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;attendee_ids&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;attendee_ids&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span>                    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/sheet&gt;</span>\\\n                <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/form&gt;</span>\\\n            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</pre></div>\\\n</div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n</div>\\\n</div>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;margin-bottom:60px;\\\">\\\n<h2 style=\\\"box-sizing:border-box;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;font-size:36px;padding-bottom:9px;margin:0px 0px 20px;border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:rgb(238, 238, 238);padding-top:20px;\\\">Inheritance</h2>\\\n<div style=\\\"box-sizing:border-box;\\\">\\\n<h3 style=\\\"box-sizing:border-box;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;margin-top:20px;margin-bottom:10px;font-size:24px;\\\">Model inheritance</h3>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Odoo provides two <em style=\\\"box-sizing:border-box;\\\">inheritance</em> mechanisms to extend an existing model in a\\\nmodular way.</p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">The first inheritance mechanism allows a module to modify the behavior of a\\\nmodel defined in another module:</p>\\\n<ul style=\\\"box-sizing:border-box;margin-top:0px;margin-bottom:10px;\\\">\\\n<li style=\\\"box-sizing:border-box;\\\">add fields to a model,</li>\\\n<li style=\\\"box-sizing:border-box;\\\">override the definition of fields on a model,</li>\\\n<li style=\\\"box-sizing:border-box;\\\">add constraints to a model,</li>\\\n<li style=\\\"box-sizing:border-box;\\\">add methods to a model,</li>\\\n<li style=\\\"box-sizing:border-box;\\\">override existing methods on a model.</li>\\\n</ul>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">The second inheritance mechanism (delegation) allows to link every record of a\\\nmodel to a record in a parent model, and provides transparent access to the\\\nfields of the parent record.</p>\\\n<img src=\\\":/b55cd8554bdb487a8717b43e5b38f9ef\\\" type=\\\"image/png\\\" data-filename=\\\"Image.png\\\" alt=\\\"../_images/inheritance_methods.png\\\" height=\\\"500\\\" style=\\\"box-sizing:border-box;border:0px;vertical-align:middle;display:block;margin:0px auto;\\\" width=\\\"559\\\"/>\\\n<div style=\\\"box-sizing:border-box;padding:20px;margin:20px 0px;border-width:1px 1px 1px 5px;border-style:solid;border-color:rgb(238, 238, 238);border-radius:3px;\\\">\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;font-size:18px;\\\">See also<span style=\\\"font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;font-size:18px;\\\">: </span></p>\\\n<ul style=\\\"box-sizing:border-box;margin-top:0px;margin-bottom:10px;\\\">\\\n<li style=\\\"box-sizing:border-box;\\\"><a href=\\\"https://www.odoo.com/documentation/8.0/reference/orm.html#openerp.models.Model._inherit\\\" style=\\\"box-sizing:border-box;background:transparent;color:rgb(162, 70, 137);text-decoration:none;\\\" title=\\\"openerp.models.Model._inherit\\\"><tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">_inherit</span></tt></a></li>\\\n<li style=\\\"box-sizing:border-box;\\\"><a href=\\\"https://www.odoo.com/documentation/8.0/reference/orm.html#openerp.models.Model._inherits\\\" style=\\\"box-sizing:border-box;background:transparent;color:rgb(162, 70, 137);text-decoration:none;\\\" title=\\\"openerp.models.Model._inherits\\\"><tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">_inherits</span></tt></a></li>\\\n</ul>\\\n</div>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;\\\">\\\n<h3 style=\\\"box-sizing:border-box;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;margin-top:20px;margin-bottom:10px;font-size:24px;\\\">View inheritance</h3>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Instead of modifying existing views in place (by overwriting them), Odoo\\\nprovides view inheritance where children “extension” views are applied on top of\\\nroot views, and can add or remove content from their parent.</p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">An extension view references its parent using the <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">inherit_id</span></tt> field, and\\\ninstead of a single view its <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">arch</span></tt> field is composed of any number of\\\n<tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">xpath</span></tt> elements selecting and altering the content of their parent view:</p>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\"><span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">&lt;!-- improved idea categories list --&gt;</span>\\\n<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;record</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">id=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;idea_category_list2&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">model=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;ir.ui.view&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;name&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>id.category.list2<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;model&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>ir.ui.view<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;inherit_id&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">ref=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;id_category_list&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;arch&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">type=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;xml&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n        <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">&lt;!-- find field description inside tree, and add the field</span>\\\n<span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">             idea_ids after it --&gt;</span>\\\n        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;xpath</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">expr=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;/tree/field[@name='description']&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">position=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;after&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n          <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;idea_ids&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">string=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Number of ideas&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/xpath&gt;</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/record&gt;</span>\\\n</pre></div>\\\n</div>\\\n<dl style=\\\"box-sizing:border-box;margin-top:0px;margin-bottom:20px;\\\">\\\n<dt style=\\\"box-sizing:border-box;line-height:1.42857143;font-weight:bold;\\\"><tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">expr</span></tt></dt>\\\n<dd style=\\\"box-sizing:border-box;line-height:1.42857143;margin-left:30px;\\\">An <a href=\\\"http://w3.org/TR/xpath\\\" style=\\\"box-sizing:border-box;background:transparent;color:rgb(162, 70, 137);text-decoration:none;\\\">XPath</a> expression selecting a single element in the parent view.\\\nRaises an error if it matches no element or more than one</dd>\\\n<dt style=\\\"box-sizing:border-box;line-height:1.42857143;font-weight:bold;\\\"><tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">position</span></tt></dt>\\\n<dd style=\\\"box-sizing:border-box;line-height:1.42857143;margin-left:30px;\\\"><p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Operation to apply to the matched element:</p>\\\n<dl style=\\\"box-sizing:border-box;margin-top:0px;margin-bottom:20px;\\\">\\\n<dt style=\\\"box-sizing:border-box;line-height:1.42857143;font-weight:bold;\\\"><tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">inside</span></tt></dt>\\\n<dd style=\\\"box-sizing:border-box;line-height:1.42857143;margin-left:30px;\\\">appends <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">xpath</span></tt>‘s body at the end of the matched element</dd>\\\n<dt style=\\\"box-sizing:border-box;line-height:1.42857143;font-weight:bold;\\\"><tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">replace</span></tt></dt>\\\n<dd style=\\\"box-sizing:border-box;line-height:1.42857143;margin-left:30px;\\\">replaces the matched element by the <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">xpath</span></tt>‘s body</dd>\\\n<dt style=\\\"box-sizing:border-box;line-height:1.42857143;font-weight:bold;\\\"><tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">before</span></tt></dt>\\\n<dd style=\\\"box-sizing:border-box;line-height:1.42857143;margin-left:30px;\\\">inserts the <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">xpath</span></tt>‘s body as a sibling before the matched element</dd>\\\n<dt style=\\\"box-sizing:border-box;line-height:1.42857143;font-weight:bold;\\\"><tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">after</span></tt></dt>\\\n<dd style=\\\"box-sizing:border-box;line-height:1.42857143;margin-left:30px;\\\">inserts the <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">xpaths</span></tt>‘s body as a sibling after the matched element</dd>\\\n<dt style=\\\"box-sizing:border-box;line-height:1.42857143;font-weight:bold;\\\"><tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">attributes</span></tt></dt>\\\n<dd style=\\\"box-sizing:border-box;line-height:1.42857143;margin-left:30px;\\\">alters the attributes of the matched element using special\\\n<tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">attribute</span></tt> elements in the <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">xpath</span></tt>‘s body</dd>\\\n</dl>\\\n</dd>\\\n</dl>\\\n<div style=\\\"box-sizing:border-box;padding:20px;margin:20px 0px;border-width:1px 1px 1px 5px;border-style:solid;border-color:rgb(238, 238, 238);border-radius:3px;border-left-color:rgb(119, 119, 119);\\\">\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(85, 85, 85);font-size:18px;\\\">Exercise<span style=\\\"font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(85, 85, 85);font-size:18px;\\\">: </span></p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;font-size:18px;\\\">Alter existing content</p>\\\n<ul style=\\\"box-sizing:border-box;margin-top:0px;margin-bottom:10px;\\\">\\\n<li style=\\\"box-sizing:border-box;\\\">Using model inheritance, modify the existing <em style=\\\"box-sizing:border-box;\\\">Partner</em> model to add an\\\n<tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">instructor</span></tt> boolean field, and a many2many field that corresponds to\\\nthe session-partner relation</li>\\\n<li style=\\\"box-sizing:border-box;\\\">Using view inheritance, display this fields in the partner form view</li>\\\n</ul>\\\n<div style=\\\"box-sizing:border-box;padding:20px;margin:20px 0px;border-width:1px 1px 1px 5px;border-style:solid;border-color:rgb(238, 238, 238);border-radius:3px;\\\">\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;font-size:18px;\\\">Note<span style=\\\"font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;font-size:18px;\\\">: </span></p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;margin-bottom:0px;\\\">This is the opportunity to introduce the developer mode to\\\ninspect the view, find its external ID and the place to put the\\\nnew field.</p>\\\n</div>\\\n<ol style=\\\"box-sizing:border-box;margin-top:0px;margin-bottom:10px;\\\">\\\n<li style=\\\"box-sizing:border-box;\\\">Create a file <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">openacademy/partner.py</span></tt> and import it in\\\n<tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">__init__.py</span></tt></li>\\\n<li style=\\\"box-sizing:border-box;\\\">Create a file <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">openacademy/views/partner.xml</span></tt> and add it to\\\n<tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">__openerp__.py</span></tt></li>\\\n</ol>\\\n<div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<em style=\\\"box-sizing:border-box;\\\">openacademy/__init__.py</em><div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\"><span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\"># -*- coding: utf-8 -*-</span>\\\n<span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">from</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 204, 255);\\\">.</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">import</span> <span style=\\\"box-sizing:border-box;\\\">controllers</span>\\\n<span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">from</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 204, 255);\\\">.</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">import</span> <span style=\\\"box-sizing:border-box;\\\">models</span>\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\"><span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">from</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 204, 255);\\\">.</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">import</span> <span style=\\\"box-sizing:border-box;\\\">partner</span>\\\n</span></pre></div>\\\n</div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n<em style=\\\"box-sizing:border-box;\\\">openacademy/__openerp__.py</em><div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\">        <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\"># 'security/ir.model.access.csv',</span>\\\n        <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'templates.xml'</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n        <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'views/openacademy.xml'</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'views/partner.xml'</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n</span>    <span style=\\\"box-sizing:border-box;\\\">],</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\"># only loaded in demonstration mode</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'demo'</span><span style=\\\"box-sizing:border-box;\\\">:</span> <span style=\\\"box-sizing:border-box;\\\">[</span>\\\n</pre></div>\\\n</div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n<em style=\\\"box-sizing:border-box;\\\">openacademy/partner.py</em><div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\"><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\"><span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\"># -*- coding: utf-8 -*-</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\"><span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">from</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 204, 255);\\\">openerp</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">import</span> <span style=\\\"box-sizing:border-box;\\\">fields</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">models</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\"><span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">class</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 170, 136);\\\">Partner</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">models</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Model</span><span style=\\\"box-sizing:border-box;\\\">):</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;\\\">_inherit</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'res.partner'</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\"># Add a new column to the res.partner model, by default partners are not</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\"># instructors</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;\\\">instructor</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">fields</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Boolean</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Instructor&quot;</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">default</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">False</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;\\\">session_ids</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">fields</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Many2many</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'openacademy.session'</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;\\\">string</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Attended Sessions&quot;</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">readonly</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">True</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n</span></pre></div>\\\n</div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n<em style=\\\"box-sizing:border-box;\\\">openacademy/views/partner.xml</em><div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\"><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\"><span style=\\\"box-sizing:border-box;color:rgb(0, 153, 153);\\\">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\"> <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;openerp&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;data&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">&lt;!-- Add instructor field to existing view --&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;record</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">model=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;ir.ui.view&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">id=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;partner_instructor_form_view&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;name&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>partner.instructor<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;model&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>res.partner<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;inherit_id&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">ref=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;base.view_partner_form&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;arch&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">type=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;xml&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;notebook</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">position=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;inside&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;page</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">string=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Sessions&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;group&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;instructor&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;session_ids&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/group&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/page&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/notebook&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/record&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;record</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">model=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;ir.actions.act_window&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">id=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;contact_list_action&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;name&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>Contacts<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;res_model&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>res.partner<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;view_mode&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>tree,form<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/record&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;menuitem</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">id=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;configuration_menu&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Configuration&quot;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                  <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">parent=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;main_openacademy_menu&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;menuitem</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">id=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;contact_menu&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Contacts&quot;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                  <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">parent=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;configuration_menu&quot;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                  <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">action=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;contact_list_action&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/data&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\"><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/openerp&gt;</span>\\\n</span></pre></div>\\\n</div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;\\\">\\\n<h4 style=\\\"box-sizing:border-box;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;margin-top:10px;margin-bottom:10px;font-size:18px;\\\">Domains</h4>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">In Odoo, <a href=\\\"https://www.odoo.com/documentation/8.0/reference/orm.html#reference-orm-domains\\\" style=\\\"box-sizing:border-box;background:transparent;color:rgb(162, 70, 137);text-decoration:none;\\\"><em style=\\\"box-sizing:border-box;\\\">Domains</em></a> are values that encode conditions on\\\nrecords. A domain is a  list of criteria used to select a subset of a model’s\\\nrecords. Each criteria is a triple with a field name, an operator and a value.</p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">For instance, when used on the <em style=\\\"box-sizing:border-box;\\\">Product</em> model the following domain selects\\\nall <em style=\\\"box-sizing:border-box;\\\">services</em> with a unit price over <em style=\\\"box-sizing:border-box;\\\">1000</em>:</p>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\"><span style=\\\"box-sizing:border-box;\\\">[(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'product_type'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'='</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'service'</span><span style=\\\"box-sizing:border-box;\\\">),</span> <span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'unit_price'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'&gt;'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;color:rgb(255, 102, 0);\\\">1000</span><span style=\\\"box-sizing:border-box;\\\">)]</span>\\\n</pre></div>\\\n</div>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">By default criteria are combined with an implicit AND. The logical operators\\\n<tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">&amp;</span></tt> (AND), <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">|</span></tt> (OR) and <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">!</span></tt> (NOT) can be used to explicitly combine\\\ncriteria. They are used in prefix position (the operator is inserted before\\\nits arguments rather than between). For instance to select products “which are\\\nservices <em style=\\\"box-sizing:border-box;\\\">OR</em> have a unit price which is <em style=\\\"box-sizing:border-box;\\\">NOT</em> between 1000 and 2000”:</p>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\"><span style=\\\"box-sizing:border-box;\\\">[</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'|'</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n    <span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'product_type'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'='</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'service'</span><span style=\\\"box-sizing:border-box;\\\">),</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'!'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'&amp;'</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n        <span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'unit_price'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'&gt;='</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;color:rgb(255, 102, 0);\\\">1000</span><span style=\\\"box-sizing:border-box;\\\">),</span>\\\n        <span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'unit_price'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'&lt;'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;color:rgb(255, 102, 0);\\\">2000</span><span style=\\\"box-sizing:border-box;\\\">)]</span>\\\n</pre></div>\\\n</div>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">A <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">domain</span></tt> parameter can be added to relational fields to limit valid\\\nrecords for the relation when trying to select records in the client interface.</p>\\\n<div style=\\\"box-sizing:border-box;padding:20px;margin:20px 0px;border-width:1px 1px 1px 5px;border-style:solid;border-color:rgb(238, 238, 238);border-radius:3px;border-left-color:rgb(119, 119, 119);\\\">\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(85, 85, 85);font-size:18px;\\\">Exercise<span style=\\\"font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(85, 85, 85);font-size:18px;\\\">: </span></p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;font-size:18px;\\\">Domains on relational fields</p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">When selecting the instructor for a <em style=\\\"box-sizing:border-box;\\\">Session</em>, only instructors (partners\\\nwith <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">instructor</span></tt> set to <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">True</span></tt>) should be visible.</p>\\\n<div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<em style=\\\"box-sizing:border-box;\\\">openacademy/models.py</em><div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\">    <span style=\\\"box-sizing:border-box;\\\">duration</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">fields</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Float</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">digits</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(255, 102, 0);\\\">6</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;color:rgb(255, 102, 0);\\\">2</span><span style=\\\"box-sizing:border-box;\\\">),</span> <span style=\\\"box-sizing:border-box;\\\">help</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Duration in days&quot;</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n    <span style=\\\"box-sizing:border-box;\\\">seats</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">fields</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Integer</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">string</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Number of seats&quot;</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;\\\">instructor_id</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">fields</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Many2one</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'res.partner'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">string</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Instructor&quot;</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;\\\">domain</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;\\\">[(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'instructor'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'='</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">True</span><span style=\\\"box-sizing:border-box;\\\">)])</span>\\\n</span>    <span style=\\\"box-sizing:border-box;\\\">course_id</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">fields</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Many2one</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'openacademy.course'</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n        <span style=\\\"box-sizing:border-box;\\\">ondelete</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'cascade'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">string</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Course&quot;</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">required</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">True</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n    <span style=\\\"box-sizing:border-box;\\\">attendee_ids</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">fields</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Many2many</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'res.partner'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">string</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Attendees&quot;</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n</pre></div>\\\n</div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n<div style=\\\"box-sizing:border-box;padding:20px;margin:20px 0px;border-width:1px 1px 1px 5px;border-style:solid;border-color:rgb(238, 238, 238);border-radius:3px;\\\">\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;font-size:18px;\\\">Note<span style=\\\"font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;font-size:18px;\\\">: </span></p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;margin-bottom:0px;\\\">A domain declared as a literal list is evaluated server-side and\\\ncan’t refer to dynamic values on the right-hand side, a domain\\\ndeclared as a string is evaluated client-side and allows\\\nfield names on the right-hand side</p>\\\n</div>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;padding:20px;margin:20px 0px;border-width:1px 1px 1px 5px;border-style:solid;border-color:rgb(238, 238, 238);border-radius:3px;border-left-color:rgb(119, 119, 119);\\\">\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(85, 85, 85);font-size:18px;\\\">Exercise<span style=\\\"font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(85, 85, 85);font-size:18px;\\\">: </span></p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;font-size:18px;\\\">More complex domains</p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Create new partner categories <em style=\\\"box-sizing:border-box;\\\">Teacher / Level 1</em> and <em style=\\\"box-sizing:border-box;\\\">Teacher / Level 2</em>.\\\nThe instructor for a session can be either an instructor or a teacher\\\n(of any level).</p>\\\n<ol style=\\\"box-sizing:border-box;margin-top:0px;margin-bottom:10px;\\\">\\\n<li style=\\\"box-sizing:border-box;\\\">Modify the <em style=\\\"box-sizing:border-box;\\\">Session</em> model’s domain</li>\\\n<li style=\\\"box-sizing:border-box;\\\">Modify <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">openacademy/view/partner.xml</span></tt> to get access to\\\n<em style=\\\"box-sizing:border-box;\\\">Partner categories</em>:</li>\\\n</ol>\\\n<div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<em style=\\\"box-sizing:border-box;\\\">openacademy/models.py</em><div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\">    <span style=\\\"box-sizing:border-box;\\\">seats</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">fields</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Integer</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">string</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Number of seats&quot;</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n\\\n    <span style=\\\"box-sizing:border-box;\\\">instructor_id</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">fields</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Many2one</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'res.partner'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">string</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Instructor&quot;</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;\\\">domain</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;\\\">[</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'|'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'instructor'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'='</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">True</span><span style=\\\"box-sizing:border-box;\\\">),</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                     <span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'category_id.name'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'ilike'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Teacher&quot;</span><span style=\\\"box-sizing:border-box;\\\">)])</span>\\\n</span>    <span style=\\\"box-sizing:border-box;\\\">course_id</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">fields</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Many2one</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'openacademy.course'</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n        <span style=\\\"box-sizing:border-box;\\\">ondelete</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'cascade'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">string</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Course&quot;</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">required</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">True</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n    <span style=\\\"box-sizing:border-box;\\\">attendee_ids</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">fields</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Many2many</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'res.partner'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">string</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Attendees&quot;</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n</pre></div>\\\n</div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n<em style=\\\"box-sizing:border-box;\\\">openacademy/views/partner.xml</em><div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;menuitem</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">id=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;contact_menu&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Contacts&quot;</span>\\\n                  <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">parent=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;configuration_menu&quot;</span>\\\n                  <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">action=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;contact_list_action&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;record</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">model=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;ir.actions.act_window&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">id=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;contact_cat_list_action&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;name&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>Contact Tags<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;res_model&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>res.partner.category<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;view_mode&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>tree,form<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/record&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;menuitem</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">id=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;contact_cat_menu&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Contact Tags&quot;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                  <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">parent=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;configuration_menu&quot;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                  <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">action=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;contact_cat_list_action&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;record</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">model=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;res.partner.category&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">id=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;teacher1&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;name&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>Teacher / Level 1<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/record&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;record</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">model=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;res.partner.category&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">id=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;teacher2&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;name&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>Teacher / Level 2<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/record&gt;</span>\\\n</span>    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/data&gt;</span>\\\n<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/openerp&gt;</span>\\\n</pre></div>\\\n</div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n</div>\\\n</div>\\\n</div>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;margin-bottom:60px;\\\">\\\n<h2 style=\\\"box-sizing:border-box;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;font-size:36px;padding-bottom:9px;margin:0px 0px 20px;border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:rgb(238, 238, 238);padding-top:20px;\\\">Computed fields and default values</h2>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">So far fields have been stored directly in and retrieved directly from the\\\ndatabase. Fields can also be <em style=\\\"box-sizing:border-box;\\\">computed</em>. In that case, the field’s value is not\\\nretrieved from the database but computed on-the-fly by calling a method of the\\\nmodel.</p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">To create a computed field, create a field and set its attribute\\\n<tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">compute</span></tt> to the name of a method. The computation\\\nmethod should simply set the value of the field to compute on every record in\\\n<tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">self</span></tt>.</p>\\\n<div style=\\\"box-sizing:border-box;padding:20px;margin:20px 0px;border-width:1px 1px 1px 5px;border-style:solid;border-color:rgb(238, 238, 238);border-radius:3px;border-left-color:rgb(217, 83, 79);\\\">\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(217, 83, 79);font-size:18px;\\\">Danger<span style=\\\"font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(217, 83, 79);font-size:18px;\\\">: </span></p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;font-size:18px;\\\"><tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">self</span></tt> is a collection</p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">The object <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">self</span></tt> is a <em style=\\\"box-sizing:border-box;\\\">recordset</em>, i.e., an ordered collection of\\\nrecords. It supports the standard Python operations on collections, like\\\n<tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">len(self)</span></tt> and <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">iter(self)</span></tt>, plus extra set operations like <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">recs1</span> <span style=\\\"box-sizing:border-box;\\\">+</span>\\\n<span style=\\\"box-sizing:border-box;\\\">recs2</span></tt>.</p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;margin-bottom:0px;\\\">Iterating over <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">self</span></tt> gives the records one by one, where each record is\\\nitself a collection of size 1. You can access/assign fields on single\\\nrecords by using the dot notation, like <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">record.name</span></tt>.</p>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\"><span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">import</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 204, 255);\\\">random</span>\\\n<span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">from</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 204, 255);\\\">openerp</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">import</span> <span style=\\\"box-sizing:border-box;\\\">models</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">fields</span>\\\n\\\n<span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">class</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 170, 136);\\\">ComputedModel</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">models</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Model</span><span style=\\\"box-sizing:border-box;\\\">):</span>\\\n    <span style=\\\"box-sizing:border-box;\\\">_name</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'test.computed'</span>\\\n\\\n    <span style=\\\"box-sizing:border-box;\\\">name</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">fields</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Char</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">compute</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'_compute_name'</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n\\\n    <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">def</span> <span style=\\\"box-sizing:border-box;color:rgb(204, 0, 255);\\\">_compute_name</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;\\\">):</span>\\\n        <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">for</span> <span style=\\\"box-sizing:border-box;\\\">record</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 0, 0);\\\">in</span> <span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;\\\">:</span>\\\n            <span style=\\\"box-sizing:border-box;\\\">record</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">name</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">str</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">random</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">randint</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(255, 102, 0);\\\">1</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;color:rgb(255, 102, 0);\\\">1e6</span><span style=\\\"box-sizing:border-box;\\\">))</span>\\\n</pre></div>\\\n</div>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Our compute method is very simple: it loops over <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">self</span></tt> and performs the same\\\noperation on every record. We can make it slightly simpler by using the\\\ndecorator <a href=\\\"https://www.odoo.com/documentation/8.0/reference/orm.html#openerp.api.one\\\" style=\\\"box-sizing:border-box;background:transparent;color:rgb(162, 70, 137);text-decoration:none;\\\" title=\\\"openerp.api.one\\\"><tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">one()</span></tt></a> to automatically loop on the collection:</p>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\"><span style=\\\"box-sizing:border-box;color:rgb(153, 153, 255);\\\">@api.one</span>\\\n<span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">def</span> <span style=\\\"box-sizing:border-box;color:rgb(204, 0, 255);\\\">_compute_name</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;\\\">):</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">name</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">str</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">random</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">randint</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(255, 102, 0);\\\">1</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;color:rgb(255, 102, 0);\\\">1e6</span><span style=\\\"box-sizing:border-box;\\\">))</span>\\\n</pre></div>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;\\\">\\\n<h3 style=\\\"box-sizing:border-box;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;margin-top:20px;margin-bottom:10px;font-size:24px;\\\">Dependencies</h3>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">The value of a computed field usually depends on the values of other fields on\\\nthe computed record. The ORM expects the developer to specify those dependencies\\\non the compute method with the decorator <a href=\\\"https://www.odoo.com/documentation/8.0/reference/orm.html#openerp.api.depends\\\" style=\\\"box-sizing:border-box;background:transparent;color:rgb(162, 70, 137);text-decoration:none;\\\" title=\\\"openerp.api.depends\\\"><tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">depends()</span></tt></a>.\\\nThe given dependencies are used by the ORM to trigger the recomputation of the\\\nfield whenever some of its dependencies have been modified:</p>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\"><span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">from</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 204, 255);\\\">openerp</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">import</span> <span style=\\\"box-sizing:border-box;\\\">models</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">fields</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">api</span>\\\n\\\n<span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">class</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 170, 136);\\\">ComputedModel</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">models</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Model</span><span style=\\\"box-sizing:border-box;\\\">):</span>\\\n    <span style=\\\"box-sizing:border-box;\\\">_name</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'test.computed'</span>\\\n\\\n    <span style=\\\"box-sizing:border-box;\\\">name</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">fields</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Char</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">compute</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'_compute_name'</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n    <span style=\\\"box-sizing:border-box;\\\">value</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">fields</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Integer</span><span style=\\\"box-sizing:border-box;\\\">()</span>\\\n\\\n    <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 255);\\\">@api.one</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 255);\\\">@api.depends</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'value'</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">def</span> <span style=\\\"box-sizing:border-box;color:rgb(204, 0, 255);\\\">_compute_name</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;\\\">):</span>\\\n        <span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">name</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Record with value </span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">%s</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">%</span> <span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">value</span>\\\n</pre></div>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;padding:20px;margin:20px 0px;border-width:1px 1px 1px 5px;border-style:solid;border-color:rgb(238, 238, 238);border-radius:3px;border-left-color:rgb(119, 119, 119);\\\">\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(85, 85, 85);font-size:18px;\\\">Exercise<span style=\\\"font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(85, 85, 85);font-size:18px;\\\">: </span></p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;font-size:18px;\\\">Computed fields</p>\\\n<ul style=\\\"box-sizing:border-box;margin-top:0px;margin-bottom:10px;\\\">\\\n<li style=\\\"box-sizing:border-box;\\\">Add the percentage of taken seats to the <em style=\\\"box-sizing:border-box;\\\">Session</em> model</li>\\\n<li style=\\\"box-sizing:border-box;\\\">Display that field in the tree and form views</li>\\\n<li style=\\\"box-sizing:border-box;\\\">Display the field as a progress bar</li>\\\n</ul>\\\n<ol style=\\\"box-sizing:border-box;margin-top:0px;margin-bottom:10px;\\\">\\\n<li style=\\\"box-sizing:border-box;\\\">Add a computed field to <em style=\\\"box-sizing:border-box;\\\">Session</em></li>\\\n<li style=\\\"box-sizing:border-box;\\\">Show the field in the <em style=\\\"box-sizing:border-box;\\\">Session</em> view:</li>\\\n</ol>\\\n<div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<em style=\\\"box-sizing:border-box;\\\">openacademy/models.py</em><div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\">    <span style=\\\"box-sizing:border-box;\\\">course_id</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">fields</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Many2one</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'openacademy.course'</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n        <span style=\\\"box-sizing:border-box;\\\">ondelete</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'cascade'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">string</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Course&quot;</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">required</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">True</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n    <span style=\\\"box-sizing:border-box;\\\">attendee_ids</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">fields</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Many2many</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'res.partner'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">string</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Attendees&quot;</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;\\\">taken_seats</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">fields</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Float</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">string</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Taken seats&quot;</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">compute</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'_taken_seats'</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 255);\\\">@api.one</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 255);\\\">@api.depends</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'seats'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'attendee_ids'</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">def</span> <span style=\\\"box-sizing:border-box;color:rgb(204, 0, 255);\\\">_taken_seats</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;\\\">):</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">if</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 0, 0);\\\">not</span> <span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">seats</span><span style=\\\"box-sizing:border-box;\\\">:</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">taken_seats</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;color:rgb(255, 102, 0);\\\">0.0</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">else</span><span style=\\\"box-sizing:border-box;\\\">:</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">taken_seats</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;color:rgb(255, 102, 0);\\\">100.0</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">*</span> <span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">len</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">attendee_ids</span><span style=\\\"box-sizing:border-box;\\\">)</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">/</span> <span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">seats</span>\\\n</span></pre></div>\\\n</div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n<em style=\\\"box-sizing:border-box;\\\">openacademy/views/openacademy.xml</em><div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\">                                <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;start_date&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n                                <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;duration&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n                                <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;seats&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                                <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;taken_seats&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">widget=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;progressbar&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span>                            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/group&gt;</span>\\\n                        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/group&gt;</span>\\\n                        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;label</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">for=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;attendee_ids&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</pre></div>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\">                <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;tree</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">string=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Session Tree&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n                    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;name&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n                    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;course_id&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;taken_seats&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">widget=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;progressbar&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span>                <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/tree&gt;</span>\\\n            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/record&gt;</span>\\\n</pre></div>\\\n</div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n</div>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;\\\">\\\n<h3 style=\\\"box-sizing:border-box;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;margin-top:20px;margin-bottom:10px;font-size:24px;\\\">Default values</h3>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Any field can be given a default value. In the field definition, add the option\\\n<tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">default=X</span></tt> where <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">X</span></tt> is either a Python literal value (boolean, integer,\\\nfloat, string), or a function taking a recordset and returning a value:</p>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\"><span style=\\\"box-sizing:border-box;\\\">name</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">fields</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Char</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">default</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Unknown&quot;</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n<span style=\\\"box-sizing:border-box;\\\">user_id</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">fields</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Many2one</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'res.users'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">default</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">lambda</span> <span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;\\\">:</span> <span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">env</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">user</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n</pre></div>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;padding:20px;margin:20px 0px;border-width:1px 1px 1px 5px;border-style:solid;border-color:rgb(238, 238, 238);border-radius:3px;\\\">\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;font-size:18px;\\\">Note<span style=\\\"font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;font-size:18px;\\\">: </span></p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">The object <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">self.env</span></tt> gives access to request parameters and other useful\\\nthings:</p>\\\n<ul style=\\\"box-sizing:border-box;margin-top:0px;margin-bottom:10px;\\\">\\\n<li style=\\\"box-sizing:border-box;\\\"><tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">self.env.cr</span></tt> or <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">self._cr</span></tt> is the database <em style=\\\"box-sizing:border-box;\\\">cursor</em> object; it is\\\nused for querying the database</li>\\\n<li style=\\\"box-sizing:border-box;\\\"><tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">self.env.uid</span></tt> or <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">self._uid</span></tt> is the current user’s database id</li>\\\n<li style=\\\"box-sizing:border-box;\\\"><tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">self.env.user</span></tt> is the current user’s record</li>\\\n<li style=\\\"box-sizing:border-box;\\\"><tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">self.env.context</span></tt> or <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">self._context</span></tt> is the context dictionary</li>\\\n<li style=\\\"box-sizing:border-box;\\\"><tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">self.env.ref(xml_id)</span></tt> returns the record corresponding to an XML id</li>\\\n<li style=\\\"box-sizing:border-box;\\\"><tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">self.env[model_name]</span></tt> returns an instance of the given model</li>\\\n</ul>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;padding:20px;margin:20px 0px;border-width:1px 1px 1px 5px;border-style:solid;border-color:rgb(238, 238, 238);border-radius:3px;border-left-color:rgb(119, 119, 119);\\\">\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(85, 85, 85);font-size:18px;\\\">Exercise<span style=\\\"font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(85, 85, 85);font-size:18px;\\\">: </span></p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;font-size:18px;\\\">Active objects – Default values</p>\\\n<ul style=\\\"box-sizing:border-box;margin-top:0px;margin-bottom:10px;\\\">\\\n<li style=\\\"box-sizing:border-box;\\\">Define the start_date default value as today (see\\\n<a href=\\\"https://www.odoo.com/documentation/8.0/reference/orm.html#openerp.fields.Date\\\" style=\\\"box-sizing:border-box;background:transparent;color:rgb(162, 70, 137);text-decoration:none;\\\" title=\\\"openerp.fields.Date\\\"><tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">Date</span></tt></a>).</li>\\\n<li style=\\\"box-sizing:border-box;\\\">Add a field <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">active</span></tt> in the class Session, and set sessions as active by\\\ndefault.</li>\\\n</ul>\\\n<div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<em style=\\\"box-sizing:border-box;\\\">openacademy/models.py</em><div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\">    <span style=\\\"box-sizing:border-box;\\\">_name</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'openacademy.session'</span>\\\n\\\n    <span style=\\\"box-sizing:border-box;\\\">name</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">fields</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Char</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">required</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">True</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;\\\">start_date</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">fields</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Date</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">default</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;\\\">fields</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Date</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">today</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n</span>    <span style=\\\"box-sizing:border-box;\\\">duration</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">fields</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Float</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">digits</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(255, 102, 0);\\\">6</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;color:rgb(255, 102, 0);\\\">2</span><span style=\\\"box-sizing:border-box;\\\">),</span> <span style=\\\"box-sizing:border-box;\\\">help</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Duration in days&quot;</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n    <span style=\\\"box-sizing:border-box;\\\">seats</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">fields</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Integer</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">string</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Number of seats&quot;</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;\\\">active</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">fields</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Boolean</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">default</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">True</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n</span>\\\n    <span style=\\\"box-sizing:border-box;\\\">instructor_id</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">fields</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Many2one</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'res.partner'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">string</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Instructor&quot;</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n        <span style=\\\"box-sizing:border-box;\\\">domain</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;\\\">[</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'|'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'instructor'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'='</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">True</span><span style=\\\"box-sizing:border-box;\\\">),</span>\\\n</pre></div>\\\n</div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n<em style=\\\"box-sizing:border-box;\\\">openacademy/views/openacademy.xml</em><div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\">                                <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;course_id&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n                                <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;name&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n                                <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;instructor_id&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                                <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;active&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span>                            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/group&gt;</span>\\\n                            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;group</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">string=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Schedule&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n                                <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;start_date&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</pre></div>\\\n</div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n<div style=\\\"box-sizing:border-box;padding:20px;margin:20px 0px;border-width:1px 1px 1px 5px;border-style:solid;border-color:rgb(238, 238, 238);border-radius:3px;\\\">\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;font-size:18px;\\\">Note<span style=\\\"font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;font-size:18px;\\\">: </span></p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;margin-bottom:0px;\\\">Odoo has built-in rules making fields with an <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">active</span></tt> field set\\\nto <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">False</span></tt> invisible.</p>\\\n</div>\\\n</div>\\\n</div>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;margin-bottom:60px;\\\">\\\n<h2 style=\\\"box-sizing:border-box;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;font-size:36px;padding-bottom:9px;margin:0px 0px 20px;border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:rgb(238, 238, 238);padding-top:20px;\\\">Onchange</h2>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">The “onchange” mechanism provides a way for the client interface to update a\\\nform whenever the user has filled in a value in a field, without saving anything\\\nto the database.</p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">For instance, suppose a model has three fields <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">amount</span></tt>, <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">unit_price</span></tt> and\\\n<tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">price</span></tt>, and you want to update the price on the form when any of the other\\\nfields is modified. To achieve this, define a method where <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">self</span></tt> represents\\\nthe record in the form view, and decorate it with <a href=\\\"https://www.odoo.com/documentation/8.0/reference/orm.html#openerp.api.onchange\\\" style=\\\"box-sizing:border-box;background:transparent;color:rgb(162, 70, 137);text-decoration:none;\\\" title=\\\"openerp.api.onchange\\\"><tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">onchange()</span></tt></a>\\\nto specify on which field it has to be triggered. Any change you make on\\\n<tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">self</span></tt> will be reflected on the form.</p>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\"><span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">&lt;!-- content of form view --&gt;</span>\\\n<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;amount&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;unit_price&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;price&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">readonly=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;1&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</pre></div>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\"><span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\"># onchange handler</span>\\\n<span style=\\\"box-sizing:border-box;color:rgb(153, 153, 255);\\\">@api.onchange</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'amount'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'unit_price'</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n<span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">def</span> <span style=\\\"box-sizing:border-box;color:rgb(204, 0, 255);\\\">_onchange_price</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;\\\">):</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\"># set auto-changing field</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">price</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">amount</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">*</span> <span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">unit_price</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\"># Can optionally return a warning and domains</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">return</span> <span style=\\\"box-sizing:border-box;\\\">{</span>\\\n        <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'warning'</span><span style=\\\"box-sizing:border-box;\\\">:</span> <span style=\\\"box-sizing:border-box;\\\">{</span>\\\n            <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'title'</span><span style=\\\"box-sizing:border-box;\\\">:</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Something bad happened&quot;</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n            <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'message'</span><span style=\\\"box-sizing:border-box;\\\">:</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;It was very bad indeed&quot;</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n        <span style=\\\"box-sizing:border-box;\\\">}</span>\\\n    <span style=\\\"box-sizing:border-box;\\\">}</span>\\\n</pre></div>\\\n</div>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">For computed fields, valued <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">onchange</span></tt> behavior is built-in as can be seen by\\\nplaying with the <em style=\\\"box-sizing:border-box;\\\">Session</em> form: change the number of seats or participants, and\\\nthe <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">taken_seats</span></tt> progressbar is automatically updated.</p>\\\n<div style=\\\"box-sizing:border-box;padding:20px;margin:20px 0px;border-width:1px 1px 1px 5px;border-style:solid;border-color:rgb(238, 238, 238);border-radius:3px;border-left-color:rgb(119, 119, 119);\\\">\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(85, 85, 85);font-size:18px;\\\">Exercise<span style=\\\"font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(85, 85, 85);font-size:18px;\\\">: </span></p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;font-size:18px;\\\">Warning</p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Add an explicit onchange to warn about invalid values, like a negative\\\nnumber of seats, or more participants than seats.</p>\\\n<div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<em style=\\\"box-sizing:border-box;\\\">openacademy/models.py</em><div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\">            <span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">taken_seats</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;color:rgb(255, 102, 0);\\\">0.0</span>\\\n        <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">else</span><span style=\\\"box-sizing:border-box;\\\">:</span>\\\n            <span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">taken_seats</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;color:rgb(255, 102, 0);\\\">100.0</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">*</span> <span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">len</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">attendee_ids</span><span style=\\\"box-sizing:border-box;\\\">)</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">/</span> <span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">seats</span>\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 255);\\\">@api.onchange</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'seats'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'attendee_ids'</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">def</span> <span style=\\\"box-sizing:border-box;color:rgb(204, 0, 255);\\\">_verify_valid_seats</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;\\\">):</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">if</span> <span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">seats</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">&lt;</span> <span style=\\\"box-sizing:border-box;color:rgb(255, 102, 0);\\\">0</span><span style=\\\"box-sizing:border-box;\\\">:</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">return</span> <span style=\\\"box-sizing:border-box;\\\">{</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'warning'</span><span style=\\\"box-sizing:border-box;\\\">:</span> <span style=\\\"box-sizing:border-box;\\\">{</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                    <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'title'</span><span style=\\\"box-sizing:border-box;\\\">:</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Incorrect 'seats' value&quot;</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                    <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'message'</span><span style=\\\"box-sizing:border-box;\\\">:</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;The number of available seats may not be negative&quot;</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                <span style=\\\"box-sizing:border-box;\\\">},</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;\\\">}</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">if</span> <span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">seats</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">&lt;</span> <span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">len</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">attendee_ids</span><span style=\\\"box-sizing:border-box;\\\">):</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">return</span> <span style=\\\"box-sizing:border-box;\\\">{</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'warning'</span><span style=\\\"box-sizing:border-box;\\\">:</span> <span style=\\\"box-sizing:border-box;\\\">{</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                    <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'title'</span><span style=\\\"box-sizing:border-box;\\\">:</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Too many attendees&quot;</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                    <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'message'</span><span style=\\\"box-sizing:border-box;\\\">:</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Increase seats or remove excess attendees&quot;</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                <span style=\\\"box-sizing:border-box;\\\">},</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;\\\">}</span>\\\n</span></pre></div>\\\n</div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n</div>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;margin-bottom:60px;\\\">\\\n<h2 style=\\\"box-sizing:border-box;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;font-size:36px;padding-bottom:9px;margin:0px 0px 20px;border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:rgb(238, 238, 238);padding-top:20px;\\\">Model constraints</h2>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Odoo provides two ways to set up automatically verified invariants:\\\n<a href=\\\"https://www.odoo.com/documentation/8.0/reference/orm.html#openerp.api.constrains\\\" style=\\\"box-sizing:border-box;background:transparent;color:rgb(162, 70, 137);text-decoration:none;\\\" title=\\\"openerp.api.constrains\\\"><tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">Python</span> <span style=\\\"box-sizing:border-box;\\\">constraints</span></tt></a> and\\\n<a href=\\\"https://www.odoo.com/documentation/8.0/reference/orm.html#openerp.models.Model._sql_constraints\\\" style=\\\"box-sizing:border-box;background:transparent;color:rgb(162, 70, 137);text-decoration:none;\\\" title=\\\"openerp.models.Model._sql_constraints\\\"><tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">SQL</span> <span style=\\\"box-sizing:border-box;\\\">constraints</span></tt></a>.</p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">A Python constraint is defined as a method decorated with\\\n<a href=\\\"https://www.odoo.com/documentation/8.0/reference/orm.html#openerp.api.constrains\\\" style=\\\"box-sizing:border-box;background:transparent;color:rgb(162, 70, 137);text-decoration:none;\\\" title=\\\"openerp.api.constrains\\\"><tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">constrains()</span></tt></a>, and invoked on a recordset. The decorator\\\nspecifies which fields are involved in the constraint, so that the constraint is\\\nautomatically evaluated when one of them is modified. The method is expected to\\\nraise an exception if its invariant is not satisfied:</p>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\"><span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">from</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 204, 255);\\\">openerp.exceptions</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">import</span> <span style=\\\"box-sizing:border-box;\\\">ValidationError</span>\\\n\\\n<span style=\\\"box-sizing:border-box;color:rgb(153, 153, 255);\\\">@api.constrains</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'age'</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n<span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">def</span> <span style=\\\"box-sizing:border-box;color:rgb(204, 0, 255);\\\">_check_something</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;\\\">):</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">for</span> <span style=\\\"box-sizing:border-box;\\\">record</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 0, 0);\\\">in</span> <span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;\\\">:</span>\\\n        <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">if</span> <span style=\\\"box-sizing:border-box;\\\">record</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">age</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">&gt;</span> <span style=\\\"box-sizing:border-box;color:rgb(255, 102, 0);\\\">20</span><span style=\\\"box-sizing:border-box;\\\">:</span>\\\n            <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">raise</span> <span style=\\\"box-sizing:border-box;\\\">ValidationError</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Your record is too old: </span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">%s</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">%</span> <span style=\\\"box-sizing:border-box;\\\">record</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">age</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\"># all records passed the test, don't return anything</span>\\\n</pre></div>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;padding:20px;margin:20px 0px;border-width:1px 1px 1px 5px;border-style:solid;border-color:rgb(238, 238, 238);border-radius:3px;border-left-color:rgb(119, 119, 119);\\\">\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(85, 85, 85);font-size:18px;\\\">Exercise<span style=\\\"font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(85, 85, 85);font-size:18px;\\\">: </span></p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;font-size:18px;\\\">Add Python constraints</p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Add a constraint that checks that the instructor is not present in the\\\nattendees of his/her own session.</p>\\\n<div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<em style=\\\"box-sizing:border-box;\\\">openacademy/models.py</em><div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\"><span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\"># -*- coding: utf-8 -*-</span>\\\n\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\"><span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">from</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 204, 255);\\\">openerp</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">import</span> <span style=\\\"box-sizing:border-box;\\\">models</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">fields</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">api</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">exceptions</span>\\\n</span>\\\n<span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">class</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 170, 136);\\\">Course</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">models</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Model</span><span style=\\\"box-sizing:border-box;\\\">):</span>\\\n    <span style=\\\"box-sizing:border-box;\\\">_name</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'openacademy.course'</span>\\\n</pre></div>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\">                    <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'message'</span><span style=\\\"box-sizing:border-box;\\\">:</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Increase seats or remove excess attendees&quot;</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n                <span style=\\\"box-sizing:border-box;\\\">},</span>\\\n            <span style=\\\"box-sizing:border-box;\\\">}</span>\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 255);\\\">@api.one</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 255);\\\">@api.constrains</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'instructor_id'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'attendee_ids'</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">def</span> <span style=\\\"box-sizing:border-box;color:rgb(204, 0, 255);\\\">_check_instructor_not_in_attendees</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;\\\">):</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">if</span> <span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">instructor_id</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 0, 0);\\\">and</span> <span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">instructor_id</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 0, 0);\\\">in</span> <span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">attendee_ids</span><span style=\\\"box-sizing:border-box;\\\">:</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">raise</span> <span style=\\\"box-sizing:border-box;\\\">exceptions</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">ValidationError</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;A session's instructor can't be an attendee&quot;</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n</span></pre></div>\\\n</div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n</div>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">SQL constraints are defined through the model attribute\\\n<a href=\\\"https://www.odoo.com/documentation/8.0/reference/orm.html#openerp.models.Model._sql_constraints\\\" style=\\\"box-sizing:border-box;background:transparent;color:rgb(162, 70, 137);text-decoration:none;\\\" title=\\\"openerp.models.Model._sql_constraints\\\"><tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">_sql_constraints</span></tt></a>. The latter is assigned to a list\\\nof triples of strings <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">(name,</span> <span style=\\\"box-sizing:border-box;\\\">sql_definition,</span> <span style=\\\"box-sizing:border-box;\\\">message)</span></tt>, where <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">name</span></tt> is a\\\nvalid SQL constraint name, <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">sql_definition</span></tt> is a <a href=\\\"http://www.postgresql.org/docs/9.3/static/ddl-constraints.html\\\" style=\\\"box-sizing:border-box;background:transparent;color:rgb(162, 70, 137);text-decoration:none;\\\">table_constraint</a> expression,\\\nand <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">message</span></tt> is the error message.</p>\\\n<div style=\\\"box-sizing:border-box;padding:20px;margin:20px 0px;border-width:1px 1px 1px 5px;border-style:solid;border-color:rgb(238, 238, 238);border-radius:3px;border-left-color:rgb(119, 119, 119);\\\">\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(85, 85, 85);font-size:18px;\\\">Exercise<span style=\\\"font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(85, 85, 85);font-size:18px;\\\">: </span></p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;font-size:18px;\\\">Add SQL constraints</p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">With the help of <a href=\\\"http://www.postgresql.org/docs/9.3/static/ddl-constraints.html\\\" style=\\\"box-sizing:border-box;background:transparent;color:rgb(162, 70, 137);text-decoration:none;\\\">PostgreSQL’s documentation</a> , add the following\\\nconstraints:</p>\\\n<ol style=\\\"box-sizing:border-box;margin-top:0px;margin-bottom:10px;\\\">\\\n<li style=\\\"box-sizing:border-box;\\\">CHECK that the course description and the course title are different</li>\\\n<li style=\\\"box-sizing:border-box;\\\">Make the Course’s name UNIQUE</li>\\\n</ol>\\\n<div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<em style=\\\"box-sizing:border-box;\\\">openacademy/models.py</em><div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\">    <span style=\\\"box-sizing:border-box;\\\">session_ids</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">fields</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">One2many</span><span style=\\\"box-sizing:border-box;\\\">(</span>\\\n        <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'openacademy.session'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'course_id'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">string</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Sessions&quot;</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;\\\">_sql_constraints</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">[</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'name_description_check'</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">         <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'CHECK(name != description)'</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">         <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;The title of the course should not be the description&quot;</span><span style=\\\"box-sizing:border-box;\\\">),</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'name_unique'</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">         <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'UNIQUE(name)'</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">         <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;The course title must be unique&quot;</span><span style=\\\"box-sizing:border-box;\\\">),</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;\\\">]</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">\\\n</span>\\\n<span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">class</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 170, 136);\\\">Session</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">models</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Model</span><span style=\\\"box-sizing:border-box;\\\">):</span>\\\n    <span style=\\\"box-sizing:border-box;\\\">_name</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'openacademy.session'</span>\\\n</pre></div>\\\n</div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;padding:20px;margin:20px 0px;border-width:1px 1px 1px 5px;border-style:solid;border-color:rgb(238, 238, 238);border-radius:3px;border-left-color:rgb(119, 119, 119);\\\">\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(85, 85, 85);font-size:18px;\\\">Exercise<span style=\\\"font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(85, 85, 85);font-size:18px;\\\">: </span></p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;font-size:18px;\\\">Exercise 6 - Add a duplicate option</p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Since we added a constraint for the Course name uniqueness, it is not\\\npossible to use the “duplicate” function anymore (<em style=\\\"box-sizing:border-box;\\\">Form ‣\\\nDuplicate</em>).</p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Re-implement your own “copy” method which allows to duplicate the Course\\\nobject, changing the original name into “Copy of [original name]”.</p>\\\n<div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<em style=\\\"box-sizing:border-box;\\\">openacademy/models.py</em><div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\">    <span style=\\\"box-sizing:border-box;\\\">session_ids</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">fields</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">One2many</span><span style=\\\"box-sizing:border-box;\\\">(</span>\\\n        <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'openacademy.session'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'course_id'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">string</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Sessions&quot;</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 255);\\\">@api.one</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">def</span> <span style=\\\"box-sizing:border-box;color:rgb(204, 0, 255);\\\">copy</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">default</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">None</span><span style=\\\"box-sizing:border-box;\\\">):</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;\\\">default</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">dict</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">default</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 0, 0);\\\">or</span> <span style=\\\"box-sizing:border-box;\\\">{})</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;\\\">copied_count</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">search_count</span><span style=\\\"box-sizing:border-box;\\\">(</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;\\\">[(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'name'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'=like'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">u&quot;Copy of {}%&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">format</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">name</span><span style=\\\"box-sizing:border-box;\\\">))])</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">if</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 0, 0);\\\">not</span> <span style=\\\"box-sizing:border-box;\\\">copied_count</span><span style=\\\"box-sizing:border-box;\\\">:</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;\\\">new_name</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">u&quot;Copy of {}&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">format</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">name</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">else</span><span style=\\\"box-sizing:border-box;\\\">:</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;\\\">new_name</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">u&quot;Copy of {} ({})&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">format</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">name</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">copied_count</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;\\\">default</span><span style=\\\"box-sizing:border-box;\\\">[</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'name'</span><span style=\\\"box-sizing:border-box;\\\">]</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">new_name</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">return</span> <span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">super</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">Course</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;\\\">)</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">copy</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">default</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">\\\n</span>    <span style=\\\"box-sizing:border-box;\\\">_sql_constraints</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">[</span>\\\n        <span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'name_description_check'</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n         <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'CHECK(name != description)'</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n</pre></div>\\\n</div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n</div>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;margin-bottom:60px;\\\">\\\n<h2 style=\\\"box-sizing:border-box;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;font-size:36px;padding-bottom:9px;margin:0px 0px 20px;border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:rgb(238, 238, 238);padding-top:20px;\\\">Advanced Views</h2>\\\n<div style=\\\"box-sizing:border-box;\\\">\\\n<h3 style=\\\"box-sizing:border-box;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;margin-top:20px;margin-bottom:10px;font-size:24px;\\\">Tree views</h3>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Tree views can take supplementary attributes to further customize their\\\nbehavior:</p>\\\n<dl style=\\\"box-sizing:border-box;margin-top:0px;margin-bottom:20px;\\\">\\\n<dt style=\\\"box-sizing:border-box;line-height:1.42857143;font-weight:bold;\\\"><tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">colors</span></tt></dt>\\\n<dd style=\\\"box-sizing:border-box;line-height:1.42857143;margin-left:30px;\\\"><p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">mappings of colors to conditions. If the condition evaluates to <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">True</span></tt>,\\\nthe corresponding color is applied to the row:</p>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\"><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;tree</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">string=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Idea Categories&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">colors=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;blue:state=='draft';red:state=='trashed'&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;name&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;state&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/tree&gt;</span>\\\n</pre></div>\\\n</div>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Clauses are separated by <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">;</span></tt>, the color and condition are separated by\\\n<tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">:</span></tt>.</p>\\\n</dd>\\\n<dt style=\\\"box-sizing:border-box;line-height:1.42857143;font-weight:bold;\\\"><tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">editable</span></tt></dt>\\\n<dd style=\\\"box-sizing:border-box;line-height:1.42857143;margin-left:30px;\\\">Either <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">&quot;top&quot;</span></tt> or <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">&quot;bottom&quot;</span></tt>. Makes the tree view editable in-place\\\n(rather than having to go through the form view), the value is the\\\nposition where new rows appear.</dd>\\\n</dl>\\\n<div style=\\\"box-sizing:border-box;padding:20px;margin:20px 0px;border-width:1px 1px 1px 5px;border-style:solid;border-color:rgb(238, 238, 238);border-radius:3px;border-left-color:rgb(119, 119, 119);\\\">\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(85, 85, 85);font-size:18px;\\\">Exercise<span style=\\\"font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(85, 85, 85);font-size:18px;\\\">: </span></p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;font-size:18px;\\\">List coloring</p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Modify the Session tree view in such a way that sessions lasting less than\\\n5 days are colored blue, and the ones lasting more than 15 days are\\\ncolored red.</p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Modify the session tree view:</p>\\\n<div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<em style=\\\"box-sizing:border-box;\\\">openacademy/views/openacademy.xml</em><div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;name&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>session.tree<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;model&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>openacademy.session<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;arch&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">type=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;xml&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;tree</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">string=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Session Tree&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">colors=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;#0000ff:duration&amp;lt;5;red:duration&amp;gt;15&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span>                    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;name&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n                    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;course_id&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;duration&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">invisible=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;1&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span>                    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;taken_seats&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">widget=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;progressbar&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n                <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/tree&gt;</span>\\\n            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</pre></div>\\\n</div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n</div>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;\\\">\\\n<h3 style=\\\"box-sizing:border-box;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;margin-top:20px;margin-bottom:10px;font-size:24px;\\\">Calendars</h3>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Displays records as calendar events. Their root element is <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">&lt;calendar&gt;</span></tt> and\\\ntheir most common attributes are:</p>\\\n<dl style=\\\"box-sizing:border-box;margin-top:0px;margin-bottom:20px;\\\">\\\n<dt style=\\\"box-sizing:border-box;line-height:1.42857143;font-weight:bold;\\\"><tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">color</span></tt></dt>\\\n<dd style=\\\"box-sizing:border-box;line-height:1.42857143;margin-left:30px;\\\">The name of the field used for <em style=\\\"box-sizing:border-box;\\\">color segmentation</em>. Colors are\\\nautomatically distributed to events, but events in the same color segment\\\n(records which have the same value for their <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">@color</span></tt> field) will be\\\ngiven the same color.</dd>\\\n<dt style=\\\"box-sizing:border-box;line-height:1.42857143;font-weight:bold;\\\"><tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">date_start</span></tt></dt>\\\n<dd style=\\\"box-sizing:border-box;line-height:1.42857143;margin-left:30px;\\\">record’s field holding the start date/time for the event</dd>\\\n<dt style=\\\"box-sizing:border-box;line-height:1.42857143;font-weight:bold;\\\"><tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">date_stop</span></tt> (optional)</dt>\\\n<dd style=\\\"box-sizing:border-box;line-height:1.42857143;margin-left:30px;\\\">record’s field holding the end date/time for the event</dd>\\\n</dl>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">field (to define the label for each calendar event)</p>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\"><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;calendar</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">string=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Ideas&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">date_start=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;invent_date&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">color=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;inventor_id&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;name&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/calendar&gt;</span>\\\n</pre></div>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;padding:20px;margin:20px 0px;border-width:1px 1px 1px 5px;border-style:solid;border-color:rgb(238, 238, 238);border-radius:3px;border-left-color:rgb(119, 119, 119);\\\">\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(85, 85, 85);font-size:18px;\\\">Exercise<span style=\\\"font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(85, 85, 85);font-size:18px;\\\">: </span></p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;font-size:18px;\\\">Calendar view</p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Add a Calendar view to the <em style=\\\"box-sizing:border-box;\\\">Session</em> model enabling the user to view the\\\nevents associated to the Open Academy.</p>\\\n<ol style=\\\"box-sizing:border-box;margin-top:0px;margin-bottom:10px;\\\">\\\n<li style=\\\"box-sizing:border-box;\\\"><p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Add an <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">end_date</span></tt> field computed from <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">start_date</span></tt> and\\\n<tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">duration</span></tt></p>\\\n<div style=\\\"box-sizing:border-box;padding:20px;margin:20px 0px;border-width:1px 1px 1px 5px;border-style:solid;border-color:rgb(238, 238, 238);border-radius:3px;border-left-color:rgb(91, 192, 222);\\\">\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(91, 192, 222);font-size:18px;\\\">Tip<span style=\\\"font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(91, 192, 222);font-size:18px;\\\">: </span></p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;margin-bottom:0px;\\\">the inverse function makes the field writable, and allows\\\nmoving the sessions (via drag and drop) in the calendar view</p>\\\n</div>\\\n</li>\\\n<li style=\\\"box-sizing:border-box;\\\"><p style=\\\"box-sizing:border-box;margin:0px 0px 10px;margin-bottom:0px;\\\">Add a calendar view to the <em style=\\\"box-sizing:border-box;\\\">Session</em> model</p>\\\n</li>\\\n<li style=\\\"box-sizing:border-box;\\\"><p style=\\\"box-sizing:border-box;margin:0px 0px 10px;margin-bottom:0px;\\\">And add the calendar view to the <em style=\\\"box-sizing:border-box;\\\">Session</em> model’s actions</p>\\\n</li>\\\n</ol>\\\n<div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<em style=\\\"box-sizing:border-box;\\\">openacademy/models.py</em><div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\"><span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\"># -*- coding: utf-8 -*-</span>\\\n\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\"><span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">from</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 204, 255);\\\">datetime</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">import</span> <span style=\\\"box-sizing:border-box;\\\">timedelta</span>\\\n</span><span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">from</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 204, 255);\\\">openerp</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">import</span> <span style=\\\"box-sizing:border-box;\\\">models</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">fields</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">api</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">exceptions</span>\\\n\\\n<span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">class</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 170, 136);\\\">Course</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">models</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Model</span><span style=\\\"box-sizing:border-box;\\\">):</span>\\\n</pre></div>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\">    <span style=\\\"box-sizing:border-box;\\\">attendee_ids</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">fields</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Many2many</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'res.partner'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">string</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Attendees&quot;</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n\\\n    <span style=\\\"box-sizing:border-box;\\\">taken_seats</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">fields</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Float</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">string</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Taken seats&quot;</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">compute</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'_taken_seats'</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;\\\">end_date</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">fields</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Date</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">string</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;End Date&quot;</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">store</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">True</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;\\\">compute</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'_get_end_date'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">inverse</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'_set_end_date'</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 255);\\\">@api.one</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 255);\\\">@api.depends</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'seats'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'attendee_ids'</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n</pre></div>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\">            <span style=\\\"box-sizing:border-box;\\\">}</span>\\\n\\\n    <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 255);\\\">@api.one</span>\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 255);\\\">@api.depends</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'start_date'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'duration'</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">def</span> <span style=\\\"box-sizing:border-box;color:rgb(204, 0, 255);\\\">_get_end_date</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;\\\">):</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">if</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 0, 0);\\\">not</span> <span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">start_date</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 0, 0);\\\">and</span> <span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">duration</span><span style=\\\"box-sizing:border-box;\\\">):</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">end_date</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">start_date</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">return</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\"># Add duration to start_date, but: Monday + 5 days = Saturday, so</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\"># subtract one second to get on Friday instead</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;\\\">start</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">fields</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Datetime</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">from_string</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">start_date</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;\\\">duration</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">timedelta</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">days</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">duration</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">seconds</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=-</span><span style=\\\"box-sizing:border-box;color:rgb(255, 102, 0);\\\">1</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">end_date</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">start</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">+</span> <span style=\\\"box-sizing:border-box;\\\">duration</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 255);\\\">@api.one</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">def</span> <span style=\\\"box-sizing:border-box;color:rgb(204, 0, 255);\\\">_set_end_date</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;\\\">):</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">if</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 0, 0);\\\">not</span> <span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">start_date</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 0, 0);\\\">and</span> <span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">end_date</span><span style=\\\"box-sizing:border-box;\\\">):</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">return</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\"># Compute the difference between dates, but: Friday - Monday = 4 days,</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\"># so add one day to get 5 days instead</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;\\\">start_date</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">fields</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Datetime</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">from_string</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">start_date</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;\\\">end_date</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">fields</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Datetime</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">from_string</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">end_date</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">duration</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">end_date</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">-</span> <span style=\\\"box-sizing:border-box;\\\">start_date</span><span style=\\\"box-sizing:border-box;\\\">)</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">days</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">+</span> <span style=\\\"box-sizing:border-box;color:rgb(255, 102, 0);\\\">1</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 255);\\\">@api.one</span>\\\n</span>    <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 255);\\\">@api.constrains</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'instructor_id'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'attendee_ids'</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">def</span> <span style=\\\"box-sizing:border-box;color:rgb(204, 0, 255);\\\">_check_instructor_not_in_attendees</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;\\\">):</span>\\\n        <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">if</span> <span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">instructor_id</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 0, 0);\\\">and</span> <span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">instructor_id</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 0, 0);\\\">in</span> <span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">attendee_ids</span><span style=\\\"box-sizing:border-box;\\\">:</span>\\\n</pre></div>\\\n</div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n<em style=\\\"box-sizing:border-box;\\\">openacademy/views/openacademy.xml</em><div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/record&gt;</span>\\\n\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">&lt;!-- calendar view --&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;record</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">model=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;ir.ui.view&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">id=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;session_calendar_view&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;name&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>session.calendar<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;model&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>openacademy.session<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;arch&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">type=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;xml&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;calendar</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">string=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Session Calendar&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">date_start=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;start_date&quot;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                          <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">date_stop=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;end_date&quot;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                          <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">color=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;instructor_id&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;name&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/calendar&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/record&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">\\\n</span>        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;record</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">model=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;ir.actions.act_window&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">id=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;session_list_action&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;name&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>Sessions<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;res_model&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>openacademy.session<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;view_type&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>form<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;view_mode&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>tree,form,calendar<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span>        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/record&gt;</span>\\\n\\\n        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;menuitem</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">id=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;session_menu&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Sessions&quot;</span>\\\n</pre></div>\\\n</div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n</div>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;\\\">\\\n<h3 style=\\\"box-sizing:border-box;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;margin-top:20px;margin-bottom:10px;font-size:24px;\\\">Search views</h3>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Search view <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">&lt;field&gt;</span></tt> elements can have a <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">@filter_domain</span></tt> that overrides\\\nthe domain generated for searching on the given field. In the given domain,\\\n<tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">self</span></tt> represents the value entered by the user. In the example below, it is\\\nused to search on both fields <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">name</span></tt> and <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">description</span></tt>.</p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Search views can also contain <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">&lt;filter&gt;</span></tt> elements, which act as toggles for\\\npredefined searches. Filters must have one of the following attributes:</p>\\\n<dl style=\\\"box-sizing:border-box;margin-top:0px;margin-bottom:20px;\\\">\\\n<dt style=\\\"box-sizing:border-box;line-height:1.42857143;font-weight:bold;\\\"><tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">domain</span></tt></dt>\\\n<dd style=\\\"box-sizing:border-box;line-height:1.42857143;margin-left:30px;\\\">add the given domain to the current search</dd>\\\n<dt style=\\\"box-sizing:border-box;line-height:1.42857143;font-weight:bold;\\\"><tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">context</span></tt></dt>\\\n<dd style=\\\"box-sizing:border-box;line-height:1.42857143;margin-left:30px;\\\">add some context to the current search; use the key <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">group_by</span></tt> to group\\\nresults on the given field name</dd>\\\n</dl>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\"><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;search</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">string=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Ideas&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;name&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;description&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">string=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Name and description&quot;</span>\\\n           <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">filter_domain=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;['|', ('name', 'ilike', self), ('description', 'ilike', self)]&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;inventor_id&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;country_id&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">widget=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;selection&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n\\\n    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;filter</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;my_ideas&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">string=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;My Ideas&quot;</span>\\\n            <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">domain=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;[('inventor_id', '=', uid)]&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;group</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">string=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Group By&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;filter</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;group_by_inventor&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">string=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Inventor&quot;</span>\\\n                <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">context=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;{'group_by': 'inventor'}&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/group&gt;</span>\\\n<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/search&gt;</span>\\\n</pre></div>\\\n</div>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">To use a non-default search view in an action, it should be linked using the\\\n<tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">search_view_id</span></tt> field of the action record.</p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">The action can also set default values for search fields through its\\\n<tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">context</span></tt> field: context keys of the form\\\n<tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">search_default_</span><em style=\\\"box-sizing:border-box;\\\"><span style=\\\"box-sizing:border-box;\\\">field_name</span></em></tt> will initialize <em style=\\\"box-sizing:border-box;\\\">field_name</em> with the\\\nprovided value. Search filters must have an optional <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">@name</span></tt> to have a\\\ndefault and behave as booleans (they can only be enabled by default).</p>\\\n<div style=\\\"box-sizing:border-box;padding:20px;margin:20px 0px;border-width:1px 1px 1px 5px;border-style:solid;border-color:rgb(238, 238, 238);border-radius:3px;border-left-color:rgb(119, 119, 119);\\\">\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(85, 85, 85);font-size:18px;\\\">Exercise<span style=\\\"font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(85, 85, 85);font-size:18px;\\\">: </span></p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;font-size:18px;\\\">Search views</p>\\\n<ol style=\\\"box-sizing:border-box;margin-top:0px;margin-bottom:10px;\\\">\\\n<li style=\\\"box-sizing:border-box;\\\">Add a button to filter the courses for which the current user is the\\\nresponsible in the course search view. Make it selected by default.</li>\\\n<li style=\\\"box-sizing:border-box;\\\">Add a button to group courses by responsible user.</li>\\\n</ol>\\\n<div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<em style=\\\"box-sizing:border-box;\\\">openacademy/views/openacademy.xml</em><div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\">                <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;search&gt;</span>\\\n                    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;name&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n                    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;description&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;filter</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;my_courses&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">string=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;My Courses&quot;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                            <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">domain=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(0, 153, 153);\\\">[</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(204, 51, 0);\\\">'responsible_id'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;color:rgb(204, 51, 0);\\\">'='</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">uid</span><span style=\\\"box-sizing:border-box;\\\">)</span><span style=\\\"box-sizing:border-box;color:rgb(0, 153, 153);\\\">]</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;group</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">string=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Group By&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;filter</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;by_responsible&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">string=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Responsible&quot;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                                <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">context=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;{'group_by': 'responsible_id'}&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/group&gt;</span>\\\n</span>                <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/search&gt;</span>\\\n            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/record&gt;</span>\\\n</pre></div>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;res_model&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>openacademy.course<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;view_type&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>form<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;view_mode&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>tree,form<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;context&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">eval=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;{'search_default_my_courses': 1}&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span>            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;help&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">type=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;html&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n                <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;p</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">class=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;oe_view_nocontent_create&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>Create the first course\\\n                <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/p&gt;</span>\\\n</pre></div>\\\n</div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n</div>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;\\\">\\\n<h3 style=\\\"box-sizing:border-box;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;margin-top:20px;margin-bottom:10px;font-size:24px;\\\">Gantt</h3>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Horizontal bar charts typically used to show project planning and advancement,\\\ntheir root element is <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">&lt;gantt&gt;</span></tt>.</p>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\"><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;gantt</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">string=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Ideas&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">date_start=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;invent_date&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">color=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;inventor_id&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;level</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">object=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;idea.idea&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">link=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;id&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">domain=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;[]&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;inventor_id&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/level&gt;</span>\\\n<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/gantt&gt;</span>\\\n</pre></div>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;padding:20px;margin:20px 0px;border-width:1px 1px 1px 5px;border-style:solid;border-color:rgb(238, 238, 238);border-radius:3px;border-left-color:rgb(119, 119, 119);\\\">\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(85, 85, 85);font-size:18px;\\\">Exercise<span style=\\\"font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(85, 85, 85);font-size:18px;\\\">: </span></p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;font-size:18px;\\\">Gantt charts</p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Add a Gantt Chart enabling the user to view the sessions scheduling linked\\\nto the Open Academy module. The sessions should be grouped by instructor.</p>\\\n<ol style=\\\"box-sizing:border-box;margin-top:0px;margin-bottom:10px;\\\">\\\n<li style=\\\"box-sizing:border-box;\\\">Create a computed field expressing the session’s duration in hours</li>\\\n<li style=\\\"box-sizing:border-box;\\\">Add the gantt view’s definition, and add the gantt view to the\\\n<em style=\\\"box-sizing:border-box;\\\">Session</em> model’s action</li>\\\n</ol>\\\n<div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<em style=\\\"box-sizing:border-box;\\\">openacademy/models.py</em><div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\">    <span style=\\\"box-sizing:border-box;\\\">end_date</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">fields</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Date</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">string</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;End Date&quot;</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">store</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">True</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n        <span style=\\\"box-sizing:border-box;\\\">compute</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'_get_end_date'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">inverse</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'_set_end_date'</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;\\\">hours</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">fields</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Float</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">string</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Duration in hours&quot;</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                         <span style=\\\"box-sizing:border-box;\\\">compute</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'_get_hours'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">inverse</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'_set_hours'</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">\\\n</span>    <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 255);\\\">@api.one</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 255);\\\">@api.depends</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'seats'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'attendee_ids'</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">def</span> <span style=\\\"box-sizing:border-box;color:rgb(204, 0, 255);\\\">_taken_seats</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;\\\">):</span>\\\n</pre></div>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\">        <span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">duration</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">end_date</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">-</span> <span style=\\\"box-sizing:border-box;\\\">start_date</span><span style=\\\"box-sizing:border-box;\\\">)</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">days</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">+</span> <span style=\\\"box-sizing:border-box;color:rgb(255, 102, 0);\\\">1</span>\\\n\\\n    <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 255);\\\">@api.one</span>\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 255);\\\">@api.depends</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'duration'</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">def</span> <span style=\\\"box-sizing:border-box;color:rgb(204, 0, 255);\\\">_get_hours</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;\\\">):</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">hours</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">duration</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">*</span> <span style=\\\"box-sizing:border-box;color:rgb(255, 102, 0);\\\">24</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 255);\\\">@api.one</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">def</span> <span style=\\\"box-sizing:border-box;color:rgb(204, 0, 255);\\\">_set_hours</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;\\\">):</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">duration</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">hours</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">/</span> <span style=\\\"box-sizing:border-box;color:rgb(255, 102, 0);\\\">24</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 255);\\\">@api.one</span>\\\n</span>    <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 255);\\\">@api.constrains</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'instructor_id'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'attendee_ids'</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">def</span> <span style=\\\"box-sizing:border-box;color:rgb(204, 0, 255);\\\">_check_instructor_not_in_attendees</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;\\\">):</span>\\\n        <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">if</span> <span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">instructor_id</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 0, 0);\\\">and</span> <span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">instructor_id</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 0, 0);\\\">in</span> <span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">attendee_ids</span><span style=\\\"box-sizing:border-box;\\\">:</span>\\\n</pre></div>\\\n</div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n<em style=\\\"box-sizing:border-box;\\\">openacademy/views/openacademy.xml</em><div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/record&gt;</span>\\\n\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;record</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">model=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;ir.ui.view&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">id=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;session_gantt_view&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;name&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>session.gantt<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;model&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>openacademy.session<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;arch&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">type=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;xml&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;gantt</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">string=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Session Gantt&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">color=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;course_id&quot;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                       <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">date_start=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;start_date&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">date_delay=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;hours&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;level</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">object=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;res.partner&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">link=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;instructor_id&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;name&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/level&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/gantt&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/record&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">\\\n</span>        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;record</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">model=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;ir.actions.act_window&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">id=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;session_list_action&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;name&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>Sessions<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;res_model&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>openacademy.session<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;view_type&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>form<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;view_mode&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>tree,form,calendar,gantt<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span>        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/record&gt;</span>\\\n\\\n        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;menuitem</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">id=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;session_menu&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Sessions&quot;</span>\\\n</pre></div>\\\n</div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n</div>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;\\\">\\\n<h3 style=\\\"box-sizing:border-box;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;margin-top:20px;margin-bottom:10px;font-size:24px;\\\">Graph views</h3>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Graph views allow aggregated overview and analysis of models, their root\\\nelement is <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">&lt;graph&gt;</span></tt>.</p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Graph views have 4 display modes, the default mode is selected using the\\\n<tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">@type</span></tt> attribute.</p>\\\n<dl style=\\\"box-sizing:border-box;margin-top:0px;margin-bottom:20px;\\\">\\\n<dt style=\\\"box-sizing:border-box;line-height:1.42857143;font-weight:bold;\\\">Pivot</dt>\\\n<dd style=\\\"box-sizing:border-box;line-height:1.42857143;margin-left:30px;\\\">a multidimensional table, allows the selection of filers and dimensions\\\nto get the right aggregated dataset before moving to a more graphical\\\noverview</dd>\\\n<dt style=\\\"box-sizing:border-box;line-height:1.42857143;font-weight:bold;\\\">Bar (default)</dt>\\\n<dd style=\\\"box-sizing:border-box;line-height:1.42857143;margin-left:30px;\\\"><p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">a bar chart, the first dimension is used to define groups on the\\\nhorizontal axis, other dimensions define aggregated bars within each group.</p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">By default bars are side-by-side, they can be stacked by using\\\n<tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">@stacked=&quot;True&quot;</span></tt> on the <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">&lt;graph&gt;</span></tt></p>\\\n</dd>\\\n<dt style=\\\"box-sizing:border-box;line-height:1.42857143;font-weight:bold;\\\">Line</dt>\\\n<dd style=\\\"box-sizing:border-box;line-height:1.42857143;margin-left:30px;\\\">2-dimensional line chart</dd>\\\n<dt style=\\\"box-sizing:border-box;line-height:1.42857143;font-weight:bold;\\\">Pie</dt>\\\n<dd style=\\\"box-sizing:border-box;line-height:1.42857143;margin-left:30px;\\\">2-dimensional pie</dd>\\\n</dl>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Graph views contain <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">&lt;field&gt;</span></tt> with a mandatory <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">@type</span></tt> attribute taking\\\nthe values:</p>\\\n<dl style=\\\"box-sizing:border-box;margin-top:0px;margin-bottom:20px;\\\">\\\n<dt style=\\\"box-sizing:border-box;line-height:1.42857143;font-weight:bold;\\\"><tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">row</span></tt> (default)</dt>\\\n<dd style=\\\"box-sizing:border-box;line-height:1.42857143;margin-left:30px;\\\">the field should be aggregated by default</dd>\\\n<dt style=\\\"box-sizing:border-box;line-height:1.42857143;font-weight:bold;\\\"><tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">measure</span></tt></dt>\\\n<dd style=\\\"box-sizing:border-box;line-height:1.42857143;margin-left:30px;\\\">the field should be aggregated rather than grouped on</dd>\\\n</dl>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\"><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;graph</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">string=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Total idea score by Inventor&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;inventor_id&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;score&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">type=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;measure&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/graph&gt;</span>\\\n</pre></div>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;padding:20px;margin:20px 0px;border-width:1px 1px 1px 5px;border-style:solid;border-color:rgb(238, 238, 238);border-radius:3px;border-left-color:rgb(240, 173, 78);\\\">\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(240, 173, 78);font-size:18px;\\\">Warning<span style=\\\"font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(240, 173, 78);font-size:18px;\\\">: </span></p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;margin-bottom:0px;\\\">Graph views perform aggregations on database values, they do not work\\\nwith non-stored computed fields.</p>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;padding:20px;margin:20px 0px;border-width:1px 1px 1px 5px;border-style:solid;border-color:rgb(238, 238, 238);border-radius:3px;border-left-color:rgb(119, 119, 119);\\\">\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(85, 85, 85);font-size:18px;\\\">Exercise<span style=\\\"font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(85, 85, 85);font-size:18px;\\\">: </span></p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;font-size:18px;\\\">Graph view</p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Add a Graph view in the Session object that displays, for each course, the\\\nnumber of attendees under the form of a bar chart.</p>\\\n<ol style=\\\"box-sizing:border-box;margin-top:0px;margin-bottom:10px;\\\">\\\n<li style=\\\"box-sizing:border-box;\\\">Add the number of attendees as a stored computed field</li>\\\n<li style=\\\"box-sizing:border-box;\\\">Then add the relevant view</li>\\\n</ol>\\\n<div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<em style=\\\"box-sizing:border-box;\\\">openacademy/models.py</em><div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\">    <span style=\\\"box-sizing:border-box;\\\">hours</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">fields</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Float</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">string</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Duration in hours&quot;</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n                         <span style=\\\"box-sizing:border-box;\\\">compute</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'_get_hours'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">inverse</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'_set_hours'</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;\\\">attendees_count</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">fields</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Integer</span><span style=\\\"box-sizing:border-box;\\\">(</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;\\\">string</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Attendees count&quot;</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">compute</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'_get_attendees_count'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">store</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">True</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">\\\n</span>    <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 255);\\\">@api.one</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 255);\\\">@api.depends</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'seats'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'attendee_ids'</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">def</span> <span style=\\\"box-sizing:border-box;color:rgb(204, 0, 255);\\\">_taken_seats</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;\\\">):</span>\\\n</pre></div>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\">        <span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">duration</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">hours</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">/</span> <span style=\\\"box-sizing:border-box;color:rgb(255, 102, 0);\\\">24</span>\\\n\\\n    <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 255);\\\">@api.one</span>\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 255);\\\">@api.depends</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'attendee_ids'</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">def</span> <span style=\\\"box-sizing:border-box;color:rgb(204, 0, 255);\\\">_get_attendees_count</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;\\\">):</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">attendees_count</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">len</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">attendee_ids</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 255);\\\">@api.one</span>\\\n</span>    <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 255);\\\">@api.constrains</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'instructor_id'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'attendee_ids'</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">def</span> <span style=\\\"box-sizing:border-box;color:rgb(204, 0, 255);\\\">_check_instructor_not_in_attendees</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;\\\">):</span>\\\n        <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">if</span> <span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">instructor_id</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 0, 0);\\\">and</span> <span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">instructor_id</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 0, 0);\\\">in</span> <span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">attendee_ids</span><span style=\\\"box-sizing:border-box;\\\">:</span>\\\n</pre></div>\\\n</div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n<em style=\\\"box-sizing:border-box;\\\">openacademy/views/openacademy.xml</em><div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/record&gt;</span>\\\n\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;record</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">model=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;ir.ui.view&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">id=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;openacademy_session_graph_view&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;name&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>openacademy.session.graph<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;model&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>openacademy.session<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;arch&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">type=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;xml&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;graph</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">string=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Participations by Courses&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;course_id&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;attendees_count&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">type=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;measure&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/graph&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/record&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">\\\n</span>        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;record</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">model=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;ir.actions.act_window&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">id=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;session_list_action&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;name&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>Sessions<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;res_model&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>openacademy.session<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;view_type&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>form<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;view_mode&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>tree,form,calendar,gantt,graph<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span>        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/record&gt;</span>\\\n\\\n        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;menuitem</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">id=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;session_menu&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Sessions&quot;</span>\\\n</pre></div>\\\n</div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n</div>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;\\\">\\\n<h3 style=\\\"box-sizing:border-box;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;margin-top:20px;margin-bottom:10px;font-size:24px;\\\">Kanban</h3>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Used to organize tasks, production processes, etc… their root element is\\\n<tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">&lt;kanban&gt;</span></tt>.</p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">A kanban view shows a set of cards possibly grouped in columns. Each card\\\nrepresents a record, and each column the values of an aggregation field.</p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">For instance, project tasks may be organized by stage (each column is a\\\nstage), or by responsible (each column is a user), and so on.</p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Kanban views define the structure of each card as a mix of form elements\\\n(including basic HTML) and <a href=\\\"https://www.odoo.com/documentation/8.0/reference/qweb.html#reference-qweb\\\" style=\\\"box-sizing:border-box;background:transparent;color:rgb(162, 70, 137);text-decoration:none;\\\"><em style=\\\"box-sizing:border-box;\\\">QWeb</em></a>.</p>\\\n<div style=\\\"box-sizing:border-box;padding:20px;margin:20px 0px;border-width:1px 1px 1px 5px;border-style:solid;border-color:rgb(238, 238, 238);border-radius:3px;border-left-color:rgb(119, 119, 119);\\\">\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(85, 85, 85);font-size:18px;\\\">Exercise<span style=\\\"font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(85, 85, 85);font-size:18px;\\\">: </span></p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;font-size:18px;\\\">Kanban view</p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Add a Kanban view that displays sessions grouped by course (columns are\\\nthus courses).</p>\\\n<ol style=\\\"box-sizing:border-box;margin-top:0px;margin-bottom:10px;\\\">\\\n<li style=\\\"box-sizing:border-box;\\\">Add an integer <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">color</span></tt> field to the <em style=\\\"box-sizing:border-box;\\\">Session</em> model</li>\\\n<li style=\\\"box-sizing:border-box;\\\">Add the kanban view and update the action</li>\\\n</ol>\\\n<div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<em style=\\\"box-sizing:border-box;\\\">openacademy/models.py</em><div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\">    <span style=\\\"box-sizing:border-box;\\\">duration</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">fields</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Float</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">digits</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(255, 102, 0);\\\">6</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;color:rgb(255, 102, 0);\\\">2</span><span style=\\\"box-sizing:border-box;\\\">),</span> <span style=\\\"box-sizing:border-box;\\\">help</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Duration in days&quot;</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n    <span style=\\\"box-sizing:border-box;\\\">seats</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">fields</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Integer</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">string</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Number of seats&quot;</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n    <span style=\\\"box-sizing:border-box;\\\">active</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">fields</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Boolean</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">default</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">True</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;\\\">color</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">fields</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Integer</span><span style=\\\"box-sizing:border-box;\\\">()</span>\\\n</span>\\\n    <span style=\\\"box-sizing:border-box;\\\">instructor_id</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">fields</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Many2one</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'res.partner'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">string</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Instructor&quot;</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n        <span style=\\\"box-sizing:border-box;\\\">domain</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;\\\">[</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'|'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'instructor'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'='</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">True</span><span style=\\\"box-sizing:border-box;\\\">),</span>\\\n</pre></div>\\\n</div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n<em style=\\\"box-sizing:border-box;\\\">openacademy/views/openacademy.xml</em><div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/record&gt;</span>\\\n\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;record</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">model=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;ir.ui.view&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">id=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;view_openacad_session_kanban&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;name&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>openacad.session.kanban<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;model&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>openacademy.session<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;arch&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">type=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;xml&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;kanban</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">default_group_by=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;course_id&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;color&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;templates&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;t</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">t-name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;kanban-box&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;div</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                                    <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">t-attf-class=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;oe_kanban_color_{{kanban_getcolor(record.color.raw_value)}}</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\"><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">                                                  oe_kanban_global_click_edit oe_semantic_html_override</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\"><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">                                                  oe_kanban_card {{record.group_fancy==1 ? 'oe_kanban_card_fancy' : ''}}&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                                <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;div</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">class=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;oe_dropdown_kanban&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                                    <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">&lt;!-- dropdown menu --&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                                    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;div</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">class=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;oe_dropdown_toggle&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                                        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;span</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">class=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;oe_e&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>#<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/span&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                                        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;ul</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">class=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;oe_dropdown_menu&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                                            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;li&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                                                <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;a</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">type=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;delete&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>Delete<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/a&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                                            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/li&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                                            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;li&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                                                <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;ul</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">class=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;oe_kanban_colorpicker&quot;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                                                    <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">data-field=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;color&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                                            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/li&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                                        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/ul&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                                    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/div&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                                    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;div</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">class=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;oe_clear&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;&lt;/div&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                                <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/div&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                                <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;div</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">t-attf-class=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;oe_kanban_content&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                                    <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">&lt;!-- title --&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                                    Session name:\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                                    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;name&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                                    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;br/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                                    Start date:\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                                    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;start_date&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                                    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;br/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                                    duration:\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                                    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;duration&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                                <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/div&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/div&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/t&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/templates&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/kanban&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/record&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">\\\n</span>        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;record</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">model=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;ir.actions.act_window&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">id=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;session_list_action&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;name&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>Sessions<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;res_model&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>openacademy.session<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;view_type&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>form<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;view_mode&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>tree,form,calendar,gantt,graph,kanban<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span>        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/record&gt;</span>\\\n\\\n        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;menuitem</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">id=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;session_menu&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Sessions&quot;</span>\\\n</pre></div>\\\n</div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n</div>\\\n</div>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;margin-bottom:60px;\\\">\\\n<h2 style=\\\"box-sizing:border-box;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;font-size:36px;padding-bottom:9px;margin:0px 0px 20px;border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:rgb(238, 238, 238);padding-top:20px;\\\">Workflows</h2>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Workflows are models associated to business objects describing their dynamics.\\\nWorkflows are also used to track processes that evolve over time.</p>\\\n<div style=\\\"box-sizing:border-box;padding:20px;margin:20px 0px;border-width:1px 1px 1px 5px;border-style:solid;border-color:rgb(238, 238, 238);border-radius:3px;border-left-color:rgb(119, 119, 119);\\\">\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(85, 85, 85);font-size:18px;\\\">Exercise<span style=\\\"font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(85, 85, 85);font-size:18px;\\\">: </span></p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;font-size:18px;\\\">Almost a workflow</p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Add a <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">state</span></tt> field to the <em style=\\\"box-sizing:border-box;\\\">Session</em> model. It will be used to define\\\na workflow-ish.</p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">A sesion can have three possible states: Draft (default), Confirmed and\\\nDone.</p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">In the session form, add a (read-only) field to\\\nvisualize the state, and buttons to change it. The valid transitions are:</p>\\\n<ul style=\\\"box-sizing:border-box;margin-top:0px;margin-bottom:10px;\\\">\\\n<li style=\\\"box-sizing:border-box;\\\">Draft -&gt; Confirmed</li>\\\n<li style=\\\"box-sizing:border-box;\\\">Confirmed -&gt; Draft</li>\\\n<li style=\\\"box-sizing:border-box;\\\">Confirmed -&gt; Done</li>\\\n<li style=\\\"box-sizing:border-box;\\\">Done -&gt; Draft</li>\\\n</ul>\\\n<ol style=\\\"box-sizing:border-box;margin-top:0px;margin-bottom:10px;\\\">\\\n<li style=\\\"box-sizing:border-box;\\\">Add a new <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">state</span></tt> field</li>\\\n<li style=\\\"box-sizing:border-box;\\\">Add state-transitioning methods, those can be called from view\\\nbuttons to change the record’s state</li>\\\n<li style=\\\"box-sizing:border-box;\\\">And add the relevant buttons to the session’s form view</li>\\\n</ol>\\\n<div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<em style=\\\"box-sizing:border-box;\\\">openacademy/models.py</em><div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\">    <span style=\\\"box-sizing:border-box;\\\">attendees_count</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">fields</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Integer</span><span style=\\\"box-sizing:border-box;\\\">(</span>\\\n        <span style=\\\"box-sizing:border-box;\\\">string</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Attendees count&quot;</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">compute</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'_get_attendees_count'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">store</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">True</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;\\\">state</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">fields</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Selection</span><span style=\\\"box-sizing:border-box;\\\">([</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">         <span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'draft'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Draft&quot;</span><span style=\\\"box-sizing:border-box;\\\">),</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">         <span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'confirmed'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Confirmed&quot;</span><span style=\\\"box-sizing:border-box;\\\">),</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">         <span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'done'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Done&quot;</span><span style=\\\"box-sizing:border-box;\\\">),</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;\\\">],</span> <span style=\\\"box-sizing:border-box;\\\">default</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'draft'</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 255);\\\">@api.one</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">def</span> <span style=\\\"box-sizing:border-box;color:rgb(204, 0, 255);\\\">action_draft</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;\\\">):</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">state</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'draft'</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 255);\\\">@api.one</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">def</span> <span style=\\\"box-sizing:border-box;color:rgb(204, 0, 255);\\\">action_confirm</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;\\\">):</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">state</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'confirmed'</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 255);\\\">@api.one</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">def</span> <span style=\\\"box-sizing:border-box;color:rgb(204, 0, 255);\\\">action_done</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;\\\">):</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">state</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'done'</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">\\\n</span>    <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 255);\\\">@api.one</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 255);\\\">@api.depends</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'seats'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'attendee_ids'</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">def</span> <span style=\\\"box-sizing:border-box;color:rgb(204, 0, 255);\\\">_taken_seats</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;\\\">):</span>\\\n</pre></div>\\\n</div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n<em style=\\\"box-sizing:border-box;\\\">openacademy/views/openacademy.xml</em><div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;model&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>openacademy.session<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;arch&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">type=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;xml&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n                <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;form</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">string=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Session Form&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;header&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;button</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;action_draft&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">type=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;object&quot;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                                <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">string=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Reset to draft&quot;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                                <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">states=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;confirmed,done&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;button</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;action_confirm&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">type=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;object&quot;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                                <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">string=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Confirm&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">states=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;draft&quot;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                                <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">class=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;oe_highlight&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;button</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;action_done&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">type=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;object&quot;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                                <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">string=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Mark as done&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">states=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;confirmed&quot;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                                <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">class=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;oe_highlight&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;state&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">widget=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;statusbar&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/header&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">\\\n</span>                    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;sheet&gt;</span>\\\n                        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;group&gt;</span>\\\n                            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;group</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">string=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;General&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</pre></div>\\\n</div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n</div>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Workflows may be associated with any object in Odoo, and are entirely\\\ncustomizable. Workflows are used to structure and manage the lifecycles of\\\nbusiness objects and documents, and define transitions, triggers, etc. with\\\ngraphical tools. Workflows, activities (nodes or actions) and transitions\\\n(conditions) are declared as XML records, as usual. The tokens that navigate\\\nin workflows are called workitems.</p>\\\n<div style=\\\"box-sizing:border-box;padding:20px;margin:20px 0px;border-width:1px 1px 1px 5px;border-style:solid;border-color:rgb(238, 238, 238);border-radius:3px;border-left-color:rgb(240, 173, 78);\\\">\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(240, 173, 78);font-size:18px;\\\">Warning<span style=\\\"font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(240, 173, 78);font-size:18px;\\\">: </span></p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;margin-bottom:0px;\\\">A workflow associated with a model is only created when the\\\nmodel’s records are created. Thus there is no workflow instance\\\nassociated with session instances created before the workflow’s\\\ndefinition</p>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;padding:20px;margin:20px 0px;border-width:1px 1px 1px 5px;border-style:solid;border-color:rgb(238, 238, 238);border-radius:3px;border-left-color:rgb(119, 119, 119);\\\">\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(85, 85, 85);font-size:18px;\\\">Exercise<span style=\\\"font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(85, 85, 85);font-size:18px;\\\">: </span></p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;font-size:18px;\\\">Workflow</p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Replace the ad-hoc <em style=\\\"box-sizing:border-box;\\\">Session</em> workflow by a real workflow. Transform the\\\n<em style=\\\"box-sizing:border-box;\\\">Session</em> form view so its buttons call the workflow instead of the\\\nmodel’s methods.</p>\\\n<div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<em style=\\\"box-sizing:border-box;\\\">openacademy/__openerp__.py</em><div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\">        <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'templates.xml'</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n        <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'views/openacademy.xml'</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n        <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'views/partner.xml'</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'views/session_workflow.xml'</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n</span>    <span style=\\\"box-sizing:border-box;\\\">],</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\"># only loaded in demonstration mode</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'demo'</span><span style=\\\"box-sizing:border-box;\\\">:</span> <span style=\\\"box-sizing:border-box;\\\">[</span>\\\n</pre></div>\\\n</div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n<em style=\\\"box-sizing:border-box;\\\">openacademy/models.py</em><div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\">         <span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'draft'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Draft&quot;</span><span style=\\\"box-sizing:border-box;\\\">),</span>\\\n         <span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'confirmed'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Confirmed&quot;</span><span style=\\\"box-sizing:border-box;\\\">),</span>\\\n         <span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'done'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Done&quot;</span><span style=\\\"box-sizing:border-box;\\\">),</span>\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;\\\">])</span>\\\n</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 255);\\\">@api.one</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">def</span> <span style=\\\"box-sizing:border-box;color:rgb(204, 0, 255);\\\">action_draft</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;\\\">):</span>\\\n</pre></div>\\\n</div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n<em style=\\\"box-sizing:border-box;\\\">openacademy/views/openacademy.xml</em><div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;arch&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">type=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;xml&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n                <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;form</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">string=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Session Form&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n                    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;header&gt;</span>\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;button</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;draft&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">type=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;workflow&quot;</span>\\\n</span>                                <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">string=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Reset to draft&quot;</span>\\\n                                <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">states=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;confirmed,done&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;button</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;confirm&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">type=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;workflow&quot;</span>\\\n</span>                                <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">string=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Confirm&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">states=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;draft&quot;</span>\\\n                                <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">class=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;oe_highlight&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;button</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;done&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">type=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;workflow&quot;</span>\\\n</span>                                <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">string=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Mark as done&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">states=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;confirmed&quot;</span>\\\n                                <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">class=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;oe_highlight&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n                        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;state&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">widget=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;statusbar&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</pre></div>\\\n</div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n<em style=\\\"box-sizing:border-box;\\\">openacademy/views/session_workflow.xml</em><div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\"><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\"><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;openerp&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;data&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;record</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">model=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;workflow&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">id=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;wkf_session&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;name&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>OpenAcademy sessions workflow<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;osv&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>openacademy.session<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;on_create&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>True<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/record&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;record</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">model=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;workflow.activity&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">id=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;draft&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;name&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>Draft<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;wkf_id&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">ref=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;wkf_session&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;flow_start&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">eval=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;True&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;kind&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>function<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;action&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>action_draft()<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/record&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;record</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">model=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;workflow.activity&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">id=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;confirmed&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;name&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>Confirmed<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;wkf_id&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">ref=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;wkf_session&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;kind&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>function<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;action&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>action_confirm()<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/record&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;record</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">model=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;workflow.activity&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">id=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;done&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;name&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>Done<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;wkf_id&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">ref=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;wkf_session&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;kind&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>function<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;action&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>action_done()<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/record&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;record</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">model=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;workflow.transition&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">id=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;session_draft_to_confirmed&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;act_from&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">ref=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;draft&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;act_to&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">ref=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;confirmed&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;signal&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>confirm<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/record&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;record</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">model=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;workflow.transition&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">id=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;session_confirmed_to_draft&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;act_from&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">ref=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;confirmed&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;act_to&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">ref=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;draft&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;signal&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>draft<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/record&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;record</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">model=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;workflow.transition&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">id=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;session_done_to_draft&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;act_from&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">ref=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;done&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;act_to&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">ref=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;draft&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;signal&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>draft<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/record&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;record</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">model=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;workflow.transition&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">id=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;session_confirmed_to_done&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;act_from&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">ref=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;confirmed&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;act_to&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">ref=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;done&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;signal&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>done<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/record&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/data&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\"><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/openerp&gt;</span>\\\n</span></pre></div>\\\n</div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n<div style=\\\"box-sizing:border-box;padding:20px;margin:20px 0px;border-width:1px 1px 1px 5px;border-style:solid;border-color:rgb(238, 238, 238);border-radius:3px;border-left-color:rgb(91, 192, 222);\\\">\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(91, 192, 222);font-size:18px;\\\">Tip<span style=\\\"font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(91, 192, 222);font-size:18px;\\\">: </span></p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;margin-bottom:0px;\\\">In order to check if instances of the workflow are correctly\\\ncreated alongside sessions, go to <em style=\\\"box-sizing:border-box;\\\">Settings ‣\\\nTechnical ‣ Workflows ‣ Instances</em></p>\\\n</div>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;padding:20px;margin:20px 0px;border-width:1px 1px 1px 5px;border-style:solid;border-color:rgb(238, 238, 238);border-radius:3px;border-left-color:rgb(119, 119, 119);\\\">\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(85, 85, 85);font-size:18px;\\\">Exercise<span style=\\\"font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(85, 85, 85);font-size:18px;\\\">: </span></p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;font-size:18px;\\\">Automatic transitions</p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Automatically transition sessions from <em style=\\\"box-sizing:border-box;\\\">Draft</em> to <em style=\\\"box-sizing:border-box;\\\">Confirmed</em> when more\\\nthan half the session’s seats are reserved.</p>\\\n<div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<em style=\\\"box-sizing:border-box;\\\">openacademy/views/session_workflow.xml</em><div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;act_to&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">ref=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;done&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;signal&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>done<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/record&gt;</span>\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;record</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">model=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;workflow.transition&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">id=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;session_auto_confirm_half_filled&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;act_from&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">ref=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;draft&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;act_to&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">ref=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;confirmed&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;condition&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>taken_seats <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\">&amp;gt;</span> 50<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/record&gt;</span>\\\n</span>    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/data&gt;</span>\\\n<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/openerp&gt;</span>\\\n</pre></div>\\\n</div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;padding:20px;margin:20px 0px;border-width:1px 1px 1px 5px;border-style:solid;border-color:rgb(238, 238, 238);border-radius:3px;border-left-color:rgb(119, 119, 119);\\\">\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(85, 85, 85);font-size:18px;\\\">Exercise<span style=\\\"font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(85, 85, 85);font-size:18px;\\\">: </span></p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;font-size:18px;\\\">Server actions</p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Replace the Python methods for synchronizing session state by\\\nserver actions.</p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Both the workflow and the server actions could have been created entirely\\\nfrom the UI.</p>\\\n<div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<em style=\\\"box-sizing:border-box;\\\">openacademy/views/session_workflow.xml</em><div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;on_create&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>True<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/record&gt;</span>\\\n\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;record</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">model=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;ir.actions.server&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">id=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;set_session_to_draft&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;name&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>Set session to Draft<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;model_id&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">ref=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;model_openacademy_session&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;code&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">recs = self.browse(cr, uid, context<span style=\\\"box-sizing:border-box;color:rgb(0, 153, 153);\\\">[</span><span style=\\\"box-sizing:border-box;color:rgb(204, 51, 0);\\\">'active_ids'</span><span style=\\\"box-sizing:border-box;color:rgb(0, 153, 153);\\\">]</span>, context=context)\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">recs.action_draft()\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/record&gt;</span>\\\n</span>        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;record</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">model=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;workflow.activity&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">id=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;draft&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;name&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>Draft<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;wkf_id&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">ref=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;wkf_session&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;flow_start&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">eval=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;True&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;kind&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>dummy<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;action&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;action_id&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">ref=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;set_session_to_draft&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/record&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;record</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">model=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;ir.actions.server&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">id=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;set_session_to_confirmed&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;name&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>Set session to Confirmed<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;model_id&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">ref=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;model_openacademy_session&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;code&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">recs = self.browse(cr, uid, context<span style=\\\"box-sizing:border-box;color:rgb(0, 153, 153);\\\">[</span><span style=\\\"box-sizing:border-box;color:rgb(204, 51, 0);\\\">'active_ids'</span><span style=\\\"box-sizing:border-box;color:rgb(0, 153, 153);\\\">]</span>, context=context)\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">recs.action_confirm()\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span>        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/record&gt;</span>\\\n        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;record</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">model=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;workflow.activity&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">id=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;confirmed&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;name&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>Confirmed<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;wkf_id&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">ref=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;wkf_session&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;kind&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>dummy<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;action&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;action_id&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">ref=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;set_session_to_confirmed&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/record&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;record</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">model=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;ir.actions.server&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">id=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;set_session_to_done&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;name&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>Set session to Done<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;model_id&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">ref=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;model_openacademy_session&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;code&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">recs = self.browse(cr, uid, context<span style=\\\"box-sizing:border-box;color:rgb(0, 153, 153);\\\">[</span><span style=\\\"box-sizing:border-box;color:rgb(204, 51, 0);\\\">'active_ids'</span><span style=\\\"box-sizing:border-box;color:rgb(0, 153, 153);\\\">]</span>, context=context)\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">recs.action_done()\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span>        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/record&gt;</span>\\\n        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;record</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">model=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;workflow.activity&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">id=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;done&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;name&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>Done<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;wkf_id&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">ref=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;wkf_session&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;kind&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>dummy<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;action&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;action_id&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">ref=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;set_session_to_done&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span>        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/record&gt;</span>\\\n\\\n        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;record</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">model=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;workflow.transition&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">id=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;session_draft_to_confirmed&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</pre></div>\\\n</div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n</div>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;margin-bottom:60px;\\\">\\\n<h2 style=\\\"box-sizing:border-box;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;font-size:36px;padding-bottom:9px;margin:0px 0px 20px;border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:rgb(238, 238, 238);padding-top:20px;\\\">Security</h2>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Access control mechanisms must be configured to achieve a coherent security\\\npolicy.</p>\\\n<div style=\\\"box-sizing:border-box;\\\">\\\n<h3 style=\\\"box-sizing:border-box;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;margin-top:20px;margin-bottom:10px;font-size:24px;\\\">Group-based access control mechanisms</h3>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Groups are created as normal records on the model <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">res.groups</span></tt>, and granted\\\nmenu access via menu definitions. However even without a menu, objects may\\\nstill be accessible indirectly, so actual object-level permissions (read,\\\nwrite, create, unlink) must be defined for groups. They are usually inserted\\\nvia CSV files inside modules. It is also possible to restrict access to\\\nspecific fields on a view or object using the field’s groups attribute.</p>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;\\\">\\\n<h3 style=\\\"box-sizing:border-box;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;margin-top:20px;margin-bottom:10px;font-size:24px;\\\">Access rights</h3>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Access rights are defined as records of the model <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">ir.model.access</span></tt>. Each\\\naccess right is associated to a model, a group (or no group for global\\\naccess), and a set of permissions: read, write, create, unlink. Such access\\\nrights are usually created by a CSV file named after its model:\\\n<tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">ir.model.access.csv</span></tt>.</p>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\">id,name,model_id/id,group_id/id,perm_read,perm_write,perm_create,perm_unlink\\\naccess_idea_idea,idea.idea,model_idea_idea,base.group_user,1,1,1,0\\\naccess_idea_vote,idea.vote,model_idea_vote,base.group_user,1,1,1,0\\\n</pre></div>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;padding:20px;margin:20px 0px;border-width:1px 1px 1px 5px;border-style:solid;border-color:rgb(238, 238, 238);border-radius:3px;border-left-color:rgb(119, 119, 119);\\\">\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(85, 85, 85);font-size:18px;\\\">Exercise<span style=\\\"font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(85, 85, 85);font-size:18px;\\\">: </span></p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;font-size:18px;\\\">Add access control through the OpenERP interface</p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Create a new user “John Smith”. Then create a group\\\n“OpenAcademy / Session Read” with read access to the <em style=\\\"box-sizing:border-box;\\\">Session</em> model.</p>\\\n<ol style=\\\"box-sizing:border-box;margin-top:0px;margin-bottom:10px;\\\">\\\n<li style=\\\"box-sizing:border-box;\\\">Create a new user <em style=\\\"box-sizing:border-box;\\\">John Smith</em> through\\\n<em style=\\\"box-sizing:border-box;\\\">Settings ‣ Users ‣ Users</em></li>\\\n<li style=\\\"box-sizing:border-box;\\\">Create a new group <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">session_read</span></tt> through\\\n<em style=\\\"box-sizing:border-box;\\\">Settings ‣ Users ‣ Groups</em>, it should have\\\nread access on the <em style=\\\"box-sizing:border-box;\\\">Session</em> model</li>\\\n<li style=\\\"box-sizing:border-box;\\\">Edit <em style=\\\"box-sizing:border-box;\\\">John Smith</em> to make them a member of <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">session_read</span></tt></li>\\\n<li style=\\\"box-sizing:border-box;\\\">Log in as <em style=\\\"box-sizing:border-box;\\\">John Smith</em> to check the access rights are correct</li>\\\n</ol>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;padding:20px;margin:20px 0px;border-width:1px 1px 1px 5px;border-style:solid;border-color:rgb(238, 238, 238);border-radius:3px;border-left-color:rgb(119, 119, 119);\\\">\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(85, 85, 85);font-size:18px;\\\">Exercise<span style=\\\"font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(85, 85, 85);font-size:18px;\\\">: </span></p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;font-size:18px;\\\">Add access control through data files in your module</p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Using data files,</p>\\\n<ul style=\\\"box-sizing:border-box;margin-top:0px;margin-bottom:10px;\\\">\\\n<li style=\\\"box-sizing:border-box;\\\">Create a group <em style=\\\"box-sizing:border-box;\\\">OpenAcademy / Manager</em> with full access to all\\\nOpenAcademy models</li>\\\n<li style=\\\"box-sizing:border-box;\\\">Make <em style=\\\"box-sizing:border-box;\\\">Session</em> and <em style=\\\"box-sizing:border-box;\\\">Course</em> readable by all users</li>\\\n</ul>\\\n<ol style=\\\"box-sizing:border-box;margin-top:0px;margin-bottom:10px;\\\">\\\n<li style=\\\"box-sizing:border-box;\\\">Create a new file <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">openacademy/security/security.xml</span></tt> to\\\nhold the OpenAcademy Manager group</li>\\\n<li style=\\\"box-sizing:border-box;\\\">Edit the file <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">openacademy/security/ir.model.access.csv</span></tt> with\\\nthe access rights to the models</li>\\\n<li style=\\\"box-sizing:border-box;\\\">Finally update <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">openacademy/__openerp__.py</span></tt> to add the new data\\\nfiles to it</li>\\\n</ol>\\\n<div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<em style=\\\"box-sizing:border-box;\\\">openacademy/__openerp__.py</em><div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\">    <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\"># always loaded</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'data'</span><span style=\\\"box-sizing:border-box;\\\">:</span> <span style=\\\"box-sizing:border-box;\\\">[</span>\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'security/security.xml'</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'security/ir.model.access.csv'</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n</span>        <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'templates.xml'</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n        <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'views/openacademy.xml'</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n        <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'views/partner.xml'</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n</pre></div>\\\n</div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n<em style=\\\"box-sizing:border-box;\\\">openacademy/security/ir.model.access.csv</em><div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\"><span style=\\\"box-sizing:border-box;\\\">id</span><span style=\\\"box-sizing:border-box;\\\">,</span><span style=\\\"box-sizing:border-box;\\\">name</span><span style=\\\"box-sizing:border-box;\\\">,</span><span style=\\\"box-sizing:border-box;\\\">model_id</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">/</span><span style=\\\"box-sizing:border-box;\\\">id</span><span style=\\\"box-sizing:border-box;\\\">,</span><span style=\\\"box-sizing:border-box;\\\">group_id</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">/</span><span style=\\\"box-sizing:border-box;\\\">id</span><span style=\\\"box-sizing:border-box;\\\">,</span><span style=\\\"box-sizing:border-box;\\\">perm_read</span><span style=\\\"box-sizing:border-box;\\\">,</span><span style=\\\"box-sizing:border-box;\\\">perm_write</span><span style=\\\"box-sizing:border-box;\\\">,</span><span style=\\\"box-sizing:border-box;\\\">perm_create</span><span style=\\\"box-sizing:border-box;\\\">,</span><span style=\\\"box-sizing:border-box;\\\">perm_unlink</span>\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\"><span style=\\\"box-sizing:border-box;\\\">course_manager</span><span style=\\\"box-sizing:border-box;\\\">,</span><span style=\\\"box-sizing:border-box;\\\">course</span> <span style=\\\"box-sizing:border-box;\\\">manager</span><span style=\\\"box-sizing:border-box;\\\">,</span><span style=\\\"box-sizing:border-box;\\\">model_openacademy_course</span><span style=\\\"box-sizing:border-box;\\\">,</span><span style=\\\"box-sizing:border-box;\\\">group_manager</span><span style=\\\"box-sizing:border-box;\\\">,</span><span style=\\\"box-sizing:border-box;color:rgb(255, 102, 0);\\\">1</span><span style=\\\"box-sizing:border-box;\\\">,</span><span style=\\\"box-sizing:border-box;color:rgb(255, 102, 0);\\\">1</span><span style=\\\"box-sizing:border-box;\\\">,</span><span style=\\\"box-sizing:border-box;color:rgb(255, 102, 0);\\\">1</span><span style=\\\"box-sizing:border-box;\\\">,</span><span style=\\\"box-sizing:border-box;color:rgb(255, 102, 0);\\\">1</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\"><span style=\\\"box-sizing:border-box;\\\">session_manager</span><span style=\\\"box-sizing:border-box;\\\">,</span><span style=\\\"box-sizing:border-box;\\\">session</span> <span style=\\\"box-sizing:border-box;\\\">manager</span><span style=\\\"box-sizing:border-box;\\\">,</span><span style=\\\"box-sizing:border-box;\\\">model_openacademy_session</span><span style=\\\"box-sizing:border-box;\\\">,</span><span style=\\\"box-sizing:border-box;\\\">group_manager</span><span style=\\\"box-sizing:border-box;\\\">,</span><span style=\\\"box-sizing:border-box;color:rgb(255, 102, 0);\\\">1</span><span style=\\\"box-sizing:border-box;\\\">,</span><span style=\\\"box-sizing:border-box;color:rgb(255, 102, 0);\\\">1</span><span style=\\\"box-sizing:border-box;\\\">,</span><span style=\\\"box-sizing:border-box;color:rgb(255, 102, 0);\\\">1</span><span style=\\\"box-sizing:border-box;\\\">,</span><span style=\\\"box-sizing:border-box;color:rgb(255, 102, 0);\\\">1</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\"><span style=\\\"box-sizing:border-box;\\\">course_read_all</span><span style=\\\"box-sizing:border-box;\\\">,</span><span style=\\\"box-sizing:border-box;\\\">course</span> <span style=\\\"box-sizing:border-box;\\\">all</span><span style=\\\"box-sizing:border-box;\\\">,</span><span style=\\\"box-sizing:border-box;\\\">model_openacademy_course</span><span style=\\\"box-sizing:border-box;\\\">,,</span><span style=\\\"box-sizing:border-box;color:rgb(255, 102, 0);\\\">1</span><span style=\\\"box-sizing:border-box;\\\">,</span><span style=\\\"box-sizing:border-box;color:rgb(255, 102, 0);\\\">0</span><span style=\\\"box-sizing:border-box;\\\">,</span><span style=\\\"box-sizing:border-box;color:rgb(255, 102, 0);\\\">0</span><span style=\\\"box-sizing:border-box;\\\">,</span><span style=\\\"box-sizing:border-box;color:rgb(255, 102, 0);\\\">0</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\"><span style=\\\"box-sizing:border-box;\\\">session_read_all</span><span style=\\\"box-sizing:border-box;\\\">,</span><span style=\\\"box-sizing:border-box;\\\">session</span> <span style=\\\"box-sizing:border-box;\\\">all</span><span style=\\\"box-sizing:border-box;\\\">,</span><span style=\\\"box-sizing:border-box;\\\">model_openacademy_session</span><span style=\\\"box-sizing:border-box;\\\">,,</span><span style=\\\"box-sizing:border-box;color:rgb(255, 102, 0);\\\">1</span><span style=\\\"box-sizing:border-box;\\\">,</span><span style=\\\"box-sizing:border-box;color:rgb(255, 102, 0);\\\">0</span><span style=\\\"box-sizing:border-box;\\\">,</span><span style=\\\"box-sizing:border-box;color:rgb(255, 102, 0);\\\">0</span><span style=\\\"box-sizing:border-box;\\\">,</span><span style=\\\"box-sizing:border-box;color:rgb(255, 102, 0);\\\">0</span>\\\n</span></pre></div>\\\n</div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n<em style=\\\"box-sizing:border-box;\\\">openacademy/security/security.xml</em><div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\"><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\"><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;openerp&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;data&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;record</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">id=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;group_manager&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">model=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;res.groups&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;name&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>OpenAcademy / Manager<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/record&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/data&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\"><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/openerp&gt;</span>\\\n</span></pre></div>\\\n</div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n</div>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;\\\">\\\n<h3 style=\\\"box-sizing:border-box;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;margin-top:20px;margin-bottom:10px;font-size:24px;\\\">Record rules</h3>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">A record rule restricts the access rights to a subset of records of the given\\\nmodel. A rule is a record of the model <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">ir.rule</span></tt>, and is associated to a\\\nmodel, a number of groups (many2many field), permissions to which the\\\nrestriction applies, and a domain. The domain specifies to which records the\\\naccess rights are limited.</p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Here is an example of a rule that prevents the deletion of leads that are not\\\nin state <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">cancel</span></tt>. Notice that the value of the field <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">groups</span></tt> must follow\\\nthe same convention as the method <a href=\\\"https://www.odoo.com/documentation/8.0/reference/orm.html#openerp.models.Model.write\\\" style=\\\"box-sizing:border-box;background:transparent;color:rgb(162, 70, 137);text-decoration:none;\\\" title=\\\"openerp.models.Model.write\\\"><tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">write()</span></tt></a> of the ORM.</p>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\"><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;record</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">id=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;delete_cancelled_only&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">model=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;ir.rule&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;name&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>Only cancelled leads may be deleted<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;model_id&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">ref=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;crm.model_crm_lead&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;groups&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">eval=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;[(4, ref('base.group_sale_manager'))]&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;perm_read&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">eval=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;0&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;perm_write&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">eval=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;0&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;perm_create&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">eval=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;0&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;perm_unlink&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">eval=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;1&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;domain_force&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>[('state','=','cancel')]<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/record&gt;</span>\\\n</pre></div>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;padding:20px;margin:20px 0px;border-width:1px 1px 1px 5px;border-style:solid;border-color:rgb(238, 238, 238);border-radius:3px;border-left-color:rgb(119, 119, 119);\\\">\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(85, 85, 85);font-size:18px;\\\">Exercise<span style=\\\"font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(85, 85, 85);font-size:18px;\\\">: </span></p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;font-size:18px;\\\">Record rule</p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Add a record rule for the model Course and the group\\\n“OpenAcademy / Manager”, that restricts <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">write</span></tt> and <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">unlink</span></tt> accesses\\\nto the responsible of a course. If a course has no responsible, all users\\\nof the group must be able to modify it.</p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Create a new rule in <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">openacademy/security/security.xml</span></tt>:</p>\\\n<div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<em style=\\\"box-sizing:border-box;\\\">openacademy/security/security.xml</em><div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;record</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">id=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;group_manager&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">model=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;res.groups&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;name&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>OpenAcademy / Manager<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/record&gt;</span>\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    \\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;record</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">id=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;only_responsible_can_modify&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">model=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;ir.rule&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;name&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>Only Responsible can modify Course<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;model_id&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">ref=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;model_openacademy_course&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;groups&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">eval=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(0, 153, 153);\\\">[</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(255, 102, 0);\\\">4</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">ref</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(204, 51, 0);\\\">'openacademy.group_manager'</span><span style=\\\"box-sizing:border-box;\\\">))</span><span style=\\\"box-sizing:border-box;color:rgb(0, 153, 153);\\\">]</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;perm_read&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">eval=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;0&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;perm_write&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">eval=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;1&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;perm_create&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">eval=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;0&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;perm_unlink&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">eval=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;1&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;domain_force&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                <span style=\\\"box-sizing:border-box;color:rgb(0, 153, 153);\\\">[</span><span style=\\\"box-sizing:border-box;color:rgb(204, 51, 0);\\\">'|'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(204, 51, 0);\\\">'responsible_id'</span><span style=\\\"box-sizing:border-box;\\\">,</span><span style=\\\"box-sizing:border-box;color:rgb(204, 51, 0);\\\">'='</span><span style=\\\"box-sizing:border-box;\\\">,</span><span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">False</span><span style=\\\"box-sizing:border-box;\\\">),</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                      <span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(204, 51, 0);\\\">'responsible_id'</span><span style=\\\"box-sizing:border-box;\\\">,</span><span style=\\\"box-sizing:border-box;color:rgb(204, 51, 0);\\\">'='</span><span style=\\\"box-sizing:border-box;\\\">,</span><span style=\\\"box-sizing:border-box;\\\">user.id</span><span style=\\\"box-sizing:border-box;\\\">)</span><span style=\\\"box-sizing:border-box;color:rgb(0, 153, 153);\\\">]</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/record&gt;</span>\\\n</span>    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/data&gt;</span>\\\n<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/openerp&gt;</span>\\\n</pre></div>\\\n</div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n</div>\\\n</div>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;margin-bottom:60px;\\\">\\\n<h2 style=\\\"box-sizing:border-box;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;font-size:36px;padding-bottom:9px;margin:0px 0px 20px;border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:rgb(238, 238, 238);padding-top:20px;\\\">Wizards</h2>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Wizards describe interactive sessions with the user (or dialog boxes) through\\\ndynamic forms. A wizard is simply a model that extends the class\\\n<tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">TransientModel</span></tt> instead of\\\n<a href=\\\"https://www.odoo.com/documentation/8.0/reference/orm.html#openerp.models.Model\\\" style=\\\"box-sizing:border-box;background:transparent;color:rgb(162, 70, 137);text-decoration:none;\\\" title=\\\"openerp.models.Model\\\"><tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">Model</span></tt></a>. The class\\\n<tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">TransientModel</span></tt> extends <a href=\\\"https://www.odoo.com/documentation/8.0/reference/orm.html#openerp.models.Model\\\" style=\\\"box-sizing:border-box;background:transparent;color:rgb(162, 70, 137);text-decoration:none;\\\" title=\\\"openerp.models.Model\\\"><tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">Model</span></tt></a>\\\nand reuse all its existing mechanisms, with the following particularities:</p>\\\n<ul style=\\\"box-sizing:border-box;margin-top:0px;margin-bottom:10px;\\\">\\\n<li style=\\\"box-sizing:border-box;\\\">Wizard records are not meant to be persistent; they are automatically deleted\\\nfrom the database after a certain time. This is why they are called\\\n<em style=\\\"box-sizing:border-box;\\\">transient</em>.</li>\\\n<li style=\\\"box-sizing:border-box;\\\">Wizard models do not require explicit access rights: users have all\\\npermissions on wizard records.</li>\\\n<li style=\\\"box-sizing:border-box;\\\">Wizard records may refer to regular records or wizard records through many2one\\\nfields, but regular records <em style=\\\"box-sizing:border-box;\\\">cannot</em> refer to wizard records through a\\\nmany2one field.</li>\\\n</ul>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">We want to create a wizard that allow users to create attendees for a particular\\\nsession, or for a list of sessions at once.</p>\\\n<div style=\\\"box-sizing:border-box;padding:20px;margin:20px 0px;border-width:1px 1px 1px 5px;border-style:solid;border-color:rgb(238, 238, 238);border-radius:3px;border-left-color:rgb(119, 119, 119);\\\">\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(85, 85, 85);font-size:18px;\\\">Exercise<span style=\\\"font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(85, 85, 85);font-size:18px;\\\">: </span></p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;font-size:18px;\\\">Define the wizard</p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Create a wizard model with a many2one relationship with the <em style=\\\"box-sizing:border-box;\\\">Session</em>\\\nmodel and a many2many relationship with the <em style=\\\"box-sizing:border-box;\\\">Partner</em> model.</p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Add a new file <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">openacademy/wizard.py</span></tt>:</p>\\\n<div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<em style=\\\"box-sizing:border-box;\\\">openacademy/__init__.py</em><div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\"><span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">from</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 204, 255);\\\">.</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">import</span> <span style=\\\"box-sizing:border-box;\\\">controllers</span>\\\n<span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">from</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 204, 255);\\\">.</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">import</span> <span style=\\\"box-sizing:border-box;\\\">models</span>\\\n<span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">from</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 204, 255);\\\">.</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">import</span> <span style=\\\"box-sizing:border-box;\\\">partner</span>\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\"><span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">from</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 204, 255);\\\">.</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">import</span> <span style=\\\"box-sizing:border-box;\\\">wizard</span>\\\n</span></pre></div>\\\n</div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n<em style=\\\"box-sizing:border-box;\\\">openacademy/wizard.py</em><div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\"><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\"><span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\"># -*- coding: utf-8 -*-</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\"><span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">from</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 204, 255);\\\">openerp</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">import</span> <span style=\\\"box-sizing:border-box;\\\">models</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">fields</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">api</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\"><span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">class</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 170, 136);\\\">Wizard</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">models</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">TransientModel</span><span style=\\\"box-sizing:border-box;\\\">):</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;\\\">_name</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'openacademy.wizard'</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;\\\">session_id</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">fields</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Many2one</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'openacademy.session'</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;\\\">string</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Session&quot;</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">required</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">True</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;\\\">attendee_ids</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">fields</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Many2many</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'res.partner'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">string</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Attendees&quot;</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n</span></pre></div>\\\n</div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;\\\">\\\n<h3 style=\\\"box-sizing:border-box;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;margin-top:20px;margin-bottom:10px;font-size:24px;\\\">Launching wizards</h3>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Wizards are launched by <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">ir.actions.act_window</span></tt> records, with the field\\\n<tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">target</span></tt> set to the value <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">new</span></tt>. The latter opens the wizard view into a\\\npopup window. The action may be triggered by a menu item.</p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">There is another way to launch the wizard: using an <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">ir.actions.act_window</span></tt>\\\nrecord like above, but with an extra field <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">src_model</span></tt> that specifies in the\\\ncontext of which model the action is available. The wizard will appear in the\\\ncontextual actions of the model, above the main view. Because of some internal\\\nhooks in the ORM, such an action is declared in XML with the tag <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">act_window</span></tt>.</p>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\">&lt;act_window id=&quot;launch_the_wizard&quot;\\\n            name=&quot;Launch the Wizard&quot;\\\n            src_model=&quot;context_model_name&quot;\\\n            res_model=&quot;wizard_model_name&quot;\\\n            view_mode=&quot;form&quot;\\\n            target=&quot;new&quot;\\\n            key2=&quot;client_action_multi&quot;/&gt;\\\n</pre></div>\\\n</div>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Wizards use regular views and their buttons may use the attribute\\\n<tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">special=&quot;cancel&quot;</span></tt> to close the wizard window without saving.</p>\\\n<div style=\\\"box-sizing:border-box;padding:20px;margin:20px 0px;border-width:1px 1px 1px 5px;border-style:solid;border-color:rgb(238, 238, 238);border-radius:3px;border-left-color:rgb(119, 119, 119);\\\">\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(85, 85, 85);font-size:18px;\\\">Exercise<span style=\\\"font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(85, 85, 85);font-size:18px;\\\">: </span></p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;font-size:18px;\\\">Launch the wizard</p>\\\n<ol style=\\\"box-sizing:border-box;margin-top:0px;margin-bottom:10px;\\\">\\\n<li style=\\\"box-sizing:border-box;\\\">Define a form view for the wizard.</li>\\\n<li style=\\\"box-sizing:border-box;\\\">Add the action to launch it in the context of the <em style=\\\"box-sizing:border-box;\\\">Session</em> model.</li>\\\n<li style=\\\"box-sizing:border-box;\\\">Define a default value for the session field in the wizard; use the\\\ncontext parameter <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">self._context</span></tt> to retrieve the current session.</li>\\\n</ol>\\\n<div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<em style=\\\"box-sizing:border-box;\\\">openacademy/wizard.py</em><div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\"><span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">class</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 170, 136);\\\">Wizard</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">models</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">TransientModel</span><span style=\\\"box-sizing:border-box;\\\">):</span>\\\n    <span style=\\\"box-sizing:border-box;\\\">_name</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'openacademy.wizard'</span>\\\n\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">def</span> <span style=\\\"box-sizing:border-box;color:rgb(204, 0, 255);\\\">_default_session</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;\\\">):</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">return</span> <span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">env</span><span style=\\\"box-sizing:border-box;\\\">[</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'openacademy.session'</span><span style=\\\"box-sizing:border-box;\\\">]</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">browse</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">_context</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">get</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'active_id'</span><span style=\\\"box-sizing:border-box;\\\">))</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">\\\n</span>    <span style=\\\"box-sizing:border-box;\\\">session_id</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">fields</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Many2one</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'openacademy.session'</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;\\\">string</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Session&quot;</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">required</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">True</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">default</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;\\\">_default_session</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n</span>    <span style=\\\"box-sizing:border-box;\\\">attendee_ids</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">fields</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Many2many</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'res.partner'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">string</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Attendees&quot;</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n</pre></div>\\\n</div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n<em style=\\\"box-sizing:border-box;\\\">openacademy/views/openacademy.xml</em><div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;menuitem</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">id=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;session_menu&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Sessions&quot;</span>\\\n                  <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">parent=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;openacademy_menu&quot;</span>\\\n                  <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">action=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;session_list_action&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;record</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">model=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;ir.ui.view&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">id=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;wizard_form_view&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;name&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>wizard.form<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;model&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>openacademy.wizard<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;arch&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">type=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;xml&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;form</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">string=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Add Attendees&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;group&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;session_id&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;attendee_ids&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/group&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/form&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/record&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;act_window</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">id=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;launch_session_wizard&quot;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                    <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Add Attendees&quot;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                    <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">src_model=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;openacademy.session&quot;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                    <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">res_model=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;openacademy.wizard&quot;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                    <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">view_mode=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;form&quot;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                    <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">target=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;new&quot;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                    <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">key2=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;client_action_multi&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span>    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/data&gt;</span>\\\n<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/openerp&gt;</span>\\\n</pre></div>\\\n</div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;padding:20px;margin:20px 0px;border-width:1px 1px 1px 5px;border-style:solid;border-color:rgb(238, 238, 238);border-radius:3px;border-left-color:rgb(119, 119, 119);\\\">\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(85, 85, 85);font-size:18px;\\\">Exercise<span style=\\\"font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(85, 85, 85);font-size:18px;\\\">: </span></p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;font-size:18px;\\\">Register attendees</p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Add buttons to the wizard, and implement the corresponding method for adding\\\nthe attendees to the given session.</p>\\\n<div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<em style=\\\"box-sizing:border-box;\\\">openacademy/views/openacademy.xml</em><div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\">                        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;session_id&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n                        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;attendee_ids&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n                    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/group&gt;</span>\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;footer&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;button</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;subscribe&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">type=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;object&quot;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                                <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">string=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Subscribe&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">class=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;oe_highlight&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                        or\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;button</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">special=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;cancel&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">string=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Cancel&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/footer&gt;</span>\\\n</span>                <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/form&gt;</span>\\\n            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/record&gt;</span>\\\n</pre></div>\\\n</div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n<em style=\\\"box-sizing:border-box;\\\">openacademy/wizard.py</em><div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\">    <span style=\\\"box-sizing:border-box;\\\">session_id</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">fields</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Many2one</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'openacademy.session'</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n        <span style=\\\"box-sizing:border-box;\\\">string</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Session&quot;</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">required</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">True</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">default</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;\\\">_default_session</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n    <span style=\\\"box-sizing:border-box;\\\">attendee_ids</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">fields</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Many2many</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'res.partner'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">string</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Attendees&quot;</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 255);\\\">@api.multi</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">def</span> <span style=\\\"box-sizing:border-box;color:rgb(204, 0, 255);\\\">subscribe</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;\\\">):</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">session_id</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">attendee_ids</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">|=</span> <span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">attendee_ids</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">return</span> <span style=\\\"box-sizing:border-box;\\\">{}</span>\\\n</span></pre></div>\\\n</div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;padding:20px;margin:20px 0px;border-width:1px 1px 1px 5px;border-style:solid;border-color:rgb(238, 238, 238);border-radius:3px;border-left-color:rgb(119, 119, 119);\\\">\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(85, 85, 85);font-size:18px;\\\">Exercise<span style=\\\"font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(85, 85, 85);font-size:18px;\\\">: </span></p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;font-size:18px;\\\">Register attendees to multiple sessions</p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Modify the wizard model so that attendees can be registered to multiple\\\nsessions.</p>\\\n<div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<em style=\\\"box-sizing:border-box;\\\">openacademy/views/openacademy.xml</em><div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;arch&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">type=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;xml&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n                <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;form</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">string=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Add Attendees&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n                    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;group&gt;</span>\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;session_ids&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span>                        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;attendee_ids&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n                    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/group&gt;</span>\\\n                    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;footer&gt;</span>\\\n</pre></div>\\\n</div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n<em style=\\\"box-sizing:border-box;\\\">openacademy/wizard.py</em><div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\"><span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">class</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 170, 136);\\\">Wizard</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">models</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">TransientModel</span><span style=\\\"box-sizing:border-box;\\\">):</span>\\\n    <span style=\\\"box-sizing:border-box;\\\">_name</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'openacademy.wizard'</span>\\\n\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">def</span> <span style=\\\"box-sizing:border-box;color:rgb(204, 0, 255);\\\">_default_sessions</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;\\\">):</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">return</span> <span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">env</span><span style=\\\"box-sizing:border-box;\\\">[</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'openacademy.session'</span><span style=\\\"box-sizing:border-box;\\\">]</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">browse</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">_context</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">get</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'active_ids'</span><span style=\\\"box-sizing:border-box;\\\">))</span>\\\n</span>\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;\\\">session_ids</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">fields</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Many2many</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'openacademy.session'</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;\\\">string</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Sessions&quot;</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">required</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">True</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">default</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;\\\">_default_sessions</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n</span>    <span style=\\\"box-sizing:border-box;\\\">attendee_ids</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">fields</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Many2many</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'res.partner'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">string</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Attendees&quot;</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n\\\n    <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 255);\\\">@api.multi</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">def</span> <span style=\\\"box-sizing:border-box;color:rgb(204, 0, 255);\\\">subscribe</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;\\\">):</span>\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">for</span> <span style=\\\"box-sizing:border-box;\\\">session</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 0, 0);\\\">in</span> <span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">session_ids</span><span style=\\\"box-sizing:border-box;\\\">:</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;\\\">session</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">attendee_ids</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">|=</span> <span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">attendee_ids</span>\\\n</span>        <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">return</span> <span style=\\\"box-sizing:border-box;\\\">{}</span>\\\n</pre></div>\\\n</div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n</div>\\\n</div>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;margin-bottom:60px;\\\">\\\n<h2 style=\\\"box-sizing:border-box;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;font-size:36px;padding-bottom:9px;margin:0px 0px 20px;border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:rgb(238, 238, 238);padding-top:20px;\\\">Internationalization</h2>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Each module can provide its own translations within the i18n directory, by\\\nhaving files named LANG.po where LANG is the locale code for the language, or\\\nthe language and country combination when they differ (e.g. pt.po or\\\npt_BR.po). Translations will be loaded automatically by Odoo for all\\\nenabled languages. Developers always use English when creating a module, then\\\nexport the module terms using Odoo’s gettext POT export feature\\\n(<em style=\\\"box-sizing:border-box;\\\">Settings ‣ Translations ‣ Import/Export ‣ Export\\\nTranslation</em> without specifying a language), to create the module template POT\\\nfile, and then derive the translated PO files. Many IDE’s have plugins or modes\\\nfor editing and merging PO/POT files.</p>\\\n<div style=\\\"box-sizing:border-box;padding:20px;margin:20px 0px;border-width:1px 1px 1px 5px;border-style:solid;border-color:rgb(238, 238, 238);border-radius:3px;border-left-color:rgb(91, 192, 222);\\\">\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(91, 192, 222);font-size:18px;\\\">Tip<span style=\\\"font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(91, 192, 222);font-size:18px;\\\">: </span></p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;margin-bottom:0px;\\\">The GNU gettext format (Portable Object) used by Odoo is\\\nintegrated into LaunchPad, making it an online collaborative\\\ntranslation platform.</p>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\">|- idea/ # The module directory\\\n   |- i18n/ # Translation files\\\n      | - idea.pot # Translation Template (exported from Odoo)\\\n      | - fr.po # French translation\\\n      | - pt_BR.po # Brazilian Portuguese translation\\\n      | (...)\\\n</pre></div>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;padding:20px;margin:20px 0px;border-width:1px 1px 1px 5px;border-style:solid;border-color:rgb(238, 238, 238);border-radius:3px;border-left-color:rgb(91, 192, 222);\\\">\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(91, 192, 222);font-size:18px;\\\">Tip<span style=\\\"font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(91, 192, 222);font-size:18px;\\\">: </span></p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;margin-bottom:0px;\\\">By default Odoo’s POT export only extracts labels inside XML files or\\\ninside field definitions in Python code, but any Python string can be\\\ntranslated this way by surrounding it with the function <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">openerp._()</span></tt>\\\n(e.g. <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">_(&quot;Label&quot;)</span></tt>)</p>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;padding:20px;margin:20px 0px;border-width:1px 1px 1px 5px;border-style:solid;border-color:rgb(238, 238, 238);border-radius:3px;border-left-color:rgb(119, 119, 119);\\\">\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(85, 85, 85);font-size:18px;\\\">Exercise<span style=\\\"font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(85, 85, 85);font-size:18px;\\\">: </span></p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;font-size:18px;\\\">Translate a module</p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Choose a second language for your Odoo installation. Translate your\\\nmodule using the facilities provided by Odoo.</p>\\\n<ol style=\\\"box-sizing:border-box;margin-top:0px;margin-bottom:10px;\\\">\\\n<li style=\\\"box-sizing:border-box;\\\">Create a directory <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">openacademy/i18n/</span></tt></li>\\\n<li style=\\\"box-sizing:border-box;\\\">Install whichever language you want (\\\n<em style=\\\"box-sizing:border-box;\\\">Administration ‣ Translations ‣ Load an\\\nOfficial Translation</em>)</li>\\\n<li style=\\\"box-sizing:border-box;\\\">Synchronize translatable terms (<em style=\\\"box-sizing:border-box;\\\">Administration ‣\\\nTranslations ‣ Application Terms ‣ Synchronize Translations</em>)</li>\\\n<li style=\\\"box-sizing:border-box;\\\">Create a template translation file by exporting (\\\n<em style=\\\"box-sizing:border-box;\\\">Administration ‣ Translations -&gt; Import/Export\\\n‣ Export Translation</em>) without specifying a language, save in\\\n<tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">openacademy/i18n/</span></tt></li>\\\n<li style=\\\"box-sizing:border-box;\\\">Create a translation file by exporting (\\\n<em style=\\\"box-sizing:border-box;\\\">Administration ‣ Translations ‣ Import/Export\\\n‣ Export Translation</em>) and specifying a language. Save it in\\\n<tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">openacademy/i18n/</span></tt></li>\\\n<li style=\\\"box-sizing:border-box;\\\">Open the exported translation file (with a basic text editor or a\\\ndedicated PO-file editor e.g. <a href=\\\"http://poedit.net/\\\" style=\\\"box-sizing:border-box;background:transparent;color:rgb(162, 70, 137);text-decoration:none;\\\">POEdit</a> and translate the missing\\\nterms</li>\\\n<li style=\\\"box-sizing:border-box;\\\">In <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">models.py</span></tt>, add an import statement for the function\\\n<tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">openerp._</span></tt> and mark missing strings as translatable</li>\\\n<li style=\\\"box-sizing:border-box;\\\">Repeat steps 3-6</li>\\\n</ol>\\\n<div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<em style=\\\"box-sizing:border-box;\\\">openacademy/models.py</em><div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\"><span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\"># -*- coding: utf-8 -*-</span>\\\n\\\n<span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">from</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 204, 255);\\\">datetime</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">import</span> <span style=\\\"box-sizing:border-box;\\\">timedelta</span>\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\"><span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">from</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 204, 255);\\\">openerp</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">import</span> <span style=\\\"box-sizing:border-box;\\\">models</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">fields</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">api</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">exceptions</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">_</span>\\\n</span>\\\n<span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">class</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 170, 136);\\\">Course</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">models</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Model</span><span style=\\\"box-sizing:border-box;\\\">):</span>\\\n    <span style=\\\"box-sizing:border-box;\\\">_name</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'openacademy.course'</span>\\\n</pre></div>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\">        <span style=\\\"box-sizing:border-box;\\\">default</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">dict</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">default</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 0, 0);\\\">or</span> <span style=\\\"box-sizing:border-box;\\\">{})</span>\\\n\\\n        <span style=\\\"box-sizing:border-box;\\\">copied_count</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">search_count</span><span style=\\\"box-sizing:border-box;\\\">(</span>\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;\\\">[(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'name'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'=like'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">_</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">u&quot;Copy of {}%&quot;</span><span style=\\\"box-sizing:border-box;\\\">)</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">format</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">name</span><span style=\\\"box-sizing:border-box;\\\">))])</span>\\\n</span>        <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">if</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 0, 0);\\\">not</span> <span style=\\\"box-sizing:border-box;\\\">copied_count</span><span style=\\\"box-sizing:border-box;\\\">:</span>\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;\\\">new_name</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">_</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">u&quot;Copy of {}&quot;</span><span style=\\\"box-sizing:border-box;\\\">)</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">format</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">name</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n</span>        <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">else</span><span style=\\\"box-sizing:border-box;\\\">:</span>\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;\\\">new_name</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">_</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">u&quot;Copy of {} ({})&quot;</span><span style=\\\"box-sizing:border-box;\\\">)</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">format</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">name</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">copied_count</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n</span>\\\n        <span style=\\\"box-sizing:border-box;\\\">default</span><span style=\\\"box-sizing:border-box;\\\">[</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'name'</span><span style=\\\"box-sizing:border-box;\\\">]</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">new_name</span>\\\n        <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">return</span> <span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">super</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">Course</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;\\\">)</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">copy</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">default</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n</pre></div>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\">        <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">if</span> <span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">seats</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">&lt;</span> <span style=\\\"box-sizing:border-box;color:rgb(255, 102, 0);\\\">0</span><span style=\\\"box-sizing:border-box;\\\">:</span>\\\n            <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">return</span> <span style=\\\"box-sizing:border-box;\\\">{</span>\\\n                <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'warning'</span><span style=\\\"box-sizing:border-box;\\\">:</span> <span style=\\\"box-sizing:border-box;\\\">{</span>\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                    <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'title'</span><span style=\\\"box-sizing:border-box;\\\">:</span> <span style=\\\"box-sizing:border-box;\\\">_</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Incorrect 'seats' value&quot;</span><span style=\\\"box-sizing:border-box;\\\">),</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                    <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'message'</span><span style=\\\"box-sizing:border-box;\\\">:</span> <span style=\\\"box-sizing:border-box;\\\">_</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;The number of available seats may not be negative&quot;</span><span style=\\\"box-sizing:border-box;\\\">),</span>\\\n</span>                <span style=\\\"box-sizing:border-box;\\\">},</span>\\\n            <span style=\\\"box-sizing:border-box;\\\">}</span>\\\n        <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">if</span> <span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">seats</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">&lt;</span> <span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">len</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">attendee_ids</span><span style=\\\"box-sizing:border-box;\\\">):</span>\\\n            <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">return</span> <span style=\\\"box-sizing:border-box;\\\">{</span>\\\n                <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'warning'</span><span style=\\\"box-sizing:border-box;\\\">:</span> <span style=\\\"box-sizing:border-box;\\\">{</span>\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                    <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'title'</span><span style=\\\"box-sizing:border-box;\\\">:</span> <span style=\\\"box-sizing:border-box;\\\">_</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Too many attendees&quot;</span><span style=\\\"box-sizing:border-box;\\\">),</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                    <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'message'</span><span style=\\\"box-sizing:border-box;\\\">:</span> <span style=\\\"box-sizing:border-box;\\\">_</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Increase seats or remove excess attendees&quot;</span><span style=\\\"box-sizing:border-box;\\\">),</span>\\\n</span>                <span style=\\\"box-sizing:border-box;\\\">},</span>\\\n            <span style=\\\"box-sizing:border-box;\\\">}</span>\\\n</pre></div>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\">    <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 255);\\\">@api.constrains</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'instructor_id'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'attendee_ids'</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">def</span> <span style=\\\"box-sizing:border-box;color:rgb(204, 0, 255);\\\">_check_instructor_not_in_attendees</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;\\\">):</span>\\\n        <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">if</span> <span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">instructor_id</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 0, 0);\\\">and</span> <span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">instructor_id</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 0, 0);\\\">in</span> <span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">self</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">attendee_ids</span><span style=\\\"box-sizing:border-box;\\\">:</span>\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">raise</span> <span style=\\\"box-sizing:border-box;\\\">exceptions</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">ValidationError</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">_</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;A session's instructor can't be an attendee&quot;</span><span style=\\\"box-sizing:border-box;\\\">))</span>\\\n</span></pre></div>\\\n</div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n</div>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;margin-bottom:60px;\\\">\\\n<h2 style=\\\"box-sizing:border-box;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;font-size:36px;padding-bottom:9px;margin:0px 0px 20px;border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:rgb(238, 238, 238);padding-top:20px;\\\">Reporting</h2>\\\n<div style=\\\"box-sizing:border-box;\\\">\\\n<h3 style=\\\"box-sizing:border-box;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;margin-top:20px;margin-bottom:10px;font-size:24px;\\\">Printed reports</h3>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Odoo 8.0 comes with a new report engine based on <a href=\\\"https://www.odoo.com/documentation/8.0/reference/qweb.html#reference-qweb\\\" style=\\\"box-sizing:border-box;background:transparent;color:rgb(162, 70, 137);text-decoration:none;\\\"><em style=\\\"box-sizing:border-box;\\\">QWeb</em></a>,\\\n<a href=\\\"http://getbootstrap.com/\\\" style=\\\"box-sizing:border-box;background:transparent;color:rgb(162, 70, 137);text-decoration:none;\\\">Twitter Bootstrap</a> and <a href=\\\"http://wkhtmltopdf.org/\\\" style=\\\"box-sizing:border-box;background:transparent;color:rgb(162, 70, 137);text-decoration:none;\\\">Wkhtmltopdf</a>.</p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">A report is a combination two elements:</p>\\\n<ul style=\\\"box-sizing:border-box;margin-top:0px;margin-bottom:10px;\\\">\\\n<li style=\\\"box-sizing:border-box;\\\"><p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">an <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">ir.actions.report.xml</span></tt>, for which a <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">&lt;report&gt;</span></tt> shortcut element is\\\nprovided, it sets up various basic parameters for the report (default\\\ntype, whether the report should be saved to the database after generation,…)</p>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\"><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;report</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">id=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;account_invoices&quot;</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">model=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;account.invoice&quot;</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">string=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Invoices&quot;</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">report_type=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;qweb-pdf&quot;</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;account.report_invoice&quot;</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">file=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;account.report_invoice&quot;</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">attachment_use=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;True&quot;</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">attachment=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;(object.state in ('open','paid')) and</span>\\\n<span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">        ('INV'+(object.number or '').replace('/','')+'.pdf')&quot;</span>\\\n<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</pre></div>\\\n</div>\\\n</li>\\\n<li style=\\\"box-sizing:border-box;\\\"><p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">A standard <a href=\\\"https://www.odoo.com/documentation/8.0/reference/views.html#reference-views-qweb\\\" style=\\\"box-sizing:border-box;background:transparent;color:rgb(162, 70, 137);text-decoration:none;\\\"><em style=\\\"box-sizing:border-box;\\\">QWeb view</em></a> for the actual report:</p>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\"><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;t</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">t-call=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;report.html_container&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;t</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">t-foreach=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;docs&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">t-as=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;o&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;t</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">t-call=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;report.external_layout&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;div</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">class=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;page&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n                <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;h2&gt;</span>Report title<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/h2&gt;</span>\\\n            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/div&gt;</span>\\\n        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/t&gt;</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/t&gt;</span>\\\n<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/t&gt;</span>\\\n\\\nthe standard rendering context provides a number of elements, the most\\\nimportant being:\\\n\\\n``docs``\\\n    the records for which the report is printed\\\n``user``\\\n    the user printing the report\\\n</pre></div>\\\n</div>\\\n</li>\\\n</ul>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Because reports are standard web pages, they are available through a URL and\\\noutput parameters can be manipulated through this URL, for instance the HTML\\\nversion of the <em style=\\\"box-sizing:border-box;\\\">Invoice</em> report is available through\\\n<a href=\\\"http://localhost:8069/report/html/account.report_invoice/1\\\" style=\\\"box-sizing:border-box;background:transparent;color:rgb(162, 70, 137);text-decoration:none;\\\">http://localhost:8069/report/html/account.report_invoice/1</a> (if <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">account</span></tt> is\\\ninstalled) and the PDF version through\\\n<a href=\\\"http://localhost:8069/report/pdf/account.report_invoice/1\\\" style=\\\"box-sizing:border-box;background:transparent;color:rgb(162, 70, 137);text-decoration:none;\\\">http://localhost:8069/report/pdf/account.report_invoice/1</a>.</p>\\\n<div style=\\\"box-sizing:border-box;padding:20px;margin:20px 0px;border-width:1px 1px 1px 5px;border-style:solid;border-color:rgb(238, 238, 238);border-radius:3px;border-left-color:rgb(119, 119, 119);\\\">\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(85, 85, 85);font-size:18px;\\\">Exercise<span style=\\\"font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(85, 85, 85);font-size:18px;\\\">: </span></p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;font-size:18px;\\\">Create a report for the Session model</p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">For each session, it should display session’s name, its start and end,\\\nand list the session’s attendees.</p>\\\n<div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<em style=\\\"box-sizing:border-box;\\\">openacademy/__openerp__.py</em><div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\">        <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'views/openacademy.xml'</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n        <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'views/partner.xml'</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n        <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'views/session_workflow.xml'</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'reports.xml'</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n</span>    <span style=\\\"box-sizing:border-box;\\\">],</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\"># only loaded in demonstration mode</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'demo'</span><span style=\\\"box-sizing:border-box;\\\">:</span> <span style=\\\"box-sizing:border-box;\\\">[</span>\\\n</pre></div>\\\n</div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n<em style=\\\"box-sizing:border-box;\\\">openacademy/reports.xml</em><div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\"><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\"><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;openerp&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\"><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;data&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;report</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">id=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;report_session&quot;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">model=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;openacademy.session&quot;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">string=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Session Report&quot;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;openacademy.report_session_view&quot;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">file=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;openacademy.report_session&quot;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">report_type=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;qweb-pdf&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;template</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">id=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;report_session_view&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;t</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">t-call=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;report.html_container&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;t</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">t-foreach=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;docs&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">t-as=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;doc&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;t</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">t-call=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;report.external_layout&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;div</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">class=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;page&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;h2</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">t-field=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;doc.name&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;p&gt;</span>From <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;span</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">t-field=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;doc.start_date&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span> to <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;span</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">t-field=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;doc.end_date&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;&lt;/p&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;h3&gt;</span>Attendees:<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/h3&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;ul&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;t</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">t-foreach=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;doc.attendee_ids&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">t-as=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;attendee&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                                <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;li&gt;&lt;span</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">t-field=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;attendee.name&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;&lt;/li&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/t&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/ul&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/div&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/t&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/t&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/t&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/template&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\"><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/data&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\"><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/openerp&gt;</span>\\\n</span></pre></div>\\\n</div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n</div>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;\\\">\\\n<h3 style=\\\"box-sizing:border-box;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;margin-top:20px;margin-bottom:10px;font-size:24px;\\\">Dashboards</h3>\\\n<div style=\\\"box-sizing:border-box;padding:20px;margin:20px 0px;border-width:1px 1px 1px 5px;border-style:solid;border-color:rgb(238, 238, 238);border-radius:3px;border-left-color:rgb(119, 119, 119);\\\">\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(85, 85, 85);font-size:18px;\\\">Exercise<span style=\\\"font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(85, 85, 85);font-size:18px;\\\">: </span></p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;font-size:18px;\\\">Define a Dashboard</p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Define a dashboard containing the graph view you created, the sessions\\\ncalendar view and a list view of the courses (switchable to a form\\\nview). This dashboard should be available through a menuitem in the menu,\\\nand automatically displayed in the web client when the OpenAcademy main\\\nmenu is selected.</p>\\\n<ol style=\\\"box-sizing:border-box;margin-top:0px;margin-bottom:10px;\\\">\\\n<li style=\\\"box-sizing:border-box;\\\"><p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Create a file <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">openacademy/views/session_board.xml</span></tt>. It should contain\\\nthe board view, the actions referenced in that view, an action to\\\nopen the dashboard and a re-definition of the main menu item to add\\\nthe dashboard action</p>\\\n<div style=\\\"box-sizing:border-box;padding:20px;margin:20px 0px;border-width:1px 1px 1px 5px;border-style:solid;border-color:rgb(238, 238, 238);border-radius:3px;\\\">\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;font-size:18px;\\\">Note<span style=\\\"font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;font-size:18px;\\\">: </span></p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;margin-bottom:0px;\\\">Available dashboard styles are <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">1</span></tt>, <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">1-1</span></tt>, <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">1-2</span></tt>,\\\n<tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">2-1</span></tt> and <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">1-1-1</span></tt></p>\\\n</div>\\\n</li>\\\n<li style=\\\"box-sizing:border-box;\\\"><p style=\\\"box-sizing:border-box;margin:0px 0px 10px;margin-bottom:0px;\\\">Update <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">openacademy/__openerp__.py</span></tt> to reference the new data\\\nfile</p>\\\n</li>\\\n</ol>\\\n<div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<em style=\\\"box-sizing:border-box;\\\">openacademy/__openerp__.py</em><div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\">    <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'version'</span><span style=\\\"box-sizing:border-box;\\\">:</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'0.1'</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n\\\n    <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\"># any module necessary for this one to work correctly</span>\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'depends'</span><span style=\\\"box-sizing:border-box;\\\">:</span> <span style=\\\"box-sizing:border-box;\\\">[</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'base'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'board'</span><span style=\\\"box-sizing:border-box;\\\">],</span>\\\n</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\"># always loaded</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'data'</span><span style=\\\"box-sizing:border-box;\\\">:</span> <span style=\\\"box-sizing:border-box;\\\">[</span>\\\n</pre></div>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\">        <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'views/openacademy.xml'</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n        <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'views/partner.xml'</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n        <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'views/session_workflow.xml'</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n<span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'views/session_board.xml'</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n</span>        <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'reports.xml'</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n    <span style=\\\"box-sizing:border-box;\\\">],</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\"># only loaded in demonstration mode</span>\\\n</pre></div>\\\n</div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n<em style=\\\"box-sizing:border-box;\\\">openacademy/views/session_board.xml</em><div style=\\\"box-sizing:border-box;width:auto;margin:0px;padding:0px;\\\"><span style=\\\"display:table;\\\"> </span>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\"><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\"><span style=\\\"box-sizing:border-box;color:rgb(0, 153, 153);\\\">&lt;?xml version=&quot;1.0&quot;?&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\"><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;openerp&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;data&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;record</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">model=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;ir.actions.act_window&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">id=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;act_session_graph&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;name&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>Attendees by course<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;res_model&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>openacademy.session<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;view_type&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>form<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;view_mode&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>graph<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;view_id&quot;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                   <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">ref=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;openacademy.openacademy_session_graph_view&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/record&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;record</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">model=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;ir.actions.act_window&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">id=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;act_session_calendar&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;name&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>Sessions<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;res_model&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>openacademy.session<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;view_type&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>form<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;view_mode&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>calendar<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;view_id&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">ref=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;openacademy.session_calendar_view&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/record&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;record</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">model=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;ir.actions.act_window&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">id=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;act_course_list&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;name&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>Courses<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;res_model&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>openacademy.course<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;view_type&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>form<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;view_mode&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>tree,form<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/record&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;record</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">model=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;ir.ui.view&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">id=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;board_session_form&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;name&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>Session Dashboard Form<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;model&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>board.board<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;type&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>form<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;arch&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">type=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;xml&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;form</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">string=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Session Dashboard&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;board</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">style=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;2-1&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;column&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;action</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                                <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">string=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Attendees by course&quot;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                                <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;%(act_session_graph)d&quot;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                                <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">height=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;150&quot;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                                <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">width=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;510&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;action</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                                <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">string=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Sessions&quot;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                                <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;%(act_session_calendar)d&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/column&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;column&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;action</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                                <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">string=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Courses&quot;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                                <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;%(act_course_list)d&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/column&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/board&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">                <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/form&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/record&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;record</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">model=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;ir.actions.act_window&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">id=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;open_board_session&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">          <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;name&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>Session Dashboard<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">          <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;res_model&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>board.board<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">          <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;view_type&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>form<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">          <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;view_mode&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>form<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">          <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;usage&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&gt;</span>menu<span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/field&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">          <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;field</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;view_id&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">ref=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;board_session_form&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/record&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">        <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;menuitem</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">name=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Session Dashboard&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">parent=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;base.menu_reporting_dashboard&quot;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">action=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;open_board_session&quot;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">sequence=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;1&quot;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">            <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">id=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;menu_board_session&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(79, 159, 207);\\\">icon=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;terp-graph&quot;</span><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">/&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\">    <span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/data&gt;</span>\\\n</span><span style=\\\"box-sizing:border-box;background-color:rgb(252, 248, 227);\\\"><span style=\\\"box-sizing:border-box;color:rgb(47, 111, 159);\\\">&lt;/openerp&gt;</span>\\\n</span></pre></div>\\\n</div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n<span style=\\\"display:table;clear:both;\\\"> </span></div>\\\n</div>\\\n</div>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;margin-bottom:60px;\\\">\\\n<h2 style=\\\"box-sizing:border-box;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;font-size:36px;padding-bottom:9px;margin:0px 0px 20px;border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:rgb(238, 238, 238);padding-top:20px;\\\">WebServices</h2>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">The web-service module offer a common interface for all web-services :</p>\\\n<ul style=\\\"box-sizing:border-box;margin-top:0px;margin-bottom:10px;\\\">\\\n<li style=\\\"box-sizing:border-box;\\\">XML-RPC</li>\\\n<li style=\\\"box-sizing:border-box;\\\">JSON-RPC</li>\\\n</ul>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Business objects can also be accessed via the distributed object\\\nmechanism. They can all be modified via the client interface with contextual\\\nviews.</p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Odoo is accessible through XML-RPC/JSON-RPC interfaces, for which libraries\\\nexist in many languages.</p>\\\n<div style=\\\"box-sizing:border-box;\\\">\\\n<h3 style=\\\"box-sizing:border-box;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;margin-top:20px;margin-bottom:10px;font-size:24px;\\\">XML-RPC Library</h3>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">The following example is a Python program that interacts with an Odoo\\\nserver with the library <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">xmlrpclib</span></tt>:</p>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\"><span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">import</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 204, 255);\\\">xmlrpclib</span>\\\n\\\n<span style=\\\"box-sizing:border-box;\\\">root</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'http://</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">%s</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">:</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">%d</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">/xmlrpc/'</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">%</span> <span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">HOST</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">PORT</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n\\\n<span style=\\\"box-sizing:border-box;\\\">uid</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">xmlrpclib</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">ServerProxy</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">root</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">+</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'common'</span><span style=\\\"box-sizing:border-box;\\\">)</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">login</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">DB</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">USER</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">PASS</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n<span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">print</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Logged in as </span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">%s</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\"> (uid: </span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">%d</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">)&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">%</span> <span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">USER</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">uid</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n\\\n<span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\"># Create a new note</span>\\\n<span style=\\\"box-sizing:border-box;\\\">sock</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">xmlrpclib</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">ServerProxy</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">root</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">+</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'object'</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n<span style=\\\"box-sizing:border-box;\\\">args</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">{</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'color'</span> <span style=\\\"box-sizing:border-box;\\\">:</span> <span style=\\\"box-sizing:border-box;color:rgb(255, 102, 0);\\\">8</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'memo'</span> <span style=\\\"box-sizing:border-box;\\\">:</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'This is a note'</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'create_uid'</span><span style=\\\"box-sizing:border-box;\\\">:</span> <span style=\\\"box-sizing:border-box;\\\">uid</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n<span style=\\\"box-sizing:border-box;\\\">}</span>\\\n<span style=\\\"box-sizing:border-box;\\\">note_id</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">sock</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">execute</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">DB</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">uid</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">PASS</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'note.note'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'create'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">args</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n</pre></div>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;padding:20px;margin:20px 0px;border-width:1px 1px 1px 5px;border-style:solid;border-color:rgb(238, 238, 238);border-radius:3px;border-left-color:rgb(119, 119, 119);\\\">\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(85, 85, 85);font-size:18px;\\\">Exercise<span style=\\\"font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:rgb(85, 85, 85);font-size:18px;\\\">: </span></p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;font-size:18px;\\\">Add a new service to the client</p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Write a Python program able to send XML-RPC requests to a PC running\\\nOdoo (yours, or your instructor’s). This program should display all\\\nthe sessions, and their corresponding number of seats. It should also\\\ncreate a new session for one of the courses.</p>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\"><span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">import</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 204, 255);\\\">functools</span>\\\n<span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">import</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 204, 255);\\\">xmlrpclib</span>\\\n<span style=\\\"box-sizing:border-box;\\\">HOST</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'localhost'</span>\\\n<span style=\\\"box-sizing:border-box;\\\">PORT</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;color:rgb(255, 102, 0);\\\">8069</span>\\\n<span style=\\\"box-sizing:border-box;\\\">DB</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'openacademy'</span>\\\n<span style=\\\"box-sizing:border-box;\\\">USER</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'admin'</span>\\\n<span style=\\\"box-sizing:border-box;\\\">PASS</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'admin'</span>\\\n<span style=\\\"box-sizing:border-box;\\\">ROOT</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'http://</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">%s</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">:</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">%d</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">/xmlrpc/'</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">%</span> <span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">HOST</span><span style=\\\"box-sizing:border-box;\\\">,</span><span style=\\\"box-sizing:border-box;\\\">PORT</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n\\\n<span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\"># 1. Login</span>\\\n<span style=\\\"box-sizing:border-box;\\\">uid</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">xmlrpclib</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">ServerProxy</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">ROOT</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">+</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'common'</span><span style=\\\"box-sizing:border-box;\\\">)</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">login</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">DB</span><span style=\\\"box-sizing:border-box;\\\">,</span><span style=\\\"box-sizing:border-box;\\\">USER</span><span style=\\\"box-sizing:border-box;\\\">,</span><span style=\\\"box-sizing:border-box;\\\">PASS</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n<span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">print</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Logged in as </span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">%s</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\"> (uid:</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">%d</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">)&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">%</span> <span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">USER</span><span style=\\\"box-sizing:border-box;\\\">,</span><span style=\\\"box-sizing:border-box;\\\">uid</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n\\\n<span style=\\\"box-sizing:border-box;\\\">call</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">functools</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">partial</span><span style=\\\"box-sizing:border-box;\\\">(</span>\\\n    <span style=\\\"box-sizing:border-box;\\\">xmlrpclib</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">ServerProxy</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">ROOT</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">+</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'object'</span><span style=\\\"box-sizing:border-box;\\\">)</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">execute</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n    <span style=\\\"box-sizing:border-box;\\\">DB</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">uid</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">PASS</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n\\\n<span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\"># 2. Read the sessions</span>\\\n<span style=\\\"box-sizing:border-box;\\\">sessions</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">call</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'openacademy.session'</span><span style=\\\"box-sizing:border-box;\\\">,</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'search_read'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">[],</span> <span style=\\\"box-sizing:border-box;\\\">[</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'name'</span><span style=\\\"box-sizing:border-box;\\\">,</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'seats'</span><span style=\\\"box-sizing:border-box;\\\">])</span>\\\n<span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">for</span> <span style=\\\"box-sizing:border-box;\\\">session</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 0, 0);\\\">in</span> <span style=\\\"box-sizing:border-box;\\\">sessions</span><span style=\\\"box-sizing:border-box;\\\">:</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">print</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Session </span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">%s</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\"> (</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">%s</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\"> seats)&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">%</span> <span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">session</span><span style=\\\"box-sizing:border-box;\\\">[</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'name'</span><span style=\\\"box-sizing:border-box;\\\">],</span> <span style=\\\"box-sizing:border-box;\\\">session</span><span style=\\\"box-sizing:border-box;\\\">[</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'seats'</span><span style=\\\"box-sizing:border-box;\\\">])</span>\\\n<span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\"># 3.create a new session</span>\\\n<span style=\\\"box-sizing:border-box;\\\">session_id</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">call</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'openacademy.session'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'create'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">{</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'name'</span> <span style=\\\"box-sizing:border-box;\\\">:</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'My session'</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'course_id'</span> <span style=\\\"box-sizing:border-box;\\\">:</span> <span style=\\\"box-sizing:border-box;color:rgb(255, 102, 0);\\\">2</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n<span style=\\\"box-sizing:border-box;\\\">})</span>\\\n</pre></div>\\\n</div>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Instead of using a hard-coded course id, the code can look up a course\\\nby name:</p>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\"><span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\"># 3.create a new session for the &quot;Functional&quot; course</span>\\\n<span style=\\\"box-sizing:border-box;\\\">course_id</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">call</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'openacademy.course'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'search'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">[(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'name'</span><span style=\\\"box-sizing:border-box;\\\">,</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'ilike'</span><span style=\\\"box-sizing:border-box;\\\">,</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'Functional'</span><span style=\\\"box-sizing:border-box;\\\">)])[</span><span style=\\\"box-sizing:border-box;color:rgb(255, 102, 0);\\\">0</span><span style=\\\"box-sizing:border-box;\\\">]</span>\\\n<span style=\\\"box-sizing:border-box;\\\">session_id</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">call</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'openacademy.session'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'create'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">{</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'name'</span> <span style=\\\"box-sizing:border-box;\\\">:</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'My session'</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'course_id'</span> <span style=\\\"box-sizing:border-box;\\\">:</span> <span style=\\\"box-sizing:border-box;\\\">course_id</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n<span style=\\\"box-sizing:border-box;\\\">})</span>\\\n</pre></div>\\\n</div>\\\n</div>\\\n</div>\\\n<div style=\\\"box-sizing:border-box;\\\">\\\n<h3 style=\\\"box-sizing:border-box;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;margin-top:20px;margin-bottom:10px;font-size:24px;\\\">JSON-RPC Library</h3>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">The following example is a Python program that interacts with an Odoo server\\\nwith the standard Python libraries <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">urllib2</span></tt> and <tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">json</span></tt>:</p>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\"><span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">import</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 204, 255);\\\">json</span>\\\n<span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">import</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 204, 255);\\\">random</span>\\\n<span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">import</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 204, 255);\\\">urllib2</span>\\\n\\\n<span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">def</span> <span style=\\\"box-sizing:border-box;color:rgb(204, 0, 255);\\\">json_rpc</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">url</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">method</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">params</span><span style=\\\"box-sizing:border-box;\\\">):</span>\\\n    <span style=\\\"box-sizing:border-box;\\\">data</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">{</span>\\\n        <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;jsonrpc&quot;</span><span style=\\\"box-sizing:border-box;\\\">:</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;2.0&quot;</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n        <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;method&quot;</span><span style=\\\"box-sizing:border-box;\\\">:</span> <span style=\\\"box-sizing:border-box;\\\">method</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n        <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;params&quot;</span><span style=\\\"box-sizing:border-box;\\\">:</span> <span style=\\\"box-sizing:border-box;\\\">params</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n        <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;id&quot;</span><span style=\\\"box-sizing:border-box;\\\">:</span> <span style=\\\"box-sizing:border-box;\\\">random</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">randint</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(255, 102, 0);\\\">0</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;color:rgb(255, 102, 0);\\\">1000000000</span><span style=\\\"box-sizing:border-box;\\\">),</span>\\\n    <span style=\\\"box-sizing:border-box;\\\">}</span>\\\n    <span style=\\\"box-sizing:border-box;\\\">req</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">urllib2</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Request</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">url</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;\\\">url</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">data</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;\\\">json</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">dumps</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">data</span><span style=\\\"box-sizing:border-box;\\\">),</span> <span style=\\\"box-sizing:border-box;\\\">headers</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;\\\">{</span>\\\n        <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;Content-Type&quot;</span><span style=\\\"box-sizing:border-box;\\\">:</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;application/json&quot;</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n    <span style=\\\"box-sizing:border-box;\\\">})</span>\\\n    <span style=\\\"box-sizing:border-box;\\\">reply</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">json</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">load</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">urllib2</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">urlopen</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">req</span><span style=\\\"box-sizing:border-box;\\\">))</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">if</span> <span style=\\\"box-sizing:border-box;\\\">reply</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">get</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;error&quot;</span><span style=\\\"box-sizing:border-box;\\\">):</span>\\\n        <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">raise</span> <span style=\\\"box-sizing:border-box;color:rgb(204, 0, 0);\\\">Exception</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">reply</span><span style=\\\"box-sizing:border-box;\\\">[</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;error&quot;</span><span style=\\\"box-sizing:border-box;\\\">])</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">return</span> <span style=\\\"box-sizing:border-box;\\\">reply</span><span style=\\\"box-sizing:border-box;\\\">[</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;result&quot;</span><span style=\\\"box-sizing:border-box;\\\">]</span>\\\n\\\n<span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">def</span> <span style=\\\"box-sizing:border-box;color:rgb(204, 0, 255);\\\">call</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">url</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">service</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">method</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">*</span><span style=\\\"box-sizing:border-box;\\\">args</span><span style=\\\"box-sizing:border-box;\\\">):</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">return</span> <span style=\\\"box-sizing:border-box;\\\">json_rpc</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">url</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;call&quot;</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">{</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;service&quot;</span><span style=\\\"box-sizing:border-box;\\\">:</span> <span style=\\\"box-sizing:border-box;\\\">service</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;method&quot;</span><span style=\\\"box-sizing:border-box;\\\">:</span> <span style=\\\"box-sizing:border-box;\\\">method</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;args&quot;</span><span style=\\\"box-sizing:border-box;\\\">:</span> <span style=\\\"box-sizing:border-box;\\\">args</span><span style=\\\"box-sizing:border-box;\\\">})</span>\\\n\\\n<span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\"># log in the given database</span>\\\n<span style=\\\"box-sizing:border-box;\\\">url</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;http://</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">%s</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">:</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">%s</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">/jsonrpc&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">%</span> <span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">HOST</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">PORT</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n<span style=\\\"box-sizing:border-box;\\\">uid</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">call</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">url</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;common&quot;</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;login&quot;</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">DB</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">USER</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">PASS</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n\\\n<span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\"># create a new note</span>\\\n<span style=\\\"box-sizing:border-box;\\\">args</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">{</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'color'</span> <span style=\\\"box-sizing:border-box;\\\">:</span> <span style=\\\"box-sizing:border-box;color:rgb(255, 102, 0);\\\">8</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'memo'</span> <span style=\\\"box-sizing:border-box;\\\">:</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'This is another note'</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'create_uid'</span><span style=\\\"box-sizing:border-box;\\\">:</span> <span style=\\\"box-sizing:border-box;\\\">uid</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n<span style=\\\"box-sizing:border-box;\\\">}</span>\\\n<span style=\\\"box-sizing:border-box;\\\">note_id</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">call</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">url</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;object&quot;</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;execute&quot;</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">DB</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">uid</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">PASS</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'note.note'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'create'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">args</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n</pre></div>\\\n</div>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Here is the same program, using the library\\\n<cite style=\\\"box-sizing:border-box;font-style:normal;\\\">jsonrpclib &lt;https://pypi.python.org/pypi/jsonrpclib&gt;</cite>:</p>\\\n<div style=\\\"box-sizing:border-box;\\\"><div style=\\\"box-sizing:border-box;position:relative;color:rgb(51, 51, 51);border:1px solid rgb(119, 119, 119);border-radius:4px 0px 4px 4px;margin:10px 0px;background:none rgb(238, 238, 238);\\\"><pre style=\\\"box-sizing:border-box;overflow:auto;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:75%;display:block;padding:0px;margin:10px;line-height:1.42857143;word-break:normal;word-wrap:normal;color:rgb(51, 51, 51);border:none;border-radius:4px;background:none;\\\"><span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">import</span> <span style=\\\"box-sizing:border-box;color:rgb(0, 204, 255);\\\">jsonrpclib</span>\\\n\\\n<span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\"># server proxy object</span>\\\n<span style=\\\"box-sizing:border-box;\\\">url</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;http://</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">%s</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">:</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">%s</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">/jsonrpc&quot;</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">%</span> <span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">HOST</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">PORT</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n<span style=\\\"box-sizing:border-box;\\\">server</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">jsonrpclib</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">Server</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">url</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n\\\n<span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\"># log in the given database</span>\\\n<span style=\\\"box-sizing:border-box;\\\">uid</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">server</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">call</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">service</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;common&quot;</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">method</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;login&quot;</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">args</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;\\\">[</span><span style=\\\"box-sizing:border-box;\\\">DB</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">USER</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">PASS</span><span style=\\\"box-sizing:border-box;\\\">])</span>\\\n\\\n<span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\"># helper function for invoking model methods</span>\\\n<span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">def</span> <span style=\\\"box-sizing:border-box;color:rgb(204, 0, 255);\\\">invoke</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">model</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">method</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">*</span><span style=\\\"box-sizing:border-box;\\\">args</span><span style=\\\"box-sizing:border-box;\\\">):</span>\\\n    <span style=\\\"box-sizing:border-box;\\\">args</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">[</span><span style=\\\"box-sizing:border-box;\\\">DB</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">uid</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">PASS</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">model</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">method</span><span style=\\\"box-sizing:border-box;\\\">]</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">+</span> <span style=\\\"box-sizing:border-box;color:rgb(51, 102, 102);\\\">list</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">args</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(0, 102, 153);\\\">return</span> <span style=\\\"box-sizing:border-box;\\\">server</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">.</span><span style=\\\"box-sizing:border-box;\\\">call</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;\\\">service</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;object&quot;</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">method</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">&quot;execute&quot;</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">args</span><span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span><span style=\\\"box-sizing:border-box;\\\">args</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n\\\n<span style=\\\"box-sizing:border-box;color:rgb(153, 153, 153);\\\"># create a new note</span>\\\n<span style=\\\"box-sizing:border-box;\\\">args</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">{</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'color'</span> <span style=\\\"box-sizing:border-box;\\\">:</span> <span style=\\\"box-sizing:border-box;color:rgb(255, 102, 0);\\\">8</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'memo'</span> <span style=\\\"box-sizing:border-box;\\\">:</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'This is another note'</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n    <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'create_uid'</span><span style=\\\"box-sizing:border-box;\\\">:</span> <span style=\\\"box-sizing:border-box;\\\">uid</span><span style=\\\"box-sizing:border-box;\\\">,</span>\\\n<span style=\\\"box-sizing:border-box;\\\">}</span>\\\n<span style=\\\"box-sizing:border-box;\\\">note_id</span> <span style=\\\"box-sizing:border-box;color:rgb(85, 85, 85);\\\">=</span> <span style=\\\"box-sizing:border-box;\\\">invoke</span><span style=\\\"box-sizing:border-box;\\\">(</span><span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'note.note'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;color:rgb(212, 73, 80);\\\">'create'</span><span style=\\\"box-sizing:border-box;\\\">,</span> <span style=\\\"box-sizing:border-box;\\\">args</span><span style=\\\"box-sizing:border-box;\\\">)</span>\\\n</pre></div>\\\n</div>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">Examples can be easily adapted from XML-RPC to JSON-RPC.</p>\\\n<div style=\\\"box-sizing:border-box;padding:20px;margin:20px 0px;border-width:1px 1px 1px 5px;border-style:solid;border-color:rgb(238, 238, 238);border-radius:3px;\\\">\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;display:inline-block;margin-top:0px;margin-bottom:5px;font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;font-size:18px;\\\">Note<span style=\\\"font-family:Lato, Arial, sans-serif;font-weight:500;line-height:1.1;color:inherit;font-size:18px;\\\">: </span></p>\\\n<p style=\\\"box-sizing:border-box;margin:0px 0px 10px;\\\">There are a number of high-level APIs in various languages to access Odoo\\\nsystems without <em style=\\\"box-sizing:border-box;\\\">explicitly</em> going through XML-RPC or JSON-RPC, such as:</p>\\\n<ul style=\\\"box-sizing:border-box;margin-top:0px;margin-bottom:10px;\\\">\\\n<li style=\\\"box-sizing:border-box;\\\"><a href=\\\"https://github.com/akretion/ooor\\\" style=\\\"box-sizing:border-box;background:transparent;color:rgb(162, 70, 137);text-decoration:none;\\\">https://github.com/akretion/ooor</a></li>\\\n<li style=\\\"box-sizing:border-box;\\\"><a href=\\\"https://github.com/syleam/openobject-library\\\" style=\\\"box-sizing:border-box;background:transparent;color:rgb(162, 70, 137);text-decoration:none;\\\">https://github.com/syleam/openobject-library</a></li>\\\n<li style=\\\"box-sizing:border-box;\\\"><a href=\\\"https://github.com/nicolas-van/openerp-client-lib\\\" style=\\\"box-sizing:border-box;background:transparent;color:rgb(162, 70, 137);text-decoration:none;\\\">https://github.com/nicolas-van/openerp-client-lib</a></li>\\\n<li style=\\\"box-sizing:border-box;\\\"><a href=\\\"https://pypi.python.org/pypi/oersted/\\\" style=\\\"box-sizing:border-box;background:transparent;color:rgb(162, 70, 137);text-decoration:none;\\\">https://pypi.python.org/pypi/oersted/</a></li>\\\n</ul>\\\n</div>\\\n<table style=\\\"font-size:inherit;font-weight:inherit;font-style:inherit;font-variant:inherit;box-sizing:border-box;border-collapse:collapse;border-spacing:0px;background-color:transparent;\\\">\\\n<colgroup style=\\\"box-sizing:border-box;\\\"><col style=\\\"box-sizing:border-box;\\\"></col></colgroup>\\\n<tbody style=\\\"box-sizing:border-box;\\\" valign=\\\"top\\\">\\\n<tr style=\\\"box-sizing:border-box;\\\"><td style=\\\"box-sizing:border-box;padding:0.2em 0.6em 0.3em;display:inline;font-size:75%;font-weight:bold;line-height:1;color:rgb(255, 255, 255);text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:0.25em;\\\"><a href=\\\"https://www.odoo.com/documentation/8.0/howtos/backend.html#id2\\\" style=\\\"box-sizing:border-box;background:transparent;color:rgb(162, 70, 137);text-decoration:none;\\\">[1]</a></td><td style=\\\"box-sizing:border-box;padding:0px;\\\">it is possible to <a href=\\\"https://www.odoo.com/documentation/8.0/reference/orm.html#openerp.models.Model._log_access\\\" style=\\\"box-sizing:border-box;background:transparent;color:rgb(162, 70, 137);text-decoration:none;\\\" title=\\\"openerp.models.Model._log_access\\\"><tt style=\\\"box-sizing:border-box;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:90%;padding:2px 4px;color:rgb(199, 37, 78);border-radius:4px;background-color:rgb(249, 242, 244);\\\"><span style=\\\"box-sizing:border-box;\\\">disable</span> <span style=\\\"box-sizing:border-box;\\\">the</span> <span style=\\\"box-sizing:border-box;\\\">automatic</span> <span style=\\\"box-sizing:border-box;\\\">creation</span> <span style=\\\"box-sizing:border-box;\\\">of</span> <span style=\\\"box-sizing:border-box;\\\">some</span>\\\n<span style=\\\"box-sizing:border-box;\\\">fields</span></tt></a></td></tr>\\\n</tbody>\\\n</table>\\\n<table style=\\\"font-size:inherit;font-weight:inherit;font-style:inherit;font-variant:inherit;box-sizing:border-box;border-collapse:collapse;border-spacing:0px;background-color:transparent;\\\">\\\n<colgroup style=\\\"box-sizing:border-box;\\\"><col style=\\\"box-sizing:border-box;\\\"></col></colgroup>\\\n<tbody style=\\\"box-sizing:border-box;\\\" valign=\\\"top\\\">\\\n<tr style=\\\"box-sizing:border-box;\\\"><td style=\\\"box-sizing:border-box;padding:0.2em 0.6em 0.3em;display:inline;font-size:75%;font-weight:bold;line-height:1;color:rgb(255, 255, 255);text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:0.25em;\\\"><a href=\\\"https://www.odoo.com/documentation/8.0/howtos/backend.html#id1\\\" style=\\\"box-sizing:border-box;background:transparent;color:rgb(162, 70, 137);text-decoration:none;\\\">[2]</a></td><td style=\\\"box-sizing:border-box;padding:0px;\\\">writing raw SQL queries is possible, but requires care as it\\\nbypasses all Odoo authentication and security mechanisms.</td></tr>\\\n</tbody>\\\n</table>\\\n</div>\\\n</div>\\\n</div></div></div></div></div></div></div></div></div><br/></span>\\\n</div></body></html>\\u0000\"]],\"start1\":0,\"start2\":0,\"length1\":0,\"length2\":821328}]"
metadata_diff: {"new":{"id":"43f8871d124d4f85aba50f91bca293a8","parent_id":"f67288c3a0be4374b5d532b5dcc3aabc","latitude":"0.00000000","longitude":"0.00000000","altitude":"0.0000","author":"","source_url":"","is_todo":0,"todo_due":0,"todo_completed":0,"source":"joplin-desktop","source_application":"net.cozic.joplin-desktop","application_data":"","order":1764348816756,"markup_language":2,"is_shared":0,"share_id":"","conflict_original_id":"","master_key_id":"","user_data":"","deleted_time":0},"deleted":[]}
encryption_cipher_text: 
encryption_applied: 0
updated_time: 2025-11-28T21:03:17.839Z
created_time: 2025-11-28T21:03:17.839Z
type_: 13