diff --git a/golem_member/models/golem_member.py b/golem_member/models/golem_member.py index d4069a0..a7560c6 100644 --- a/golem_member/models/golem_member.py +++ b/golem_member/models/golem_member.py @@ -15,7 +15,7 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -from openerp import models, fields +from openerp import models, fields, api class ResPartner(models.Model): @@ -41,3 +41,16 @@ class GolemMember(models.Model): pictures_agreement = fields.Boolean('Pictures agreement?') opt_out_sms = fields.Boolean('Out of SMS campaigns') season_ids = fields.Many2many('golem.season', string='Seasons') + is_current = fields.Boolean('Current user?', store=True, default=False, + compute='_compute_is_current') + + @api.depends('season_ids') + def _compute_is_current(self): + """ Checks if member is active for current season """ + today = fields.Date.context_today(self) + for member in self: + is_current = False + for s in member.season_ids: + if s.date_start <= today <= s.date_end: + is_current = True + member.is_current = is_current diff --git a/golem_member/views/golem_member_view.xml b/golem_member/views/golem_member_view.xml index 75b6131..90d7401 100644 --- a/golem_member/views/golem_member_view.xml +++ b/golem_member/views/golem_member_view.xml @@ -131,6 +131,8 @@ along with this program. If not, see . + diff --git a/golem_season/__openerp__.py b/golem_season/__openerp__.py index 14c2f50..8c9383c 100644 --- a/golem_season/__openerp__.py +++ b/golem_season/__openerp__.py @@ -27,6 +27,6 @@ 'license': 'AGPL-3', 'application': False, 'installable': True, - 'depends': ['membership'], + 'depends': ['golem_member'], 'data': ['views/golem_season_view.xml'] } diff --git a/golem_season/models/golem_season.py b/golem_season/models/golem_season.py index a6cf4bd..d1796c9 100644 --- a/golem_season/models/golem_season.py +++ b/golem_season/models/golem_season.py @@ -39,7 +39,6 @@ class GolemSeason(models.Model): else: seasons = self.env['golem.season'].search([]) for s in seasons: - print s.name if s.date_start < season.date_start < s.date_end: msg = _('Start of the period is in range of an ' 'existing period {}'.format(s.name)) @@ -52,3 +51,13 @@ class GolemSeason(models.Model): msg = _('Period {} cannot be included into current ' 'period'.format(s.name)) raise models.ValidationError(msg) + + @api.multi + def write(self, values): + """ Extends write to recomputes all current members in case of date + changes """ + date_start = values.get('date_start') + date_end = values.get('date_end') + if date_start or date_end: + self.env['golem.member']._compute_is_current() + return super(GolemSeason, self).write(values)