Browse Source

Merge pull request #9 from feketemihai/11.0-fix-unlink_date_tange_type

[11.0] [BUG] Fix date range type unlink.
pull/13/head
Pedro M. Baeza 7 years ago
committed by GitHub
parent
commit
654d38388d
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 1
      date_range/__init__.py
  2. 3
      date_range/__manifest__.py
  3. 1
      date_range/models/__init__.py
  4. 4
      date_range/models/date_range.py
  5. 1
      date_range/models/date_range_type.py
  6. 31
      date_range/static/src/js/date_range.js
  7. 1
      date_range/tests/__init__.py
  8. 1
      date_range/tests/test_date_range.py
  9. 1
      date_range/tests/test_date_range_generator.py
  10. 17
      date_range/tests/test_date_range_type.py
  11. 1
      date_range/wizard/__init__.py
  12. 1
      date_range/wizard/date_range_generator.py

1
date_range/__init__.py

@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
# © 2016 ACSONE SA/NV (<http://acsone.eu>) # © 2016 ACSONE SA/NV (<http://acsone.eu>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).

3
date_range/__manifest__.py

@ -1,10 +1,9 @@
# -*- coding: utf-8 -*-
# © 2016 ACSONE SA/NV (<http://acsone.eu>) # © 2016 ACSONE SA/NV (<http://acsone.eu>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
{ {
"name": "Date Range", "name": "Date Range",
"summary": "Manage all kind of date range", "summary": "Manage all kind of date range",
"version": "11.0.1.0.0",
"version": "11.0.1.0.1",
"category": "Uncategorized", "category": "Uncategorized",
"website": "https://github.com/oca/server-ux", "website": "https://github.com/oca/server-ux",
"author": "ACSONE SA/NV, Odoo Community Association (OCA)", "author": "ACSONE SA/NV, Odoo Community Association (OCA)",

1
date_range/models/__init__.py

@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
# © 2016 ACSONE SA/NV (<http://acsone.eu>) # © 2016 ACSONE SA/NV (<http://acsone.eu>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).

4
date_range/models/date_range.py

@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
# © 2016 ACSONE SA/NV (<http://acsone.eu>) # © 2016 ACSONE SA/NV (<http://acsone.eu>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
@ -19,7 +18,8 @@ class DateRange(models.Model):
date_start = fields.Date(string='Start date', required=True) date_start = fields.Date(string='Start date', required=True)
date_end = fields.Date(string='End date', required=True) date_end = fields.Date(string='End date', required=True)
type_id = fields.Many2one( type_id = fields.Many2one(
comodel_name='date.range.type', string='Type', index=1, required=True)
comodel_name='date.range.type', string='Type', index=1, required=True,
ondelete='restrict')
type_name = fields.Char( type_name = fields.Char(
string='Type', related='type_id.name', readonly=True, store=True) string='Type', related='type_id.name', readonly=True, store=True)
company_id = fields.Many2one( company_id = fields.Many2one(

1
date_range/models/date_range_type.py

@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
# © 2016 ACSONE SA/NV (<http://acsone.eu>) # © 2016 ACSONE SA/NV (<http://acsone.eu>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).

31
date_range/static/src/js/date_range.js

@ -3,26 +3,25 @@
odoo.define('date_range.search_filters', function (require) { odoo.define('date_range.search_filters', function (require) {
"use strict"; "use strict";
var core = require('web.core');
var core = require('web.core');
var data = require('web.data'); var data = require('web.data');
var filters = require('web.search_filters'); var filters = require('web.search_filters');
var rpc = require('web.rpc'); var rpc = require('web.rpc');
var framework = require('web.framework'); var framework = require('web.framework');
var _t = core._t; var _t = core._t;
var _lt = core._lt;
filters.ExtendedSearchProposition.include({ filters.ExtendedSearchProposition.include({
select_field: function(field) { select_field: function(field) {
this._super.apply(this, arguments); this._super.apply(this, arguments);
this.is_date_range_selected = false; this.is_date_range_selected = false;
this.is_date = field.type == 'date' || field.type == 'datetime';
this.is_date = field.type === 'date' || field.type === 'datetime';
this.$value = this.$el.find('.searchview_extended_prop_value, .o_searchview_extended_prop_value'); this.$value = this.$el.find('.searchview_extended_prop_value, .o_searchview_extended_prop_value');
if (this.is_date){ if (this.is_date){
var ds = new data.DataSetSearch(this, 'date.range.type', this.context, [[1, '=', 1]]); var ds = new data.DataSetSearch(this, 'date.range.type', this.context, [[1, '=', 1]]);
ds.read_slice(['name'], {}).done(this.proxy('add_date_range_types_operator')); ds.read_slice(['name'], {}).done(this.proxy('add_date_range_types_operator'));
} }
}, },
add_date_range_types_operator: function(date_range_types){ add_date_range_types_operator: function(date_range_types){
var self = this; var self = this;
_.each(date_range_types, function(drt) { _.each(date_range_types, function(drt) {
@ -31,10 +30,10 @@ filters.ExtendedSearchProposition.include({
.appendTo(self.$el.find('.searchview_extended_prop_op, .o_searchview_extended_prop_op')); .appendTo(self.$el.find('.searchview_extended_prop_op, .o_searchview_extended_prop_op'));
}); });
}, },
operator_changed: function (e) { operator_changed: function (e) {
var val = $(e.target).val(); var val = $(e.target).val();
this.is_date_range_selected = val.startsWith('drt_');
this.is_date_range_selected = val.startsWith('drt_');
if (this.is_date_range_selected){ if (this.is_date_range_selected){
var type_id = val.replace('drt_', ''); var type_id = val.replace('drt_', '');
this.date_range_type_operator_selected(type_id); this.date_range_type_operator_selected(type_id);
@ -47,18 +46,18 @@ filters.ExtendedSearchProposition.include({
this.$value.empty().show(); this.$value.empty().show();
var ds = new data.DataSetSearch(this, 'date.range', this.context, [['type_id', '=', parseInt(type_id)]]); var ds = new data.DataSetSearch(this, 'date.range', this.context, [['type_id', '=', parseInt(type_id)]]);
ds.read_slice(['name','date_start', 'date_end'], {}).done(this.proxy('on_range_type_selected')); ds.read_slice(['name','date_start', 'date_end'], {}).done(this.proxy('on_range_type_selected'));
}, },
on_range_type_selected: function(date_range_values){ on_range_type_selected: function(date_range_values){
this.value = new filters.ExtendedSearchProposition.DateRange(this, this.value.field, date_range_values); this.value = new filters.ExtendedSearchProposition.DateRange(this, this.value.field, date_range_values);
this.value.appendTo(this.$value); this.value.appendTo(this.$value);
if (!this.$el.hasClass('o_filter_condition')){ if (!this.$el.hasClass('o_filter_condition')){
this.$value.find('.date-range-select').addClass('form-control');
this.$value.find('.date-range-select').addClass('form-control');
} }
this.value.on_range_selected(); this.value.on_range_selected();
}, },
get_filter: function () { get_filter: function () {
var res = this._super.apply(this, arguments); var res = this._super.apply(this, arguments);
if (this.is_date_range_selected){ if (this.is_date_range_selected){
@ -68,7 +67,7 @@ filters.ExtendedSearchProposition.include({
} }
return res; return res;
}, },
}); });
/** /**
@ -83,7 +82,7 @@ filters.ExtendedSearchProposition.DateRange = core.search_filters_registry.get('
events: { events: {
'change': 'on_range_selected', 'change': 'on_range_selected',
}, },
init: function (parent, field, date_range_values) { init: function (parent, field, date_range_values) {
this._super(parent, field); this._super(parent, field);
this.date_range_values = date_range_values; this.date_range_values = date_range_values;
@ -94,11 +93,11 @@ filters.ExtendedSearchProposition.DateRange = core.search_filters_registry.get('
var option = select.options[select.selectedIndex]; var option = select.options[select.selectedIndex];
return option.label || option.text; return option.label || option.text;
}, },
get_value: function() { get_value: function() {
return parseInt(this.$el.val()); return parseInt(this.$el.val());
}, },
on_range_selected: function(e){ on_range_selected: function(e){
var self = this; var self = this;
self.domain = ''; self.domain = '';
@ -116,11 +115,11 @@ filters.ExtendedSearchProposition.DateRange = core.search_filters_registry.get('
self.domain = domain; self.domain = domain;
}); });
}, },
get_domain: function (field, operator) { get_domain: function (field, operator) {
return this.domain; return this.domain;
}, },
}); });
});
});

1
date_range/tests/__init__.py

@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
# © 2016 ACSONE SA/NV (<http://acsone.eu>) # © 2016 ACSONE SA/NV (<http://acsone.eu>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).

1
date_range/tests/test_date_range.py

@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
# © 2016 ACSONE SA/NV (<http://acsone.eu>) # © 2016 ACSONE SA/NV (<http://acsone.eu>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl) # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)

1
date_range/tests/test_date_range_generator.py

@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
# © 2016 ACSONE SA/NV (<http://acsone.eu>) # © 2016 ACSONE SA/NV (<http://acsone.eu>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)nses/agpl). # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)nses/agpl).

17
date_range/tests/test_date_range_type.py

@ -1,8 +1,9 @@
# -*- coding: utf-8 -*-
# © 2016 ACSONE SA/NV (<http://acsone.eu>) # © 2016 ACSONE SA/NV (<http://acsone.eu>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl) # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
from odoo.tests.common import TransactionCase from odoo.tests.common import TransactionCase
from odoo.tools import mute_logger
from psycopg2 import IntegrityError
class DateRangeTypeTest(TransactionCase): class DateRangeTypeTest(TransactionCase):
@ -18,3 +19,17 @@ class DateRangeTypeTest(TransactionCase):
'company_id': False, 'company_id': False,
'allow_overlap': False}) 'allow_overlap': False})
self.assertFalse(drt.company_id) self.assertFalse(drt.company_id)
def test_unlink(self):
date_range = self.env['date.range']
drt = self.env['date.range.type'].create(
{'name': 'Fiscal year',
'allow_overlap': False})
date_range.create({
'name': 'FS2016',
'date_start': '2015-01-01',
'date_end': '2016-12-31',
'type_id': drt.id,
})
with self.assertRaises(IntegrityError), mute_logger('odoo.sql_db'):
drt.unlink()

1
date_range/wizard/__init__.py

@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
# © 2016 ACSONE SA/NV (<http://acsone.eu>) # © 2016 ACSONE SA/NV (<http://acsone.eu>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).

1
date_range/wizard/date_range_generator.py

@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
# © 2016 ACSONE SA/NV (<http://acsone.eu>) # © 2016 ACSONE SA/NV (<http://acsone.eu>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).

Loading…
Cancel
Save