diff --git a/golem_activity_session/__init__.py b/golem_activity_session/__init__.py new file mode 100644 index 0000000..2fca3d2 --- /dev/null +++ b/golem_activity_session/__init__.py @@ -0,0 +1,18 @@ +# -*- coding: utf-8 -*- + +# Copyright 2016 Fabien Bourgeois +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +from . import models diff --git a/golem_activity_session/__openerp__.py b/golem_activity_session/__openerp__.py new file mode 100644 index 0000000..cf04583 --- /dev/null +++ b/golem_activity_session/__openerp__.py @@ -0,0 +1,30 @@ +# -*- coding: utf-8 -*- + +# Copyright 2016 Fabien Bourgeois +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +{ + 'name': 'GOLEM Activity Sessions', + 'summary': 'GOLEM Activities Session management', + 'description': ''' Non-profit french MJC activies session management ''', + 'version': '0.1', + 'category': 'Non-profit management', + 'author': 'Fabien Bourgeois', + 'license': 'AGPL-3', + 'application': False, + 'installable': True, + 'depends': ['golem_activity'], + 'data': ['views/golem_activity_view.xml'] +} diff --git a/golem_activity_session/models/__init__.py b/golem_activity_session/models/__init__.py new file mode 100644 index 0000000..1bba04c --- /dev/null +++ b/golem_activity_session/models/__init__.py @@ -0,0 +1,18 @@ +# -*- coding: utf-8 -*- + +# Copyright 2016 Fabien Bourgeois +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +from . import golem_activity_session diff --git a/golem_activity_session/models/golem_activity_session.py b/golem_activity_session/models/golem_activity_session.py new file mode 100644 index 0000000..46c71fa --- /dev/null +++ b/golem_activity_session/models/golem_activity_session.py @@ -0,0 +1,80 @@ +# -*- coding: utf-8 -*- + +# copyright 2016 fabien bourgeois +# +# this program is free software: you can redistribute it and/or modify +# it under the terms of the gnu affero general public license as +# published by the free software foundation, either version 3 of the +# license, or (at your option) any later version. +# +# this program is distributed in the hope that it will be useful, +# but without any warranty; without even the implied warranty of +# merchantability or fitness for a particular purpose. see the +# gnu affero general public license for more details. +# +# 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, api, _ + + +class GolemActivity(models.Model): + _inherit = 'golem.activity' + + session_count = fields.Integer('Sessions', + compute='_compute_session_count') + + @api.one + def _compute_session_count(self): + dmn = [('activity_id', '=', self.id)] + cnt = self.env['golem.activity.session'].search_count(dmn) + self.session_count = cnt + + @api.multi + def button_session(self): + self.ensure_one() + return {'name': _('Activity Sessions'), + 'type': 'ir.actions.act_window', + 'res_model': 'golem.activity.session', + 'view_mode': 'tree,form', + 'context': {'default_activity_id': self.id, + 'default_animator_id': self.animator_id.id}, + 'domain': [('activity_id', '=', self.id)]} + + +class GolemActivitySession(models.Model): + _name = 'golem.activity.session' + _description = 'GOLEM Activities Sessions' + + name = fields.Char('Name', compute='_compute_name') + + @api.depends('activity_id', 'weekday') + def _compute_name(self): + for s in self: + s.name = s.activity_id.activity_name + + # TODO: reucrrence 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, + help="Work in progress") + weekday = fields.Selection([('mon', _('Monday')), + ('tue', _('Tuesday')), + ('wed', _('Wednesday')), + ('thu', _('Thursday')), + ('fri', _('Friday')), + ('sat', _('Saturday')), + ('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): + """ Check if end hour if after start hour """ + for s in self: + if s.hour_start > s.hour_end: + raise models.ValidationError(_('Start of the period cannot be ' + 'after end of the period.')) diff --git a/golem_activity_session/views/golem_activity_view.xml b/golem_activity_session/views/golem_activity_view.xml new file mode 100644 index 0000000..fa35a06 --- /dev/null +++ b/golem_activity_session/views/golem_activity_view.xml @@ -0,0 +1,105 @@ + + + + + + + + Add sessions management into smart button + golem.activity + + +
+ +
+
+
+ + + GOLEM Activity Sessions Form + golem.activity.session + +
+ + + + + + + + + + + + + + + + + +
+
+
+ + + + Session list + golem.activity.session + + + + + + + + + + + + + + GOLEM Activity Sessions Searches + golem.activity.session + + + + + + + + + + + + + + + + + + +
+