diff --git a/golem_activity/models/golem_activity.py b/golem_activity/models/golem_activity.py
index f398fa69..069d68d3 100644
--- a/golem_activity/models/golem_activity.py
+++ b/golem_activity/models/golem_activity.py
@@ -36,30 +36,6 @@ class GolemActivity(models.Model):
required=True)
animator_id = fields.Many2one('res.partner', string="Animator",
domain=[('is_company', '=', False)])
- places = fields.Integer('Places', default=0)
- is_overbooked = fields.Boolean('Allow overbook?', default=False)
- places_overbooked = fields.Integer('Places with overbook', default=0)
-
- @api.onchange('is_overbooked', 'places')
- def onchange_is_overbooked(self):
- for a in self:
- if a.places and a.is_overbooked:
- if not a.places_overbooked or (a.places_overbooked < a.places):
- a.places_overbooked = a.places + 1
-
- @api.constrains('places', 'places_overbooked')
- def _check_places(self):
- """ Check integers are signed and overbooked to be superior than
- normal places """
- for v in self:
- for f in ['places', 'places_overbooked']:
- if v[f] < 0:
- emsg = _('Number of places cannot be negative.')
- raise models.ValidationError(emsg)
- if v.is_overbooked and (v.places_overbooked <= v.places):
- emsg = _('Overbooked places cannot be inferior than places')
- raise models.ValidationError(emsg)
-
date_start = fields.Date('Start date')
date_end = fields.Date('End date')
diff --git a/golem_activity/views/golem_activity_view.xml b/golem_activity/views/golem_activity_view.xml
index 07d9cd8a..1d249743 100644
--- a/golem_activity/views/golem_activity_view.xml
+++ b/golem_activity/views/golem_activity_view.xml
@@ -42,14 +42,10 @@ along with this program. If not, see .
-
-
-
-
+
diff --git a/golem_activity_session/__openerp__.py b/golem_activity_session/__openerp__.py
index cf04583e..9b01689f 100644
--- a/golem_activity_session/__openerp__.py
+++ b/golem_activity_session/__openerp__.py
@@ -26,5 +26,5 @@
'application': False,
'installable': True,
'depends': ['golem_activity'],
- 'data': ['views/golem_activity_view.xml']
+ 'data': ['views/golem_activity_view.xml', 'views/golem_member_view.xml']
}
diff --git a/golem_activity_session/models/golem_activity_session.py b/golem_activity_session/models/golem_activity_session.py
index 46c71fa4..011fbbbc 100644
--- a/golem_activity_session/models/golem_activity_session.py
+++ b/golem_activity_session/models/golem_activity_session.py
@@ -18,6 +18,13 @@
from openerp import models, fields, api, _
+class GolemMember(models.Model):
+ _inherit = 'golem.member'
+
+ activity_session_ids = fields.Many2many('golem.activity.session',
+ string='Activities')
+
+
class GolemActivity(models.Model):
_inherit = 'golem.activity'
@@ -53,12 +60,12 @@ class GolemActivitySession(models.Model):
for s in self:
s.name = s.activity_id.activity_name
- # TODO: reucrrence etc... to link with calendar.event
+ member_ids = fields.Many2many('golem.member', string='Members')
+ # TODO: recurrence etc... to link with calendar.event
activity_id = fields.Many2one('golem.activity', string='Activité',
required=True)
- animator_id = fields.Many2one('res.partner', string='Animator',
- required=True)
- is_recurrent = fields.Boolean('Is recurrent ?', default=False,
+ animator_id = fields.Many2one('res.partner', string='Animator')
+ is_recurrent = fields.Boolean('Is recurrent ?', default=True,
help="Work in progress")
weekday = fields.Selection([('mon', _('Monday')),
('tue', _('Tuesday')),
@@ -69,7 +76,6 @@ class GolemActivitySession(models.Model):
('sun', _('Sunday'))])
hour_start = fields.Float('Start time')
hour_end = fields.Float('End time')
- note = fields.Text('Note')
@api.constrains('hour_start', 'hour_end')
def _check_period(self):
@@ -78,3 +84,48 @@ class GolemActivitySession(models.Model):
if s.hour_start > s.hour_end:
raise models.ValidationError(_('Start of the period cannot be '
'after end of the period.'))
+
+ places = fields.Integer('Places', default=0)
+ is_overbooked = fields.Boolean('Allow overbook?', default=False)
+ places_overbooked = fields.Integer('Places with overbook', default=0)
+ places_remain = fields.Integer('Remaining places', store=True,
+ compute='_compute_places_remain')
+
+ @api.depends('places', 'is_overbooked', 'places_overbooked', 'member_ids')
+ def _compute_places_remain(self):
+ for s in self:
+ used = len(s.member_ids)
+ if not s.is_overbooked:
+ s.places_remain = s.places - used
+ else:
+ s.places_remain = s.places_overbooked - used
+
+ @api.constrains('places_remain')
+ def _check_remaining_places(self):
+ """ Forbid inscription when there is no more place """
+ for s in self:
+ if s.places_remain < 0:
+ emsg = _('Sorry, there is no more place !')
+ raise models.ValidationError(emsg)
+
+ @api.onchange('is_overbooked', 'places')
+ def onchange_is_overbooked(self):
+ for s in self:
+ if s.places and s.is_overbooked:
+ if not s.places_overbooked or (s.places_overbooked < s.places):
+ s.places_overbooked = s.places + 1
+
+ @api.constrains('places', 'places_overbooked')
+ def _check_places(self):
+ """ Check integers are signed and overbooked to be superior than
+ normal places """
+ for v in self:
+ for f in ['places', 'places_overbooked']:
+ if v[f] < 0:
+ emsg = _('Number of places cannot be negative.')
+ raise models.ValidationError(emsg)
+ if v.is_overbooked and (v.places_overbooked <= v.places):
+ emsg = _('Overbooked places cannot be inferior than places')
+ raise models.ValidationError(emsg)
+
+ note = fields.Text('Note')
diff --git a/golem_activity_session/views/golem_activity_view.xml b/golem_activity_session/views/golem_activity_view.xml
index fa35a06d..0b286347 100644
--- a/golem_activity_session/views/golem_activity_view.xml
+++ b/golem_activity_session/views/golem_activity_view.xml
@@ -43,6 +43,10 @@ along with this program. If not, see .
+
+
+
@@ -51,16 +55,24 @@ along with this program. If not, see .
-
-
-
+
+
+
+
+
+
+
+
+
+
+
-
+
Session list
golem.activity.session
diff --git a/golem_activity_session/views/golem_member_view.xml b/golem_activity_session/views/golem_member_view.xml
new file mode 100644
index 00000000..3d882fc2
--- /dev/null
+++ b/golem_activity_session/views/golem_member_view.xml
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+ Add sessions inscriptions to member form
+ golem.member
+
+
+
+
+
+
+
+
+
+
+
+