[IMP] doc/howtos/backend: fix calendar view, improve search view, fix copy()

This commit is contained in:
Raphael Collet 2014-08-28 14:44:56 +02:00
parent 9094d768d0
commit 628ebef5b9
13 changed files with 120 additions and 85 deletions

View File

@ -922,7 +922,7 @@ Model constraints
Odoo provides two ways to set up automatically verified invariants: Odoo provides two ways to set up automatically verified invariants:
:func:`Python constraints <openerp.api.constrains>` and :func:`Python constraints <openerp.api.constrains>` and
:attr:`SQL constaints <openerp.models.Model._sql_constraints>`. :attr:`SQL constraints <openerp.models.Model._sql_constraints>`.
A Python constraint is defined as a method decorated with A Python constraint is defined as a method decorated with
:func:`~openerp.api.constrains`, and invoked on a recordset. The decorator :func:`~openerp.api.constrains`, and invoked on a recordset. The decorator
@ -1064,21 +1064,35 @@ field (to define the label for each calendar event)
Search views Search views
------------ ------------
Search view fields can take custom operators or :ref:`reference/orm/domains` Search view ``<field>`` elements can have a ``@filter_domain`` that overrides
for more flexible matching of results. the domain generated for searching on the given field. In the given domain,
``self`` represents the value entered by the user. In the example below, it is
used to search on both fields ``name`` and ``description``.
Search views can also contain *filters* which act as toggles for predefined Search views can also contain ``<filter>`` elements, which act as toggles for
searches (defined using :ref:`reference/orm/domains`): predefined searches. Filters must have one of the following attributes:
``domain``
add the given domain to the current search
``context``
add some context to the current search; use the key ``group_by`` to group
results on the given field name
.. code-block:: xml .. code-block:: xml
<search string="Ideas"> <search string="Ideas">
<filter name="my_ideas" domain="[('inventor_id','=',uid)]"
string="My Ideas" icon="terp-partner"/>
<field name="name"/> <field name="name"/>
<field name="description"/> <field name="description" string="Name and description"
filter_domain="['|', ('name', 'ilike', self), ('description', 'ilike', self)]"/>
<field name="inventor_id"/> <field name="inventor_id"/>
<field name="country_id" widget="selection"/> <field name="country_id" widget="selection"/>
<filter name="my_ideas" string="My Ideas"
domain="[('inventor_id', '=', uid)]"/>
<group string="Group By">
<filter name="group_by_inventor" string="Inventor"
context="{'group_by': 'inventor'}"/>
</group>
</search> </search>
To use a non-default search view in an action, it should be linked using the To use a non-default search view in an action, it should be linked using the
@ -1092,8 +1106,9 @@ default and behave as booleans (they can only be enabled by default).
.. exercise:: Search views .. exercise:: Search views
Add a button to filter the courses for which the current user is the #. Add a button to filter the courses for which the current user is the
responsible in the course search view. Make it selected by default. responsible in the course search view. Make it selected by default.
#. Add a button to group courses by responsible user.
.. only:: solutions .. only:: solutions
@ -1544,8 +1559,8 @@ for editing and merging PO/POT files.
dedicated PO-file editor e.g. POEdit_ and translate the missing dedicated PO-file editor e.g. POEdit_ and translate the missing
terms terms
#. Add ``from openerp import _`` to ``course.py`` and #. In ``models.py``, add an import statement for the function
mark missing strings as translatable ``openerp._`` and mark missing strings as translatable
#. Repeat steps 3-6 #. Repeat steps 3-6

View File

