From 9340f0c86ca023149cbb0db0e08bfe36006b5022 Mon Sep 17 00:00:00 2001 From: Adrien Peiffer Date: Thu, 21 Aug 2014 15:53:48 +0200 Subject: [PATCH 1/3] [IMP] Prevent to add both same journals on a period --- .../model/account_journal_period.py | 12 ++++++++++++ .../tests/test_account_journal_period_close.py | 11 +++++++++++ 2 files changed, 23 insertions(+) diff --git a/account_journal_period_close/model/account_journal_period.py b/account_journal_period_close/model/account_journal_period.py index d6cafbb29..23a4b779f 100644 --- a/account_journal_period_close/model/account_journal_period.py +++ b/account_journal_period_close/model/account_journal_period.py @@ -72,6 +72,18 @@ class AccountJournalPeriod(orm.Model): .browse(cr, uid, values['period_id'], context=context) values.update({'name': (journal.code or journal.name)+':' + (period.name or '')}), + if values.get('period_id') and values.get('journal_id'): + journal_period_duplicate_ids = self\ + .search(cr, uid, [('period_id', '=', + values.get('period_id')), + ('journal_id', '=', + values.get('journal_id'))], + context=context) + if (journal_period_duplicate_ids): + raise orm.except_orm(_('error'), + _('You can not add 2 times' + ' the same journal in' + ' same period.')) return super(AccountJournalPeriod, self).create(cr, uid, values, diff --git a/account_journal_period_close/tests/test_account_journal_period_close.py b/account_journal_period_close/tests/test_account_journal_period_close.py index ed175a425..2c736be9c 100644 --- a/account_journal_period_close/tests/test_account_journal_period_close.py +++ b/account_journal_period_close/tests/test_account_journal_period_close.py @@ -194,3 +194,14 @@ class TestAccountConstraintChronology(common.TransactionCase): jour_per_obj.action_done, self.cr, self.uid, journal_period_ids, context=context) + + def test_duplicate_journal_period(self): + context = {} + journal_id = self.ref('account.sales_journal') + period_id = self.ref('account.period_1') + create_journal_period(self, period_id, journal_id, context) + # I check if the exception is correctly raised at adding both same + # journal on a period + self.assertRaises(orm.except_orm, + create_journal_period, + self, period_id, journal_id, context) From abbdae757f60d6fdc3b87cb8e9fb1a02104bd656 Mon Sep 17 00:00:00 2001 From: Adrien Peiffer Date: Fri, 22 Aug 2014 09:20:30 +0200 Subject: [PATCH 2/3] [IMP] Use sql constraint to Prevent to add both same journals on a period --- .../model/account_journal_period.py | 19 ++++++------------- .../test_account_journal_period_close.py | 3 ++- 2 files changed, 8 insertions(+), 14 deletions(-) diff --git a/account_journal_period_close/model/account_journal_period.py b/account_journal_period_close/model/account_journal_period.py index 23a4b779f..d77988e83 100644 --- a/account_journal_period_close/model/account_journal_period.py +++ b/account_journal_period_close/model/account_journal_period.py @@ -41,6 +41,11 @@ class AccountJournalPeriod(orm.Model): store=True, readonly=True) } + _sql_constraints = [ + ('journal_period_uniq', 'unique(period_id, journal_id)', + 'You can not add both same journal in a period.'), + ] + def _check(self, cr, uid, ids, context=None): return True @@ -71,19 +76,7 @@ class AccountJournalPeriod(orm.Model): period = self.pool.get('account.period')\ .browse(cr, uid, values['period_id'], context=context) values.update({'name': (journal.code or journal.name)+':' + - (period.name or '')}), - if values.get('period_id') and values.get('journal_id'): - journal_period_duplicate_ids = self\ - .search(cr, uid, [('period_id', '=', - values.get('period_id')), - ('journal_id', '=', - values.get('journal_id'))], - context=context) - if (journal_period_duplicate_ids): - raise orm.except_orm(_('error'), - _('You can not add 2 times' - ' the same journal in' - ' same period.')) + (period.name or '')}) return super(AccountJournalPeriod, self).create(cr, uid, values, diff --git a/account_journal_period_close/tests/test_account_journal_period_close.py b/account_journal_period_close/tests/test_account_journal_period_close.py index 2c736be9c..0e3a6dd05 100644 --- a/account_journal_period_close/tests/test_account_journal_period_close.py +++ b/account_journal_period_close/tests/test_account_journal_period_close.py @@ -30,6 +30,7 @@ import openerp.tests.common as common from openerp.osv import orm from datetime import datetime +from psycopg2 import IntegrityError DB = common.DB ADMIN_USER_ID = common.ADMIN_USER_ID @@ -202,6 +203,6 @@ class TestAccountConstraintChronology(common.TransactionCase): create_journal_period(self, period_id, journal_id, context) # I check if the exception is correctly raised at adding both same # journal on a period - self.assertRaises(orm.except_orm, + self.assertRaises(IntegrityError, create_journal_period, self, period_id, journal_id, context) From 8985504cab465b9182460fb742c1d0633ca85ce9 Mon Sep 17 00:00:00 2001 From: Adrien Peiffer Date: Fri, 22 Aug 2014 09:37:21 +0200 Subject: [PATCH 3/3] [IMP] Improve error message for account_journal_period_close --- account_journal_period_close/model/account_journal_period.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/account_journal_period_close/model/account_journal_period.py b/account_journal_period_close/model/account_journal_period.py index d77988e83..4ac693e94 100644 --- a/account_journal_period_close/model/account_journal_period.py +++ b/account_journal_period_close/model/account_journal_period.py @@ -43,7 +43,7 @@ class AccountJournalPeriod(orm.Model): _sql_constraints = [ ('journal_period_uniq', 'unique(period_id, journal_id)', - 'You can not add both same journal in a period.'), + 'You can not add same journal in the same period twice.'), ] def _check(self, cr, uid, ids, context=None):