changeset 05d782c4aeb7 in modules/sale_subscription:default
details: 
https://hg.tryton.org/modules/sale_subscription?cmd=changeset;node=05d782c4aeb7
description:
        Add ir.calendar for month and day

        This allows to replace time_locale and use the translation 
infrastructure
        instead. So it can be customized using the translation override or 
derivative
        languages.
        This provides also a standard base to modules that needs calendar month 
and
        day.

        issue7815
        review56451002
diffstat:

 CHANGELOG                     |   2 ++
 recurrence.py                 |  36 +++++++++++++++++++++++++-----------
 view/recurrence_rule_form.xml |   4 ++--
 view/recurrence_rule_list.xml |   2 +-
 4 files changed, 30 insertions(+), 14 deletions(-)

diffs (95 lines):

diff -r fc16ef3b6a82 -r 05d782c4aeb7 CHANGELOG
--- a/CHANGELOG Mon Dec 31 15:36:49 2018 +0100
+++ b/CHANGELOG Tue Jan 01 15:47:23 2019 +0100
@@ -1,3 +1,5 @@
+* Use ir.calendar.day
+
 Version 5.0.0 - 2018-10-01
 * Bug fixes (see mercurial logs for details)
 * Remove support for Python 2.7
diff -r fc16ef3b6a82 -r 05d782c4aeb7 recurrence.py
--- a/recurrence.py     Mon Dec 31 15:36:49 2018 +0100
+++ b/recurrence.py     Tue Jan 01 15:47:23 2019 +0100
@@ -6,6 +6,7 @@
 
 from trytond.i18n import gettext
 from trytond.model import ModelSQL, ModelView, fields
+from trytond.pool import Pool
 from trytond.transaction import Transaction
 
 from .exceptions import RecurrenceRuleValidationError
@@ -90,20 +91,33 @@
     bysetpos = fields.Char(
         "By Position",
         help="A comma separated list of integers.")
-    wkst = fields.Selection([
-            (None, ''),
-            ('0', 'Monday'),
-            ('1', 'Tuesday'),
-            ('2', 'Wednesday'),
-            ('3', 'Thursday'),
-            ('4', 'Friday'),
-            ('5', 'Saturday'),
-            ('6', 'Sunday'),
-            ], "Week Start Day", sort=False)
+    week_start_day = fields.Many2One('ir.calendar.day', "Week Start Day")
 
     exclusive = fields.Boolean("Exclusive")
 
     @classmethod
+    def __register__(cls, module_name):
+        pool = Pool()
+        Day = pool.get('ir.calendar.day')
+        day = Day.__table__()
+        transaction = Transaction()
+        table = cls.__table__()
+
+        super().__register__(module_name)
+        table_h = cls.__table_handler__(module_name)
+
+        # Migration from 5.0: replace wkst by week_start_day
+        if table_h.column_exist('wkst'):
+            cursor = transaction.connection.cursor()
+            update = transaction.connection.cursor()
+            cursor.execute(*day.select([day.id, day.index]))
+            for day_id, index in cursor:
+                update.execute(*table.update(
+                        [table.week_start_day], [day_id],
+                        where=table.wkst == str(index)))
+            table_h.drop_column('wkst')
+
+    @classmethod
     def default_interval(cls):
         return 1
 
@@ -125,7 +139,7 @@
             'byweekno': self._byweekno,
             'bymonth': self._bymonth,
             'bysetpos': self._bysetpos,
-            'wkst': int(self.wkst) if self.wkst else None,
+            'wkst': self.week_start_day.index if self.week_start_day else None,
             }
 
     @property
diff -r fc16ef3b6a82 -r 05d782c4aeb7 view/recurrence_rule_form.xml
--- a/view/recurrence_rule_form.xml     Mon Dec 31 15:36:49 2018 +0100
+++ b/view/recurrence_rule_form.xml     Tue Jan 01 15:47:23 2019 +0100
@@ -24,6 +24,6 @@
     <field name="bymonth" colspan="3"/>
     <label name="bysetpos"/>
     <field name="bysetpos" colspan="3"/>
-    <label name="wkst"/>
-    <field name="wkst" colspan="3"/>
+    <label name="week_start_day"/>
+    <field name="week_start_day" colspan="3" widget="selection"/>
 </form>
diff -r fc16ef3b6a82 -r 05d782c4aeb7 view/recurrence_rule_list.xml
--- a/view/recurrence_rule_list.xml     Mon Dec 31 15:36:49 2018 +0100
+++ b/view/recurrence_rule_list.xml     Tue Jan 01 15:47:23 2019 +0100
@@ -12,5 +12,5 @@
     <field name="byweekno"/>
     <field name="bymonth"/>
     <field name="bysetpos"/>
-    <field name="wkst"/>
+    <field name="week_start_day" widget="selection"/>
 </tree>

Reply via email to