@ -3,8 +3,8 @@
Index: addons/openacademy/models.py Index: addons/openacademy/models.py
=================================================================== ===================================================================
--- addons.orig/openacademy/models.py 2014-08-26 17:26:10.179783221 +0200 --- addons.orig/openacademy/models.py 2014-08-28 13:45:01.987048512 +0200
+++ addons/openacademy/models.py 2014-08-26 17:26:10.171783221 +0200 +++ addons/openacademy/models.py 2014-08-28 13:59:30.387035620 +0200
@@ -1,5 +1,6 @@ @@ -1,5 +1,6 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
@ -21,7 +21,7 @@ Index: addons/openacademy/models.py
@api.one @api.one
@api.depends('seats', 'attendee_ids') @api.depends('seats', 'attendee_ids')
@@ -82,6 +85,26 @@ @@ -82,6 +85,30 @@
} }
@api.one @api.one
@ -31,8 +31,10 @@ Index: addons/openacademy/models.py
+ self.end_date = self.start_date + self.end_date = self.start_date
+ return + return
+ +
+ # Add duration to start_date, but: Monday + 5 days = Saturday, so
+ # subtract one second to get on Friday instead
+ start = fields.Datetime.from_string(self.start_date) + start = fields.Datetime.from_string(self.start_date)
+ duration = timedelta(days=self.duration) + duration = timedelta(days=self.duration, seconds=-1)
+ self.end_date = start + duration + self.end_date = start + duration
+ +
+ @api.one + @api.one
@ -40,9 +42,11 @@ Index: addons/openacademy/models.py
+ if not (self.start_date and self.end_date): + if not (self.start_date and self.end_date):
+ return + return
+ +
+ # Compute the difference between dates, but: Friday - Monday = 4 days,
+ # so add one day to get 5 days instead
+ start_date = fields.Datetime.from_string(self.start_date) + start_date = fields.Datetime.from_string(self.start_date)
+ end_date = fields.Datetime.from_string(self.end_date) + end_date = fields.Datetime.from_string(self.end_date)
+ self.duration = (end_date - start_date).days + self.duration = (end_date - start_date).days + 1
+ +
+ @api.one + @api.one
@api.constrains('instructor_id', 'attendee_ids') @api.constrains('instructor_id', 'attendee_ids')
@ -50,8 +54,8 @@ Index: addons/openacademy/models.py
if self.instructor_id and self.instructor_id in self.attendee_ids: if self.instructor_id and self.instructor_id in self.attendee_ids:
Index: addons/openacademy/views/openacademy.xml Index: addons/openacademy/views/openacademy.xml
=================================================================== ===================================================================
--- addons.orig/openacademy/views/openacademy.xml 2014-08-26 17:26:10.179783221 +0200 --- addons.orig/openacademy/views/openacademy.xml 2014-08-28 13:45:01.987048512 +0200
+++ addons/openacademy/views/openacademy.xml 2014-08-26 17:26:10.171783221 +0200 +++ addons/openacademy/views/openacademy.xml 2014-08-28 13:54:02.000000000 +0200
@@ -125,11 +125,24 @@ @@ -125,11 +125,24 @@
</field> </field>
</record> </record>

View File

@ -3,8 +3,8 @@
Index: addons/openacademy/models.py Index: addons/openacademy/models.py
=================================================================== ===================================================================
--- addons.orig/openacademy/models.py 2014-08-27 14:20:12.363110598 +0200 --- addons.orig/openacademy/models.py 2014-08-28 11:00:44.343194847 +0200
+++ addons/openacademy/models.py 2014-08-27 14:20:12.359110598 +0200 +++ addons/openacademy/models.py 2014-08-28 13:44:32.143048955 +0200
@@ -13,6 +13,20 @@ @@ -13,6 +13,20 @@
session_ids = fields.One2many( session_ids = fields.One2many(
'openacademy.session', 'course_id', string="Sessions") 'openacademy.session', 'course_id', string="Sessions")
@ -14,11 +14,11 @@ Index: addons/openacademy/models.py
+ default = dict(default or {}) + default = dict(default or {})
+ +
+ copied_count = self.search_count( + copied_count = self.search_count(
+ [('name', '=like', "Copy of {}%".format(self.name))]) + [('name', '=like', u"Copy of {}%".format(self.name))])
+ if not copied_count: + if not copied_count:
+ new_name = "Copy of {}".format(self.name) + new_name = u"Copy of {}".format(self.name)
+ else: + else:
+ new_name = "Copy of {} ({})".format(self.name, copied_count) + new_name = u"Copy of {} ({})".format(self.name, copied_count)
+ +
+ default['name'] = new_name + default['name'] = new_name
+ return super(Course, self).copy(default) + return super(Course, self).copy(default)

