[IMP] doc/howtos/backend: use scaffolding and adapt text and code accordingly
This commit is contained in:
parent
2ad092b5e5
commit
2b3b1c3230
|
@ -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 <module name> <where to put it>
|
||||
|
||||
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
|
||||
|
|
|
@ -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 @@
|
||||
+<openerp>
|
||||
+ <data>
|
||||
+ <record id="group_manager" model="res.groups">
|
||||
+ <field name="name">OpenAcademy / Manager</field>
|
||||
+ </record>
|
||||
+ </data>
|
||||
+ <data>
|
||||
+ <record id="group_manager" model="res.groups">
|
||||
+ <field name="name">OpenAcademy / Manager</field>
|
||||
+ </record>
|
||||
+ </data>
|
||||
+</openerp>
|
||||
|
|
|
@ -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 @@
|
||||
<record id="group_manager" model="res.groups">
|
||||
<field name="name">OpenAcademy / Manager</field>
|
||||
</record>
|
||||
+
|
||||
+ <record id="only_responsible_can_modify" model="ir.rule">
|
||||
+ <field name="name">Only Responsible can modify Course</field>
|
||||
+ <field name="model_id" ref="model_openacademy_course"/>
|
||||
+ <field name="groups" eval="[(4, ref('openacademy.group_manager'))]"/>
|
||||
+ <field name="perm_read" eval="0"/>
|
||||
+ <field name="perm_write" eval="1"/>
|
||||
+ <field name="perm_create" eval="0"/>
|
||||
+ <field name="perm_unlink" eval="1"/>
|
||||
+ <field name="domain_force">
|
||||
+ ['|', ('responsible_id','=',False),
|
||||
+ ('responsible_id','=',user.id)]
|
||||
+ </field>
|
||||
+ </record>
|
||||
</data>
|
||||
<record id="group_manager" model="res.groups">
|
||||
<field name="name">OpenAcademy / Manager</field>
|
||||
</record>
|
||||
+
|
||||
+ <record id="only_responsible_can_modify" model="ir.rule">
|
||||
+ <field name="name">Only Responsible can modify Course</field>
|
||||
+ <field name="model_id" ref="model_openacademy_course"/>
|
||||
+ <field name="groups" eval="[(4, ref('openacademy.group_manager'))]"/>
|
||||
+ <field name="perm_read" eval="0"/>
|
||||
+ <field name="perm_write" eval="1"/>
|
||||
+ <field name="perm_create" eval="0"/>
|
||||
+ <field name="perm_unlink" eval="1"/>
|
||||
+ <field name="domain_force">
|
||||
+ ['|', ('responsible_id','=',False),
|
||||
+ ('responsible_id','=',user.id)]
|
||||
+ </field>
|
||||
+ </record>
|
||||
</data>
|
||||
</openerp>
|
||||
|
|
|
@ -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 @@
|
||||
<field name="name">session.tree</field>
|
||||
<field name="model">openacademy.session</field>
|
||||
|
|
|
@ -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 @@
|
||||
+<?xml version="1.0" encoding="UTF-8"?>
|
||||
+<openerp>
|
||||
|
|
|
@ -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 @@
|
||||
</field>
|
||||
</record>
|
||||
|
|
|
@ -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 @@
|
||||
<field name="start_date"/>
|
||||
<field name="duration"/>
|
||||
|
|
|
@ -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")
|
||||
+
|
||||
|
|
|
@ -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")
|
||||
|
||||
|
||||
|
|
|
@ -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")
|
||||
|
||||
|
||||
|
|
|
@ -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': '<insert name here>',
|
||||
+ '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/<model("openacademy.openacademy"):obj>/', 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 @@
|
||||
+<openerp>
|
||||
+ <data>
|
||||
+ <!-- -->
|
||||
+ <!-- <record id="object0" model="openacademy.openacademy"> -->
|
||||
+ <!-- <field name="name">Object 0</field> -->
|
||||
+ <!-- </record> -->
|
||||
+ <!-- -->
|
||||
+ <!-- <record id="object1" model="openacademy.openacademy"> -->
|
||||
+ <!-- <field name="name">Object 1</field> -->
|
||||
+ <!-- </record> -->
|
||||
+ <!-- -->
|
||||
+ <!-- <record id="object2" model="openacademy.openacademy"> -->
|
||||
+ <!-- <field name="name">Object 2</field> -->
|
||||
+ <!-- </record> -->
|
||||
+ <!-- -->
|
||||
+ <!-- <record id="object3" model="openacademy.openacademy"> -->
|
||||
+ <!-- <field name="name">Object 3</field> -->
|
||||
+ <!-- </record> -->
|
||||
+ <!-- -->
|
||||
+ <!-- <record id="object4" model="openacademy.openacademy"> -->
|
||||
+ <!-- <field name="name">Object 4</field> -->
|
||||
+ <!-- </record> -->
|
||||
+ <!-- -->
|
||||
+ </data>
|
||||
+</openerp>
|
||||
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 @@
|
||||
+<openerp>
|
||||
+ <data>
|
||||
+ <!-- <template id="listing"> -->
|
||||
+ <!-- <ul> -->
|
||||
+ <!-- <li t-foreach="objects" t-as="object"> -->
|
||||
+ <!-- <a t-attf-href="#{ root }/objects/#{ object.id }"> -->
|
||||
+ <!-- <t t-esc="object.display_name"/> -->
|
||||
+ <!-- </a> -->
|
||||
+ <!-- </li> -->
|
||||
+ <!-- </ul> -->
|
||||
+ <!-- </template> -->
|
||||
+ <!-- <template id="object"> -->
|
||||
+ <!-- <h1><t t-esc="object.display_name"/></h1> -->
|
||||
+ <!-- <dl> -->
|
||||
+ <!-- <t t-foreach="object._fields" t-as="field"> -->
|
||||
+ <!-- <dt><t t-esc="field"/></dt> -->
|
||||
+ <!-- <dd><t t-esc="object[field]"/></dd> -->
|
||||
+ <!-- </t> -->
|
||||
+ <!-- </dl> -->
|
||||
+ <!-- </template> -->
|
||||
+ </data>
|
||||
+</openerp>
|
||||
|
|
|
@ -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': '<insert name here>',
|
||||
'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 @@
|
||||
+<?xml version="1.0"?>
|
||||
+<openerp>
|
||||
+ <data>
|
||||
+ <record model="ir.actions.act_window" id="act_session_graph">
|
||||
+ <field name="res_model">openacademy.session</field>
|
||||
+ <field name="view_type">form</field>
|
||||
+ <field name="view_mode">graph</field>
|
||||
+ <field name="view_id"
|
||||
+ ref="openacademy.openacademy_session_graph_view"/>
|
||||
+ </record>
|
||||
+ <record model="ir.actions.act_window" id="act_session_calendar">
|
||||
+ <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.course</field>
|
||||
+ <field name="view_type">form</field>
|
||||
+ <field name="view_mode">tree,form</field>
|
||||
+ </record>
|
||||
+ <record model="ir.ui.view" id="board_session_form">
|
||||
+ <field name="name">Session Dashboard Form</field>
|
||||
+ <field name="model">board.board</field>
|
||||
+ <field name="type">form</field>
|
||||
+ <field name="arch" type="xml">
|
||||
+ <form string="Session Dashboard">
|
||||
+ <board style="2-1">
|
||||
+ <column>
|
||||
+ <action
|
||||
+ string="Attendees by course"
|
||||
+ name="%(act_session_graph)d"
|
||||
+ colspan="4"
|
||||
+ height="150"
|
||||
+ width="510"/>
|
||||
+ <action
|
||||
+ string="Sessions"
|
||||
+ name="%(act_session_calendar)d"
|
||||
+ colspan="4"/>
|
||||
+ </column>
|
||||
+ <column>
|
||||
+ <action
|
||||
+ string="Courses"
|
||||
+ name="%(act_course_list)d" colspan="4"/>
|
||||
+ </column>
|
||||
+ </board>
|
||||
+ </form>
|
||||
+ </field>
|
||||
+ </record>
|
||||
+ <record model="ir.actions.act_window" id="open_board_session">
|
||||
+ <field name="name">Session Dashboard</field>
|
||||
+ <field name="res_model">board.board</field>
|
||||
+ <field name="view_type">form</field>
|
||||
+ <field name="view_mode">form</field>
|
||||
+ <field name="usage">menu</field>
|
||||
+ <field name="view_id" ref="board_session_form"/>
|
||||
+ </record>
|
||||
+ <data>
|
||||
+ <record model="ir.actions.act_window" id="act_session_graph">
|
||||
+ <field name="res_model">openacademy.session</field>
|
||||
+ <field name="view_type">form</field>
|
||||
+ <field name="view_mode">graph</field>
|
||||
+ <field name="view_id"
|
||||
+ ref="openacademy.openacademy_session_graph_view"/>
|
||||
+ </record>
|
||||
+ <record model="ir.actions.act_window" id="act_session_calendar">
|
||||
+ <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.course</field>
|
||||
+ <field name="view_type">form</field>
|
||||
+ <field name="view_mode">tree,form</field>
|
||||
+ </record>
|
||||
+ <record model="ir.ui.view" id="board_session_form">
|
||||
+ <field name="name">Session Dashboard Form</field>
|
||||
+ <field name="model">board.board</field>
|
||||
+ <field name="type">form</field>
|
||||
+ <field name="arch" type="xml">
|
||||
+ <form string="Session Dashboard">
|
||||
+ <board style="2-1">
|
||||
+ <column>
|
||||
+ <action
|
||||
+ string="Attendees by course"
|
||||
+ name="%(act_session_graph)d"
|
||||
+ colspan="4"
|
||||
+ height="150"
|
||||
+ width="510"/>
|
||||
+ <action
|
||||
+ string="Sessions"
|
||||
+ name="%(act_session_calendar)d"
|
||||
+ colspan="4"/>
|
||||
+ </column>
|
||||
+ <column>
|
||||
+ <action
|
||||
+ string="Courses"
|
||||
+ name="%(act_course_list)d" colspan="4"/>
|
||||
+ </column>
|
||||
+ </board>
|
||||
+ </form>
|
||||
+ </field>
|
||||
+ </record>
|
||||
+ <record model="ir.actions.act_window" id="open_board_session">
|
||||
+ <field name="name">Session Dashboard</field>
|
||||
+ <field name="res_model">board.board</field>
|
||||
+ <field name="view_type">form</field>
|
||||
+ <field name="view_mode">form</field>
|
||||
+ <field name="usage">menu</field>
|
||||
+ <field name="view_id" ref="board_session_form"/>
|
||||
+ </record>
|
||||
+
|
||||
+ <menuitem
|
||||
+ name="Session Dashboard" parent="base.menu_reporting_dashboard"
|
||||
+ action="open_board_session"
|
||||
+ sequence="1"
|
||||
+ id="menu_board_session" icon="terp-graph"/>
|
||||
+ </data>
|
||||
+ <menuitem
|
||||
+ name="Session Dashboard" parent="base.menu_reporting_dashboard"
|
||||
+ action="open_board_session"
|
||||
+ sequence="1"
|
||||
+ id="menu_board_session" icon="terp-graph"/>
|
||||
+ </data>
|
||||
+</openerp>
|
||||
|
|
|
@ -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 @@
|
||||
<field name="course_id"/>
|
||||
<field name="name"/>
|
||||
|
|
|
@ -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 @@
|
||||
+<openerp>
|
||||
+ <data>
|
||||
--- 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 @@
|
||||
<openerp>
|
||||
<data>
|
||||
- <!-- -->
|
||||
- <!-- <record id="object0" model="openacademy.openacademy"> -->
|
||||
- <!-- <field name="name">Object 0</field> -->
|
||||
- <!-- </record> -->
|
||||
- <!-- -->
|
||||
- <!-- <record id="object1" model="openacademy.openacademy"> -->
|
||||
- <!-- <field name="name">Object 1</field> -->
|
||||
- <!-- </record> -->
|
||||
- <!-- -->
|
||||
- <!-- <record id="object2" model="openacademy.openacademy"> -->
|
||||
- <!-- <field name="name">Object 2</field> -->
|
||||
- <!-- </record> -->
|
||||
- <!-- -->
|
||||
- <!-- <record id="object3" model="openacademy.openacademy"> -->
|
||||
- <!-- <field name="name">Object 3</field> -->
|
||||
- <!-- </record> -->
|
||||
- <!-- -->
|
||||
- <!-- <record id="object4" model="openacademy.openacademy"> -->
|
||||
- <!-- <field name="name">Object 4</field> -->
|
||||
- <!-- </record> -->
|
||||
- <!-- -->
|
||||
+ <record model="openacademy.course" id="course0">
|
||||
+ <field name="name">Course 0</field>
|
||||
+ <field name="description">Course 0's description
|
||||
|
@ -35,5 +44,5 @@ Index: doc-backend/openacademy/demo.xml
|
|||
+ <field name="name">Course 2</field>
|
||||
+ <field name="description">Course 2's description</field>
|
||||
+ </record>
|
||||
+ </data>
|
||||
+</openerp>
|
||||
</data>
|
||||
</openerp>
|
||||
|
|
|
@ -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 @@
|
||||
<menuitem id="contact_menu" name="Contacts"
|
||||
parent="configuration_menu"
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
# HG changeset patch
|
||||
# Parent 142c5065ff1b7266d944d4ef5239e814ae22f0df
|
||||
|
||||
Index: doc-backend/openacademy/course.py
|
||||
Index: doc-backend/openacademy/models.py
|
||||
===================================================================
|
||||
--- doc-backend.orig/openacademy/course.py 2014-08-21 14:47:27.140535117 +0200
|
||||
+++ doc-backend/openacademy/course.py 2014-08-21 14:47:55.420536155 +0200
|
||||
@@ -21,7 +21,8 @@
|
||||
--- doc-backend.orig/openacademy/models.py 2014-08-24 12:08:29.373373930 +0200
|
||||
+++ doc-backend/openacademy/models.py 2014-08-24 12:08:29.369373930 +0200
|
||||
@@ -22,7 +22,8 @@
|
||||
duration = fields.Float(digits=(6, 2), help="Duration in days")
|
||||
seats = fields.Integer(string="Number of seats")
|
||||
|
||||
|
|
|
@ -1,9 +1,10 @@
|
|||
# HG changeset patch
|
||||
# Parent 4a0db1d29257764f4df5cb1ee0be7e59e8c8d0d8
|
||||
|
||||
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:02:49.677366068 +0200
|
||||
+++ doc-backend/openacademy/views/openacademy.xml 2014-08-24 12:02:49.669366068 +0200
|
||||
@@ -1,6 +1,21 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<openerp>
|
||||
|
|
|
@ -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 @@
|
||||
<sheet>
|
||||
<group>
|
||||
|
|
|
@ -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 @@
|
||||
</field>
|
||||
</record>
|
||||
|
|
|
@ -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 @@
|
||||
</field>
|
||||
</record>
|
||||
|
|
|
@ -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 @@
|
||||
</field>
|
||||
</record>
|
||||
|
|
|
@ -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")
|
||||
|
||||
|
|
|
@ -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 @@
|
||||
<!-- Full id location:
|
||||
action="openacademy.course_list_action"
|
||||
|
|
|
@ -1,20 +1,18 @@
|
|||
# HG changeset patch
|
||||
# Parent e3bb12713a6d38c28f50d46e8c1bab74ac40c1be
|
||||
diff -r e3bb12713a6d -r 7929aa014c78 openacademy/__init__.py
|
||||
--- a/openacademy/__init__.py Thu Aug 07 11:50:29 2014 +0200
|
||||
+++ b/openacademy/__init__.py Thu Aug 07 12:06:41 2014 +0200
|
||||
@@ -0,0 +1,1 @@
|
||||
+import course
|
||||
diff -r e3bb12713a6d -r 7929aa014c78 openacademy/course.py
|
||||
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
|
||||
+++ b/openacademy/course.py Thu Aug 07 12:06:41 2014 +0200
|
||||
@@ -0,0 +1,9 @@
|
||||
+# -*- coding: utf-8 -*-
|
||||
+from openerp import fields, models
|
||||
+
|
||||
Index: doc-backend/openacademy/models.py
|
||||
===================================================================
|
||||
--- doc-backend.orig/openacademy/models.py 2014-08-24 11:54:02.949353877 +0200
|
||||
+++ doc-backend/openacademy/models.py 2014-08-24 11:54:26.153354414 +0200
|
||||
@@ -2,7 +2,8 @@
|
||||
|
||||
from openerp import models, fields, api
|
||||
|
||||
-# class openacademy(models.Model):
|
||||
-# _name = 'openacademy.openacademy'
|
||||
+class Course(models.Model):
|
||||
+ _name = 'openacademy.course'
|
||||
+
|
||||
|
||||
-# name = fields.Char()
|
||||
+ name = fields.Char(string="Title", required=True)
|
||||
+ description = fields.Text()
|
||||
+
|
||||
|
|
|
@ -3,27 +3,29 @@
|
|||
|
||||
Index: doc-backend/openacademy/__init__.py
|
||||
===================================================================
|
||||
--- doc-backend.orig/openacademy/__init__.py 2014-08-21 15:13:13.756591893 +0200
|
||||
+++ doc-backend/openacademy/__init__.py 2014-08-21 15:13:13.748591893 +0200
|
||||
@@ -1 +1,2 @@
|
||||
--- doc-backend.orig/openacademy/__init__.py 2014-08-24 12:07:13.669372178 +0200
|
||||
+++ doc-backend/openacademy/__init__.py 2014-08-24 12:07:30.697372572 +0200
|
||||
@@ -1,3 +1,4 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
import controllers
|
||||
import models
|
||||
+import partner
|
||||
import course
|
||||
Index: doc-backend/openacademy/__openerp__.py
|
||||
===================================================================
|
||||
--- doc-backend.orig/openacademy/__openerp__.py 2014-08-21 15:13:13.756591893 +0200
|
||||
+++ doc-backend/openacademy/__openerp__.py 2014-08-21 15:13:13.748591893 +0200
|
||||
@@ -12,6 +12,7 @@
|
||||
- attendees registration""",
|
||||
'data' : [
|
||||
--- doc-backend.orig/openacademy/__openerp__.py 2014-08-24 12:07:13.669372178 +0200
|
||||
+++ doc-backend/openacademy/__openerp__.py 2014-08-24 12:07:13.661372178 +0200
|
||||
@@ -28,6 +28,7 @@
|
||||
# 'security/ir.model.access.csv',
|
||||
'templates.xml',
|
||||
'views/openacademy.xml',
|
||||
+ 'views/partner.xml',
|
||||
],
|
||||
# only loaded in demonstration mode
|
||||
'demo': [
|
||||
'demo.xml',
|
||||
Index: doc-backend/openacademy/partner.py
|
||||
===================================================================
|
||||
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ doc-backend/openacademy/partner.py 2014-08-21 15:13:13.748591893 +0200
|
||||
+++ doc-backend/openacademy/partner.py 2014-08-24 12:07:13.661372178 +0200
|
||||
@@ -0,0 +1,11 @@
|
||||
+# -*- coding: utf-8 -*-
|
||||
+from openerp import fields, models
|
||||
|
@ -39,7 +41,7 @@ Index: doc-backend/openacademy/partner.py
|
|||
Index: doc-backend/openacademy/views/partner.xml
|
||||
===================================================================
|
||||
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ doc-backend/openacademy/views/partner.xml 2014-08-21 15:13:26.748592370 +0200
|
||||
+++ doc-backend/openacademy/views/partner.xml 2014-08-24 12:07:13.661372178 +0200
|
||||
@@ -0,0 +1,28 @@
|
||||
+<?xml version="1.0" encoding="UTF-8"?>
|
||||
+ <openerp>
|
||||
|
|
|
@ -3,8 +3,8 @@
|
|||
|
||||
Index: doc-backend/openacademy/views/openacademy.xml
|
||||
===================================================================
|
||||
--- doc-backend.orig/openacademy/views/openacademy.xml 2014-08-21 14:43:18.968526007 +0200
|
||||
+++ doc-backend/openacademy/views/openacademy.xml 2014-08-21 14:45:10.264530092 +0200
|
||||
--- doc-backend.orig/openacademy/views/openacademy.xml 2014-08-24 12:07:04.877371975 +0200
|
||||
+++ doc-backend/openacademy/views/openacademy.xml 2014-08-24 12:07:04.869371975 +0200
|
||||
@@ -19,12 +19,18 @@
|
||||
<sheet>
|
||||
<group>
|
||||
|
|
|
@ -1,14 +1,15 @@
|
|||
# HG changeset patch
|
||||
# Parent 8d5573b704b2867788dd6895503f1871c2976a29
|
||||
|
||||
Index: doc-backend/openacademy/course.py
|
||||
Index: doc-backend/openacademy/models.py
|
||||
===================================================================
|
||||
--- doc-backend.orig/openacademy/course.py 2014-08-22 17:01:50.147102793 +0200
|
||||
+++ doc-backend/openacademy/course.py 2014-08-22 17:01:50.139102793 +0200
|
||||
--- doc-backend.orig/openacademy/models.py 2014-08-24 12:12:01.933378850 +0200
|
||||
+++ doc-backend/openacademy/models.py 2014-08-24 12:12:15.065379154 +0200
|
||||
@@ -39,3 +39,20 @@
|
||||
self.taken_seats = 0.0
|
||||
else:
|
||||
self.taken_seats = 100.0 * len(self.attendee_ids) / self.seats
|
||||
|
||||
+
|
||||
+ @api.onchange('seats', 'attendee_ids')
|
||||
+ def _verify_valid_seats(self):
|
||||
+ if self.seats < 0:
|
||||
|
@ -25,4 +26,3 @@ Index: doc-backend/openacademy/course.py
|
|||
+ 'message': "Increase seats or remove excess attendees",
|
||||
+ },
|
||||
+ }
|
||||
+
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
# HG changeset patch
|
||||
# Parent cb05882d4fe73e97b9d34a69190ced14d1a50c24
|
||||
|
||||
Index: doc-backend/openacademy/course.py
|
||||
Index: doc-backend/openacademy/models.py
|
||||
===================================================================
|
||||
--- doc-backend.orig/openacademy/course.py 2014-08-21 14:27:15.108490623 +0200
|
||||
+++ doc-backend/openacademy/course.py 2014-08-21 14:27:37.860491458 +0200
|
||||
@@ -9,6 +9,8 @@
|
||||
--- doc-backend.orig/openacademy/models.py 2014-08-24 12:05:31.001369802 +0200
|
||||
+++ doc-backend/openacademy/models.py 2014-08-24 12:05:30.997369802 +0200
|
||||
@@ -10,6 +10,8 @@
|
||||
|
||||
responsible_id = fields.Many2one('res.users',
|
||||
ondelete='set null', string="Responsible", index=True)
|
||||
|
|
|
@ -1,47 +1,50 @@
|
|||
# HG changeset patch
|
||||
# Parent c140f0a861a08881d8737bca0ffb83904a2059a3
|
||||
|
||||
diff --git a/openacademy/__openerp__.py b/openacademy/__openerp__.py
|
||||
--- a/openacademy/__openerp__.py
|
||||
+++ b/openacademy/__openerp__.py
|
||||
@@ -16,6 +16,7 @@
|
||||
Index: doc-backend/openacademy/__openerp__.py
|
||||
===================================================================
|
||||
--- doc-backend.orig/openacademy/__openerp__.py 2014-08-24 12:28:46.485402100 +0200
|
||||
+++ doc-backend/openacademy/__openerp__.py 2014-08-24 12:28:46.477402100 +0200
|
||||
@@ -31,6 +31,7 @@
|
||||
'views/openacademy.xml',
|
||||
'views/partner.xml',
|
||||
'views/session_workflow.xml',
|
||||
+ 'reports.xml',
|
||||
],
|
||||
# only loaded in demonstration mode
|
||||
'demo': [
|
||||
'demo.xml',
|
||||
diff --git a/openacademy/reports.xml b/openacademy/reports.xml
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
+++ b/openacademy/reports.xml
|
||||
@@ -0,0 +1,28 @@
|
||||
+<openerp><data>
|
||||
+ <report
|
||||
+ id="report_session"
|
||||
+ model="openacademy.session"
|
||||
+ string="Session Report"
|
||||
+ name="openacademy.report_session_view"
|
||||
+ file="openacademy.report_session"
|
||||
+ report_type="qweb-pdf" />
|
||||
Index: doc-backend/openacademy/reports.xml
|
||||
===================================================================
|
||||
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ doc-backend/openacademy/reports.xml 2014-08-24 12:30:37.161404662 +0200
|
||||
@@ -0,0 +1,30 @@
|
||||
+<openerp>
|
||||
+<data>
|
||||
+ <report
|
||||
+ id="report_session"
|
||||
+ model="openacademy.session"
|
||||
+ string="Session Report"
|
||||
+ name="openacademy.report_session_view"
|
||||
+ file="openacademy.report_session"
|
||||
+ report_type="qweb-pdf" />
|
||||
+
|
||||
+ <template id="report_session_view">
|
||||
+ <t t-call="report.html_container">
|
||||
+ <t t-foreach="docs" t-as="doc">
|
||||
+ <t t-call="report.external_layout">
|
||||
+ <div class="page">
|
||||
+ <h2 t-field="doc.name"/>
|
||||
+ <p>From <span t-field="doc.start_date"/> to <span t-field="doc.end_date"/></p>
|
||||
+ <h3>Attendees:</h3>
|
||||
+ <ul>
|
||||
+ <t t-foreach="doc.attendee_ids" t-as="attendee">
|
||||
+ <li t-field="attendee.name"/>
|
||||
+ </t>
|
||||
+ </ul>
|
||||
+ </div>
|
||||
+ <template id="report_session_view">
|
||||
+ <t t-call="report.html_container">
|
||||
+ <t t-foreach="docs" t-as="doc">
|
||||
+ <t t-call="report.external_layout">
|
||||
+ <div class="page">
|
||||
+ <h2 t-field="doc.name"/>
|
||||
+ <p>From <span t-field="doc.start_date"/> to <span t-field="doc.end_date"/></p>
|
||||
+ <h3>Attendees:</h3>
|
||||
+ <ul>
|
||||
+ <t t-foreach="doc.attendee_ids" t-as="attendee">
|
||||
+ <li t-field="attendee.name"/>
|
||||
+ </t>
|
||||
+ </ul>
|
||||
+ </div>
|
||||
+ </t>
|
||||
+ </t>
|
||||
+ </t>
|
||||
+ </t>
|
||||
+ </t>
|
||||
+ </template>
|
||||
+</data></openerp>
|
||||
+ </template>
|
||||
+</data>
|
||||
+</openerp>
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
# HG changeset patch
|
||||
# Parent b9bfc8929e0ffc3eb153641e14952fe5d99eb908
|
||||
diff -r b9bfc8929e0f -r cf2bf8f8490a openacademy/views/openacademy.xml
|
||||
--- a/openacademy/views/openacademy.xml Thu Aug 07 16:51:23 2014 +0200
|
||||
+++ b/openacademy/views/openacademy.xml Mon Aug 11 13:05:29 2014 +0200
|
||||
Index: doc-backend/openacademy/views/openacademy.xml
|
||||
===================================================================
|
||||
--- doc-backend.orig/openacademy/views/openacademy.xml 2014-08-24 12:03:05.745366440 +0200
|
||||
+++ doc-backend/openacademy/views/openacademy.xml 2014-08-24 12:03:05.741366440 +0200
|
||||
@@ -1,6 +1,16 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<openerp>
|
||||
|
|
|
@ -1,13 +1,14 @@
|
|||
# HG changeset patch
|
||||
# Parent 22f8d180a7f9ad209d7e98cf7d1bd0fee1f05350
|
||||
Index: doc-backend/openacademy/course.py
|
||||
Index: doc-backend/openacademy/models.py
|
||||
===================================================================
|
||||
--- doc-backend.orig/openacademy/course.py 2014-08-21 14:23:28.056482288 +0200
|
||||
+++ doc-backend/openacademy/course.py 2014-08-21 14:23:35.540482563 +0200
|
||||
--- doc-backend.orig/openacademy/models.py 2014-08-24 12:03:20.161366774 +0200
|
||||
+++ doc-backend/openacademy/models.py 2014-08-24 12:03:35.149367121 +0200
|
||||
@@ -7,3 +7,12 @@
|
||||
|
||||
name = fields.Char(string="Title", required=True)
|
||||
description = fields.Text()
|
||||
|
||||
+
|
||||
+
|
||||
+class Session(models.Model):
|
||||
+ _name = 'openacademy.session'
|
||||
|
@ -16,4 +17,3 @@ Index: doc-backend/openacademy/course.py
|
|||
+ start_date = fields.Date()
|
||||
+ duration = fields.Float(digits=(6, 2), help="Duration in days")
|
||||
+ seats = fields.Integer(string="Number of seats")
|
||||
+
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
# HG changeset patch
|
||||
# Parent 8c721171aa16a41e94059f53d6780c67b5ef2dfc
|
||||
|
||||
Index: doc-backend/openacademy/course.py
|
||||
Index: doc-backend/openacademy/models.py
|
||||
===================================================================
|
||||
--- doc-backend.orig/openacademy/course.py 2014-08-22 17:04:08.103107858 +0200
|
||||
+++ doc-backend/openacademy/course.py 2014-08-22 17:04:08.099107857 +0200
|
||||
@@ -67,6 +67,24 @@
|
||||
--- doc-backend.orig/openacademy/models.py 2014-08-24 12:20:31.953390654 +0200
|
||||
+++ doc-backend/openacademy/models.py 2014-08-24 12:20:31.949390654 +0200
|
||||
@@ -66,6 +66,24 @@
|
||||
attendees_count = fields.Integer(
|
||||
string="Attendees count", compute='_get_attendees_count', store=True)
|
||||
|
||||
|
@ -32,8 +32,8 @@ Index: doc-backend/openacademy/course.py
|
|||
def _taken_seats(self):
|
||||
Index: doc-backend/openacademy/views/openacademy.xml
|
||||
===================================================================
|
||||
--- doc-backend.orig/openacademy/views/openacademy.xml 2014-08-22 17:04:08.103107858 +0200
|
||||
+++ doc-backend/openacademy/views/openacademy.xml 2014-08-22 17:04:30.939108696 +0200
|
||||
--- doc-backend.orig/openacademy/views/openacademy.xml 2014-08-24 12:20:31.953390654 +0200
|
||||
+++ doc-backend/openacademy/views/openacademy.xml 2014-08-24 12:20:31.949390654 +0200
|
||||
@@ -91,22 +91,37 @@
|
||||
<field name="model">openacademy.session</field>
|
||||
<field name="arch" type="xml">
|
||||
|
|
|
@ -3,21 +3,21 @@
|
|||
|
||||
Index: doc-backend/openacademy/__openerp__.py
|
||||
===================================================================
|
||||
--- doc-backend.orig/openacademy/__openerp__.py 2014-08-21 15:03:56.760571446 +0200
|
||||
+++ doc-backend/openacademy/__openerp__.py 2014-08-21 15:03:56.756571446 +0200
|
||||
@@ -13,6 +13,7 @@
|
||||
'data' : [
|
||||
--- doc-backend.orig/openacademy/__openerp__.py 2014-08-24 12:34:54.425410616 +0200
|
||||
+++ doc-backend/openacademy/__openerp__.py 2014-08-24 12:34:54.417410616 +0200
|
||||
@@ -29,6 +29,7 @@
|
||||
'templates.xml',
|
||||
'views/openacademy.xml',
|
||||
'views/partner.xml',
|
||||
+ 'views/session_workflow.xml',
|
||||
],
|
||||
# only loaded in demonstration mode
|
||||
'demo': [
|
||||
'demo.xml',
|
||||
Index: doc-backend/openacademy/course.py
|
||||
Index: doc-backend/openacademy/models.py
|
||||
===================================================================
|
||||
--- doc-backend.orig/openacademy/course.py 2014-08-21 15:03:56.760571446 +0200
|
||||
+++ doc-backend/openacademy/course.py 2014-08-21 15:03:56.756571446 +0200
|
||||
@@ -71,7 +71,7 @@
|
||||
--- doc-backend.orig/openacademy/models.py 2014-08-24 12:34:54.425410616 +0200
|
||||
+++ doc-backend/openacademy/models.py 2014-08-24 12:34:54.417410616 +0200
|
||||
@@ -70,7 +70,7 @@
|
||||
('draft', "Draft"),
|
||||
('confirmed', "Confirmed"),
|
||||
('done', "Done"),
|
||||
|
@ -28,8 +28,8 @@ Index: doc-backend/openacademy/course.py
|
|||
def action_draft(self):
|
||||
Index: doc-backend/openacademy/views/openacademy.xml
|
||||
===================================================================
|
||||
--- doc-backend.orig/openacademy/views/openacademy.xml 2014-08-21 15:03:56.760571446 +0200
|
||||
+++ doc-backend/openacademy/views/openacademy.xml 2014-08-21 15:03:56.756571446 +0200
|
||||
--- doc-backend.orig/openacademy/views/openacademy.xml 2014-08-24 12:34:54.425410616 +0200
|
||||
+++ doc-backend/openacademy/views/openacademy.xml 2014-08-24 12:34:54.417410616 +0200
|
||||
@@ -92,13 +92,13 @@
|
||||
<field name="arch" type="xml">
|
||||
<form string="Session Form">
|
||||
|
@ -50,56 +50,56 @@ Index: doc-backend/openacademy/views/openacademy.xml
|
|||
Index: doc-backend/openacademy/views/session_workflow.xml
|
||||
===================================================================
|
||||
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ doc-backend/openacademy/views/session_workflow.xml 2014-08-21 15:03:56.756571446 +0200
|
||||
+++ doc-backend/openacademy/views/session_workflow.xml 2014-08-24 12:35:14.105411072 +0200
|
||||
@@ -0,0 +1,51 @@
|
||||
+<openerp>
|
||||
+ <data>
|
||||
+ <record model="workflow" id="wkf_session">
|
||||
+ <field name="name">OpenAcademy sessions workflow</field>
|
||||
+ <field name="osv">openacademy.session</field>
|
||||
+ <field name="on_create">True</field>
|
||||
+ </record>
|
||||
+ <data>
|
||||
+ <record model="workflow" id="wkf_session">
|
||||
+ <field name="name">OpenAcademy sessions workflow</field>
|
||||
+ <field name="osv">openacademy.session</field>
|
||||
+ <field name="on_create">True</field>
|
||||
+ </record>
|
||||
+
|
||||
+ <record model="workflow.activity" id="draft">
|
||||
+ <field name="name">Draft</field>
|
||||
+ <field name="wkf_id" ref="wkf_session"/>
|
||||
+ <field name="flow_start" eval="True"/>
|
||||
+ <field name="kind">function</field>
|
||||
+ <field name="action">action_draft()</field>
|
||||
+ </record>
|
||||
+ <record model="workflow.activity" id="confirmed">
|
||||
+ <field name="name">Confirmed</field>
|
||||
+ <field name="wkf_id" ref="wkf_session"/>
|
||||
+ <field name="kind">function</field>
|
||||
+ <field name="action">action_confirm()</field>
|
||||
+ </record>
|
||||
+ <record model="workflow.activity" id="done">
|
||||
+ <field name="name">Done</field>
|
||||
+ <field name="wkf_id" ref="wkf_session"/>
|
||||
+ <field name="flow_stop" eval="True"/>
|
||||
+ <field name="kind">function</field>
|
||||
+ <field name="action">action_done()</field>
|
||||
+ </record>
|
||||
+ <record model="workflow.activity" id="draft">
|
||||
+ <field name="name">Draft</field>
|
||||
+ <field name="wkf_id" ref="wkf_session"/>
|
||||
+ <field name="flow_start" eval="True"/>
|
||||
+ <field name="kind">function</field>
|
||||
+ <field name="action">action_draft()</field>
|
||||
+ </record>
|
||||
+ <record model="workflow.activity" id="confirmed">
|
||||
+ <field name="name">Confirmed</field>
|
||||
+ <field name="wkf_id" ref="wkf_session"/>
|
||||
+ <field name="kind">function</field>
|
||||
+ <field name="action">action_confirm()</field>
|
||||
+ </record>
|
||||
+ <record model="workflow.activity" id="done">
|
||||
+ <field name="name">Done</field>
|
||||
+ <field name="wkf_id" ref="wkf_session"/>
|
||||
+ <field name="flow_stop" eval="True"/>
|
||||
+ <field name="kind">function</field>
|
||||
+ <field name="action">action_done()</field>
|
||||
+ </record>
|
||||
+
|
||||
+ <record model="workflow.transition" id="session_draft_to_confirmed">
|
||||
+ <field name="act_from" ref="draft"/>
|
||||
+ <field name="act_to" ref="confirmed"/>
|
||||
+ <field name="signal">confirm</field>
|
||||
+ </record>
|
||||
+ <record model="workflow.transition" id="session_confirmed_to_draft">
|
||||
+ <field name="act_from" ref="confirmed"/>
|
||||
+ <field name="act_to" ref="draft"/>
|
||||
+ <field name="signal">draft</field>
|
||||
+ </record>
|
||||
+ <record model="workflow.transition" id="session_done_to_draft">
|
||||
+ <field name="act_from" ref="done"/>
|
||||
+ <field name="act_to" ref="draft"/>
|
||||
+ <field name="signal">draft</field>
|
||||
+ </record>
|
||||
+ <record model="workflow.transition" id="session_confirmed_to_done">
|
||||
+ <field name="act_from" ref="confirmed"/>
|
||||
+ <field name="act_to" ref="done"/>
|
||||
+ <field name="signal">done</field>
|
||||
+ </record>
|
||||
+ </data>
|
||||
+ <record model="workflow.transition" id="session_draft_to_confirmed">
|
||||
+ <field name="act_from" ref="draft"/>
|
||||
+ <field name="act_to" ref="confirmed"/>
|
||||
+ <field name="signal">confirm</field>
|
||||
+ </record>
|
||||
+ <record model="workflow.transition" id="session_confirmed_to_draft">
|
||||
+ <field name="act_from" ref="confirmed"/>
|
||||
+ <field name="act_to" ref="draft"/>
|
||||
+ <field name="signal">draft</field>
|
||||
+ </record>
|
||||
+ <record model="workflow.transition" id="session_done_to_draft">
|
||||
+ <field name="act_from" ref="done"/>
|
||||
+ <field name="act_to" ref="draft"/>
|
||||
+ <field name="signal">draft</field>
|
||||
+ </record>
|
||||
+ <record model="workflow.transition" id="session_confirmed_to_done">
|
||||
+ <field name="act_from" ref="confirmed"/>
|
||||
+ <field name="act_to" ref="done"/>
|
||||
+ <field name="signal">done</field>
|
||||
+ </record>
|
||||
+ </data>
|
||||
+</openerp>
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
# HG changeset patch
|
||||
# Parent 0764cf061d021a0a5b2811f5ec5d835f799630fc
|
||||
|
||||
Index: doc-backend/openacademy/course.py
|
||||
Index: doc-backend/openacademy/models.py
|
||||
===================================================================
|
||||
--- doc-backend.orig/openacademy/course.py 2014-08-21 15:04:39.972573032 +0200
|
||||
+++ doc-backend/openacademy/course.py 2014-08-21 15:04:39.968573032 +0200
|
||||
@@ -74,18 +74,6 @@
|
||||
--- doc-backend.orig/openacademy/models.py 2014-08-24 12:37:16.637413907 +0200
|
||||
+++ doc-backend/openacademy/models.py 2014-08-24 12:37:16.625413907 +0200
|
||||
@@ -73,18 +73,6 @@
|
||||
])
|
||||
|
||||
@api.one
|
||||
|
@ -26,69 +26,69 @@ Index: doc-backend/openacademy/course.py
|
|||
if not self.seats:
|
||||
Index: doc-backend/openacademy/views/session_workflow.xml
|
||||
===================================================================
|
||||
--- doc-backend.orig/openacademy/views/session_workflow.xml 2014-08-21 15:04:39.972573032 +0200
|
||||
+++ doc-backend/openacademy/views/session_workflow.xml 2014-08-21 15:04:39.968573032 +0200
|
||||
--- doc-backend.orig/openacademy/views/session_workflow.xml 2014-08-24 12:37:16.637413907 +0200
|
||||
+++ doc-backend/openacademy/views/session_workflow.xml 2014-08-24 12:41:01.153419104 +0200
|
||||
@@ -6,25 +6,57 @@
|
||||
<field name="on_create">True</field>
|
||||
</record>
|
||||
<field name="on_create">True</field>
|
||||
</record>
|
||||
|
||||
+ <record model="ir.actions.server" id="set_session_to_draft">
|
||||
+ <field name="name">Set session to Draft</field>
|
||||
+ <field name="model_id" ref="model_openacademy_session"/>
|
||||
+ <field name="code">
|
||||
+ self.write(cr, uid, context['active_ids'], {
|
||||
+ 'state': 'draft'
|
||||
+ }, context=context)
|
||||
+ </field>
|
||||
+ </record>
|
||||
<record model="workflow.activity" id="draft">
|
||||
<field name="name">Draft</field>
|
||||
<field name="wkf_id" ref="wkf_session"/>
|
||||
<field name="flow_start" eval="True"/>
|
||||
- <field name="kind">function</field>
|
||||
- <field name="action">action_draft()</field>
|
||||
+ <field name="kind">dummy</field>
|
||||
+ <field name="action"></field>
|
||||
+ <field name="action_id" ref="set_session_to_draft"/>
|
||||
+ </record>
|
||||
+ <record model="ir.actions.server" id="set_session_to_draft">
|
||||
+ <field name="name">Set session to Draft</field>
|
||||
+ <field name="model_id" ref="model_openacademy_session"/>
|
||||
+ <field name="code">
|
||||
+ self.write(cr, uid, context['active_ids'], {
|
||||
+ 'state': 'draft'
|
||||
+ }, context=context)
|
||||
+ </field>
|
||||
+ </record>
|
||||
<record model="workflow.activity" id="draft">
|
||||
<field name="name">Draft</field>
|
||||
<field name="wkf_id" ref="wkf_session"/>
|
||||
<field name="flow_start" eval="True"/>
|
||||
- <field name="kind">function</field>
|
||||
- <field name="action">action_draft()</field>
|
||||
+ <field name="kind">dummy</field>
|
||||
+ <field name="action"></field>
|
||||
+ <field name="action_id" ref="set_session_to_draft"/>
|
||||
+ </record>
|
||||
+
|
||||
+ <record model="ir.actions.server" id="set_session_to_confirmed">
|
||||
+ <field name="name">Set session to Confirmed</field>
|
||||
+ <field name="model_id" ref="model_openacademy_session"/>
|
||||
+ <field name="code">
|
||||
+ self.write(cr, uid, context['active_ids'], {
|
||||
+ 'state': 'confirmed'
|
||||
+ }, context=context)
|
||||
+ </field>
|
||||
</record>
|
||||
<record model="workflow.activity" id="confirmed">
|
||||
<field name="name">Confirmed</field>
|
||||
<field name="wkf_id" ref="wkf_session"/>
|
||||
- <field name="kind">function</field>
|
||||
- <field name="action">action_confirm()</field>
|
||||
+ <field name="kind">dummy</field>
|
||||
+ <field name="action"></field>
|
||||
+ <field name="action_id" ref="set_session_to_confirmed"/>
|
||||
+ </record>
|
||||
+ <record model="ir.actions.server" id="set_session_to_confirmed">
|
||||
+ <field name="name">Set session to Confirmed</field>
|
||||
+ <field name="model_id" ref="model_openacademy_session"/>
|
||||
+ <field name="code">
|
||||
+ self.write(cr, uid, context['active_ids'], {
|
||||
+ 'state': 'confirmed'
|
||||
+ }, context=context)
|
||||
+ </field>
|
||||
</record>
|
||||
<record model="workflow.activity" id="confirmed">
|
||||
<field name="name">Confirmed</field>
|
||||
<field name="wkf_id" ref="wkf_session"/>
|
||||
- <field name="kind">function</field>
|
||||
- <field name="action">action_confirm()</field>
|
||||
+ <field name="kind">dummy</field>
|
||||
+ <field name="action"></field>
|
||||
+ <field name="action_id" ref="set_session_to_confirmed"/>
|
||||
+ </record>
|
||||
+
|
||||
+ <record model="ir.actions.server" id="set_session_to_done">
|
||||
+ <field name="name">Set session to Done</field>
|
||||
+ <field name="model_id" ref="model_openacademy_session"/>
|
||||
+ <field name="code">
|
||||
+ self.write(cr, uid, context['active_ids'], {
|
||||
+ 'state': 'done'
|
||||
+ }, context=context)
|
||||
+ </field>
|
||||
</record>
|
||||
<record model="workflow.activity" id="done">
|
||||
<field name="name">Done</field>
|
||||
<field name="wkf_id" ref="wkf_session"/>
|
||||
<field name="flow_stop" eval="True"/>
|
||||
- <field name="kind">function</field>
|
||||
- <field name="action">action_done()</field>
|
||||
+ <field name="kind">dummy</field>
|
||||
+ <field name="action"></field>
|
||||
+ <field name="action_id" ref="set_session_to_done"/>
|
||||
</record>
|
||||
+ <record model="ir.actions.server" id="set_session_to_done">
|
||||
+ <field name="name">Set session to Done</field>
|
||||
+ <field name="model_id" ref="model_openacademy_session"/>
|
||||
+ <field name="code">
|
||||
+ self.write(cr, uid, context['active_ids'], {
|
||||
+ 'state': 'done'
|
||||
+ }, context=context)
|
||||
+ </field>
|
||||
</record>
|
||||
<record model="workflow.activity" id="done">
|
||||
<field name="name">Done</field>
|
||||
<field name="wkf_id" ref="wkf_session"/>
|
||||
<field name="flow_stop" eval="True"/>
|
||||
- <field name="kind">function</field>
|
||||
- <field name="action">action_done()</field>
|
||||
+ <field name="kind">dummy</field>
|
||||
+ <field name="action"></field>
|
||||
+ <field name="action_id" ref="set_session_to_done"/>
|
||||
</record>
|
||||
|
||||
<record model="workflow.transition" id="session_draft_to_confirmed">
|
||||
<record model="workflow.transition" id="session_draft_to_confirmed">
|
||||
|
|
|
@ -1,18 +1,19 @@
|
|||
# HG changeset patch
|
||||
# Parent 3b19489a47d41e72f88490eb389a05977761c8d2
|
||||
|
||||
diff --git a/openacademy/views/session_workflow.xml b/openacademy/views/session_workflow.xml
|
||||
--- a/openacademy/views/session_workflow.xml
|
||||
+++ b/openacademy/views/session_workflow.xml
|
||||
Index: doc-backend/openacademy/views/session_workflow.xml
|
||||
===================================================================
|
||||
--- doc-backend.orig/openacademy/views/session_workflow.xml 2014-08-24 12:35:50.669411918 +0200
|
||||
+++ doc-backend/openacademy/views/session_workflow.xml 2014-08-24 12:36:31.173412855 +0200
|
||||
@@ -47,5 +47,11 @@
|
||||
<field name="act_to" ref="done"/>
|
||||
<field name="signal">done</field>
|
||||
</record>
|
||||
<field name="act_to" ref="done"/>
|
||||
<field name="signal">done</field>
|
||||
</record>
|
||||
+
|
||||
+ <record model="workflow.transition" id="session_auto_confirm_half_filled">
|
||||
+ <field name="act_from" ref="draft"/>
|
||||
+ <field name="act_to" ref="confirmed"/>
|
||||
+ <field name="condition">seats_taken > 50</field>
|
||||
+ </record>
|
||||
</data>
|
||||
+ <record model="workflow.transition" id="session_auto_confirm_half_filled">
|
||||
+ <field name="act_from" ref="draft"/>
|
||||
+ <field name="act_to" ref="confirmed"/>
|
||||
+ <field name="condition">seats_taken > 50</field>
|
||||
+ </record>
|
||||
</data>
|
||||
</openerp>
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
{%- set mod= name|snake -%}
|
||||
{%- set model = "%s.%s"|format(mod, mod) -%}
|
||||
<openerp>
|
||||
<data>
|
||||
<!-- {% for item in range(5) %} -->
|
||||
<!-- <record id="object{{ item }}" model="{{ model }}"> -->
|
||||
<!-- <field name="name">Object {{ item }}</field> -->
|
||||
<!-- </record> -->
|
||||
<!-- {% endfor %} -->
|
||||
</data>
|
||||
<data>
|
||||
<!-- {% for item in range(5) %} -->
|
||||
<!-- <record id="object{{ item }}" model="{{ model }}"> -->
|
||||
<!-- <field name="name">Object {{ item }}</field> -->
|
||||
<!-- </record> -->
|
||||
<!-- {% endfor %} -->
|
||||
</data>
|
||||
</openerp>
|
||||
|
|
|
@ -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 }}'
|
||||
|
|
|
@ -1,22 +1,22 @@
|
|||
<openerp>
|
||||
<data>
|
||||
<!-- <template id="listing"> -->
|
||||
<!-- <ul> -->
|
||||
<!-- <li t-foreach="objects" t-as="object"> -->
|
||||
<!-- <a t-attf-href="#{ root }/objects/#{ object.id }"> -->
|
||||
<!-- <t t-esc="object.display_name"/> -->
|
||||
<!-- </a> -->
|
||||
<!-- </li> -->
|
||||
<!-- </ul> -->
|
||||
<!-- </template> -->
|
||||
<!-- <template id="object"> -->
|
||||
<!-- <h1><t t-esc="object.display_name"/></h1> -->
|
||||
<!-- <dl> -->
|
||||
<!-- <t t-foreach="object._fields" t-as="field"> -->
|
||||
<!-- <dt><t t-esc="field"/></dt> -->
|
||||
<!-- <dd><t t-esc="object[field]"/></dd> -->
|
||||
<!-- </t> -->
|
||||
<!-- </dl> -->
|
||||
<!-- </template> -->
|
||||
</data>
|
||||
<data>
|
||||
<!-- <template id="listing"> -->
|
||||
<!-- <ul> -->
|
||||
<!-- <li t-foreach="objects" t-as="object"> -->
|
||||
<!-- <a t-attf-href="#{ root }/objects/#{ object.id }"> -->
|
||||
<!-- <t t-esc="object.display_name"/> -->
|
||||
<!-- </a> -->
|
||||
<!-- </li> -->
|
||||
<!-- </ul> -->
|
||||
<!-- </template> -->
|
||||
<!-- <template id="object"> -->
|
||||
<!-- <h1><t t-esc="object.display_name"/></h1> -->
|
||||
<!-- <dl> -->
|
||||
<!-- <t t-foreach="object._fields" t-as="field"> -->
|
||||
<!-- <dt><t t-esc="field"/></dt> -->
|
||||
<!-- <dd><t t-esc="object[field]"/></dd> -->
|
||||
<!-- </t> -->
|
||||
<!-- </dl> -->
|
||||
<!-- </template> -->
|
||||
</data>
|
||||
</openerp>
|
||||
|
|
Loading…
Reference in New Issue