diff --git a/mis_builder/__openerp__.py b/mis_builder/__openerp__.py old mode 100755 new mode 100644 diff --git a/mis_builder/models/accounting_none.py b/mis_builder/models/accounting_none.py old mode 100755 new mode 100644 index bcf15ecb..57f7f549 --- a/mis_builder/models/accounting_none.py +++ b/mis_builder/models/accounting_none.py @@ -1,11 +1,13 @@ # -*- coding: utf-8 -*- - - +# © 2016 Thomas Binsfeld +# © 2016 ACSONE SA/NV () +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). """ -Provides the AccountingNone singleton +Provides the AccountingNone singleton. AccountingNone is a null value that dissolves in basic arithmetic operations, -as illustrated in the examples below +as illustrated in the examples below. In comparisons, AccountingNone behaves +the same as zero. >>> 1 + 1 2 @@ -51,8 +53,38 @@ AccountingNone AccountingNone >>> AccountingNone * None AccountingNone +>>> None * AccountingNone +AccountingNone +>>> str(AccountingNone) +'' +>>> bool(AccountingNone) +False +>>> AccountingNone > 0 +False +>>> AccountingNone < 0 +False +>>> AccountingNone < 1 +True +>>> AccountingNone > 1 +False +>>> 0 < AccountingNone +False +>>> 0 > AccountingNone +False +>>> 1 < AccountingNone +False +>>> 1 > AccountingNone +True +>>> AccountingNone == 0 +True +>>> AccountingNone == 0.0 +True +>>> AccountingNone == None +True """ +__all__ = ['AccountingNone'] + class AccountingNoneType(object): @@ -89,10 +121,15 @@ class AccountingNoneType(object): def __neg__(self): return self + def __div__(self, other): + if other is AccountingNone: + return AccountingNone + return 0.0 + + def __rdiv__(self, other): + raise ZeroDivisionError + def __floordiv__(self, other): - """ - Overload of the // operator - """ if other is AccountingNone: return AccountingNone return 0.0 @@ -101,9 +138,6 @@ class AccountingNoneType(object): raise ZeroDivisionError def __truediv__(self, other): - """ - Overload of the / operator - """ if other is AccountingNone: return AccountingNone return 0.0 @@ -116,17 +150,29 @@ class AccountingNoneType(object): return AccountingNone return 0.0 - def __rmul__(self, other): - if other is None or other is AccountingNone: - return AccountingNone - return 0.0 + __rmul__ = __mul__ def __repr__(self): return 'AccountingNone' - def __unicode__(self): + def __str__(self): return '' + def __nonzero__(self): + return False + + def __bool__(self): + return False + + def __eq__(self, other): + return other == 0 or other is None or other is AccountingNone + + def __lt__(self, other): + return 0 < other + + def __gt__(self, other): + return 0 > other + AccountingNone = AccountingNoneType() diff --git a/mis_builder/models/aep.py b/mis_builder/models/aep.py old mode 100755 new mode 100644 diff --git a/mis_builder/models/mis_builder.py b/mis_builder/models/mis_builder.py old mode 100755 new mode 100644