View File

@ -3,8 +3,8 @@
Index: addons/openacademy/models.py Index: addons/openacademy/models.py
=================================================================== ===================================================================
--- addons.orig/openacademy/models.py 2014-08-26 17:26:12.059783193 +0200 --- addons.orig/openacademy/models.py 2014-08-28 14:21:46.543015785 +0200
+++ addons/openacademy/models.py 2014-08-26 17:26:12.051783193 +0200 +++ addons/openacademy/models.py 2014-08-28 14:21:46.539015785 +0200
@@ -59,6 +59,9 @@ @@ -59,6 +59,9 @@
end_date = fields.Date(string="End Date", store=True, end_date = fields.Date(string="End Date", store=True,
compute='_get_end_date', inverse='_set_end_date') compute='_get_end_date', inverse='_set_end_date')
@ -15,8 +15,8 @@ Index: addons/openacademy/models.py
@api.one @api.one
@api.depends('seats', 'attendee_ids') @api.depends('seats', 'attendee_ids')
def _taken_seats(self): def _taken_seats(self):
@@ -105,6 +108,15 @@ @@ -109,6 +112,15 @@
self.duration = (end_date - start_date).days self.duration = (end_date - start_date).days + 1
@api.one @api.one
+ @api.depends('duration') + @api.depends('duration')
@ -33,9 +33,9 @@ Index: addons/openacademy/models.py
if self.instructor_id and self.instructor_id in self.attendee_ids: if self.instructor_id and self.instructor_id in self.attendee_ids:
Index: addons/openacademy/views/openacademy.xml Index: addons/openacademy/views/openacademy.xml
=================================================================== ===================================================================
--- addons.orig/openacademy/views/openacademy.xml 2014-08-26 17:26:12.059783193 +0200 --- addons.orig/openacademy/views/openacademy.xml 2014-08-28 14:21:46.543015785 +0200
+++ addons/openacademy/views/openacademy.xml 2014-08-26 17:26:12.055783193 +0200 +++ addons/openacademy/views/openacademy.xml 2014-08-28 14:21:46.539015785 +0200
@@ -142,11 +142,24 @@ @@ -145,11 +145,24 @@
</field> </field>
</record> </record>

View File

@ -3,8 +3,8 @@
Index: addons/openacademy/models.py Index: addons/openacademy/models.py
=================================================================== ===================================================================
--- addons.orig/openacademy/models.py 2014-08-26 17:26:13.007783179 +0200 --- addons.orig/openacademy/models.py 2014-08-28 14:21:55.039015659 +0200
+++ addons/openacademy/models.py 2014-08-26 17:26:12.999783179 +0200 +++ addons/openacademy/models.py 2014-08-28 14:21:55.031015659 +0200
@@ -62,6 +62,9 @@ @@ -62,6 +62,9 @@
hours = fields.Float(string="Duration in hours", hours = fields.Float(string="Duration in hours",
compute='_get_hours', inverse='_set_hours') compute='_get_hours', inverse='_set_hours')
@ -15,7 +15,7 @@ Index: addons/openacademy/models.py
@api.one @api.one
@api.depends('seats', 'attendee_ids') @api.depends('seats', 'attendee_ids')
def _taken_seats(self): def _taken_seats(self):
@@ -117,6 +120,11 @@ @@ -121,6 +124,11 @@
self.duration = self.hours / 24 self.duration = self.hours / 24
@api.one @api.one
@ -29,9 +29,9 @@ Index: addons/openacademy/models.py
if self.instructor_id and self.instructor_id in self.attendee_ids: if self.instructor_id and self.instructor_id in self.attendee_ids:
Index: addons/openacademy/views/openacademy.xml Index: addons/openacademy/views/openacademy.xml
=================================================================== ===================================================================
--- addons.orig/openacademy/views/openacademy.xml 2014-08-26 17:26:13.007783179 +0200 --- addons.orig/openacademy/views/openacademy.xml 2014-08-28 14:21:55.039015659 +0200
+++ addons/openacademy/views/openacademy.xml 2014-08-26 17:26:12.999783179 +0200 +++ addons/openacademy/views/openacademy.xml 2014-08-28 14:21:55.031015659 +0200
@@ -155,11 +155,22 @@ @@ -158,11 +158,22 @@
</field> </field>
</record> </record>

View File

@ -3,8 +3,8 @@
Index: addons/openacademy/models.py Index: addons/openacademy/models.py
=================================================================== ===================================================================
--- addons.orig/openacademy/models.py 2014-08-26 17:26:13.919783165 +0200 --- addons.orig/openacademy/models.py 2014-08-28 14:21:58.627015606 +0200
+++ addons/openacademy/models.py 2014-08-26 17:26:13.915783165 +0200 +++ addons/openacademy/models.py 2014-08-28 14:21:58.623015606 +0200
@@ -47,6 +47,7 @@ @@ -47,6 +47,7 @@
duration = fields.Float(digits=(6, 2), help="Duration in days") duration = fields.Float(digits=(6, 2), help="Duration in days")
seats = fields.Integer(string="Number of seats") seats = fields.Integer(string="Number of seats")
@ -15,9 +15,9 @@ Index: addons/openacademy/models.py
domain=['|', ('instructor', '=', True), domain=['|', ('instructor', '=', True),
Index: addons/openacademy/views/openacademy.xml Index: addons/openacademy/views/openacademy.xml
=================================================================== ===================================================================
--- addons.orig/openacademy/views/openacademy.xml 2014-08-26 17:26:13.919783165 +0200 --- addons.orig/openacademy/views/openacademy.xml 2014-08-28 14:21:58.627015606 +0200
+++ addons/openacademy/views/openacademy.xml 2014-08-26 17:26:13.915783165 +0200 +++ addons/openacademy/views/openacademy.xml 2014-08-28 14:21:58.623015606 +0200
@@ -166,11 +166,57 @@ @@ -169,11 +169,57 @@
</field> </field>
</record> </record>

View File

@ -3,21 +3,22 @@
Index: addons/openacademy/views/openacademy.xml Index: addons/openacademy/views/openacademy.xml
=================================================================== ===================================================================
--- addons.orig/openacademy/views/openacademy.xml 2014-08-26 17:26:11.107783207 +0200 --- addons.orig/openacademy/views/openacademy.xml 2014-08-28 14:01:45.299033618 +0200
+++ addons/openacademy/views/openacademy.xml 2014-08-26 17:26:11.099783207 +0200 +++ addons/openacademy/views/openacademy.xml 2014-08-28 14:18:58.847018275 +0200
@@ -33,7 +33,10 @@ @@ -36,6 +36,12 @@
<field name="name">course.search</field> <search>
<field name="model">openacademy.course</field>
<field name="arch" type="xml">
- <search>
+ <search string="Session Search">
+ <filter string="My Courses" name="my_courses"
+ domain="[('responsible_id', '=', uid)]"
+ help="My own sessions"/>
<field name="name"/> <field name="name"/>
<field name="description"/> <field name="description"/>
+ <filter name="my_courses" string="My Courses"
+ domain="[('responsible_id', '=', uid)]"/>
+ <group string="Group By">
+ <filter name="by_responsible" string="Responsible"
+ context="{'group_by': 'responsible_id'}"/>
+ </group>
</search> </search>
@@ -62,6 +65,7 @@ </field>
</record>
@@ -62,6 +68,7 @@
<field name="res_model">openacademy.course</field> <field name="res_model">openacademy.course</field>
<field name="view_type">form</field> <field name="view_type">form</field>
<field name="view_mode">tree,form</field> <field name="view_mode">tree,form</field>

View File

@ -3,8 +3,8 @@
Index: addons/openacademy/models.py Index: addons/openacademy/models.py
=================================================================== ===================================================================
--- addons.orig/openacademy/models.py 2014-08-26 17:26:14.907783150 +0200 --- addons.orig/openacademy/models.py 2014-08-28 14:22:01.371015565 +0200
+++ addons/openacademy/models.py 2014-08-26 17:26:14.899783151 +0200 +++ addons/openacademy/models.py 2014-08-28 14:22:01.367015565 +0200
@@ -66,6 +66,24 @@ @@ -66,6 +66,24 @@
attendees_count = fields.Integer( attendees_count = fields.Integer(
string="Attendees count", compute='_get_attendees_count', store=True) string="Attendees count", compute='_get_attendees_count', store=True)
@ -32,9 +32,9 @@ Index: addons/openacademy/models.py
def _taken_seats(self): def _taken_seats(self):
Index: addons/openacademy/views/openacademy.xml Index: addons/openacademy/views/openacademy.xml
=================================================================== ===================================================================
--- addons.orig/openacademy/views/openacademy.xml 2014-08-26 17:26:14.907783150 +0200 --- addons.orig/openacademy/views/openacademy.xml 2014-08-28 14:22:01.371015565 +0200
+++ addons/openacademy/views/openacademy.xml 2014-08-26 17:26:14.899783151 +0200 +++ addons/openacademy/views/openacademy.xml 2014-08-28 14:22:01.367015565 +0200
@@ -93,6 +93,19 @@ @@ -96,6 +96,19 @@
<field name="model">openacademy.session</field> <field name="model">openacademy.session</field>
<field name="arch" type="xml"> <field name="arch" type="xml">
<form string="Session Form"> <form string="Session Form">

View File

@ -3,8 +3,8 @@
Index: addons/openacademy/__openerp__.py Index: addons/openacademy/__openerp__.py
=================================================================== ===================================================================
--- addons.orig/openacademy/__openerp__.py 2014-08-26 17:26:15.771783138 +0200 --- addons.orig/openacademy/__openerp__.py 2014-08-28 14:22:04.135015524 +0200
+++ addons/openacademy/__openerp__.py 2014-08-26 17:26:15.763783138 +0200 +++ addons/openacademy/__openerp__.py 2014-08-28 14:22:04.131015524 +0200
@@ -29,6 +29,7 @@ @@ -29,6 +29,7 @@
'templates.xml', 'templates.xml',
'views/openacademy.xml', 'views/openacademy.xml',
@ -15,8 +15,8 @@ Index: addons/openacademy/__openerp__.py
'demo': [ 'demo': [
Index: addons/openacademy/models.py Index: addons/openacademy/models.py
=================================================================== ===================================================================
--- addons.orig/openacademy/models.py 2014-08-26 17:26:15.771783138 +0200 --- addons.orig/openacademy/models.py 2014-08-28 14:22:04.135015524 +0200
+++ addons/openacademy/models.py 2014-08-26 17:26:15.763783138 +0200 +++ addons/openacademy/models.py 2014-08-28 14:22:04.131015524 +0200
@@ -70,7 +70,7 @@ @@ -70,7 +70,7 @@
('draft', "Draft"), ('draft', "Draft"),
('confirmed', "Confirmed"), ('confirmed', "Confirmed"),
@ -28,9 +28,9 @@ Index: addons/openacademy/models.py
def action_draft(self): def action_draft(self):
Index: addons/openacademy/views/openacademy.xml Index: addons/openacademy/views/openacademy.xml
=================================================================== ===================================================================
--- addons.orig/openacademy/views/openacademy.xml 2014-08-26 17:26:15.771783138 +0200 --- addons.orig/openacademy/views/openacademy.xml 2014-08-28 14:22:04.135015524 +0200
+++ addons/openacademy/views/openacademy.xml 2014-08-26 17:26:15.763783138 +0200 +++ addons/openacademy/views/openacademy.xml 2014-08-28 14:22:04.131015524 +0200
@@ -94,13 +94,13 @@ @@ -97,13 +97,13 @@
<field name="arch" type="xml"> <field name="arch" type="xml">
<form string="Session Form"> <form string="Session Form">
<header> <header>
@ -50,7 +50,7 @@ Index: addons/openacademy/views/openacademy.xml
Index: addons/openacademy/views/session_workflow.xml Index: addons/openacademy/views/session_workflow.xml
=================================================================== ===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ addons/openacademy/views/session_workflow.xml 2014-08-26 17:26:15.763783138 +0200 +++ addons/openacademy/views/session_workflow.xml 2014-08-28 14:22:04.131015524 +0200
@@ -0,0 +1,50 @@ @@ -0,0 +1,50 @@
+<openerp> +<openerp>
+ <data> + <data>

View File

@ -1,7 +1,7 @@
Index: addons/openacademy/models.py Index: addons/openacademy/models.py
=================================================================== ===================================================================
--- addons.orig/openacademy/models.py 2014-08-26 17:26:19.919783076 +0200 --- addons.orig/openacademy/models.py 2014-08-28 14:02:42.203032773 +0200
+++ addons/openacademy/models.py 2014-08-26 17:26:19.915783076 +0200 +++ addons/openacademy/models.py 2014-08-28 14:06:54.871029022 +0200
@@ -1,7 +1,7 @@ @@ -1,7 +1,7 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
@ -11,6 +11,21 @@ Index: addons/openacademy/models.py
class Course(models.Model): class Course(models.Model):
_name = 'openacademy.course' _name = 'openacademy.course'
@@ -19,11 +19,11 @@
default = dict(default or {})
copied_count = self.search_count(
- [('name', '=like', u"Copy of {}%".format(self.name))])
+ [('name', '=like', _(u"Copy of {}%").format(self.name))])
if not copied_count:
- new_name = u"Copy of {}".format(self.name)
+ new_name = _(u"Copy of {}").format(self.name)
else:
- new_name = u"Copy of {} ({})".format(self.name, copied_count)
+ new_name = _(u"Copy of {} ({})").format(self.name, copied_count)
default['name'] = new_name
return super(Course, self).copy(default)
@@ -97,15 +97,15 @@ @@ -97,15 +97,15 @@
if self.seats < 0: if self.seats < 0:
return { return {
@ -31,7 +46,7 @@ Index: addons/openacademy/models.py
}, },
} }
@@ -147,4 +147,4 @@ @@ -151,4 +151,4 @@
@api.constrains('instructor_id', 'attendee_ids') @api.constrains('instructor_id', 'attendee_ids')
def _check_instructor_not_in_attendees(self): def _check_instructor_not_in_attendees(self):
if self.instructor_id and self.instructor_id in self.attendee_ids: if self.instructor_id and self.instructor_id in self.attendee_ids:

View File

@ -1,8 +1,8 @@
Index: addons/openacademy/views/openacademy.xml Index: addons/openacademy/views/openacademy.xml
=================================================================== ===================================================================
--- addons.orig/openacademy/views/openacademy.xml 2014-08-27 15:01:00.355074258 +0200 --- addons.orig/openacademy/views/openacademy.xml 2014-08-28 14:34:19.255004611 +0200
+++ addons/openacademy/views/openacademy.xml 2014-08-27 15:04:45.891070910 +0200 +++ addons/openacademy/views/openacademy.xml 2014-08-28 14:34:19.251004612 +0200
@@ -245,6 +245,12 @@ @@ -248,6 +248,12 @@
<field name="session_id"/> <field name="session_id"/>
<field name="attendee_ids"/> <field name="attendee_ids"/>
</group> </group>
@ -17,8 +17,8 @@ Index: addons/openacademy/views/openacademy.xml
</record> </record>
Index: addons/openacademy/wizard.py Index: addons/openacademy/wizard.py
=================================================================== ===================================================================
--- addons.orig/openacademy/wizard.py 2014-08-27 14:43:02.323090261 +0200 --- addons.orig/openacademy/wizard.py 2014-08-28 14:34:19.255004611 +0200
+++ addons/openacademy/wizard.py 2014-08-27 15:05:28.407070278 +0200 +++ addons/openacademy/wizard.py 2014-08-28 14:34:19.251004612 +0200
@@ -11,3 +11,8 @@ @@ -11,3 +11,8 @@
session_id = fields.Many2one('openacademy.session', session_id = fields.Many2one('openacademy.session',
string="Session", required=True, default=_default_session) string="Session", required=True, default=_default_session)

View File

@ -1,7 +1,7 @@
Index: addons/openacademy/wizard.py Index: addons/openacademy/wizard.py
=================================================================== ===================================================================
--- addons.orig/openacademy/wizard.py 2014-08-27 14:24:39.195106637 +0200 --- addons.orig/openacademy/wizard.py 2014-08-28 14:34:07.879004780 +0200
+++ addons/openacademy/wizard.py 2014-08-27 14:43:02.323090261 +0200 +++ addons/openacademy/wizard.py 2014-08-28 14:34:07.871004780 +0200
@@ -5,6 +5,9 @@ @@ -5,6 +5,9 @@
class Wizard(models.TransientModel): class Wizard(models.TransientModel):
_name = 'openacademy.wizard' _name = 'openacademy.wizard'
@ -15,9 +15,9 @@ Index: addons/openacademy/wizard.py
attendee_ids = fields.Many2many('res.partner', string="Attendees") attendee_ids = fields.Many2many('res.partner', string="Attendees")
Index: addons/openacademy/views/openacademy.xml Index: addons/openacademy/views/openacademy.xml
=================================================================== ===================================================================
--- addons.orig/openacademy/views/openacademy.xml 2014-08-27 14:20:50.071110038 +0200 --- addons.orig/openacademy/views/openacademy.xml 2014-08-28 14:34:07.879004780 +0200
+++ addons/openacademy/views/openacademy.xml 2014-08-27 15:01:00.355074258 +0200 +++ addons/openacademy/views/openacademy.xml 2014-08-28 14:34:07.871004780 +0200
@@ -235,5 +235,26 @@ @@ -238,5 +238,26 @@
<menuitem id="session_menu" name="Sessions" <menuitem id="session_menu" name="Sessions"
parent="openacademy_menu" parent="openacademy_menu"
action="session_list_action"/> action="session_list_action"/>

View File

@ -1,8 +1,8 @@
Index: addons/openacademy/views/openacademy.xml Index: addons/openacademy/views/openacademy.xml
=================================================================== ===================================================================
--- addons.orig/openacademy/views/openacademy.xml 2014-08-27 15:04:45.891070910 +0200 --- addons.orig/openacademy/views/openacademy.xml 2014-08-28 14:34:28.583004473 +0200
+++ addons/openacademy/views/openacademy.xml 2014-08-27 15:27:13.919050898 +0200 +++ addons/openacademy/views/openacademy.xml 2014-08-28 14:34:28.579004473 +0200
@@ -242,7 +242,7 @@ @@ -245,7 +245,7 @@
<field name="arch" type="xml"> <field name="arch" type="xml">
<form string="Add Attendees"> <form string="Add Attendees">
<group> <group>
@ -13,8 +13,8 @@ Index: addons/openacademy/views/openacademy.xml
<footer> <footer>
Index: addons/openacademy/wizard.py Index: addons/openacademy/wizard.py
=================================================================== ===================================================================
--- addons.orig/openacademy/wizard.py 2014-08-27 15:05:28.407070278 +0200 --- addons.orig/openacademy/wizard.py 2014-08-28 14:34:28.583004473 +0200
+++ addons/openacademy/wizard.py 2014-08-27 15:27:07.119050999 +0200 +++ addons/openacademy/wizard.py 2014-08-28 14:34:28.579004473 +0200
@@ -5,14 +5,15 @@ @@ -5,14 +5,15 @@
class Wizard(models.TransientModel): class Wizard(models.TransientModel):
_name = 'openacademy.wizard' _name = 'openacademy.wizard'