[ADD]GOLEM Activity Sessions management on smart button, own tree, form , filters

This commit is contained in:
Fabien Bourgeois 2016-06-27 17:56:47 +02:00
parent 03ed5e1719
commit b2a1e86e67
5 changed files with 251 additions and 0 deletions

View File

@ -0,0 +1,18 @@
# -*- coding: utf-8 -*-
# Copyright 2016 Fabien Bourgeois <fabien@yaltik.com>
#
# 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 <http://www.gnu.org/licenses/>.
from . import models

View File

@ -0,0 +1,30 @@
# -*- coding: utf-8 -*-
# Copyright 2016 Fabien Bourgeois <fabien@yaltik.com>
#
# 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 <http://www.gnu.org/licenses/>.
{
'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']
}

View File

@ -0,0 +1,18 @@
# -*- coding: utf-8 -*-
# Copyright 2016 Fabien Bourgeois <fabien@yaltik.com>
#
# 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 <http://www.gnu.org/licenses/>.
from . import golem_activity_session

View File

@ -0,0 +1,80 @@
# -*- coding: utf-8 -*-
# copyright 2016 fabien bourgeois <fabien@yaltik.com>
#
# 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 <http://www.gnu.org/licenses/>.
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.'))

View File

@ -0,0 +1,105 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2016 Fabien Bourgeois <fabien@yaltik.com>
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 <http://www.gnu.org/licenses/>.
-->
<openerp>
<data>
<!-- Form -->
<record model="ir.ui.view" id="session_smart">
<field name="name">Add sessions management into smart button</field>
<field name="model">golem.activity</field>
<field name="inherit_id" ref="golem_activity.view_form" />
<field name="arch" type="xml">
<div name="buttons" position="inside">
<button class="oe_inline oe_stat_button" type="object"
name="button_session" icon="fa-list">
<field string="Week sessions" name="session_count" widget="statinfo" />
</button>
</div>
</field>
</record>
<record id="view_form" model="ir.ui.view">
<field name="name">GOLEM Activity Sessions Form</field>
<field name="model">golem.activity.session</field>
<field name="arch" type="xml">
<form>
<sheet>
<group string="Activity Session">
<group>
<field name="activity_id" />
<field name="animator_id" />
</group>
<group>
<field name="is_recurrent" readonly="True" />
<field name="weekday" />
<field name="hour_start" widget="float_time" />
<field name="hour_end" widget="float_time" />
</group>
</group>
<group>
<field name="note" />
</group>
</sheet>
</form>
</field>
</record>
<!-- Tree -->
<record id="family_tree" model="ir.ui.view">
<field name="name">Session list</field>
<field name="model">golem.activity.session</field>
<field name="arch" type="xml">
<tree>
<field name="activity_id" />
<field name="animator_id" />
<field name="weekday" />
<field name="hour_start" />
<field name="hour_end" />
</tree>
</field>
</record>
<!-- Searches -->
<record id="searches" model="ir.ui.view">
<field name="name">GOLEM Activity Sessions Searches</field>
<field name="model">golem.activity.session</field>
<field name="arch" type="xml">
<search>
<field name="activity_id" widget="many2one" />
<field name="animator_id" widget="many2one" />
<group string="Group By">
<filter name="group_weekday" string="By weekday"
context="{'group_by': 'weekday'}" />
<filter name="group_animator" string="By animator"
context="{'group_by': 'animator_id'}" />
</group>
</search>
</field>
</record>
<!-- Actions -->
<act_window id="session_action_list" name="GOLEM Activities Sessions List"
res_model="golem.activity.session" view_mode="tree,form" />
<!-- Menus -->
<menuitem id="session_menu_list" name="Activities sessions"
parent="golem_activity.activity_menu" action="session_action_list"
sequence="10" />
</data>
</openerp>