Browse Source

[IMP] Added hierarchical feature for date_range, via parent_id

pull/47/head
Nikos Tsirintanis 6 years ago
parent
commit
57dc068f3d
  1. 2
      date_range/models/date_range.py
  2. 4
      date_range/readme/CONTRIBUTORS.rst
  3. 49
      date_range/tests/test_date_range.py
  4. 2
      date_range/views/date_range_view.xml

2
date_range/models/date_range.py

@ -30,6 +30,8 @@ class DateRange(models.Model):
active = fields.Boolean(
help="The active field allows you to hide the date range without "
"removing it.", default=True)
parent_id = fields.Many2one(
comodel_name='date.range', string="Parent", index=1)
_sql_constraints = [
('date_range_uniq', 'unique (name,type_id, company_id)',

4
date_range/readme/CONTRIBUTORS.rst

@ -1,4 +1,8 @@
* Laurent Mignon <laurent.mignon@acsone.eu>
* Alexis de Lattre <alexis.delattre@akretion.com>
* Miquel Raïch <miquel.raich@eficent.com>
<<<<<<< HEAD
* Andrea Stirpe <a.stirpe@onestein.nl>
=======
* Nikos Tsirintanis <ntsirintanis@therp.nl>
>>>>>>> 72713cb6... [IMP] Added hierarchical feature for date_range, via parent_id

49
date_range/tests/test_date_range.py

@ -130,3 +130,52 @@ class DateRangeTest(TransactionCase):
'type_id': self.typeB.id,
'company_id': self.company_2.id,
})
def test_parent_id(self):
date_range = self.env['date.range']
date_range_type = self.env['date.range.type']
parent = date_range.create({
'name': 'FS2018',
'date_start': '2018-01-01',
'date_end': '2018-12-31',
'type_id': self.type.id,
})
# Check here that a validation error is thrown
# when parent and child have same type_id
with self.assertRaises(ValidationError):
date_range.create({
'name': 'FS2018-period1',
'date_start': '2018-01-01',
'date_end': '2018-04-30',
'type_id': self.type.id,
'parent_id': parent.id,
})
type_block = date_range_type.create({
'name': 'FS2018-type_block',
'company_id': False,
'allow_overlap': False,
})
period1 = date_range.create({
'name': 'FS2018-period1',
'date_start': '2018-01-01',
'date_end': '2018-04-30',
'type_id': type_block.id,
'parent_id': parent.id,
})
# Check here that a validation error is thrown
# when child periods overlap
with self.assertRaises(ValidationError) as cm, self.env.cr.savepoint():
date_range.create({
'name': 'FS2018-period2',
'date_start': '2018-02-01',
'date_end': '2018-03-15',
'type_id': type_block.id,
'parent_id': parent.id,
})
self.assertEqual(
cm.exception.name,
'FS2018-period2 overlaps FS2018-period1'
)
# Ensure here that parent and children are of different type
self.assertNotEqual(parent.type_id, period1.type_id)
self.assertEqual(parent.type_id, period1.parent_id.type_id)

2
date_range/views/date_range_view.xml

@ -10,6 +10,7 @@
<field name="date_start"/>
<field name="date_end"/>
<field name="company_id" groups="base.group_multi_company" options="{'no_create': True}"/>
<field name="parent_id"/>
<field name="active"/>
</tree>
</field>
@ -25,6 +26,7 @@
<field name="date_start"/>
<field name="date_end"/>
<field name="company_id" groups="base.group_multi_company" options="{'no_create': True}"/>
<field name="parent_id"/>
<field name="active"/>
</group>
</form>

Loading…
Cancel
Save