diff --git a/doc/howtos/backend.rst b/doc/howtos/backend.rst index 21500b9bec5..1fca4d151fc 100644 --- a/doc/howtos/backend.rst +++ b/doc/howtos/backend.rst @@ -92,15 +92,28 @@ might contain:: import mymodule +Fortunately, there is a mechanism to help you set up an module. The command +``odoo.py`` has a subcommand ``scaffold`` to create an empty module: + +.. code:: bash + + odoo.py scaffold + +The command creates a subdirectory for your module, and automatically creates a +bunch of standard files for a module. Most of them simply contain commented code +or XML. The usage of most of those files will be explained along this tutorial. + .. exercise:: Module creation - Create an empty module Open Academy, install it in Odoo. + Use the command line above to create an empty module Open Academy, and + install it in Odoo. .. only:: solutions - #. Create a new folder ``openacademy`` - #. Create an empty ``openacademy/__init__.py`` file - #. Create an ``openacademy/__openerp__.py`` file + #. Invoke the command ``./odoo.py scaffold openacademy addons`` in the + Odoo directory. + #. Adapt the manifest file to your module. + #. Don't bother about the other files. .. patch:: @@ -200,8 +213,7 @@ overridden by setting :attr:`~openerp.models.Model._rec_name`. .. only:: solutions - #. Create a new file ``openacademy/course.py`` - #. Edit ``openacademy/__init__.py`` to import it + Edit the file ``openacademy/models.py`` to include a *Course* class. .. patch:: @@ -245,8 +257,7 @@ be declared in the ``'data'`` list (always loaded) or in the ``'demo'`` list .. only:: solutions - #. Create a new file ``openacademy/demo.xml`` - #. Add the file to the ``'demo'`` list of your ``__openerp__.py`` + Edit the file ``openacademy/demo.xml`` to include some data. .. patch:: @@ -475,7 +486,7 @@ client data; it is also related to its sale order line records. .. only:: solutions - Create class *Session*: + Create the class *Session* in ``openacademy/models.py``. .. patch:: @@ -675,9 +686,9 @@ instead of a single view its ``arch`` field is composed of any number of inspect the view, find its external ID and the place to put the new field. - #. Create a ``openacademy/partner.py`` and import it in + #. Create a file ``openacademy/partner.py`` and import it in ``__init__.py`` - #. Create an ``openacademy/views/partner.xml`` and add it to + #. Create a file ``openacademy/views/partner.xml`` and add it to ``__openerp__.py`` .. patch:: @@ -1330,9 +1341,9 @@ rights are usually created by a CSV file named after its model: #. Create a new file ``openacademy/security/security.xml`` to hold the OpenAcademy Manager group - #. Create a new file ``openacademy/security/ir.model.access.csv`` with + #. Edit the file ``openacademy/security/ir.model.access.csv`` with the access rights to the models - #. finally update ``openacademy/__openerp__.py`` to add the new data + #. Finally update ``openacademy/__openerp__.py`` to add the new data files to it .. patch:: @@ -1533,7 +1544,7 @@ Dashboards .. only:: solutions - #. Create a ``openacademy/views/session_board.xml``. It should contain + #. Create a file ``openacademy/views/session_board.xml``. It should contain the board view, the actions referenced in that view, an action to open the dashboard and a re-definition of the main menu item to add the dashboard action diff --git a/doc/howtos/backend/exercise-access-rights b/doc/howtos/backend/exercise-access-rights index 64c8b12ca12..0196c0273ed 100644 --- a/doc/howtos/backend/exercise-access-rights +++ b/doc/howtos/backend/exercise-access-rights @@ -1,38 +1,40 @@ # HG changeset patch # Parent 303a5f4f011822dcb42b5833d579eabd3f03f4bf -diff --git a/openacademy/__openerp__.py b/openacademy/__openerp__.py ---- a/openacademy/__openerp__.py -+++ b/openacademy/__openerp__.py -@@ -11,6 +11,8 @@ - - training sessions - - attendees registration""", - 'data' : [ +Index: doc-backend/openacademy/__openerp__.py +=================================================================== +--- doc-backend.orig/openacademy/__openerp__.py 2014-08-24 12:26:40.449399183 +0200 ++++ doc-backend/openacademy/__openerp__.py 2014-08-24 12:26:40.445399183 +0200 +@@ -25,7 +25,8 @@ + + # always loaded + 'data': [ +- # 'security/ir.model.access.csv', + 'security/security.xml', + 'security/ir.model.access.csv', + 'templates.xml', 'views/openacademy.xml', 'views/partner.xml', - 'views/session_workflow.xml', -diff --git a/openacademy/security/ir.model.access.csv b/openacademy/security/ir.model.access.csv -new file mode 100644 ---- /dev/null -+++ b/openacademy/security/ir.model.access.csv -@@ -0,0 +1,6 @@ -+id,name,model_id/id,group_id/id,perm_read,perm_write,perm_create,perm_unlink +Index: doc-backend/openacademy/security/ir.model.access.csv +=================================================================== +--- doc-backend.orig/openacademy/security/ir.model.access.csv 2014-08-24 12:26:40.449399183 +0200 ++++ doc-backend/openacademy/security/ir.model.access.csv 2014-08-24 12:26:55.985399543 +0200 +@@ -1,2 +1,5 @@ + id,name,model_id/id,group_id/id,perm_read,perm_write,perm_create,perm_unlink +-access_openacademy_openacademy,openacademy.openacademy,model_openacademy_openacademy,,1,0,0,0 +course_manager,course manager,model_openacademy_course,group_manager,1,1,1,1 +session_manager,session manager,model_openacademy_session,group_manager,1,1,1,1 +course_read_all,course all,model_openacademy_course,,1,0,0,0 +session_read_all,session all,model_openacademy_session,,1,0,0,0 -+ -diff --git a/openacademy/security/security.xml b/openacademy/security/security.xml -new file mode 100644 ---- /dev/null -+++ b/openacademy/security/security.xml +Index: doc-backend/openacademy/security/security.xml +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ doc-backend/openacademy/security/security.xml 2014-08-24 12:26:40.445399183 +0200 @@ -0,0 +1,7 @@ + -+ -+ -+ OpenAcademy / Manager -+ -+ ++ ++ ++ OpenAcademy / Manager ++ ++ + diff --git a/doc/howtos/backend/exercise-access-rules b/doc/howtos/backend/exercise-access-rules index 694fc6d7a2b..7cc6ae370ad 100644 --- a/doc/howtos/backend/exercise-access-rules +++ b/doc/howtos/backend/exercise-access-rules @@ -1,26 +1,27 @@ # HG changeset patch # Parent 0602022dc2a428f9995c886df33b699b6d3bcb69 -diff --git a/openacademy/security/security.xml b/openacademy/security/security.xml ---- a/openacademy/security/security.xml -+++ b/openacademy/security/security.xml +Index: doc-backend/openacademy/security/security.xml +=================================================================== +--- doc-backend.orig/openacademy/security/security.xml 2014-08-24 12:27:27.569400274 +0200 ++++ doc-backend/openacademy/security/security.xml 2014-08-24 12:28:29.185401700 +0200 @@ -3,5 +3,19 @@ - - OpenAcademy / Manager - -+ -+ -+ Only Responsible can modify Course -+ -+ -+ -+ -+ -+ -+ -+ ['|', ('responsible_id','=',False), -+ ('responsible_id','=',user.id)] -+ -+ - + + OpenAcademy / Manager + ++ ++ ++ Only Responsible can modify Course ++ ++ ++ ++ ++ ++ ++ ++ ['|', ('responsible_id','=',False), ++ ('responsible_id','=',user.id)] ++ ++ + diff --git a/doc/howtos/backend/exercise-advanced-treeview b/doc/howtos/backend/exercise-advanced-treeview index 179835b4217..4a9a1e1705c 100644 --- a/doc/howtos/backend/exercise-advanced-treeview +++ b/doc/howtos/backend/exercise-advanced-treeview @@ -3,8 +3,8 @@ Index: doc-backend/openacademy/views/openacademy.xml =================================================================== ---- doc-backend.orig/openacademy/views/openacademy.xml 2014-08-22 17:03:26.743106339 +0200 -+++ doc-backend/openacademy/views/openacademy.xml 2014-08-22 17:03:26.739106339 +0200 +--- doc-backend.orig/openacademy/views/openacademy.xml 2014-08-24 12:13:41.149381146 +0200 ++++ doc-backend/openacademy/views/openacademy.xml 2014-08-24 12:13:41.141381146 +0200 @@ -111,9 +111,10 @@ session.tree openacademy.session diff --git a/doc/howtos/backend/exercise-basic-action b/doc/howtos/backend/exercise-basic-action index f45df4749e6..7f1a8e8aed9 100644 --- a/doc/howtos/backend/exercise-basic-action +++ b/doc/howtos/backend/exercise-basic-action @@ -1,19 +1,21 @@ # HG changeset patch # Parent 16e4cb131d9f7f3a72a8a1b0bc46c2ce9ac76435 -diff -r 16e4cb131d9f -r bbfa610bfabd openacademy/__openerp__.py ---- a/openacademy/__openerp__.py Thu Aug 07 12:10:05 2014 +0200 -+++ b/openacademy/__openerp__.py Thu Aug 07 12:11:28 2014 +0200 -@@ -11,6 +11,7 @@ - - training sessions - - attendees registration""", - 'data' : [ +Index: doc-backend/openacademy/__openerp__.py +=================================================================== +--- doc-backend.orig/openacademy/__openerp__.py 2014-08-24 12:02:32.169365663 +0200 ++++ doc-backend/openacademy/__openerp__.py 2014-08-24 12:02:32.165365663 +0200 +@@ -27,6 +27,7 @@ + 'data': [ + # 'security/ir.model.access.csv', + 'templates.xml', + 'views/openacademy.xml', ], + # only loaded in demonstration mode 'demo': [ - 'demo.xml', -diff -r 16e4cb131d9f -r bbfa610bfabd openacademy/views/openacademy.xml ---- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ b/openacademy/views/openacademy.xml Thu Aug 07 12:11:28 2014 +0200 +Index: doc-backend/openacademy/views/openacademy.xml +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ doc-backend/openacademy/views/openacademy.xml 2014-08-24 12:02:32.165365663 +0200 @@ -0,0 +1,35 @@ + + diff --git a/doc/howtos/backend/exercise-calendar b/doc/howtos/backend/exercise-calendar index bd2b81b4aaa..39e49cba7d3 100644 --- a/doc/howtos/backend/exercise-calendar +++ b/doc/howtos/backend/exercise-calendar @@ -1,19 +1,18 @@ # HG changeset patch # Parent 85a8d7317b9e13480f39ad739955442d15144451 -Index: doc-backend/openacademy/course.py +Index: doc-backend/openacademy/models.py =================================================================== ---- doc-backend.orig/openacademy/course.py 2014-08-22 17:03:34.383106620 +0200 -+++ doc-backend/openacademy/course.py 2014-08-22 17:03:34.375106619 +0200 -@@ -1,4 +1,7 @@ +--- doc-backend.orig/openacademy/models.py 2014-08-24 12:17:49.873386903 +0200 ++++ doc-backend/openacademy/models.py 2014-08-24 12:18:24.601387707 +0200 +@@ -1,5 +1,6 @@ # -*- coding: utf-8 -*- -+from datetime import datetime, timedelta -+ -+import openerp.tools - from openerp import api, fields, models, exceptions + ++from datetime import timedelta + from openerp import models, fields, api, exceptions class Course(models.Model): -@@ -54,6 +57,8 @@ +@@ -55,6 +56,8 @@ attendee_ids = fields.Many2many('res.partner', string="Attendees") taken_seats = fields.Float(string="Taken seats", compute='_taken_seats') @@ -22,7 +21,7 @@ Index: doc-backend/openacademy/course.py @api.one @api.depends('seats', 'attendee_ids') -@@ -81,6 +86,26 @@ +@@ -82,6 +85,26 @@ } @api.one @@ -51,8 +50,8 @@ Index: doc-backend/openacademy/course.py if self.instructor_id and self.instructor_id in self.attendee_ids: Index: doc-backend/openacademy/views/openacademy.xml =================================================================== ---- doc-backend.orig/openacademy/views/openacademy.xml 2014-08-22 17:03:34.383106620 +0200 -+++ doc-backend/openacademy/views/openacademy.xml 2014-08-22 17:03:34.379106620 +0200 +--- doc-backend.orig/openacademy/views/openacademy.xml 2014-08-24 12:17:49.873386903 +0200 ++++ doc-backend/openacademy/views/openacademy.xml 2014-08-24 12:17:49.869386903 +0200 @@ -120,11 +120,24 @@ diff --git a/doc/howtos/backend/exercise-computed b/doc/howtos/backend/exercise-computed index 3d157849aca..b27a736861b 100644 --- a/doc/howtos/backend/exercise-computed +++ b/doc/howtos/backend/exercise-computed @@ -1,21 +1,15 @@ # HG changeset patch # Parent a358be0a577b0569831958a8ec1302825c645dee -Index: doc-backend/openacademy/course.py +Index: doc-backend/openacademy/models.py =================================================================== ---- doc-backend.orig/openacademy/course.py 2014-08-22 14:30:38.650769778 +0200 -+++ doc-backend/openacademy/course.py 2014-08-22 14:31:17.090771190 +0200 -@@ -1,5 +1,5 @@ - # -*- coding: utf-8 -*- --from openerp import fields, models -+from openerp import api, fields, models - - class Course(models.Model): - _name = 'openacademy.course' +--- doc-backend.orig/openacademy/models.py 2014-08-24 12:09:36.289375479 +0200 ++++ doc-backend/openacademy/models.py 2014-08-24 12:09:59.961376027 +0200 @@ -28,3 +28,13 @@ + course_id = fields.Many2one('openacademy.course', ondelete='cascade', string="Course", required=True) attendee_ids = fields.Many2many('res.partner', string="Attendees") - ++ + taken_seats = fields.Float(string="Taken seats", compute='_taken_seats') + + @api.one @@ -25,11 +19,10 @@ Index: doc-backend/openacademy/course.py + self.taken_seats = 0.0 + else: + self.taken_seats = 100.0 * len(self.attendee_ids) / self.seats -+ Index: doc-backend/openacademy/views/openacademy.xml =================================================================== ---- doc-backend.orig/openacademy/views/openacademy.xml 2014-08-22 14:30:38.650769778 +0200 -+++ doc-backend/openacademy/views/openacademy.xml 2014-08-22 14:31:42.542772124 +0200 +--- doc-backend.orig/openacademy/views/openacademy.xml 2014-08-24 12:09:36.289375479 +0200 ++++ doc-backend/openacademy/views/openacademy.xml 2014-08-24 12:09:36.285375479 +0200 @@ -98,6 +98,7 @@ diff --git a/doc/howtos/backend/exercise-constraint-python b/doc/howtos/backend/exercise-constraint-python index c2f0b8a6114..a3a18d4e617 100644 --- a/doc/howtos/backend/exercise-constraint-python +++ b/doc/howtos/backend/exercise-constraint-python @@ -1,24 +1,25 @@ # HG changeset patch # Parent 7a7d003fe38426a405ce0657a627a139133ec4dd -Index: doc-backend/openacademy/course.py +Index: doc-backend/openacademy/models.py =================================================================== ---- doc-backend.orig/openacademy/course.py 2014-08-22 17:02:00.987103191 +0200 -+++ doc-backend/openacademy/course.py 2014-08-22 17:02:00.983103191 +0200 -@@ -1,5 +1,5 @@ +--- doc-backend.orig/openacademy/models.py 2014-08-24 12:16:56.413385666 +0200 ++++ doc-backend/openacademy/models.py 2014-08-24 12:17:11.137386006 +0200 +@@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- --from openerp import api, fields, models -+from openerp import api, fields, models, exceptions + +-from openerp import models, fields, api ++from openerp import models, fields, api, exceptions class Course(models.Model): _name = 'openacademy.course' @@ -56,3 +56,9 @@ + 'message': "Increase seats or remove excess attendees", }, } - ++ + @api.one + @api.constrains('instructor_id', 'attendee_ids') + def _check_instructor_not_in_attendees(self): + if self.instructor_id and self.instructor_id in self.attendee_ids: + raise exceptions.ValidationError("A session's instructor can't be an attendee") -+ diff --git a/doc/howtos/backend/exercise-constraint-sql b/doc/howtos/backend/exercise-constraint-sql index 2b6714a949e..7a13a10e47b 100644 --- a/doc/howtos/backend/exercise-constraint-sql +++ b/doc/howtos/backend/exercise-constraint-sql @@ -1,11 +1,11 @@ # HG changeset patch # Parent 121bbfe120be3007f5e04611dbc27038abafcce8 -Index: doc-backend/openacademy/course.py +Index: doc-backend/openacademy/models.py =================================================================== ---- doc-backend.orig/openacademy/course.py 2014-08-22 17:02:07.363103425 +0200 -+++ doc-backend/openacademy/course.py 2014-08-22 17:02:07.359103425 +0200 -@@ -13,6 +13,16 @@ +--- doc-backend.orig/openacademy/models.py 2014-08-24 12:17:23.789386299 +0200 ++++ doc-backend/openacademy/models.py 2014-08-24 12:17:23.785386299 +0200 +@@ -14,6 +14,16 @@ 'openacademy.session', 'course_id', string="Session") diff --git a/doc/howtos/backend/exercise-copy-override b/doc/howtos/backend/exercise-copy-override index 652fad7a11a..e9d3404bc5a 100644 --- a/doc/howtos/backend/exercise-copy-override +++ b/doc/howtos/backend/exercise-copy-override @@ -1,11 +1,11 @@ # HG changeset patch # Parent 7d14b75cdfd4c7a272a13572947de5d47f3e851f -Index: doc-backend/openacademy/course.py +Index: doc-backend/openacademy/models.py =================================================================== ---- doc-backend.orig/openacademy/course.py 2014-08-21 14:54:08.768549861 +0200 -+++ doc-backend/openacademy/course.py 2014-08-21 14:54:08.764549861 +0200 -@@ -13,6 +13,20 @@ +--- doc-backend.orig/openacademy/models.py 2014-08-24 12:17:34.389386545 +0200 ++++ doc-backend/openacademy/models.py 2014-08-24 12:17:34.381386544 +0200 +@@ -14,6 +14,20 @@ 'openacademy.session', 'course_id', string="Session") diff --git a/doc/howtos/backend/exercise-creation b/doc/howtos/backend/exercise-creation index 88c181a66fa..0081456e01f 100644 --- a/doc/howtos/backend/exercise-creation +++ b/doc/howtos/backend/exercise-creation @@ -1,24 +1,152 @@ # HG changeset patch # Parent 0000000000000000000000000000000000000000 -diff --git a/openacademy/__init__.py b/openacademy/__init__.py -new file mode 100644 -diff --git a/openacademy/__openerp__.py b/openacademy/__openerp__.py -new file mode 100644 ---- /dev/null -+++ b/openacademy/__openerp__.py -@@ -0,0 +1,15 @@ +Index: doc-backend/openacademy/__openerp__.py +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ doc-backend/openacademy/__openerp__.py 2014-08-24 12:25:18.133397278 +0200 +@@ -0,0 +1,35 @@ +# -*- coding: utf-8 -*- +{ + 'name': "Open Academy", -+ 'category': "Test", -+ 'version': '1.0', ++ ++ 'summary': """Manage trainings""", ++ ++ 'description': """ ++ Open Academy module for managing trainings: ++ - training courses ++ - training sessions ++ - attendees registration ++ """, ++ ++ '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': 'Test', ++ 'version': '0.1', ++ ++ # any module necessary for this one to work correctly + 'depends': ['base'], -+ 'author': '', -+ 'description' : """ -+ Open Academy module for managing trainings: -+ - training courses -+ - training sessions -+ - attendees registration""", -+ 'data' : [ ++ ++ # always loaded ++ 'data': [ ++ # 'security/ir.model.access.csv', ++ 'templates.xml', ++ ], ++ # only loaded in demonstration mode ++ 'demo': [ ++ 'demo.xml', + ], +} +Index: doc-backend/openacademy/__init__.py +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ doc-backend/openacademy/__init__.py 2014-08-24 12:25:18.133397278 +0200 +@@ -0,0 +1,3 @@ ++# -*- coding: utf-8 -*- ++import controllers ++import models +Index: doc-backend/openacademy/controllers.py +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ doc-backend/openacademy/controllers.py 2014-08-24 12:25:18.133397278 +0200 +@@ -0,0 +1,20 @@ ++# -*- coding: utf-8 -*- ++from openerp import http ++ ++# class Openacademy(http.Controller): ++# @http.route('/openacademy/openacademy/', auth='public') ++# def index(self, **kw): ++# return "Hello, world" ++ ++# @http.route('/openacademy/openacademy/objects/', auth='public') ++# def list(self, **kw): ++# return http.request.render('openacademy.listing', { ++# 'root': '/openacademy/openacademy', ++# 'objects': http.request.env['openacademy.openacademy'].search([]), ++# }) ++ ++# @http.route('/openacademy/openacademy/objects//', auth='public') ++# def object(self, obj, **kw): ++# return http.request.render('openacademy.object', { ++# 'object': obj ++# }) +Index: doc-backend/openacademy/demo.xml +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ doc-backend/openacademy/demo.xml 2014-08-24 12:25:18.133397278 +0200 +@@ -0,0 +1,25 @@ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ +Index: doc-backend/openacademy/models.py +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ doc-backend/openacademy/models.py 2014-08-24 12:25:18.133397278 +0200 +@@ -0,0 +1,8 @@ ++# -*- coding: utf-8 -*- ++ ++from openerp import models, fields, api ++ ++# class openacademy(models.Model): ++# _name = 'openacademy.openacademy' ++ ++# name = fields.Char() +Index: doc-backend/openacademy/security/ir.model.access.csv +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ doc-backend/openacademy/security/ir.model.access.csv 2014-08-24 12:25:30.941397574 +0200 +@@ -0,0 +1,2 @@ ++id,name,model_id/id,group_id/id,perm_read,perm_write,perm_create,perm_unlink ++access_openacademy_openacademy,openacademy.openacademy,model_openacademy_openacademy,,1,0,0,0 +Index: doc-backend/openacademy/templates.xml +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ doc-backend/openacademy/templates.xml 2014-08-24 12:25:18.137397278 +0200 +@@ -0,0 +1,22 @@ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ diff --git a/doc/howtos/backend/exercise-dashboard b/doc/howtos/backend/exercise-dashboard index 8595d483c37..4ffc82677a6 100644 --- a/doc/howtos/backend/exercise-dashboard +++ b/doc/howtos/backend/exercise-dashboard @@ -1,93 +1,94 @@ # HG changeset patch # Parent 643813940cbea07bec792f9e1c60022a9292fa90 -diff --git a/openacademy/__openerp__.py b/openacademy/__openerp__.py ---- a/openacademy/__openerp__.py -+++ b/openacademy/__openerp__.py -@@ -3,7 +3,7 @@ - 'name': "Open Academy", - 'category': "Test", - 'version': '1.0', +Index: doc-backend/openacademy/__openerp__.py +=================================================================== +--- doc-backend.orig/openacademy/__openerp__.py 2014-08-24 12:31:00.385405199 +0200 ++++ doc-backend/openacademy/__openerp__.py 2014-08-24 12:31:45.373406240 +0200 +@@ -21,7 +21,7 @@ + 'version': '0.1', + + # any module necessary for this one to work correctly - 'depends': ['base'], + 'depends': ['base', 'board'], - 'author': '', - 'description' : """ - Open Academy module for managing trainings: -@@ -17,6 +17,7 @@ + + # always loaded + 'data': [ +@@ -31,6 +31,7 @@ + 'views/openacademy.xml', 'views/partner.xml', 'views/session_workflow.xml', - 'reports.xml', + 'views/session_board.xml', + 'reports.xml', ], - 'demo': [ - 'demo.xml', -diff --git a/openacademy/views/session_board.xml b/openacademy/views/session_board.xml -new file mode 100644 ---- /dev/null -+++ b/openacademy/views/session_board.xml + # only loaded in demonstration mode +Index: doc-backend/openacademy/views/session_board.xml +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ doc-backend/openacademy/views/session_board.xml 2014-08-24 12:33:16.077408340 +0200 @@ -0,0 +1,65 @@ + + -+ -+ -+ openacademy.session -+ form -+ graph -+ -+ -+ -+ openacademy.session -+ form -+ calendar -+ -+ -+ -+ openacademy.course -+ form -+ tree,form -+ -+ -+ Session Dashboard Form -+ board.board -+ form -+ -+
-+ -+ -+ -+ -+ -+ -+ -+ -+ -+
-+
-+
-+ -+ Session Dashboard -+ board.board -+ form -+ form -+ menu -+ -+ ++ ++ ++ openacademy.session ++ form ++ graph ++ ++ ++ ++ openacademy.session ++ form ++ calendar ++ ++ ++ ++ openacademy.course ++ form ++ tree,form ++ ++ ++ Session Dashboard Form ++ board.board ++ form ++ ++
++ ++ ++ ++ ++ ++ ++ ++ ++ ++
++
++
++ ++ Session Dashboard ++ board.board ++ form ++ form ++ menu ++ ++ + -+ -+
++ ++
+
diff --git a/doc/howtos/backend/exercise-defaults b/doc/howtos/backend/exercise-defaults index 774f48a8d23..97265dcfc08 100644 --- a/doc/howtos/backend/exercise-defaults +++ b/doc/howtos/backend/exercise-defaults @@ -1,8 +1,8 @@ -Index: doc-backend/openacademy/course.py +Index: doc-backend/openacademy/models.py =================================================================== ---- doc-backend.orig/openacademy/course.py 2014-08-22 16:57:00.727092169 +0200 -+++ doc-backend/openacademy/course.py 2014-08-22 17:01:08.975101282 +0200 -@@ -17,9 +17,10 @@ +--- doc-backend.orig/openacademy/models.py 2014-08-24 12:10:34.701376831 +0200 ++++ doc-backend/openacademy/models.py 2014-08-24 12:10:34.693376831 +0200 +@@ -18,9 +18,10 @@ _name = 'openacademy.session' name = fields.Char(required=True) @@ -16,8 +16,8 @@ Index: doc-backend/openacademy/course.py domain=['|', ('instructor', '=', True), Index: doc-backend/openacademy/views/openacademy.xml =================================================================== ---- doc-backend.orig/openacademy/views/openacademy.xml 2014-08-22 16:57:00.731092169 +0200 -+++ doc-backend/openacademy/views/openacademy.xml 2014-08-22 17:01:15.307101514 +0200 +--- doc-backend.orig/openacademy/views/openacademy.xml 2014-08-24 12:10:34.701376831 +0200 ++++ doc-backend/openacademy/views/openacademy.xml 2014-08-24 12:10:34.693376831 +0200 @@ -92,6 +92,7 @@ diff --git a/doc/howtos/backend/exercise-demo b/doc/howtos/backend/exercise-demo index 5503c812c56..80417971f90 100644 --- a/doc/howtos/backend/exercise-demo +++ b/doc/howtos/backend/exercise-demo @@ -1,25 +1,34 @@ # HG changeset patch # Parent 84e2b0b43fc61fd0bcbb44c1929755d44ee58ae5 -Index: doc-backend/openacademy/__openerp__.py -=================================================================== ---- doc-backend.orig/openacademy/__openerp__.py 2014-08-21 15:18:40.892603902 +0200 -+++ doc-backend/openacademy/__openerp__.py 2014-08-21 15:18:40.884603902 +0200 -@@ -12,4 +12,7 @@ - - attendees registration""", - 'data' : [ - ], -+ 'demo': [ -+ 'demo.xml', -+ ], - } Index: doc-backend/openacademy/demo.xml =================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ doc-backend/openacademy/demo.xml 2014-08-21 15:19:26.200605566 +0200 -@@ -0,0 +1,19 @@ -+ -+ +--- doc-backend.orig/openacademy/demo.xml 2014-08-24 11:58:31.673360097 +0200 ++++ doc-backend/openacademy/demo.xml 2014-08-24 11:58:49.353360506 +0200 +@@ -1,25 +1,19 @@ + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- + + Course 0 + Course 0's description @@ -35,5 +44,5 @@ Index: doc-backend/openacademy/demo.xml + Course 2 + Course 2's description + -+ -+ + + diff --git a/doc/howtos/backend/exercise-domain-advanced b/doc/howtos/backend/exercise-domain-advanced index 8c10ef1872e..8deb8f77795 100644 --- a/doc/howtos/backend/exercise-domain-advanced +++ b/doc/howtos/backend/exercise-domain-advanced @@ -1,11 +1,11 @@ # HG changeset patch # Parent 69d1f2d359eb8ef304a9d99f17790c78b35eda1a -Index: doc-backend/openacademy/course.py +Index: doc-backend/openacademy/models.py =================================================================== ---- doc-backend.orig/openacademy/course.py 2014-08-21 15:15:20.040596529 +0200 -+++ doc-backend/openacademy/course.py 2014-08-21 15:15:20.032596529 +0200 -@@ -22,7 +22,8 @@ +--- doc-backend.orig/openacademy/models.py 2014-08-24 12:08:53.465374488 +0200 ++++ doc-backend/openacademy/models.py 2014-08-24 12:08:53.461374488 +0200 +@@ -23,7 +23,8 @@ seats = fields.Integer(string="Number of seats") instructor_id = fields.Many2one('res.partner', string="Instructor", @@ -17,8 +17,8 @@ Index: doc-backend/openacademy/course.py attendee_ids = fields.Many2many('res.partner', string="Attendees") Index: doc-backend/openacademy/views/partner.xml =================================================================== ---- doc-backend.orig/openacademy/views/partner.xml 2014-08-21 15:15:20.040596529 +0200 -+++ doc-backend/openacademy/views/partner.xml 2014-08-21 15:16:18.112598661 +0200 +--- doc-backend.orig/openacademy/views/partner.xml 2014-08-24 12:08:53.465374488 +0200 ++++ doc-backend/openacademy/views/partner.xml 2014-08-24 12:08:53.461374488 +0200 @@ -24,5 +24,21 @@ diff --git a/doc/howtos/backend/exercise-formview-notebooks b/doc/howtos/backend/exercise-formview-notebooks index 4741d2a3de0..5492b15ee09 100644 --- a/doc/howtos/backend/exercise-formview-notebooks +++ b/doc/howtos/backend/exercise-formview-notebooks @@ -1,9 +1,10 @@ # HG changeset patch # Parent 5508a5440faa7b607d057c4e4ae70af6b6f7cac9 -diff --git a/openacademy/views/openacademy.xml b/openacademy/views/openacademy.xml ---- a/openacademy/views/openacademy.xml -+++ b/openacademy/views/openacademy.xml +Index: doc-backend/openacademy/views/openacademy.xml +=================================================================== +--- doc-backend.orig/openacademy/views/openacademy.xml 2014-08-24 12:03:02.649366368 +0200 ++++ doc-backend/openacademy/views/openacademy.xml 2014-08-24 12:03:02.645366368 +0200 @@ -9,7 +9,14 @@ diff --git a/doc/howtos/backend/exercise-gantt b/doc/howtos/backend/exercise-gantt index b7b0d8c5c45..a590ee94b3e 100644 --- a/doc/howtos/backend/exercise-gantt +++ b/doc/howtos/backend/exercise-gantt @@ -1,11 +1,11 @@ # HG changeset patch # Parent dba00a105dd2a82490394b8dec5fea5f1d8847e1 -Index: doc-backend/openacademy/course.py +Index: doc-backend/openacademy/models.py =================================================================== ---- doc-backend.orig/openacademy/course.py 2014-08-22 17:03:44.939107007 +0200 -+++ doc-backend/openacademy/course.py 2014-08-22 17:03:44.931107007 +0200 -@@ -60,6 +60,9 @@ +--- doc-backend.orig/openacademy/models.py 2014-08-24 12:18:54.645388402 +0200 ++++ doc-backend/openacademy/models.py 2014-08-24 12:18:54.641388402 +0200 +@@ -59,6 +59,9 @@ end_date = fields.Date(string="End Date", store=True, compute='_get_end_date', inverse='_set_end_date') @@ -15,7 +15,7 @@ Index: doc-backend/openacademy/course.py @api.one @api.depends('seats', 'attendee_ids') def _taken_seats(self): -@@ -106,6 +109,15 @@ +@@ -105,6 +108,15 @@ self.duration = (end_date - start_date).days @api.one @@ -33,8 +33,8 @@ Index: doc-backend/openacademy/course.py if self.instructor_id and self.instructor_id in self.attendee_ids: Index: doc-backend/openacademy/views/openacademy.xml =================================================================== ---- doc-backend.orig/openacademy/views/openacademy.xml 2014-08-22 17:03:44.939107007 +0200 -+++ doc-backend/openacademy/views/openacademy.xml 2014-08-22 17:03:44.931107007 +0200 +--- doc-backend.orig/openacademy/views/openacademy.xml 2014-08-24 12:18:54.645388402 +0200 ++++ doc-backend/openacademy/views/openacademy.xml 2014-08-24 12:18:54.641388402 +0200 @@ -137,11 +137,24 @@ diff --git a/doc/howtos/backend/exercise-graph b/doc/howtos/backend/exercise-graph index 79ed7270d37..fc79788cfa3 100644 --- a/doc/howtos/backend/exercise-graph +++ b/doc/howtos/backend/exercise-graph @@ -1,11 +1,11 @@ # HG changeset patch # Parent a6fe4d3923db1f8f5dff2c39a711a814b0a0f549 -Index: doc-backend/openacademy/course.py +Index: doc-backend/openacademy/models.py =================================================================== ---- doc-backend.orig/openacademy/course.py 2014-08-22 17:03:48.511107138 +0200 -+++ doc-backend/openacademy/course.py 2014-08-22 17:03:48.507107138 +0200 -@@ -63,6 +63,9 @@ +--- doc-backend.orig/openacademy/models.py 2014-08-24 12:19:27.701389167 +0200 ++++ doc-backend/openacademy/models.py 2014-08-24 12:19:27.697389167 +0200 +@@ -62,6 +62,9 @@ hours = fields.Float(string="Duration in hours", compute='_get_hours', inverse='_set_hours') @@ -15,7 +15,7 @@ Index: doc-backend/openacademy/course.py @api.one @api.depends('seats', 'attendee_ids') def _taken_seats(self): -@@ -118,6 +121,11 @@ +@@ -117,6 +120,11 @@ self.duration = self.hours / 24 @api.one @@ -29,8 +29,8 @@ Index: doc-backend/openacademy/course.py if self.instructor_id and self.instructor_id in self.attendee_ids: Index: doc-backend/openacademy/views/openacademy.xml =================================================================== ---- doc-backend.orig/openacademy/views/openacademy.xml 2014-08-22 17:03:48.511107138 +0200 -+++ doc-backend/openacademy/views/openacademy.xml 2014-08-22 17:03:48.507107138 +0200 +--- doc-backend.orig/openacademy/views/openacademy.xml 2014-08-24 12:19:27.701389167 +0200 ++++ doc-backend/openacademy/views/openacademy.xml 2014-08-24 12:19:27.697389167 +0200 @@ -150,11 +150,22 @@ diff --git a/doc/howtos/backend/exercise-kanban b/doc/howtos/backend/exercise-kanban index ae49ef9c4db..9fb249598e8 100644 --- a/doc/howtos/backend/exercise-kanban +++ b/doc/howtos/backend/exercise-kanban @@ -1,11 +1,11 @@ # HG changeset patch # Parent 8d66f7620781558d4520f97e4cebc14ed180683e -Index: doc-backend/openacademy/course.py +Index: doc-backend/openacademy/models.py =================================================================== ---- doc-backend.orig/openacademy/course.py 2014-08-22 17:03:55.463107394 +0200 -+++ doc-backend/openacademy/course.py 2014-08-22 17:03:55.459107393 +0200 -@@ -48,6 +48,7 @@ +--- doc-backend.orig/openacademy/models.py 2014-08-24 12:20:07.801390095 +0200 ++++ doc-backend/openacademy/models.py 2014-08-24 12:20:07.793390095 +0200 +@@ -47,6 +47,7 @@ duration = fields.Float(digits=(6, 2), help="Duration in days") seats = fields.Integer(string="Number of seats") active = fields.Boolean(default=True) @@ -15,8 +15,8 @@ Index: doc-backend/openacademy/course.py domain=['|', ('instructor', '=', True), Index: doc-backend/openacademy/views/openacademy.xml =================================================================== ---- doc-backend.orig/openacademy/views/openacademy.xml 2014-08-22 17:03:55.463107394 +0200 -+++ doc-backend/openacademy/views/openacademy.xml 2014-08-22 17:03:55.459107393 +0200 +--- doc-backend.orig/openacademy/views/openacademy.xml 2014-08-24 12:20:07.801390095 +0200 ++++ doc-backend/openacademy/views/openacademy.xml 2014-08-24 12:20:07.793390095 +0200 @@ -161,11 +161,57 @@
diff --git a/doc/howtos/backend/exercise-many2many b/doc/howtos/backend/exercise-many2many index 61837901100..41d03039dfb 100644 --- a/doc/howtos/backend/exercise-many2many +++ b/doc/howtos/backend/exercise-many2many @@ -1,10 +1,9 @@ -Index: doc-backend/openacademy/course.py +Index: doc-backend/openacademy/models.py =================================================================== ---- doc-backend.orig/openacademy/course.py 2014-08-21 14:42:26.508524081 +0200 -+++ doc-backend/openacademy/course.py 2014-08-21 14:42:54.712525116 +0200 -@@ -24,4 +24,5 @@ +--- doc-backend.orig/openacademy/models.py 2014-08-24 12:06:18.941370912 +0200 ++++ doc-backend/openacademy/models.py 2014-08-24 12:06:28.885371142 +0200 +@@ -25,3 +25,4 @@ instructor_id = fields.Many2one('res.partner', string="Instructor") course_id = fields.Many2one('openacademy.course', ondelete='cascade', string="Course", required=True) + attendee_ids = fields.Many2many('res.partner', string="Attendees") - diff --git a/doc/howtos/backend/exercise-many2one b/doc/howtos/backend/exercise-many2one index da25de3965b..29385daa02a 100644 --- a/doc/howtos/backend/exercise-many2one +++ b/doc/howtos/backend/exercise-many2one @@ -1,11 +1,11 @@ # HG changeset patch # Parent a6e217b1fbbc64111581c269629b1c25c23abb99 -Index: doc-backend/openacademy/course.py +Index: doc-backend/openacademy/models.py =================================================================== ---- doc-backend.orig/openacademy/course.py 2014-08-21 14:24:24.376484356 +0200 -+++ doc-backend/openacademy/course.py 2014-08-21 14:26:35.040489152 +0200 -@@ -7,6 +7,9 @@ +--- doc-backend.orig/openacademy/models.py 2014-08-24 12:04:40.829368641 +0200 ++++ doc-backend/openacademy/models.py 2014-08-24 12:04:57.509369027 +0200 +@@ -8,6 +8,9 @@ name = fields.Char(string="Title", required=True) description = fields.Text() @@ -16,17 +16,17 @@ Index: doc-backend/openacademy/course.py class Session(models.Model): _name = 'openacademy.session' @@ -16,3 +19,7 @@ + start_date = fields.Date() duration = fields.Float(digits=(6, 2), help="Duration in days") seats = fields.Integer(string="Number of seats") - ++ + instructor_id = fields.Many2one('res.partner', string="Instructor") + course_id = fields.Many2one('openacademy.course', + ondelete='cascade', string="Course", required=True) -+ Index: doc-backend/openacademy/views/openacademy.xml =================================================================== ---- doc-backend.orig/openacademy/views/openacademy.xml 2014-08-21 14:24:24.376484356 +0200 -+++ doc-backend/openacademy/views/openacademy.xml 2014-08-21 14:25:48.000000000 +0200 +--- doc-backend.orig/openacademy/views/openacademy.xml 2014-08-24 12:04:40.829368641 +0200 ++++ doc-backend/openacademy/views/openacademy.xml 2014-08-24 12:04:40.825368641 +0200 @@ -63,5 +63,16 @@ - - - - - + + + + + + +
diff --git a/openerp/cli/templates/default/models.py b/openerp/cli/templates/default/models.py index dc07f99a74d..4d76ef9e2d6 100644 --- a/openerp/cli/templates/default/models.py +++ b/openerp/cli/templates/default/models.py @@ -1,7 +1,6 @@ # -*- coding: utf-8 -*- -from openerp import fields -from openerp import models +from openerp import models, fields, api # class {{ name|snake }}(models.Model): # _name = '{{ name|snake }}.{{ name|snake }}' diff --git a/openerp/cli/templates/default/templates.xml b/openerp/cli/templates/default/templates.xml index 77a782c7fef..b9166501678 100644 --- a/openerp/cli/templates/default/templates.xml +++ b/openerp/cli/templates/default/templates.xml @@ -1,22 +1,22 @@ - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + +