diff --git a/golem_precreation_member/__manifest__.py b/golem_precreation_member/__manifest__.py
index 140181c..19944c7 100644
--- a/golem_precreation_member/__manifest__.py
+++ b/golem_precreation_member/__manifest__.py
@@ -27,6 +27,7 @@
'installable': True,
'depends': ['golem_member', 'golem_family'],
'data': ['views/golem_member_views.xml',
+ 'views/partner_views.xml',
'wizard/golem_precreation_member_request_wizard_views.xml',
'wizard/golem_precreation_member_result_wizard_views.xml']
}
diff --git a/golem_precreation_member/models/__init__.py b/golem_precreation_member/models/__init__.py
index d74b40a..008167b 100644
--- a/golem_precreation_member/models/__init__.py
+++ b/golem_precreation_member/models/__init__.py
@@ -16,4 +16,4 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see .
-from . import golem_member
+from . import golem_member, res_partner
diff --git a/golem_precreation_member/models/golem_member.py b/golem_precreation_member/models/golem_member.py
index 20347b1..872320e 100644
--- a/golem_precreation_member/models/golem_member.py
+++ b/golem_precreation_member/models/golem_member.py
@@ -31,11 +31,14 @@ class GolemMember(models.Model):
def precreation_search(self):
""" Precreation member search """
self.ensure_one()
- return {'name' : _('Please enter member searched'),
- 'type' : 'ir.actions.act_window',
- 'res_model' : 'golem.precreation.member.request.wizard',
- 'view_mode': 'form',
- 'target': 'new'}
+ return {
+ 'name' : _('Please enter member searched'),
+ 'type' : 'ir.actions.act_window',
+ 'res_model' : 'golem.precreation.member.request.wizard',
+ 'context' : {'default_is_member' : True},
+ 'view_mode': 'form',
+ 'target': 'new'
+ }
@api.multi
def open_line(self):
""" open member form """
diff --git a/golem_precreation_member/models/res_partner.py b/golem_precreation_member/models/res_partner.py
new file mode 100644
index 0000000..22f4cb9
--- /dev/null
+++ b/golem_precreation_member/models/res_partner.py
@@ -0,0 +1,53 @@
+# -*- coding: utf-8 -*-
+
+# Copyright 2018 Youssef El Ouahby
+# Copyright 2018 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 .
+
+""" GOLEM Contact """
+
+
+from odoo import models, api, _
+
+
+class GolemMember(models.Model):
+ """ Res Partner extention """
+ _inherit = 'res.partner'
+
+ @api.multi
+ def precreation_search(self):
+ """ Precreation contact search """
+ self.ensure_one()
+ return {
+ 'name' : _('Please enter contact searched'),
+ 'type' : 'ir.actions.act_window',
+ 'res_model' : 'golem.precreation.member.request.wizard',
+ 'view_mode': 'form',
+ 'target': 'new'
+ }
+ @api.multi
+ def open_line(self):
+ """ open contact form """
+ self.ensure_one()
+ return {
+ 'type': 'ir.actions.act_window',
+ 'name': 'Member',
+ 'view_type': 'form',
+ 'view_mode': 'form',
+ 'res_model': self._name,
+ 'res_id': self.id,
+ 'flags': {'initial_mode': 'edit'},
+ 'target': 'current',
+ }
diff --git a/golem_precreation_member/tests/__init__.py b/golem_precreation_member/tests/__init__.py
deleted file mode 100644
index 0f44c19..0000000
--- a/golem_precreation_member/tests/__init__.py
+++ /dev/null
@@ -1,18 +0,0 @@
-# -*- 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 test_golem_member
diff --git a/golem_precreation_member/tests/test_golem_member.py b/golem_precreation_member/tests/test_golem_member.py
deleted file mode 100644
index d58cb81..0000000
--- a/golem_precreation_member/tests/test_golem_member.py
+++ /dev/null
@@ -1,180 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Copyright 2017 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 .
-
-""" GOLEM member testing """
-
-from odoo import exceptions
-from odoo.tests.common import TransactionCase
-# from psycopg2 import IntegrityError
-
-
-class GolemMemberTestCase(TransactionCase):
- """ GOLEM member testing """
-
- def setUp(self, *args, **kwargs):
- """ Bootstrap season and members """
- super(GolemMemberTestCase, self).setUp(*args, **kwargs)
- self.member_numberconfig_model = self.env['golem.member.numberconfig']
- season_mdl = self.env['golem.season'].sudo()
- self.season_current = season_mdl.create({'name': u'Current'})
- self.season_current.do_default_season()
- self.season_next = season_mdl.create({'name': u'Next'})
- self.member_model = self.env['golem.member'].sudo()
- mcrt = self.member_model.create
- self.member1 = mcrt({'lastname': u'LAST', 'firstname': u'First'})
- self.member2 = mcrt({'lastname': u'LAST', 'firstname': u'Young',
- 'birthdate_date': '2016-01-01'})
-
- def test_member_creation_noname(self):
- """ Test creation of member without needed parameters """
- with self.assertRaises(exceptions.ValidationError) as exc_cm:
- self.member_model.create({})
- self.assertIn('Error(s) with partner', exc_cm.exception.args[0])
- self.assertEqual('No name is set.', exc_cm.exception.args[1])
-
- def test_current_season(self):
- """ Test if default season if fixed according to setUp and if users
- are correctly seen """
- self.assertEqual(self.member_model._default_season(),
- self.season_current)
- self.assertTrue(self.member1.is_current)
- self.assertTrue(self.member2.is_current)
- self.season_next.do_default_season()
- self.assertFalse(self.member1.is_current)
- self.assertFalse(self.member2.is_current)
-
- def test_member_numbers_manual(self):
- """ Tests manual member number generation """
- conf = self.member_numberconfig_model.create({'is_automatic': '0'})
- conf.apply_recompute()
- self.assertFalse(self.member1.number)
- self.member1.number_manual = u'M01'
- self.assertEqual(self.member1.number_manual, self.member1.number)
- # **Can not test IntegrityError without Odoo ERROR...**
- # with self.assertRaises(IntegrityError) as cm:
- # self.member2.number_manual = u'M01'
- # self.assertIn('duplicate key value violates unique constraint',
- # cm.exception.args[0])
-
- def test_member_numbers_auto_season(self):
- """ Tests per season automatic member number generation + prefix """
- conf = self.member_numberconfig_model.create({'is_automatic': '1',
- 'is_per_season': '1',
- 'prefix': u'M'})
- conf.apply_recompute()
- self.assertEqual(self.member1.number, u'M1')
- self.assertEqual(self.member2.number, u'M2')
-
- self.member2.season_ids += self.season_next
- self.assertEqual(self.member2.number, u'M2')
- self.season_next.do_default_season()
- self.assertTrue(self.member2.is_current)
- self.assertEqual(self.member2.number, u'M1')
- self.assertFalse(self.member1.is_current)
- self.assertFalse(self.member1.number)
-
- def test_mnumbers_auto_season_from(self):
- """ Tests per season automatic member number + number_from """
- conf = self.member_numberconfig_model.create({'is_automatic': '1',
- 'is_per_season': '1',
- 'prefix': False,
- 'number_from': 100})
- conf.apply_recompute()
- self.assertEqual(self.member1.number, u'100')
- self.assertEqual(self.member2.number, u'101')
-
- self.member2.season_ids += self.season_next
- self.assertEqual(self.member2.number, u'101')
- self.season_next.do_default_season()
- self.assertTrue(self.member2.is_current)
- self.assertEqual(self.member2.number, u'100')
- self.assertFalse(self.member1.is_current)
- self.assertFalse(self.member1.number)
-
- def test_member_numbers_auto_global(self):
- """ Tests global automatic member number generation """
- conf = self.member_numberconfig_model.create({'is_automatic': '1',
- 'is_per_season': '0'})
- conf.apply_recompute()
- self.assertEqual(self.member1.number, u'1')
- self.assertEqual(self.member2.number, u'2')
- new_m = self.member_model.create({'lastname': 'NEW',
- 'firstname': 'Buddy',
- 'season_ids': [self.season_next]})
- self.assertEqual(new_m.number, u'3')
-
- def test_mnumbers_auto_global_from(self):
- """ Tests global automatic member number generation + number_from """
- conf = self.member_numberconfig_model.create({'is_automatic': '1',
- 'is_per_season': '0',
- 'number_from': 50})
- conf.apply_recompute()
- self.assertEqual(self.member1.number, u'50')
- self.assertEqual(self.member2.number, u'51')
- new_m = self.member_model.create({'lastname': 'NEW',
- 'firstname': 'Buddy',
- 'season_ids': [self.season_next]})
- self.assertEqual(new_m.number, u'52')
-
- def test_mnumbers_manual_to_auto(self):
- """ Tests generation change withtout whole recompute """
- conf = self.member_numberconfig_model.create({'is_automatic': '0'})
- conf.apply_recompute()
- self.assertFalse(self.member1.number)
- self.member1.number_manual = u'M01'
- self.assertEqual(self.member1.number_manual, self.member1.number)
-
- # Without number_from
- conf = self.member_numberconfig_model.create({'is_automatic': '1',
- 'is_per_season': '0',
- 'prefix': False})
- conf.apply_nocompute()
- self.assertEqual(self.member1.number, u'M01')
- new_m = self.member_model.create({'lastname': 'NEW',
- 'firstname': 'Dewie',
- 'season_ids': [self.season_current]})
- new_m2 = self.member_model.create({'lastname': 'NEW',
- 'firstname': 'Dowa',
- 'season_ids': [self.season_current]})
- self.assertEqual(new_m.number, u'1')
- self.assertEqual(new_m2.number, u'2')
-
- # With number_from
- conf = self.member_numberconfig_model.create({'is_automatic': '1',
- 'is_per_season': '0',
- 'prefix': False,
- 'number_from': 50})
- conf.apply_nocompute()
- self.assertEqual(self.member1.number, u'M01')
- new_m = self.member_model.create({'lastname': 'NEW',
- 'firstname': 'Buddy',
- 'season_ids': [self.season_current]})
- new_m2 = self.member_model.create({'lastname': 'NEW',
- 'firstname': 'Bobby',
- 'season_ids': [self.season_current]})
- self.assertEqual(new_m.number, u'50')
- self.assertEqual(new_m2.number, u'51')
- # After season changing
- self.season_next.do_default_season()
- self.assertEqual(self.member1.number, u'M01')
- self.assertEqual(new_m.number, u'50')
- self.member1.season_ids += self.season_next
- self.assertEqual(self.member1.number, u'M01')
- new_m3 = self.member_model.create({'lastname': 'NEW',
- 'firstname': 'Barny',
- 'season_ids': [self.season_current]})
- self.assertEqual(new_m3.number, u'52')
diff --git a/golem_precreation_member/views/golem_member_views.xml b/golem_precreation_member/views/golem_member_views.xml
index 92c560e..ce3b6e3 100644
--- a/golem_precreation_member/views/golem_member_views.xml
+++ b/golem_precreation_member/views/golem_member_views.xml
@@ -32,6 +32,5 @@ along with this program. If not, see .
-
diff --git a/golem_precreation_member/views/partner_views.xml b/golem_precreation_member/views/partner_views.xml
new file mode 100644
index 0000000..cdf1032
--- /dev/null
+++ b/golem_precreation_member/views/partner_views.xml
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+ Res Partner Precreation extention Form
+ res.partner
+
+
+
+
+
+
+
+
+
+
+
diff --git a/golem_precreation_member/wizard/golem_precreation_member_request_wizard.py b/golem_precreation_member/wizard/golem_precreation_member_request_wizard.py
index dc5a31a..8fd1509 100644
--- a/golem_precreation_member/wizard/golem_precreation_member_request_wizard.py
+++ b/golem_precreation_member/wizard/golem_precreation_member_request_wizard.py
@@ -24,23 +24,33 @@ class GolemPrecreationMemberRequestWizard(models.TransientModel):
_name = "golem.precreation.member.request.wizard"
name = fields.Char()
+ is_member = fields.Boolean()
@api.multi
def search_members(self):
""" Search members """
self.ensure_one()
+ model = self._context.get('model')
domain = ['|',
('name', 'ilike', self.name),
('email', 'ilike', self.name)]
- members = self.env['golem.member'].search(domain)
-
+ members = self.env[model].search(domain)
+ ids = []
if members:
ids = members.mapped('id')
+ title = ""
+ context = {}
+ if self.is_member:
+ title = 'Member search result "{}"'.format(self.name)
+ context = {'default_member_ids': ids}
+ else:
+ title = 'Contact search result "{}"'.format(self.name)
+ context = {'default_contact_ids': ids}
- return {'name' : ('Member search result "{}"'.format(self.name)),
+ return {'name' : (title),
'type' : 'ir.actions.act_window',
'res_model' : 'golem.precreation.member.result.wizard',
- 'context': {'default_member_ids': ids},
+ 'context': context,
'view_mode': 'form',
'flags': {'initial_mode': 'view'},
'target': 'new'}
diff --git a/golem_precreation_member/wizard/golem_precreation_member_request_wizard_views.xml b/golem_precreation_member/wizard/golem_precreation_member_request_wizard_views.xml
index 3ded94e..0cadcd7 100644
--- a/golem_precreation_member/wizard/golem_precreation_member_request_wizard_views.xml
+++ b/golem_precreation_member/wizard/golem_precreation_member_request_wizard_views.xml
@@ -25,9 +25,15 @@ along with this program. If not, see .
diff --git a/golem_precreation_member/wizard/golem_precreation_member_result_wizard.py b/golem_precreation_member/wizard/golem_precreation_member_result_wizard.py
index 5365377..91af60f 100644
--- a/golem_precreation_member/wizard/golem_precreation_member_result_wizard.py
+++ b/golem_precreation_member/wizard/golem_precreation_member_result_wizard.py
@@ -24,4 +24,4 @@ class GolemPrecreationMemberResultWizard(models.TransientModel):
_name = "golem.precreation.member.result.wizard"
member_ids = fields.Many2many('golem.member')
- name_searched = fields.Char(default="test")
+ contact_ids = fields.Many2many('res.partner')
diff --git a/golem_precreation_member/wizard/golem_precreation_member_result_wizard_views.xml b/golem_precreation_member/wizard/golem_precreation_member_result_wizard_views.xml
index dc110db..c1e7795 100644
--- a/golem_precreation_member/wizard/golem_precreation_member_result_wizard_views.xml
+++ b/golem_precreation_member/wizard/golem_precreation_member_result_wizard_views.xml
@@ -18,44 +18,38 @@ along with this program. If not, see .
-->
-
-
Golem Precreation Member result Wizard Formgolem.precreation.member.result.wizard
+
+
+
+
+
+
+
+
+
-