From 205143cc32e96166a523e6b3f422c014ba5a8d24 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Wed, 28 Jan 2015 16:13:31 +0100 Subject: [PATCH] [IMP] doc: update website to scaffold --- doc/howtos/website.rst | 68 ++++------ doc/howtos/website/basic-acl | 30 +++-- doc/howtos/website/basic-controller | 35 ++--- doc/howtos/website/basic-model | 27 ++-- doc/howtos/website/biography-esc | 30 +++-- doc/howtos/website/biography-field | 28 ++-- doc/howtos/website/chatter-backend | 16 ++- doc/howtos/website/converter-model | 57 +++++---- doc/howtos/website/course-m2o | 18 +-- doc/howtos/website/course-no-price | 31 +++-- doc/howtos/website/course-product | 85 ++++++------ doc/howtos/website/course-products-sidebar | 26 ++-- doc/howtos/website/data-retrieval-orm | 45 +++---- doc/howtos/website/demo-data | 67 ++++++---- doc/howtos/website/field-format | 24 ++-- doc/howtos/website/field-raw | 22 ++-- doc/howtos/website/field-widget | 24 ++-- doc/howtos/website/module-empty | 142 ++++++++++++++++++++- doc/howtos/website/product-dependency | 20 +-- doc/howtos/website/routing-basic | 19 ++- doc/howtos/website/routing-converter | 14 +- doc/howtos/website/teacher-links | 39 +++--- doc/howtos/website/teachers-menu | 21 +-- doc/howtos/website/template | 67 +++++----- doc/howtos/website/website-support | 75 +++++------ 25 files changed, 612 insertions(+), 418 deletions(-) diff --git a/doc/howtos/website.rst b/doc/howtos/website.rst index 6ec9fddc76c..c3f575ef25d 100644 --- a/doc/howtos/website.rst +++ b/doc/howtos/website.rst @@ -19,29 +19,19 @@ Modules customize the behavior of an Odoo installation, either by adding new behaviors or by altering existing ones (including behaviors added by other modules). -First let's create a *module directory* which will contain a single module in -our case but may store multiple related (a project's) or not really related -(a company's) modules: +:ref:`Odoo's scaffolding ` can setup a basic +module to quickly get started, simply invoke: .. code-block:: console - $ mkdir my-modules + $ ./odoo.py scaffold Academy my-modules -then let's create the module's own directory: - -.. code-block:: console - - $ mkdir my-modules/academy - -An Odoo module is a valid `Python package -`_ so it needs an -empty ``__init__.py`` file. - -Finally the mark of an Odoo module is the -:ref:`manifest file `, a Python dictionary describing -various module metadata. +This will automatically create a ``my-modules`` *module directory* with an +``academy`` module inside. The directory can be an existing module directory +if you want, but the module name must be unique for the directory. .. patch:: + :hidden: A demonstration module ====================== @@ -52,30 +42,25 @@ Although it does absolutely nothing yet we can install it: * start the Odoo server - .. code-block:: console + .. code-block:: console - $ ./odoo.py --addons-path addons,my-modules + $ ./odoo.py --addons-path addons,my-modules * go to http://localhost:8069 * create a new database including demonstration data -* to go :menuselection:`Settings --> Modules --> Installed Modules` +* to go :menuselection:`Settings --> Modules --> Local Modules` * in the top-right corner remove the *Installed* filter and search for *academy* * click the :guilabel:`Install` button for the *Academy* module -.. seealso:: - - * In a production development setting, modules should generally be created - using :ref:`Odoo's scaffolding ` rather than by - hand - To the browser ============== :ref:`Controllers ` interpret browser requests and send data back. -Add a simple controller and import it (so Odoo can find it): +Add a simple controller and ensure it is imported by ``__init__.py`` (so +Odoo can find it): .. patch:: @@ -85,8 +70,8 @@ Shut down your server (:kbd:`^C`) then restart it: $ ./odoo.py --addons-path addons,my-modules -and open a page to http://localhost:8069/academy/, you should see your "page" -appear: +and open a page to http://localhost:8069/academy/academy/, you should see your +"page" appear: .. figure:: website/helloworld.png @@ -100,8 +85,8 @@ display logic. Odoo allows any Python templating system, but provides its own :ref:`QWeb ` templating system which integrates with other Odoo features. -Let's create an XML file for our first template, register the template in the -manifest and alter the controller to use our template: +Create a template and ensure the template file is registered in the +``__openerp__.py`` manifest, and alter the controller to use our template: .. patch:: @@ -109,7 +94,7 @@ The templates iterates (``t-foreach``) on all the teachers (passed through the *template context*), and prints each teacher in its own paragraph. Finally restart Odoo and update the module's data (to install the template) -by going to :menuselection:`Settings --> Modules --> Installed Modules --> +by going to :menuselection:`Settings --> Modules --> Local Modules --> Academy` and clicking :guilabel:`Upgrade`. .. tip:: @@ -121,7 +106,7 @@ Academy` and clicking :guilabel:`Upgrade`. $ odoo.py --addons-path addons,my-modules -d academy -u academy -Going to http://localhost:8069/academy/ should now result in: +Going to http://localhost:8069/academy/academy/ should now result in: .. image:: website/basic-list.png @@ -137,7 +122,8 @@ thereof, so we're now going to move our data to the database. Defining the data model ----------------------- -First define an Odoo model file and import it: +Define a teacher model, and ensure it is imported from ``__init__.py`` so it +is correctly loaded: .. patch:: @@ -165,7 +151,7 @@ Demonstration data The second step is to add some demonstration data to the system so it's possible to test it easily. This is done by adding a ``demo`` -:ref:`data file ` to the manifest: +:ref:`data file `, which must be linked from the manifest: .. patch:: @@ -194,8 +180,8 @@ The last step is to alter model and template to use our demonstration data: Restart the server and update the module (in order to update the manifest and templates and load the demo file) then navigate to -http://localhost:8069/academy/. The page should look little different: names -should simply be prefixed by a number (the database identifier for the +http://localhost:8069/academy/academy/. The page should look little different: +names should simply be prefixed by a number (the database identifier for the teacher). Website support @@ -216,9 +202,9 @@ integration and a few other services (e.g. default styling, theming) via the .. patch:: After restarting the server while updating the module (in order to update the -manifest and template) access http://localhost:8069/academy/ should yield a -nicer looking page with branding and a number of built-in page elements -(top-level menu, footer, …) +manifest and template) access http://localhost:8069/academy/academy/ should +yield a nicer looking page with branding and a number of built-in page +elements (top-level menu, footer, …) .. image:: website/layout.png @@ -396,7 +382,7 @@ let's also add views so we can see and edit a course's teacher: It should also be possible to create new courses directly from a teacher's page, or to see all the courses a teacher gives, so add -:class:`the inverse relationship ` to the *teachers* model: .. patch:: diff --git a/doc/howtos/website/basic-acl b/doc/howtos/website/basic-acl index f07581f4d22..fa2483909e2 100644 --- a/doc/howtos/website/basic-acl +++ b/doc/howtos/website/basic-acl @@ -1,19 +1,23 @@ # HG changeset patch # Parent 91c0cc5b319e7bf240d359817b8bd044769a4f5c -diff -r 91c0cc5b319e -r c77aa2c3341b academy/__openerp__.py ---- a/academy/__openerp__.py Mon Aug 11 16:49:10 2014 +0200 -+++ b/academy/__openerp__.py Mon Aug 11 16:50:01 2014 +0200 -@@ -8,6 +8,7 @@ - 'depends': ['base'], - # data files which are always installed +# Parent 0a9ec16d98785205f25868bc23485569a1444cf3 + +diff --git a/academy/__openerp__.py b/academy/__openerp__.py +--- a/academy/__openerp__.py ++++ b/academy/__openerp__.py +@@ -24,7 +24,7 @@ + + # always loaded 'data': [ -+ 'ir.model.access.csv', +- # 'security/ir.model.access.csv', ++ 'security/ir.model.access.csv', 'templates.xml', ], - } -diff -r 91c0cc5b319e -r c77aa2c3341b academy/ir.model.access.csv ---- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ b/academy/ir.model.access.csv Mon Aug 11 16:50:01 2014 +0200 -@@ -0,0 +1,2 @@ -+id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink + # only loaded in demonstration mode +diff --git a/academy/security/ir.model.access.csv b/academy/security/ir.model.access.csv +--- a/academy/security/ir.model.access.csv ++++ b/academy/security/ir.model.access.csv +@@ -1,2 +1,2 @@ + id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +-access_academy_academy,academy.academy,model_academy_academy,,1,0,0,0 +access_academy_teachers,access_academy_teachers,model_academy_teachers,,1,0,0,0 diff --git a/doc/howtos/website/basic-controller b/doc/howtos/website/basic-controller index 96f67b46508..7b29c58f013 100644 --- a/doc/howtos/website/basic-controller +++ b/doc/howtos/website/basic-controller @@ -1,19 +1,22 @@ # HG changeset patch # Parent 78b4476f35cbef86ee4f858daf843e3b932fb9fa -diff -r 78b4476f35cb -r d5ad2ad84a5d academy/__init__.py ---- a/academy/__init__.py Mon Aug 11 16:09:21 2014 +0200 -+++ b/academy/__init__.py Mon Aug 11 16:12:38 2014 +0200 -@@ -0,0 +1,1 @@ -+from . import controllers -diff -r 78b4476f35cb -r d5ad2ad84a5d academy/controllers.py ---- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ b/academy/controllers.py Mon Aug 11 16:12:38 2014 +0200 -@@ -0,0 +1,8 @@ -+# -*- coding: utf-8 -*- -+from openerp import http -+ +# Parent 0a4f5e3206a0738201a40d2d1a88f41fdbbc98bf + +diff --git a/academy/controllers.py b/academy/controllers.py +--- a/academy/controllers.py ++++ b/academy/controllers.py +@@ -1,10 +1,10 @@ + # -*- coding: utf-8 -*- + from openerp import http + +-# class Academy(http.Controller): +-# @http.route('/academy/academy/', auth='public') +-# def index(self, **kw): +-# return "Hello, world" +class Academy(http.Controller): -+ @http.route('/academy/', auth='public') -+ def index(self): -+ return "Hello, world!" -+ ++ @http.route('/academy/academy/', auth='public') ++ def index(self, **kw): ++ return "Hello, world" + + # @http.route('/academy/academy/objects/', auth='public') + # def list(self, **kw): diff --git a/doc/howtos/website/basic-model b/doc/howtos/website/basic-model index 2e2f7677bbe..4086c82b13d 100644 --- a/doc/howtos/website/basic-model +++ b/doc/howtos/website/basic-model @@ -1,19 +1,18 @@ # HG changeset patch # Parent 3e800beb7db0f9f05bfd4db275c86e8903d4f127 -diff -r 3e800beb7db0 -r 91c0cc5b319e academy/__init__.py ---- a/academy/__init__.py Mon Aug 11 16:36:15 2014 +0200 -+++ b/academy/__init__.py Mon Aug 11 16:49:10 2014 +0200 -@@ -1,1 +1,2 @@ - from . import controllers -+from . import models -diff -r 3e800beb7db0 -r 91c0cc5b319e academy/models.py ---- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ b/academy/models.py Mon Aug 11 16:49:10 2014 +0200 -@@ -0,0 +1,7 @@ -+from openerp import fields -+from openerp import models -+ +# Parent 4082801768b28c2871920e41d23b7879763e763e + +diff --git a/academy/models.py b/academy/models.py +--- a/academy/models.py ++++ b/academy/models.py +@@ -2,7 +2,7 @@ + + from openerp import models, fields, api + +-# class academy(models.Model): +-# _name = 'academy.academy' +class Teachers(models.Model): + _name = 'academy.teachers' -+ + +-# name = fields.Char() + name = fields.Char() diff --git a/doc/howtos/website/biography-esc b/doc/howtos/website/biography-esc index 2cb00789537..345623aa903 100644 --- a/doc/howtos/website/biography-esc +++ b/doc/howtos/website/biography-esc @@ -1,21 +1,23 @@ # HG changeset patch # Parent 4814709fe1c52515f5108623c2c8f0bce57ffac0 -diff -r 4814709fe1c5 -r 216904cc7636 academy/models.py ---- a/academy/models.py Tue Aug 12 17:18:59 2014 +0200 -+++ b/academy/models.py Tue Aug 12 17:24:44 2014 +0200 -@@ -5,3 +5,4 @@ class Teachers(models.Model): +# Parent 926b3fdd1bba025d9543bb85ac40159b392ba13c + +diff --git a/academy/models.py b/academy/models.py +--- a/academy/models.py ++++ b/academy/models.py +@@ -6,3 +6,4 @@ class Teachers(models.Model): _name = 'academy.teachers' name = fields.Char() + biography = fields.Html() -diff -r 4814709fe1c5 -r 216904cc7636 academy/templates.xml ---- a/academy/templates.xml Tue Aug 12 17:18:59 2014 +0200 -+++ b/academy/templates.xml Tue Aug 12 17:24:44 2014 +0200 +diff --git a/academy/templates.xml b/academy/templates.xml +--- a/academy/templates.xml ++++ b/academy/templates.xml @@ -21,6 +21,7 @@ -
-
-

-+
-
-
-
+
+
+

++
+
+
+
diff --git a/doc/howtos/website/biography-field b/doc/howtos/website/biography-field index c8905d09307..0fb14a2e565 100644 --- a/doc/howtos/website/biography-field +++ b/doc/howtos/website/biography-field @@ -1,16 +1,18 @@ # HG changeset patch # Parent 216904cc7636679adbf1a5a211070e739c59c3a8 -diff -r 216904cc7636 -r d5b8a2de3e35 academy/templates.xml ---- a/academy/templates.xml Tue Aug 12 17:24:44 2014 +0200 -+++ b/academy/templates.xml Tue Aug 12 17:25:15 2014 +0200 +# Parent edeaf1ebff99c9b3d7cbe1925ca3d2ece519ba52 + +diff --git a/academy/templates.xml b/academy/templates.xml +--- a/academy/templates.xml ++++ b/academy/templates.xml @@ -20,8 +20,8 @@ -
-
-
--

--
-+

-+
-
-

-
+
+
+
+-

+-
++

++
+
+

+
diff --git a/doc/howtos/website/chatter-backend b/doc/howtos/website/chatter-backend index 31f4a7f2305..8598be05bae 100644 --- a/doc/howtos/website/chatter-backend +++ b/doc/howtos/website/chatter-backend @@ -1,9 +1,11 @@ # HG changeset patch # Parent 957395d27f63dfdb2ea0dacdbe72bc35e724ddcc -diff -r 957395d27f63 -r 6106208621f0 academy/models.py ---- a/academy/models.py Wed Aug 13 15:06:30 2014 +0200 -+++ b/academy/models.py Wed Aug 13 16:32:26 2014 +0200 -@@ -11,6 +11,7 @@ class Teachers(models.Model): +# Parent 7156498d3cffb6128e73da2e351f2b5af5f7be63 + +diff --git a/academy/models.py b/academy/models.py +--- a/academy/models.py ++++ b/academy/models.py +@@ -12,6 +12,7 @@ class Teachers(models.Model): class Courses(models.Model): _name = 'academy.courses' @@ -11,9 +13,9 @@ diff -r 957395d27f63 -r 6106208621f0 academy/models.py name = fields.Char() teacher_id = fields.Many2one('academy.teachers', string="Teacher") -diff -r 957395d27f63 -r 6106208621f0 academy/views.xml ---- a/academy/views.xml Wed Aug 13 15:06:30 2014 +0200 -+++ b/academy/views.xml Wed Aug 13 16:32:26 2014 +0200 +diff --git a/academy/views.xml b/academy/views.xml +--- a/academy/views.xml ++++ b/academy/views.xml @@ -60,6 +60,10 @@
- - -+ -+ - + + # @http.route('/academy/academy/objects/', auth='public') +diff --git a/academy/templates.xml b/academy/templates.xml +--- a/academy/templates.xml ++++ b/academy/templates.xml +@@ -12,6 +12,18 @@ +
+ + ++ + + + diff --git a/doc/howtos/website/course-m2o b/doc/howtos/website/course-m2o index de624eb5452..8daabaedb7d 100644 --- a/doc/howtos/website/course-m2o +++ b/doc/howtos/website/course-m2o @@ -1,17 +1,11 @@ # HG changeset patch # Parent c3705f93fcea86a279f2c31204cc0c2914e784d8 +# Parent 8f2d190d879cdf6464bd61f7994b8b582befcafd -diff --git a/academy/ir.model.access.csv b/academy/ir.model.access.csv ---- a/academy/ir.model.access.csv -+++ b/academy/ir.model.access.csv -@@ -1,2 +1,3 @@ - id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink - access_academy_teachers,access_academy_teachers,model_academy_teachers,,1,0,0,0 -+access_academy_courses,access_academy_courses,model_academy_courses,,1,0,0,0 diff --git a/academy/models.py b/academy/models.py --- a/academy/models.py +++ b/academy/models.py -@@ -6,3 +6,9 @@ class Teachers(models.Model): +@@ -7,3 +7,9 @@ class Teachers(models.Model): name = fields.Char() biography = fields.Html() @@ -21,3 +15,11 @@ diff --git a/academy/models.py b/academy/models.py + + name = fields.Char() + teacher_id = fields.Many2one('academy.teachers', string="Teacher") +diff --git a/academy/security/ir.model.access.csv b/academy/security/ir.model.access.csv +--- a/academy/security/ir.model.access.csv ++++ b/academy/security/ir.model.access.csv +@@ -1,2 +1,3 @@ + id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink + access_academy_teachers,access_academy_teachers,model_academy_teachers,,1,0,0,0 ++access_academy_courses,access_academy_courses,model_academy_courses,,1,0,0,0 +\ No newline at end of file diff --git a/doc/howtos/website/course-no-price b/doc/howtos/website/course-no-price index c09a355040f..5a67a9ae892 100644 --- a/doc/howtos/website/course-no-price +++ b/doc/howtos/website/course-no-price @@ -1,16 +1,21 @@ # HG changeset patch # Parent 1708c59c9731207e06ca84529c839c571e622481 -diff -r 1708c59c9731 -r c706c2ec2832 academy/templates.xml ---- a/academy/templates.xml Thu Aug 14 14:53:52 2014 +0200 -+++ b/academy/templates.xml Thu Aug 14 16:08:10 2014 +0200 -@@ -28,4 +28,10 @@ -
- - +# Parent ac472417df8770ce9b6922968aa86779a86be35c + +diff --git a/academy/templates.xml b/academy/templates.xml +--- a/academy/templates.xml ++++ b/academy/templates.xml +@@ -28,6 +28,13 @@ +
+ + + -+ - ++ ++ + + + diff --git a/doc/howtos/website/course-product b/doc/howtos/website/course-product index 5b45a3f5009..ce433605baf 100644 --- a/doc/howtos/website/course-product +++ b/doc/howtos/website/course-product @@ -1,16 +1,17 @@ # HG changeset patch # Parent 2ee7212e5de4702dff08d9b5e4268e7dc261d038 +# Parent 4ca7b848bb60c3573de7ed41a28b4b65186a5725 diff --git a/academy/__openerp__.py b/academy/__openerp__.py --- a/academy/__openerp__.py +++ b/academy/__openerp__.py -@@ -11,6 +11,7 @@ - 'ir.model.access.csv', +@@ -27,6 +27,7 @@ + 'security/ir.model.access.csv', 'templates.xml', 'views.xml', + 'data.xml', ], - # data files which are only installed in "demonstration mode" + # only loaded in demonstration mode 'demo': [ diff --git a/academy/data.xml b/academy/data.xml new file mode 100644 @@ -26,47 +27,41 @@ new file mode 100644 diff --git a/academy/demo.xml b/academy/demo.xml --- a/academy/demo.xml +++ b/academy/demo.xml -@@ -8,4 +8,29 @@ - - Lester Vaughn - +@@ -9,5 +9,30 @@ + + Lester Vaughn + + -+ -+ Course 0 -+ -+ -+ True -+ 0 -+ service -+ -+ -+ Course 1 -+ -+ -+ True -+ 0 -+ service -+ -+ -+ Course 2 -+ -+ -+ True -+ 0 -+ service -+ - -diff --git a/academy/ir.model.access.csv b/academy/ir.model.access.csv ---- a/academy/ir.model.access.csv -+++ b/academy/ir.model.access.csv -@@ -1,3 +1,2 @@ - id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink - access_academy_teachers,access_academy_teachers,model_academy_teachers,,1,0,0,0 --access_academy_courses,access_academy_courses,model_academy_courses,,1,0,0,0 ++ ++ Course 0 ++ ++ ++ True ++ 0 ++ service ++ ++ ++ Course 1 ++ ++ ++ True ++ 0 ++ service ++ ++ ++ Course 2 ++ ++ ++ True ++ 0 ++ service ++ + + diff --git a/academy/models.py b/academy/models.py --- a/academy/models.py +++ b/academy/models.py -@@ -7,11 +7,9 @@ class Teachers(models.Model): +@@ -8,11 +8,9 @@ class Teachers(models.Model): name = fields.Char() biography = fields.Html() @@ -80,6 +75,16 @@ diff --git a/academy/models.py b/academy/models.py - name = fields.Char() teacher_id = fields.Many2one('academy.teachers', string="Teacher") +diff --git a/academy/security/ir.model.access.csv b/academy/security/ir.model.access.csv +--- a/academy/security/ir.model.access.csv ++++ b/academy/security/ir.model.access.csv +@@ -1,3 +1,2 @@ + id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +-access_academy_teachers,access_academy_teachers,model_academy_teachers,,1,0,0,0 +-access_academy_courses,access_academy_courses,model_academy_courses,,1,0,0,0 +\ No newline at end of file ++access_academy_teachers,access_academy_teachers,model_academy_teachers,,1,0,0,0 +\ No newline at end of file diff --git a/academy/views.xml b/academy/views.xml --- a/academy/views.xml +++ b/academy/views.xml diff --git a/doc/howtos/website/course-products-sidebar b/doc/howtos/website/course-products-sidebar index 09045a5ab0b..03de4bdb1de 100644 --- a/doc/howtos/website/course-products-sidebar +++ b/doc/howtos/website/course-products-sidebar @@ -1,14 +1,18 @@ # HG changeset patch # Parent c706c2ec28328a65a8aee6a7ba7d06896468c1e3 -diff -r c706c2ec2832 -r f85b481451bb academy/templates.xml ---- a/academy/templates.xml Thu Aug 14 16:08:10 2014 +0200 -+++ b/academy/templates.xml Thu Aug 14 16:30:49 2014 +0200 -@@ -34,4 +34,8 @@ - product.price > 0 - - +# Parent 053262442acdbe3c803c29ce35002ec69452c5fd + +diff --git a/academy/templates.xml b/academy/templates.xml +--- a/academy/templates.xml ++++ b/academy/templates.xml +@@ -35,6 +35,10 @@ + + + ++ ++ ++ + -+ -+ -+ - + + + diff --git a/doc/howtos/website/data-retrieval-orm b/doc/howtos/website/data-retrieval-orm index 0f34f1aa0d0..514777beb14 100644 --- a/doc/howtos/website/data-retrieval-orm +++ b/doc/howtos/website/data-retrieval-orm @@ -1,29 +1,30 @@ # HG changeset patch # Parent f0a3629abb17ca9f4dddd8885321d9ca5de14b55 -diff -r f0a3629abb17 -r 7ae0db4c2ddf academy/controllers.py ---- a/academy/controllers.py Tue Aug 12 11:21:05 2014 +0200 -+++ b/academy/controllers.py Tue Aug 12 11:24:14 2014 +0200 -@@ -4,7 +4,7 @@ from openerp import http +# Parent 4c1c3d77ba8ad35dc759405a0db39a6eae943b0f + +diff --git a/academy/controllers.py b/academy/controllers.py +--- a/academy/controllers.py ++++ b/academy/controllers.py +@@ -4,8 +4,9 @@ from openerp import http class Academy(http.Controller): - @http.route('/academy/', auth='public') - def index(self): + @http.route('/academy/academy/', auth='public') + def index(self, **kw): + Teachers = http.request.env['academy.teachers'] return http.request.render('academy.index', { - 'teachers': ["Diana Padilla", "Jody Caroll", "Lester Vaughn"], -+ 'teachers': Teachers.search([]), ++ 'teachers': Teachers.search([]) }) -- -diff -r f0a3629abb17 -r 7ae0db4c2ddf academy/templates.xml ---- a/academy/templates.xml Tue Aug 12 11:21:05 2014 +0200 -+++ b/academy/templates.xml Tue Aug 12 11:24:14 2014 +0200 -@@ -2,7 +2,7 @@ - -- -\ No newline at end of file -+ + + # @http.route('/academy/academy/objects/', auth='public') +diff --git a/academy/templates.xml b/academy/templates.xml +--- a/academy/templates.xml ++++ b/academy/templates.xml +@@ -3,7 +3,7 @@ + + diff --git a/doc/howtos/website/demo-data b/doc/howtos/website/demo-data index e7694add228..c8fb7d849ad 100644 --- a/doc/howtos/website/demo-data +++ b/doc/howtos/website/demo-data @@ -1,29 +1,42 @@ # HG changeset patch # Parent c77aa2c3341b9ab3a4e9ed05874e8a278fe69453 -diff -r c77aa2c3341b -r f0a3629abb17 academy/__openerp__.py ---- a/academy/__openerp__.py Mon Aug 11 16:50:01 2014 +0200 -+++ b/academy/__openerp__.py Tue Aug 12 11:21:05 2014 +0200 -@@ -11,4 +11,8 @@ - 'ir.model.access.csv', - 'templates.xml', - ], -+ # data files which are only installed in "demonstration mode" -+ 'demo': [ -+ 'demo.xml', -+ ], - } -diff -r c77aa2c3341b -r f0a3629abb17 academy/demo.xml ---- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ b/academy/demo.xml Tue Aug 12 11:21:05 2014 +0200 -@@ -0,0 +1,11 @@ -+ -+ -+ Diana Padilla -+ -+ -+ Jody Carroll -+ -+ -+ Lester Vaughn -+ -+ +# Parent f416ab6c60f9cb3a803d30ff4dbff880eaa44a65 + +diff --git a/academy/demo.xml b/academy/demo.xml +--- a/academy/demo.xml ++++ b/academy/demo.xml +@@ -1,25 +1,13 @@ + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++ ++ Diana Padilla ++ ++ ++ Jody Carroll ++ ++ ++ Lester Vaughn ++ + + diff --git a/doc/howtos/website/field-format b/doc/howtos/website/field-format index 77b68adadb3..2fbaa541f8c 100644 --- a/doc/howtos/website/field-format +++ b/doc/howtos/website/field-format @@ -1,14 +1,16 @@ # HG changeset patch # Parent f3ad3f919b49bc70c87e1500ec0d39f741243b3d -diff -r f3ad3f919b49 -r c3d04f578b76 academy/templates.xml ---- a/academy/templates.xml Tue Aug 12 17:30:53 2014 +0200 -+++ b/academy/templates.xml Tue Aug 12 17:34:31 2014 +0200 +# Parent 07a68419287382d7dd9d600c8b813c3c37a88864 + +diff --git a/academy/templates.xml b/academy/templates.xml +--- a/academy/templates.xml ++++ b/academy/templates.xml @@ -21,7 +21,7 @@ -
-
-

--

Last modified:

-+

Last modified:

-
-
-

+
+
+

+-

Last modified:

++

Last modified:

+
+
+

diff --git a/doc/howtos/website/field-raw b/doc/howtos/website/field-raw index c09378c4383..e1b4ef76abb 100644 --- a/doc/howtos/website/field-raw +++ b/doc/howtos/website/field-raw @@ -1,13 +1,15 @@ # HG changeset patch # Parent d5b8a2de3e35c26c29f85ce500d41ccd2373c508 -diff -r d5b8a2de3e35 -r f3ad3f919b49 academy/templates.xml ---- a/academy/templates.xml Tue Aug 12 17:25:15 2014 +0200 -+++ b/academy/templates.xml Tue Aug 12 17:30:53 2014 +0200 +# Parent 65d27383542ef9214ff9e2c308aa54b042cff2d9 + +diff --git a/academy/templates.xml b/academy/templates.xml +--- a/academy/templates.xml ++++ b/academy/templates.xml @@ -21,6 +21,7 @@ -
-
-

-+

Last modified:

-
-
-

+
+
+

++

Last modified:

+
+
+

diff --git a/doc/howtos/website/field-widget b/doc/howtos/website/field-widget index 7be20b5f343..667cb8a65f1 100644 --- a/doc/howtos/website/field-widget +++ b/doc/howtos/website/field-widget @@ -1,14 +1,16 @@ # HG changeset patch # Parent c3d04f578b762612422e09777e0ac5b3863d6ea6 -diff -r c3d04f578b76 -r c8cc9e66a270 academy/templates.xml ---- a/academy/templates.xml Tue Aug 12 17:34:31 2014 +0200 -+++ b/academy/templates.xml Wed Aug 13 10:11:49 2014 +0200 +# Parent 0bc39fe6579c4e48b61e77bc970da2e1784f1a67 + +diff --git a/academy/templates.xml b/academy/templates.xml +--- a/academy/templates.xml ++++ b/academy/templates.xml @@ -21,7 +21,7 @@ -
-
-

--

Last modified:

-+

Last modified:

-
-
-

+
+
+

+-

Last modified:

++

Last modified:

+
+
+

diff --git a/doc/howtos/website/module-empty b/doc/howtos/website/module-empty index c1f9032f57c..0bbb26dd5b6 100644 --- a/doc/howtos/website/module-empty +++ b/doc/howtos/website/module-empty @@ -1,19 +1,153 @@ # HG changeset patch # Parent 0000000000000000000000000000000000000000 +# Parent 0000000000000000000000000000000000000000 diff --git a/academy/__init__.py b/academy/__init__.py new file mode 100644 +--- /dev/null ++++ b/academy/__init__.py +@@ -0,0 +1,3 @@ ++# -*- coding: utf-8 -*- ++import controllers ++import models diff --git a/academy/__openerp__.py b/academy/__openerp__.py new file mode 100644 --- /dev/null +++ b/academy/__openerp__.py -@@ -0,0 +1,9 @@ +@@ -0,0 +1,34 @@ ++# -*- coding: utf-8 -*- +{ -+ # The human-readable name of your module, displayed in the interface + 'name': "Academy", -+ # A more extensive description ++ ++ 'summary': """ ++ Short (1 phrase/line) summary of the module's purpose, used as ++ subtitle on modules listing or apps.openerp.com""", ++ + 'description': """ ++ Long description of module's purpose + """, -+ # Which modules must be installed for this one to work ++ ++ 'author': "Your Company", ++ 'website': "http://www.yourcompany.com", ++ ++ # Categories can be used to filter modules in modules listing ++ # Check https://github.com/odoo/odoo/blob/master/openerp/addons/base/module/module_data.xml ++ # for the full list ++ 'category': 'Uncategorized', ++ 'version': '0.1', ++ ++ # any module necessary for this one to work correctly + 'depends': ['base'], ++ ++ # always loaded ++ 'data': [ ++ # 'security/ir.model.access.csv', ++ 'templates.xml', ++ ], ++ # only loaded in demonstration mode ++ 'demo': [ ++ 'demo.xml', ++ ], +} +diff --git a/academy/controllers.py b/academy/controllers.py +new file mode 100644 +--- /dev/null ++++ b/academy/controllers.py +@@ -0,0 +1,20 @@ ++# -*- coding: utf-8 -*- ++from openerp import http ++ ++# class Academy(http.Controller): ++# @http.route('/academy/academy/', auth='public') ++# def index(self, **kw): ++# return "Hello, world" ++ ++# @http.route('/academy/academy/objects/', auth='public') ++# def list(self, **kw): ++# return http.request.render('academy.listing', { ++# 'root': '/academy/academy', ++# 'objects': http.request.env['academy.academy'].search([]), ++# }) ++ ++# @http.route('/academy/academy/objects//', auth='public') ++# def object(self, obj, **kw): ++# return http.request.render('academy.object', { ++# 'object': obj ++# }) +diff --git a/academy/demo.xml b/academy/demo.xml +new file mode 100644 +--- /dev/null ++++ b/academy/demo.xml +@@ -0,0 +1,25 @@ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ +diff --git a/academy/models.py b/academy/models.py +new file mode 100644 +--- /dev/null ++++ b/academy/models.py +@@ -0,0 +1,8 @@ ++# -*- coding: utf-8 -*- ++ ++from openerp import models, fields, api ++ ++# class academy(models.Model): ++# _name = 'academy.academy' ++ ++# name = fields.Char() +diff --git a/academy/security/ir.model.access.csv b/academy/security/ir.model.access.csv +new file mode 100644 +--- /dev/null ++++ b/academy/security/ir.model.access.csv +@@ -0,0 +1,2 @@ ++id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink ++access_academy_academy,academy.academy,model_academy_academy,,1,0,0,0 +diff --git a/academy/templates.xml b/academy/templates.xml +new file mode 100644 +--- /dev/null ++++ b/academy/templates.xml +@@ -0,0 +1,22 @@ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ diff --git a/doc/howtos/website/product-dependency b/doc/howtos/website/product-dependency index 700c57af721..1998b876984 100644 --- a/doc/howtos/website/product-dependency +++ b/doc/howtos/website/product-dependency @@ -1,14 +1,16 @@ # HG changeset patch # Parent 6106208621f01d5aea67727f09adf5c5b2a38642 -diff -r 6106208621f0 -r f882c3b2e7af academy/__openerp__.py ---- a/academy/__openerp__.py Wed Aug 13 16:32:26 2014 +0200 -+++ b/academy/__openerp__.py Thu Aug 14 11:44:51 2014 +0200 -@@ -5,7 +5,7 @@ - 'description': """ - """, - # Which modules must be installed for this one to work +# Parent ae97cfb61fd0e1a47727a9d8ed4a702116254eff + +diff --git a/academy/__openerp__.py b/academy/__openerp__.py +--- a/academy/__openerp__.py ++++ b/academy/__openerp__.py +@@ -20,7 +20,7 @@ + 'version': '0.1', + + # any module necessary for this one to work correctly - 'depends': ['website'], + 'depends': ['website_sale'], - # data files which are always installed + + # always loaded 'data': [ - 'ir.model.access.csv', diff --git a/doc/howtos/website/routing-basic b/doc/howtos/website/routing-basic index 15c19c632a5..933b6540b27 100644 --- a/doc/howtos/website/routing-basic +++ b/doc/howtos/website/routing-basic @@ -1,14 +1,19 @@ # HG changeset patch # Parent 0795247fa6cbb63238941f3dd26a8b6144fa71ee -diff -r 0795247fa6cb -r e9d9740fa185 academy/controllers.py ---- a/academy/controllers.py Tue Aug 12 11:27:14 2014 +0200 -+++ b/academy/controllers.py Tue Aug 12 16:51:29 2014 +0200 -@@ -8,3 +8,8 @@ class Academy(http.Controller): - return http.request.render('academy.index', { - 'teachers': Teachers.search([]), +# Parent f66ff336f8ed20e022660bd74a43af1b44a1f275 + +diff --git a/academy/controllers.py b/academy/controllers.py +--- a/academy/controllers.py ++++ b/academy/controllers.py +@@ -9,6 +9,11 @@ class Academy(http.Controller): + 'teachers': Teachers.search([]) }) -+ + + @http.route('/academy//', auth='public', website=True) + def teacher(self, name): + return '

{}

'.format(name) + ++ + # @http.route('/academy/academy/objects/', auth='public') + # def list(self, **kw): + # return http.request.render('academy.listing', { diff --git a/doc/howtos/website/routing-converter b/doc/howtos/website/routing-converter index 578b4c31b35..bebdc7d9ff7 100644 --- a/doc/howtos/website/routing-converter +++ b/doc/howtos/website/routing-converter @@ -1,10 +1,12 @@ # HG changeset patch # Parent e9d9740fa1852c80541c6b5b94280c8ec74cc4bb -diff -r e9d9740fa185 -r 122340f43602 academy/controllers.py ---- a/academy/controllers.py Tue Aug 12 16:51:29 2014 +0200 -+++ b/academy/controllers.py Tue Aug 12 16:52:38 2014 +0200 -@@ -9,7 +9,7 @@ class Academy(http.Controller): - 'teachers': Teachers.search([]), +# Parent cf501446e2f8d7a059ef7bd16866ed03c8f2a04f + +diff --git a/academy/controllers.py b/academy/controllers.py +--- a/academy/controllers.py ++++ b/academy/controllers.py +@@ -9,9 +9,9 @@ class Academy(http.Controller): + 'teachers': Teachers.search([]) }) - @http.route('/academy//', auth='public', website=True) @@ -14,3 +16,5 @@ diff -r e9d9740fa185 -r 122340f43602 academy/controllers.py + def teacher(self, id): + return '

{} ({})

'.format(id, type(id).__name__) + + # @http.route('/academy/academy/objects/', auth='public') diff --git a/doc/howtos/website/teacher-links b/doc/howtos/website/teacher-links index 51945ab27b9..e6c6e8284a0 100644 --- a/doc/howtos/website/teacher-links +++ b/doc/howtos/website/teacher-links @@ -1,26 +1,27 @@ # HG changeset patch # Parent 91ffd360f3ffd44acb605c09753498b3d5f3f210 +# Parent 976a92eff9104d355cb86a0b41e883a19e75e923 diff --git a/academy/templates.xml b/academy/templates.xml --- a/academy/templates.xml +++ b/academy/templates.xml -@@ -5,7 +5,9 @@ -
-
- --

-+

-+ -+

-
-
-
+@@ -6,7 +6,9 @@ +
+
+ +-

++

++ ++

+
+
+
@@ -18,7 +20,7 @@ -
-
-
--

-+

-
-
-
+
+
+
+-

++

+
+
+
diff --git a/doc/howtos/website/teachers-menu b/doc/howtos/website/teachers-menu index 45483e1caba..117b8d16317 100644 --- a/doc/howtos/website/teachers-menu +++ b/doc/howtos/website/teachers-menu @@ -1,19 +1,22 @@ # HG changeset patch # Parent c8cc9e66a2701dad6589ff1d950e1cb7738d0854 -diff -r c8cc9e66a270 -r 0201053e995d academy/__openerp__.py ---- a/academy/__openerp__.py Wed Aug 13 10:11:49 2014 +0200 -+++ b/academy/__openerp__.py Wed Aug 13 11:04:49 2014 +0200 -@@ -10,6 +10,7 @@ +# Parent 44a09b8865d418cda8b7c46dfb70fadc86e22184 + +diff --git a/academy/__openerp__.py b/academy/__openerp__.py +--- a/academy/__openerp__.py ++++ b/academy/__openerp__.py +@@ -26,6 +26,7 @@ 'data': [ - 'ir.model.access.csv', + 'security/ir.model.access.csv', 'templates.xml', + 'views.xml', ], - # data files which are only installed in "demonstration mode" + # only loaded in demonstration mode 'demo': [ -diff -r c8cc9e66a270 -r 0201053e995d academy/views.xml ---- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ b/academy/views.xml Wed Aug 13 11:04:49 2014 +0200 +diff --git a/academy/views.xml b/academy/views.xml +new file mode 100644 +--- /dev/null ++++ b/academy/views.xml @@ -0,0 +1,13 @@ + + diff --git a/doc/howtos/website/template b/doc/howtos/website/template index c088eb246a4..1647c16c1ba 100644 --- a/doc/howtos/website/template +++ b/doc/howtos/website/template @@ -1,39 +1,42 @@ # HG changeset patch # Parent d5ad2ad84a5db0668e4e08fefb6e3f628c2e14d1 -diff -r d5ad2ad84a5d -r 3e800beb7db0 academy/__openerp__.py ---- a/academy/__openerp__.py Mon Aug 11 16:12:38 2014 +0200 -+++ b/academy/__openerp__.py Mon Aug 11 16:36:15 2014 +0200 -@@ -6,4 +6,8 @@ - """, - # Which modules must be installed for this one to work - 'depends': ['base'], -+ # data files which are always installed -+ 'data': [ -+ 'templates.xml', -+ ], - } -diff -r d5ad2ad84a5d -r 3e800beb7db0 academy/controllers.py ---- a/academy/controllers.py Mon Aug 11 16:12:38 2014 +0200 -+++ b/academy/controllers.py Mon Aug 11 16:36:15 2014 +0200 -@@ -4,5 +4,7 @@ from openerp import http +# Parent e65c9826721cb2421131399bc9223e03b482d38f + +diff --git a/academy/controllers.py b/academy/controllers.py +--- a/academy/controllers.py ++++ b/academy/controllers.py +@@ -4,7 +4,9 @@ from openerp import http class Academy(http.Controller): - @http.route('/academy/', auth='public') - def index(self): -- return "Hello, world!" + @http.route('/academy/academy/', auth='public') + def index(self, **kw): +- return "Hello, world" + return http.request.render('academy.index', { + 'teachers': ["Diana Padilla", "Jody Caroll", "Lester Vaughn"], + }) -diff -r d5ad2ad84a5d -r 3e800beb7db0 academy/templates.xml ---- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ b/academy/templates.xml Mon Aug 11 16:36:15 2014 +0200 -@@ -0,0 +1,8 @@ -+ -+ -+ -\ No newline at end of file + # @http.route('/academy/academy/objects/', auth='public') + # def list(self, **kw): +diff --git a/academy/templates.xml b/academy/templates.xml +--- a/academy/templates.xml ++++ b/academy/templates.xml +@@ -1,14 +1,11 @@ + + +- +- +- +- +- +- +- +- +- ++ + + + diff --git a/doc/howtos/website/website-support b/doc/howtos/website/website-support index d3c1a932b87..33b401c0144 100644 --- a/doc/howtos/website/website-support +++ b/doc/howtos/website/website-support @@ -1,47 +1,50 @@ # HG changeset patch # Parent 7ae0db4c2ddf5d0f7f58db2af8976fcec905cc4e -diff -r 7ae0db4c2ddf -r 0795247fa6cb academy/__openerp__.py ---- a/academy/__openerp__.py Tue Aug 12 11:24:14 2014 +0200 -+++ b/academy/__openerp__.py Tue Aug 12 11:27:14 2014 +0200 -@@ -5,7 +5,7 @@ - 'description': """ - """, - # Which modules must be installed for this one to work +# Parent 06f959831b14dd5d2e0a57d3e14bf919e18f8e3a + +diff --git a/academy/__openerp__.py b/academy/__openerp__.py +--- a/academy/__openerp__.py ++++ b/academy/__openerp__.py +@@ -20,7 +20,7 @@ + 'version': '0.1', + + # any module necessary for this one to work correctly - 'depends': ['base'], + 'depends': ['website'], - # data files which are always installed + + # always loaded 'data': [ - 'ir.model.access.csv', -diff -r 7ae0db4c2ddf -r 0795247fa6cb academy/controllers.py ---- a/academy/controllers.py Tue Aug 12 11:24:14 2014 +0200 -+++ b/academy/controllers.py Tue Aug 12 11:27:14 2014 +0200 +diff --git a/academy/controllers.py b/academy/controllers.py +--- a/academy/controllers.py ++++ b/academy/controllers.py @@ -2,7 +2,7 @@ from openerp import http class Academy(http.Controller): -- @http.route('/academy/', auth='public') -+ @http.route('/academy/', auth='public', website=True) - def index(self): +- @http.route('/academy/academy/', auth='public') ++ @http.route('/academy/academy/', auth='public', website=True) + def index(self, **kw): Teachers = http.request.env['academy.teachers'] return http.request.render('academy.index', { -diff -r 7ae0db4c2ddf -r 0795247fa6cb academy/templates.xml ---- a/academy/templates.xml Tue Aug 12 11:24:14 2014 +0200 -+++ b/academy/templates.xml Tue Aug 12 11:27:14 2014 +0200 -@@ -1,8 +1,14 @@ - - - +diff --git a/academy/templates.xml b/academy/templates.xml +--- a/academy/templates.xml ++++ b/academy/templates.xml +@@ -1,9 +1,15 @@ + + + +