changeset 911bd538fa33 in modules/sale_history:default
details: 
https://hg.tryton.org/modules/sale_history?cmd=changeset&node=911bd538fa33
description:
        Add revision and history to subscription

        issue11650
        review427551003
diffstat:

 CHANGELOG            |   2 ++
 __init__.py          |   5 +++++
 sale.py              |  37 ++++++++++++++++++++++++-------------
 sale.xml             |  13 +++++++++++++
 setup.py             |   5 ++++-
 tests/test_module.py |   1 +
 tryton.cfg           |   2 ++
 7 files changed, 51 insertions(+), 14 deletions(-)

diffs (150 lines):

diff -r 1a1459ef6c57 -r 911bd538fa33 CHANGELOG
--- a/CHANGELOG Mon May 02 17:28:34 2022 +0200
+++ b/CHANGELOG Sat Sep 10 17:49:38 2022 +0200
@@ -1,3 +1,5 @@
+* Add revision and history to subscription
+
 Version 6.4.0 - 2022-05-02
 * Bug fixes (see mercurial logs for details)
 * Add support for Python 3.10
diff -r 1a1459ef6c57 -r 911bd538fa33 __init__.py
--- a/__init__.py       Mon May 02 17:28:34 2022 +0200
+++ b/__init__.py       Sat Sep 10 17:49:38 2022 +0200
@@ -14,3 +14,8 @@
         sale.Line,
         sale.LineTax,
         module='sale_history', type_='model')
+    Pool.register(
+        sale.Subscription,
+        sale.SubscriptionLine,
+        module='sale_history', type_='model',
+        depends=['sale_subscription'])
diff -r 1a1459ef6c57 -r 911bd538fa33 sale.py
--- a/sale.py   Mon May 02 17:28:34 2022 +0200
+++ b/sale.py   Sat Sep 10 17:49:38 2022 +0200
@@ -8,9 +8,8 @@
 from trytond.transaction import Transaction
 
 
-class Sale(metaclass=PoolMeta):
-    __name__ = 'sale.sale'
-    _history = True
+class RevisionMixin:
+    __slots__ = ()
     revision = fields.Integer(
         "Revision", required=True, readonly=True,
         states={
@@ -29,29 +28,31 @@
         return number
 
     @classmethod
-    def copy(cls, sales, default=None):
-        if default is None:
-            default = {}
-        else:
-            default = default.copy()
+    def copy(cls, records, default=None):
+        default = default.copy() if default is not None else {}
         default.setdefault('revision', cls.default_revision())
-        return super().copy(sales, default=default)
+        return super().copy(records, default=default)
 
     @classmethod
     @ModelView.button
     @Workflow.transition('draft')
-    def draft(cls, sales):
+    def draft(cls, records):
         cursor = Transaction().connection.cursor()
         table = cls.__table__()
 
         # Use SQL and before super to avoid two history entries
-        for sub_sales in grouped_slice(sales):
+        for sub_records in grouped_slice(records):
             cursor.execute(*table.update(
                     [table.revision],
                     [table.revision + 1],
-                    where=reduce_ids(table.id, sub_sales)))
+                    where=reduce_ids(table.id, sub_records)))
+
+        super().draft(records)
 
-        super().draft(sales)
+
+class Sale(RevisionMixin, metaclass=PoolMeta):
+    __name__ = 'sale.sale'
+    _history = True
 
 
 class Line(metaclass=PoolMeta):
@@ -62,3 +63,13 @@
 class LineTax(metaclass=PoolMeta):
     __name__ = 'sale.line-account.tax'
     _history = True
+
+
+class Subscription(RevisionMixin, metaclass=PoolMeta):
+    __name__ = 'sale.subscription'
+    _history = True
+
+
+class SubscriptionLine(metaclass=PoolMeta):
+    __name__ = 'sale.subscription.line'
+    _history = True
diff -r 1a1459ef6c57 -r 911bd538fa33 sale.xml
--- a/sale.xml  Mon May 02 17:28:34 2022 +0200
+++ b/sale.xml  Sat Sep 10 17:49:38 2022 +0200
@@ -14,4 +14,17 @@
             <field name="name">sale_tree</field>
         </record>
     </data>
+    <data depends="sale_subscription">
+        <record model="ir.ui.view" id="subscription_view_form">
+            <field name="model">sale.subscription</field>
+            <field name="inherit" 
ref="sale_subscription.subscription_view_form"/>
+            <field name="name">sale_form</field>
+        </record>
+        <record model="ir.ui.view" id="subscription_view_list">
+            <field name="model">sale.subscription</field>
+            <field name="inherit" 
ref="sale_subscription.subscription_view_list"/>
+            <field name="name">sale_tree</field>
+        </record>
+    </data>
+
 </tryton>
diff -r 1a1459ef6c57 -r 911bd538fa33 setup.py
--- a/setup.py  Mon May 02 17:28:34 2022 +0200
+++ b/setup.py  Sat Sep 10 17:49:38 2022 +0200
@@ -64,7 +64,10 @@
         requires.append(get_require_version('trytond_%s' % dep))
 requires.append(get_require_version('trytond'))
 
-tests_require = [get_require_version('proteus')]
+tests_require = [
+    get_require_version('proteus'),
+    get_require_version('trytond_sale_subscription'),
+    ]
 dependency_links = []
 if minor_version % 2:
     dependency_links.append(
diff -r 1a1459ef6c57 -r 911bd538fa33 tests/test_module.py
--- a/tests/test_module.py      Mon May 02 17:28:34 2022 +0200
+++ b/tests/test_module.py      Sat Sep 10 17:49:38 2022 +0200
@@ -7,6 +7,7 @@
 class SaleHistoryTestCase(ModuleTestCase):
     'Test Sale History module'
     module = 'sale_history'
+    extras = ['sale_subscription']
 
 
 del ModuleTestCase
diff -r 1a1459ef6c57 -r 911bd538fa33 tryton.cfg
--- a/tryton.cfg        Mon May 02 17:28:34 2022 +0200
+++ b/tryton.cfg        Sat Sep 10 17:49:38 2022 +0200
@@ -3,5 +3,7 @@
 depends:
     ir
     sale
+extras_depend:
+    sale_subscription
 xml:
     sale.xml

Reply via email to