diff --git a/golem_season/__init__.py b/golem_season/__init__.py new file mode 100644 index 0000000..2fca3d2 --- /dev/null +++ b/golem_season/__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_season/__openerp__.py b/golem_season/__openerp__.py new file mode 100644 index 0000000..14c2f50 --- /dev/null +++ b/golem_season/__openerp__.py @@ -0,0 +1,32 @@ +# -*- 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 seasons', + 'summary': 'GOLEM non-profit seasons management', + 'description': ''' + Non-profit french MJC seasons management with dates ranges + ''', + 'version': '0.1', + 'category': 'Non-profit management', + 'author': 'Fabien Bourgeois', + 'license': 'AGPL-3', + 'application': False, + 'installable': True, + 'depends': ['membership'], + 'data': ['views/golem_season_view.xml'] +} diff --git a/golem_season/models/__init__.py b/golem_season/models/__init__.py new file mode 100644 index 0000000..c7a55cc --- /dev/null +++ b/golem_season/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_season diff --git a/golem_season/models/golem_season.py b/golem_season/models/golem_season.py new file mode 100644 index 0000000..a6cf4bd --- /dev/null +++ b/golem_season/models/golem_season.py @@ -0,0 +1,54 @@ +# -*- 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 GolemSeason(models.Model): + """ GOLEM Season """ + _name = 'golem.season' + _description = 'GOLEM Season' + _order = 'date_start desc' + + name = fields.Char('Season name') + date_start = fields.Date('Period start') + date_end = fields.Date('Period end') + + @api.constrains('date_start', 'date_end') + def _check_period(self): + """ Check if end date if after start date and if there is no conflict + with existing periods """ + for season in self: + if season.date_start > season.date_end: + raise models.ValidationError(_('Start of the period cannot be ' + 'after end of the period.')) + 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)) + raise models.ValidationError(msg) + if s.date_start < season.date_end < s.date_end: + msg = _('End of the period is in range of an ' + 'existing period {}'.format(s.name)) + raise models.ValidationError(msg) + if season.date_start < s.date_start < season.date_end: + msg = _('Period {} cannot be included into current ' + 'period'.format(s.name)) + raise models.ValidationError(msg) diff --git a/golem_season/views/golem_season_view.xml b/golem_season/views/golem_season_view.xml new file mode 100644 index 0000000..14a9f65 --- /dev/null +++ b/golem_season/views/golem_season_view.xml @@ -0,0 +1,73 @@ + + + + + + + + + + GOLEM Season Form + golem.season + +
+ + + + + + + +
+
+
+ + + + GOLEM Seasons + golem.season + + + + + + + + + + + + GOLEM Seasons Filters + golem.season + + + + + + + + + + + + +
+