[FIX] doc: typos and code samples from howtos
authorNicolas Lempereur <nle@odoo.com>
Mon, 1 Dec 2014 08:10:16 +0000 (09:10 +0100)
committerXavier Morel <xmo@odoo.com>
Tue, 2 Dec 2014 15:22:55 +0000 (16:22 +0100)
* The dashboard from the backend howto doesn't specify "name" field
  which causes non-null constraint violation.
* Some useful examples uses idea.idea" model which isn't available in
  8.0 so I replaced them with "note.note".

closes #3993

doc/howtos/backend.rst
doc/howtos/backend/exercise-basic-action
doc/howtos/backend/exercise-dashboard
doc/howtos/themes.rst
doc/howtos/web.rst
doc/howtos/website.rst

index b72540c..e1ba28e 100644 (file)
@@ -8,7 +8,7 @@ Start/Stop the Odoo server
 ==========================
 
 Odoo uses a client/server architecture in which clients are web browsers
 ==========================
 
 Odoo uses a client/server architecture in which clients are web browsers
-accessing the odoo server via RPC.
+accessing the Odoo server via RPC.
 
 Business logic and extension is generally performed on the server side,
 although supporting client features (e.g. new data representation such as
 
 Business logic and extension is generally performed on the server side,
 although supporting client features (e.g. new data representation such as
@@ -1691,14 +1691,14 @@ server with the library ``xmlrpclib``::
    uid = xmlrpclib.ServerProxy(root + 'common').login(DB, USER, PASS)
    print "Logged in as %s (uid: %d)" % (USER, uid)
 
    uid = xmlrpclib.ServerProxy(root + 'common').login(DB, USER, PASS)
    print "Logged in as %s (uid: %d)" % (USER, uid)
 
-   # Create a new idea
+   # Create a new note
    sock = xmlrpclib.ServerProxy(root + 'object')
    args = {
    sock = xmlrpclib.ServerProxy(root + 'object')
    args = {
-       'name' : 'Another idea',
-       'description' : 'This is another idea of mine',
-       'inventor_id': uid,
+       'color' : 8,
+       'memo' : 'This is a note',
+       'create_uid': uid,
    }
    }
-   idea_id = sock.execute(DB, uid, PASS, 'idea.idea', 'create', args)
+   note_id = sock.execute(DB, uid, PASS, 'note.note', 'create', args)
 
 .. exercise:: Add a new service to the client
 
 
 .. exercise:: Add a new service to the client
 
@@ -1780,13 +1780,13 @@ with the standard Python libraries ``urllib2`` and ``json``::
     url = "http://%s:%s/jsonrpc" % (HOST, PORT)
     uid = call(url, "common", "login", DB, USER, PASS)
 
     url = "http://%s:%s/jsonrpc" % (HOST, PORT)
     uid = call(url, "common", "login", DB, USER, PASS)
 
-    # create a new idea
+    # create a new note
     args = {
     args = {
-        'name' : 'Another idea',
-        'description' : 'This is another idea of mine',
-        'inventor_id': uid,
+        'color' : 8,
+        'memo' : 'This is another note',
+        'create_uid': uid,
     }
     }
-    idea_id = call(url, "object", "execute", DB, uid, PASS, 'idea.idea', 'create', args)
+    note_id = call(url, "object", "execute", DB, uid, PASS, 'note.note', 'create', args)
 
 Here is the same program, using the library
 `jsonrpclib <https://pypi.python.org/pypi/jsonrpclib>`::
 
 Here is the same program, using the library
 `jsonrpclib <https://pypi.python.org/pypi/jsonrpclib>`::
@@ -1805,13 +1805,13 @@ Here is the same program, using the library
         args = [DB, uid, PASS, model, method] + list(args)
         return server.call(service="object", method="execute", args=args)
 
         args = [DB, uid, PASS, model, method] + list(args)
         return server.call(service="object", method="execute", args=args)
 
-    # create a new idea
+    # create a new note
     args = {
     args = {
-        'name' : 'Another idea',
-        'description' : 'This is another idea of mine',
-        'inventor_id': uid,
+        'color' : 8,
+        'memo' : 'This is another note',
+        'create_uid': uid,
     }
     }
-    idea_id = invoke('idea.idea', 'create', args)
+    note_id = invoke('note.note', 'create', args)
 
 Examples can be easily adapted from XML-RPC to JSON-RPC.
 
 
 Examples can be easily adapted from XML-RPC to JSON-RPC.
 
index 1287315..ac84e34 100644 (file)
@@ -36,7 +36,7 @@ Index: addons/openacademy/views/openacademy.xml
 +            </field>
 +        </record>
 +
 +            </field>
 +        </record>
 +
-+        <!-- top level menu: no paret -->
++        <!-- top level menu: no parent -->
 +        <menuitem id="main_openacademy_menu" name="Open Academy"/>
 +        <!-- A first level in the left side menu is needed
 +             before using action= attribute -->
 +        <menuitem id="main_openacademy_menu" name="Open Academy"/>
 +        <!-- A first level in the left side menu is needed
 +             before using action= attribute -->
index 7c76e69..bf175ed 100644 (file)
@@ -26,11 +26,12 @@ Index: addons/openacademy/views/session_board.xml
 ===================================================================
 --- /dev/null  1970-01-01 00:00:00.000000000 +0000
 +++ addons/openacademy/views/session_board.xml 2014-08-26 17:26:21.531783052 +0200
 ===================================================================
 --- /dev/null  1970-01-01 00:00:00.000000000 +0000
 +++ addons/openacademy/views/session_board.xml 2014-08-26 17:26:21.531783052 +0200
-@@ -0,0 +1,63 @@
+@@ -0,0 +1,66 @@
 +<?xml version="1.0"?>
 +<openerp>
 +    <data>
 +        <record model="ir.actions.act_window" id="act_session_graph">
 +<?xml version="1.0"?>
 +<openerp>
 +    <data>
 +        <record model="ir.actions.act_window" id="act_session_graph">
++            <field name="name">Attendees by course</field>
 +            <field name="res_model">openacademy.session</field>
 +            <field name="view_type">form</field>
 +            <field name="view_mode">graph</field>
 +            <field name="res_model">openacademy.session</field>
 +            <field name="view_type">form</field>
 +            <field name="view_mode">graph</field>
@@ -38,12 +39,14 @@ Index: addons/openacademy/views/session_board.xml
 +                   ref="openacademy.openacademy_session_graph_view"/>
 +        </record>
 +        <record model="ir.actions.act_window" id="act_session_calendar">
 +                   ref="openacademy.openacademy_session_graph_view"/>
 +        </record>
 +        <record model="ir.actions.act_window" id="act_session_calendar">
++            <field name="name">Sessions</field>
 +            <field name="res_model">openacademy.session</field>
 +            <field name="view_type">form</field>
 +            <field name="view_mode">calendar</field>
 +            <field name="view_id" ref="openacademy.session_calendar_view"/>
 +        </record>
 +        <record model="ir.actions.act_window" id="act_course_list">
 +            <field name="res_model">openacademy.session</field>
 +            <field name="view_type">form</field>
 +            <field name="view_mode">calendar</field>
 +            <field name="view_id" ref="openacademy.session_calendar_view"/>
 +        </record>
 +        <record model="ir.actions.act_window" id="act_course_list">
++            <field name="name">Courses</field>
 +            <field name="res_model">openacademy.course</field>
 +            <field name="view_type">form</field>
 +            <field name="view_mode">tree,form</field>
 +            <field name="res_model">openacademy.course</field>
 +            <field name="view_type">form</field>
 +            <field name="view_mode">tree,form</field>
index 35cb439..2c6eef2 100644 (file)
@@ -8,7 +8,7 @@ Basic set up
 ============
 
 Create a basic theme module with :command:`odoo.py scaffold` and the ``theme``
 ============
 
 Create a basic theme module with :command:`odoo.py scaffold` and the ``theme``
-template: from the root odoo folder, use
+template: from the root Odoo folder, use
 
 .. code-block:: console
 
 
 .. code-block:: console
 
index 384297d..8dc89d8 100644 (file)
@@ -45,7 +45,14 @@ If you browse the ``petstore`` folder, you should see the following content:
 .. code-block:: text
 
     oepetstore
 .. code-block:: text
 
     oepetstore
+    |-- images
+    |   |-- alligator.jpg
+    |   |-- ball.jpg
+    |   |-- crazy_circle.jpg
+    |   |-- fish.jpg
+    |   `-- mice.jpg
     |-- __init__.py
     |-- __init__.py
+    |-- oepetstore.message_of_the_day.csv
     |-- __openerp__.py
     |-- petstore_data.xml
     |-- petstore.py
     |-- __openerp__.py
     |-- petstore_data.xml
     |-- petstore.py
@@ -78,9 +85,9 @@ sub-folders are conventional and not strictly necessary.
     currently look like::
 
         openerp.oepetstore = function(instance, local) {
     currently look like::
 
         openerp.oepetstore = function(instance, local) {
-            var _t = openerp.web._t,
-                _lt = openerp.web._lt;
-            var QWeb = openerp.web.qweb;
+            var _t = instance.web._t,
+                _lt = instance.web._lt;
+            var QWeb = instance.web.qweb;
 
             local.HomePage = instance.Widget.extend({
                 start: function() {
 
             local.HomePage = instance.Widget.extend({
                 start: function() {
@@ -88,8 +95,8 @@ sub-folders are conventional and not strictly necessary.
                 },
             });
 
                 },
             });
 
-            openerp.web.client_actions.add(
-                'petstore.homepage', 'local.HomePage');
+            instance.web.client_actions.add(
+                'petstore.homepage', 'instance.oepetstore.HomePage');
         }
 
 Which only prints a small message in the browser's console.
         }
 
 Which only prints a small message in the browser's console.
@@ -528,7 +535,7 @@ characteristics:
     structural extensibility where an XML-based templating engine can be
     generically altered using e.g. XPath or CSS and a tree-alteration DSL (or
     even just XSLT). This flexibility and extensibility is a core
     structural extensibility where an XML-based templating engine can be
     generically altered using e.g. XPath or CSS and a tree-alteration DSL (or
     even just XSLT). This flexibility and extensibility is a core
-    characteristic of Odoo, and losting it was considered unacceptable.
+    characteristic of Odoo, and losing it was considered unacceptable.
 
 Using QWeb
 ----------
 
 Using QWeb
 ----------
@@ -1121,6 +1128,7 @@ Exercise
                     },
                     start: function() {
                         this.input_changed();
                     },
                     start: function() {
                         this.input_changed();
+                        return this._super();
                     },
                     input_changed: function() {
                         var color = [
                     },
                     input_changed: function() {
                         var color = [
@@ -1136,9 +1144,9 @@ Exercise
                 local.HomePage = instance.Widget.extend({
                     template: "HomePage",
                     start: function() {
                 local.HomePage = instance.Widget.extend({
                     template: "HomePage",
                     start: function() {
-                        this.colorInput = new local.ColorInputWidget(this)
-                            .on("change:color", this, this.color_changed);
-                            .appendTo(this.$el);
+                        this.colorInput = new local.ColorInputWidget(this);
+                        this.colorInput.on("change:color", this, this.color_changed);
+                        return this.colorInput.appendTo(this.$el);
                     },
                     color_changed: function() {
                         this.$(".oe_color_div").css("background-color", this.colorInput.get("color"));
                     },
                     color_changed: function() {
                         this.$(".oe_color_div").css("background-color", this.colorInput.get("color"));
@@ -1560,8 +1568,10 @@ Exercises
                             .filter([['categ_id.name', '=', "Pet Toys"]])
                             .limit(5)
                             .all()
                             .filter([['categ_id.name', '=', "Pet Toys"]])
                             .limit(5)
                             .all()
-                            .then(function (result) {
-                                self.$el.append(QWeb.render('PetToys', {item: item}));
+                            .then(function (results) {
+                                _(results).each(function (item) {
+                                    self.$el.append(QWeb.render('PetToy', {item: item}));
+                                });
                             });
                     }
                 });
                             });
                     }
                 });
@@ -1578,7 +1588,7 @@ Exercises
                         <div class="oe_petstore_homepage_right"></div>
                     </div>
                 </t>
                         <div class="oe_petstore_homepage_right"></div>
                     </div>
                 </t>
-                <t t-name="MessageofTheDay">
+                <t t-name="MessageOfTheDay">
                     <div class="oe_petstore_motd">
                         <p class="oe_mywidget_message_of_the_day"></p>
                     </div>
                     <div class="oe_petstore_motd">
                         <p class="oe_mywidget_message_of_the_day"></p>
                     </div>
index 2187956..5092cac 100644 (file)
@@ -142,7 +142,7 @@ First define an Odoo model file and import it:
 .. patch::
 
 Then setup :ref:`basic access control <reference/security/acl>` for the model
 .. patch::
 
 Then setup :ref:`basic access control <reference/security/acl>` for the model
-and and add them to the manifest:
+and add them to the manifest:
 
 .. patch::
 
 
 .. patch::
 
@@ -211,7 +211,7 @@ integration and a few other services (e.g. default styling, theming) via the
 #. then add the ``website=True`` flag on the controller, this sets up a few
    new variables on :ref:`the request object <reference/http/request>` and
    allows using the website layout in our template
 #. then add the ``website=True`` flag on the controller, this sets up a few
    new variables on :ref:`the request object <reference/http/request>` and
    allows using the website layout in our template
-#. use the wesite layout in the template
+#. use the website layout in the template
 
 .. patch::
 
 
 .. patch::
 
@@ -307,7 +307,7 @@ interfaces. Change the *person* template to use ``t-field``:
 
 Restart Odoo and upgrade the module, there is now a placeholder under the
 teacher's name and a new zone for blocks in :guilabel:`Edit` mode. Content
 
 Restart Odoo and upgrade the module, there is now a placeholder under the
 teacher's name and a new zone for blocks in :guilabel:`Edit` mode. Content
-dropped there is stored in the correspoding teacher's ``biography`` field, and
+dropped there is stored in the corresponding teacher's ``biography`` field, and
 thus specific to that teacher.
 
 The teacher's name is also editable, and when saved the change is visible on
 thus specific to that teacher.
 
 The teacher's name is also editable, and when saved the change is visible on
@@ -344,7 +344,7 @@ The conceptual structure of the Odoo backend is simple:
 #. actions. Actions have various types: links, reports, code which Odoo should
    execute or data display. Data display actions are called *window actions*,
    and tell Odoo to display a given *model* according to a set of views…
 #. actions. Actions have various types: links, reports, code which Odoo should
    execute or data display. Data display actions are called *window actions*,
    and tell Odoo to display a given *model* according to a set of views…
-#. a view has a type, a the broad category to which it corresponds (a list,
+#. a view has a type, a broad category to which it corresponds (a list,
    a graph, a calendar) and an *architecture* which customises the way the
    model is displayed inside the view.
 
    a graph, a calendar) and an *architecture* which customises the way the
    model is displayed inside the view.
 
@@ -457,8 +457,8 @@ though they may have to be looked for.
     * to extend a model in-place, it's :attr:`inherited
       <openerp.models.Model._inherit>` without giving it a new
       :attr:`~openerp.models.Model._name`
     * to extend a model in-place, it's :attr:`inherited
       <openerp.models.Model._inherit>` without giving it a new
       :attr:`~openerp.models.Model._name`
-    * ``product.template`` already uses the discussions system, so we
-      can remove it from our extension model
+    * ``product.template`` already uses the discussions system, so we can
+      remove it from our extension model
     * we're creating our courses as *published* by default so they can be
       seen without having to log in
 
     * we're creating our courses as *published* by default so they can be
       seen without having to log in